以太坊源码解读(1)以太坊架构与模块结构

以太坊架构与模块化结构

一:以太坊核心概念

EVM:

以太坊虚拟机,以太坊中智能合约的运行环境

Accounts:

区别去比特币的UTXO,以太坊构建里账户,账户分为两类,内部账户和外部账户,内部账户指合约账户,外部账户指用户账户

Transaction:

在以太坊网络上的任何一个消息的传递都是一次交易

gas:

以太坊网络的运行机制之一,每执行一步合约代码都与要消耗一定的gas,gas的设定一方面是为了提高用户的作恶成本,另一方面也是为了提高矿工的积极性

Mine:

挖矿,以太坊网络通过工作量证明机制保证节点之间的同步与网络的安全运行

Storage, Memory:

存储与主存,storage被称为存储,kv形式储存,memory被称为主存每次合约被调用都会有一块新的被清除过的主存

P2P:

p2p对等网络,作为以太坊网络的构成机制之一,保证网络内的所有节点对等

二:以太坊总体结构与数据结构

以太坊的总体结构可以被简单分为三层:

从低到高为 协议层:P2P网络通信,分布式算法,加密签名和数据存储技术

​ 接口层:接口成与协议层完全的进行分离,包括分布式存储等

​ 应用层:主要利用evm与智能合约构造去中心化的dapp

以太坊的总体结构可以被详细划分为六层:

从低到高为 数据层:以key-value的形式存储数据,使用LevelDb数据库,以及Block

        网络层:p2p网络

​ 共识层:pow+pos共识

        激励层:mine机制

​ 合约层:实现以代码约束行为的方式

​ 应用层:以以太猫为代表的Dapp

以太坊的核心数据结构

Block

所有账户的相关活动,以交易(Transaction)的格式存储,每个Block有一个交易对象的列表;每个交易的执行结果,由一个Receipt对象与其包含的一组Log对象记录;所有交易执行完后生成的Receipt列表,存储在Block中(经过压缩加密)。不同Block之间,通过前向指针ParentHash一个一个串联起来成为一个单向链表,BlockChain 结构体管理着这个链表。Block包括Header和Body两个部分

Header

Header是Block的组成部分主要包括关于block的属性

熟悉 解释
ParentHash 除创世区块外所有的区块都有的前一个区块的hash
Coinbase 矿工的地址
UncleHash 叔块的Hash
Root StateDB中的根节点的RLP的Hash值
TXHash Block中tx trie的根节点的RLP的Hah值
ReceiptHash Block中的 "Receipt Trie”的根节点的RLP哈希值
Bloom Bloom过滤器(Filter),用来快速判断一个参数Log对象是否存在于一组已知的Log集合中
Difficulty 区块的难度
Number 区块的序号
Time 区块“应该”被创建的时间
GasLimit 区块内所有Gas消耗的理论上限
GasUsed 区块内所有Transaction执行时所实际消耗的Gas总和
Nonce 一个64bit的哈希数,它被应用在区块的"挖掘"阶段,并且在使用中会被修改
Body
熟悉 解释
Tracsactions[] 区块内部的交易集合
Uncles[] 叔块集合
BlockChain

BlockChain结构体被用来管理整个区块单向链表,在一个Ethereum客户端软件(比如钱包)中,只会有一个BlockChain对象存在。同Block/Header的关系类似,BlockChain还有一个成员变量类型是HeaderChain, 用来管理所有Header组成的单向链表。

HeaderChain

HeaderChain在全局范围内也仅有一个对象,并被BlockChain持有(准确说是HeaderChain只会被BlockChain和LightChain持有,LightChain类似于BlockChain,但默认只处理Headers,不过依然可以下载bodies和receipts)。

MPT

Ethereum 使用的Merkle-PatriciaTrie(MPT)结构,源自于Trie结构,又分别继承了PatriciaTrie和MerkleTree的优点,并基于内部数据的特性,设计了全新的节点体系和插入/载入机制。

三:go-ethereum源码目录结构

包名 说明
accounts 以太坊实现的账户功能
build 一些配置信息
cmd m命令行结构
common 提供了公共数据结构,工具类
console console控制台
contracts 包含
containers/docker
core 核心代码
crypto 加密和hash算法
dashboard
eth 实现了以太坊的协议
ethclient 提供了以太坊的RPC客户端
ethdb eth的数据库(包括实际使用的leveldb和供测试使用的内存数据库)
ethstats 提供网络状态的报告
event 实时的事件
internal
les 以太坊的轻量级协议子集
light 实现以太坊轻量级客户端的按需检索功能
log 日志信息
metrics 磁盘计数
miner 挖矿与区块的生成
mobile 移动端使用的warpper
node 节点多种类型
p2p 网络协议
params
rlp 以太坊hash序列化处理
rpc 远程调用
signer
swarm 网络处理
tests 测试
trie 以太坊重要的数据结构Package trie implements Merkle Patricia Tries.
vendor 第三方
whisper whisper节点协议

以太坊架构与模块化结构

一:以太坊核心概念

EVM:

