区块确认
最后更新于
虽然有一些不同,但以太坊的区块链在很多方面类似于比特币区块链。它们的区 块链架构的不同在于,以太坊区块不仅包含交易记录和最近的状态,还包含区块 序号和难度值。以太坊中的区块确认算法如下:
1. 检查区块引用的上一个区块是否存在和有效。
2. 检查区块的时间戳是否比引用的上一个区块大,而且小于 15 分钟。
3. 检查区块序号、难度值、 交易根,叔根和瓦斯限额(许多以太坊特有的底层概念)是否有效。
4. 检查区块的工作量证明是否有效。
5. 将 S[0]赋值为上一个区块的 STATE_ROOT。
6. 将 TX 赋值为区块的交易列表,一共有 n 笔交易。对于属于 0……n-1 的 i,进行状态转换 S[i+1] = APPLY(S[i],TX[i])。如果任何一个转换发生错误,或者程序执行到此处所花费的瓦斯( gas)超过了 GASLIMIT,返回错误。
7. 用 S[n]给 S_FINAL 赋值, 向矿工支付区块奖励。
8 检查 S-FINAL 是否与 STATE_ROOT 相同。如果相同,区块是有效的。否则,区块是无效的。