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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容