以太坊虚拟机,以太坊中智能合约的运行环境

Accounts:

区别去比特币的UTXO,以太坊构建里账户,账户分为两类,内部账户和外部账户,内部账户指合约账户,外部账户指用户账户

Transaction:

在以太坊网络上的任何一个消息的传递都是一次交易

gas:

以太坊网络的运行机制之一,每执行一步合约代码都与要消耗一定的gas,gas的设定一方面是为了提高用户的作恶成本,另一方面也是为了提高矿工的积极性

Mine:

挖矿,以太坊网络通过工作量证明机制保证节点之间的同步与网络的安全运行

Storage, Memory:

存储与主存,storage被称为存储,kv形式储存,memory被称为主存每次合约被调用都会有一块新的被清除过的主存

P2P:

p2p对等网络,作为以太坊网络的构成机制之一,保证网络内的所有节点对等

二:以太坊总体结构与数据结构

以太坊的总体结构可以被简单分为三层:

从低到高为 协议层:P2P网络通信,分布式算法,加密签名和数据存储技术

​ 接口层:接口成与协议层完全的进行分离,包括分布式存储等

​ 应用层:主要利用evm与智能合约构造去中心化的dapp

以太坊的总体结构可以被详细划分为六层:

从低到高为 数据层:以key-value的形式存储数据,使用LevelDb数据库,以及Block

        网络层:p2p网络

​ 共识层:pow+pos共识

        激励层:mine机制

​ 合约层:实现以代码约束行为的方式

​ 应用层:以以太猫为代表的Dapp

以太坊的核心数据结构

Block

所有账户的相关活动,以交易(Transaction)的格式存储,每个Block有一个交易对象的列表;每个交易的执行结果,由一个Receipt对象与其包含的一组Log对象记录;所有交易执行完后生成的Receipt列表,存储在Block中(经过压缩加密)。不同Block之间,通过前向指针ParentHash一个一个串联起来成为一个单向链表,BlockChain 结构体管理着这个链表。Block包括Header和Body两个部分

Header

Header是Block的组成部分主要包括关于block的属性

熟悉 解释
ParentHash 除创世区块外所有的区块都有的前一个区块的hash
Coinbase 矿工的地址
UncleHash 叔块的Hash
Root StateDB中的根节点的RLP的Hash值
TXHash Block中tx trie的根节点的RLP的Hah值
ReceiptHash Block中的 "Receipt Trie”的根节点的RLP哈希值
Bloom Bloom过滤器(Filter),用来快速判断一个参数Log对象是否存在于一组已知的Log集合中
Difficulty 区块的难度
Number 区块的序号
Time 区块“应该”被创建的时间
GasLimit 区块内所有Gas消耗的理论上限
GasUsed 区块内所有Transaction执行时所实际消耗的Gas总和
Nonce 一个64bit的哈希数,它被应用在区块的"挖掘"阶段,并且在使用中会被修改
Body
熟悉 解释
Tracsactions[] 区块内部的交易集合
Uncles[] 叔块集合
BlockChain

BlockChain结构体被用来管理整个区块单向链表,在一个Ethereum客户端软件(比如钱包)中,只会有一个BlockChain对象存在。同Block/Header的关系类似,BlockChain还有一个成员变量类型是HeaderChain, 用来管理所有Header组成的单向链表。

HeaderChain

HeaderChain在全局范围内也仅有一个对象,并被BlockChain持有(准确说是HeaderChain只会被BlockChain和LightChain持有,LightChain类似于BlockChain,但默认只处理Headers,不过依然可以下载bodies和receipts)。

MPT

Ethereum 使用的Merkle-PatriciaTrie(MPT)结构,源自于Trie结构,又分别继承了PatriciaTrie和MerkleTree的优点,并基于内部数据的特性,设计了全新的节点体系和插入/载入机制。

三:go-ethereum源码目录结构

包名 说明
accounts 以太坊实现的账户功能
build 一些配置信息
cmd m命令行结构
common 提供了公共数据结构,工具类
console console控制台
contracts 包含
containers/docker
core 核心代码
crypto 加密和hash算法
dashboard
eth 实现了以太坊的协议
ethclient 提供了以太坊的RPC客户端
ethdb eth的数据库(包括实际使用的leveldb和供测试使用的内存数据库)
ethstats 提供网络状态的报告
event 实时的事件
internal
les 以太坊的轻量级协议子集
light 实现以太坊轻量级客户端的按需检索功能
log 日志信息
metrics 磁盘计数
miner 挖矿与区块的生成
mobile 移动端使用的warpper
node 节点多种类型
p2p 网络协议
params
rlp 以太坊hash序列化处理
rpc 远程调用
signer
swarm 网络处理
tests 测试
trie 以太坊重要的数据结构Package trie implements Merkle Patricia Tries.
vendor 第三方
whisper whisper节点协议
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,294评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,780评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,001评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,593评论 1 289
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,687评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,679评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,667评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,426评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,872评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,180评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,346评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,019评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,658评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,268评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,495评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,275评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,207评论 2 352

推荐阅读更多精彩内容