以太坊源码分析(一 简介)

ethereum - build unstoppable applications

简介

以太坊作为目前区块链技术2.0的代表作品,无论是它独创的智能合约以及它本身交易的速度都优于bitcoin,通过看它的白皮书以及一些文章也略微了解了它的一些原理,但是总体还是对它的实现半知半解。
因此就想分析下它的实现源码,再结合白皮书也许可以深入的理解它的实现。

准备工作

  1. 源码下载
    git clone https://github.com/ethereum/ethereumj.git

  2. 导入到intellij

  • File -> New -> Project from existing sources…
  • Select ethereumj/build.gradle
  • Dialog “Import Project from gradle”: press “OK”
  1. 结构介绍
    本项目主要使用spring来管理对象,使用netty完成通信,使用leveldb负责存储,整体的包的结构如下所示:


    image.png

每个包的作用大致为:

  • cli : 负责启动参数的处理
  • config: 负责配置文件注入以及一些bean的注入
    1. 公共部分:包含系统配置变量(SystemProperties)、配置初始化(Initializer 完成配置的初始化)、仓库、数据源、验证器等的注入
    2. blockchain:包含的是一些以太坊发布时各个版本的不同的特性,这些特性包括不限于难度值计算以及其他一些EIP所描述的bug或者features
    3. net:包含的是以太坊支持的不同的网络配置,包含主网或者测试网络不同的配置信息,所谓的配置信息就是blockchain配置所描述的一些不同的EIP或者其他的features
  • core: 核心部分,它包含账户、区块、创世块、区块链、transaction、bloom的定义以及区块如何验证、如何加入链以及transaction如何使用vm执行也就是智能合约的执行都在这里完成
  • crypto: 加密工具包含不限于hash算法、ECC算法等
  • datasource: 提供了两种数据源实现内存以及leveldb,并使用者两种数据源扩展了不同实现,这包含缓存数据源、链数据源,依据于此又封装出读写缓存、异步读写缓存以及链存储相关的数据源实现。
  • db: 定义了如何使用datasource存储block、transaction,换句话说就是block、transaction的存储数据结构
  • facade: 包含了ethereum的实现,就是将块存储、验证、同步、合约执行等做的封装
  • mine是挖矿相关的
  • net 涉及的都是网络相关的,以太坊节点发现块同步都是建立在rlpx协议之上,这包含p2p、shh、eth等,另外server包就是节点发现服务启动入口
  • samples是一些测试例子
  • solidity是合约编译部分的实现
  • sync 是负责负责块的同步下载等
  • trie 是以太坊链存储的数据结构,该包主要是实现该数据结构也就是MPT
  • utils 工具类,包含rlp编码等
  • validator 这是一些验证器,在验证block的时候会用到
  • vm 以太坊vm实现
  • start是程序入口

以上为个人初步理解,如有不当之处望指正

注:资料查询主要位置 wiki eip

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 以太坊(Ethereum ):下一代智能合约和去中心化应用平台 翻译:巨蟹 、少平 译者注:中文读者可以到以太坊爱...
    车圣阅读 9,196评论 1 7
  • 【中文版】以太坊白皮书 翻译:少平、 Seven当中本聪在 2009 年 1 月启动比特币区块链时,他同时向世界引...
    __Seven__阅读 9,806评论 0 10
  • 简介 不管你们知不知道以太坊(Ethereum blockchain)是什么,但是你们大概都听说过以太坊。最近在新...
    Lilymoana阅读 9,302评论 1 22
  • 删除存在的工作表。如果工作表不存在,则会返回错误。 将工作表放进对象变量,判断工作表是否存在(有时候需要判断工作表...
    叶知行阅读 3,728评论 0 1
  • 儿子交给老师的作业 碧蓝的天空, 飘浮的白云, 嫩绿的小草, 还有那稀疏...
    Belinda阿布阅读 3,077评论 3 3