以太坊区块链在很多方面与比特币区块链相似,尽管它有一些差异。
以太坊和比特币在区块链架构方面的主要区别在于,和比特币不同,以太坊区块包含交易列表和最新状态的副本。除此之外,区块中还存储了其他两个值,即块号和难度。
以太坊中的块验证算法如下:
- 检查前面的区块引用是否存在并且是有效的。
- 检查块的时间戳大于引用的前一个块的时间戳,并且在未来15分钟内
- 检查块号,难度,交易根,uncle根和gas限制(各种低级别的以太坊特定概念)是否有效。
- 检查块的工作证明是否有效。
- 设S[0]为前一个块的STATE_ROOT
- 让TX成为块的交易列表,其中有n笔交易
- 对于0 ... n-1中的全部,设置 S[i+1] = APPLY(S[i],TX[i])。
- 如果任何应用程序返回一个错误,或者如果在该点之前消费的gas总量超过了GASLIMIT,则返回一个错误。
- 让S_FINAL成为S[n],但是增加支付给矿工的块奖励。
- 检查S_FINAL是否与STATE_ROOT相同。 如果是,则该块有效; 否则,它是无效的。
更多详情,可查看【以太坊白皮书】:https://github.com/ethereum/wiki/wiki/White-Paper#blockchain-and-mining