菜单

区块生产

相关源文件

Fuel Core 中的区块生产是负责创建、验证和将新区块添加到区块链的关键过程。此过程集成了多个核心组件,它们协同工作以确保区块能够可靠、安全且高效地生产。本文档将介绍区块生产系统如何运行,包括区块创建的触发器、交易选择和区块执行过程。

有关交易在进入区块之前如何管理的更多信息,请参阅交易生命周期。有关区块内 Gas 定价的详细信息,请参阅Gas 定价机制

系统概览

Fuel Core 中的区块生产主要由两个相互作用的组件管理:

  1. PoA 共识模块 - 负责根据配置的规则触发区块生产并管理区块创建的时间
  2. 区块生产者服务 - 负责实际的区块创建,包括交易选择、区块组装和执行

来源

区块生产触发器

PoA 共识模块支持多种触发机制来决定何时生产新区块:

触发类型描述
从不从不自动生产区块
即时一旦有新交易即可生产区块
间隔以固定的时间间隔生产区块
开放在指定的时段过去后生产区块

当满足触发条件时,共识模块通过区块生产者服务启动区块生产过程。

来源

PoA 共识服务

PoA 共识服务实现为一个管理区块生产生命周期的MainTask

MainTask 负责:

  1. 监控触发条件
  2. 计算合适的区块高度和时间戳
  3. 请求区块生产者服务进行区块生产
  4. 区块生产后签名区块
  5. 通过区块导入器提交生产的区块

来源

区块生产者实现

区块生产者服务实现了实际的区块创建逻辑。

来源

区块生产流程

区块生产过程包含几个关键步骤:

  1. 触发检测:PoA 服务检测何时应生产新区块。
  2. 交易选择:从交易池中选择交易。
  3. DA 高度选择:选择一个新的数据可用性高度。
  4. 头部构建:创建包含相关元数据的新区块头部。
  5. 区块执行:执行交易以生成新区块。
  6. 区块签名:区块由区块签名者进行签名。
  7. 区块导入:将签名的区块导入区块链。

来源

交易来源选择

区块的交易可以来自不同的来源:

  1. 交易池:正常操作使用来自交易池的交易。
  2. 特定交易:用于手动区块生产,包含预定义交易。
  3. 预定义区块:也可以生产完整的预定义区块。

来源

数据可用性高度选择

区块生产的一个重要部分是为新区块选择合适的数据可用性 (DA) 高度。

来源

手动区块生产

Fuel Core 支持手动区块生产,这对于测试和开发很有用。

手动区块生产支持两种模式:

  1. 区块:使用交易池中的交易生产指定数量的区块。
  2. 带交易的区块:生产一个包含特定交易的区块。

来源

预定义区块生产

Fuel Core 还可以生产预定义区块,这对于测试或确定性场景很有用。

来源

区块执行与导入

区块生产完成后,将执行并导入区块链。

来源

区块生产就绪信号

Fuel Core 实现了一种区块生产就绪信号机制,用于控制何时可以开始区块生产。

该机制确保在节点准备好(例如,与网络完全同步)之前不会开始区块生产。

来源

块生产过程中的错误处理

块生产系统包含强大的错误处理机制,以应对各种故障。

  1. 生产锁:防止同时进行块生产尝试。
  2. 超时处理:确保块生产不会无限期挂起。
  3. 重试机制:允许在失败后带有退避周期的块生产进行重试。
  4. 验证检查:各种验证确保块的有效性(高度、时间戳等)。

来源

结论

Fuel Core 中的块生产系统是一个复杂的组件,负责处理创建区块链新块的关键过程。它与交易池、共识、执行和数据可用性等多个其他系统集成,以确保块的正确高效生成。各种触发机制和配置选项为从自动生产到手动测试的不同部署场景提供了灵活性。