以太坊被认为是区块链2.0的代表项目,于2014年被V神提出,目前是仅次于比特币的第二大加密货币。
以太坊黄皮书是以太坊协议级的技术说明,作者是Gavin Wood博士,于2014年3月发布黄皮书,发布之后因为其包含300+公式被认为是最难懂的黄皮书。
在黄皮书中,以太坊自称为一个世界计算机,本质上也就是一个状态机,每个区块都有一个最终状态,即world state,世界状态。
在数据结构上,以太坊和比特币很相似但也有很大的一部分改进。

-
以太坊区块中除了区块头、交易list还有一个ommerHeader list
ommerHeader list为该区块的叔块的区块头list,在比特币中,只有挖到矿且成为主链上的块才会有挖矿奖励,以太坊中为了鼓励挖矿针对叔块也给予一部分奖励,这个参数就是记录叔块的列表
区块头中参数由比特币的六个增加到15个,以下分别介绍
-
parentHash:父区块哈希
-
ommershash:ommerHeader list的哈希,放在区块头用来做验证
-
beneficiary:挖矿奖励获益人的地址
-
stateRoot:状态树,即账户状态
包含四个参数:
codehash:标明账户类型,若该账户为合约账户,则该值为合约代码哈希,若账户为外部账户,则该值为空字符串的哈希,此时为固定值
nonce:若账户为合约账户,则该值为创建合约数量,若为外部账户,则该值为从这个账户发出交易的计数
balance:余额
storageRoot:Merkle Patricia树根节点的哈希 -
transactionsRoot,记录区块中交易,主要包括以下几个参数
nonce:发出这个交易的账户的nonce
gasPrice:gas价格
gasLimit:gas限制
to:接受者地址
data:附加数据
v,r,s:交易签名,共65字节,v为最后一个字节,r为前32个字节,s为33-64字节
-
receiptsRoot,收据将交易执行的结果,输出成log,存在receipt中
包含以下参数
medState:从区块执行到这个交易和当前这个交易变成的中间状态
gasUsed:执行完这个交易之后用了多少gas
logBloom:日志topic的Bloom过滤器,标志为index的参数会放在logBloom中
logs:日志
- difficulty:难度值
- number:区块号
- gasLimit:区块gas限制
- gasUsed:区块内所有交易使用的gas
- timestamp: 时间戳
- extraData:32字节数组,矿工用来表示矿是谁挖出来的
- mixHash:挖矿算法输出
- nonce:挖矿算法输出
这些参数中,最主要的是四个tree,也是以太坊区别于比特币最主要的部分。
网友评论