neo blockchain book
  • NEOHOPE's Blockchain Book
  • 概述
    • 本书内容
    • 读者定位
    • 本书约定
    • 项目对比
    • 名词释义
  • 基本原理
    • 区块链
    • 智能合约
    • 交易所
    • 系统架构
  • 基础算法
    • 默克尔树
    • Bloom过滤器
    • 公钥私钥及椭圆曲线
  • 共识算法
    • 分布式系统
    • Paxos与Raft算法
    • 拜占庭容错算法
  • Bitcoin
    • 整体架构
    • 状态转换
    • 区块确认
    • 分叉处理
    • P2P
    • 脚本
    • 钱包
    • 使用
    • 编译(Ubuntu)
    • 私链搭建(Linux)
    • 私链搭建(Docker)
  • Ethereum
    • 整体架构
    • 状态转换
    • 区块确认
    • 使用
    • Remix IDE环境搭建(Ubuntu16)
    • 智能合约编写01
    • 智能合约编写02
    • 智能合约编写03
    • 智能合约编写04
    • 编译(MacOS)
    • 私链搭建
  • EOS
    • 整体架构
    • 使用
    • 智能合约使用(单机单节点单钱包)
    • 智能合约使用(单机单节点多钱包)
    • 编写简单的智能合约
    • 编写有数据存储的智能合约
    • 编译(Linux)
    • 私链搭建(单机多节点)
    • 私链搭建(多机多节点)
  • Fabric
    • 整体架构
    • 身份管理
    • 共识达成
    • 使用
    • 智能合约介绍
    • 智能合约使用01
    • 智能合约使用02
    • 编译(MacOS)
    • 私链搭建(Ubuntu)
    • 在私链中添加一个机构
  • Cosmos
    • 整体架构
    • Zone与Hub
    • 使用
  • IPFS
    • 整体架构
    • 使用
    • 编译(MacOS)
    • 私链搭建
  • 然后呢?
由 GitBook 提供支持
在本页
  1. Ethereum

区块确认

上一页状态转换下一页使用

最后更新于6年前

区块确认

虽然有一些不同,但以太坊的区块链在很多方面类似于比特币区块链。它们的区 块链架构的不同在于,以太坊区块不仅包含交易记录和最近的状态,还包含区块 序号和难度值。以太坊中的区块确认算法如下:

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 相同。如果相同,区块是有效的。否则,区块是无效的。