Fuel Core 是一个模块化的区块链执行层,专为高吞吐量和低延迟操作设计,并针对 Layer 2 扩展进行了优化。它作为 Fuel 协议的参考实现,提供了一个完整的节点解决方案,并侧重于性能和模块化。
本文档介绍了 Fuel Core 的核心组件、架构和关键特性。有关运行节点的更具体信息,请参阅 入门指南,有关基本概念,请参阅 关键概念。
来源:README.md1-11 bin/fuel-core/Cargo.toml1-14 crates/fuel-core/Cargo.toml1-13
来源:crates/fuel-core/src/service/sub_services.rs90-166 crates/fuel-core/src/service.rs70-110 bin/fuel-core/src/cli/run.rs90-120
The FuelService 是主要的协调器,负责初始化和管理所有子服务。它处理启动顺序,确保数据库的正确初始化,并协调所有组件的生命周期。
来源:crates/fuel-core/src/service.rs98-170 crates/services/src/service.rs1-36
执行器负责处理交易和执行 Fuel 虚拟机 (FuelVM)。它负责
执行器通过可升级的架构支持版本控制,允许使用不同版本的状态转换函数。
来源:crates/services/upgradable-executor/src/executor.rs136-192 crates/services/upgradable-executor/src/executor.rs397-439
交易池负责管理等待被包含在区块中的待处理交易。它
来源:crates/fuel-core/src/service/sub_services.rs278-290 crates/fuel-core/src/service/adapters.rs73-94
区块生产者通过以下方式协调新区块的创建
来源:crates/fuel-core/src/service/sub_services.rs302-319 crates/fuel-core/src/service/adapters.rs61-92
Fuel Core 实现了一个权威证明 (PoA) 共识机制,该机制
来源:crates/fuel-core/src/service/sub_services.rs91-98 crates/fuel-core/src/service/sub_services.rs370-384
P2P 网络支持 Fuel 节点之间的通信,用于
来源:bin/fuel-core/src/cli/run.rs104-105 crates/fuel-core/src/service/sub_services.rs154-175 crates/fuel-core/src/service/sub_services.rs293-307
GraphQL API 为客户端应用程序提供了与节点交互的全面接口。它支持
来源:crates/fuel-core/src/graphql_api.rs21-49 crates/fuel-core/src/graphql_api/api_service.rs1-115
交易状态管理器负责跟踪和广播交易状态变更,为整个系统中的交易状态提供单一的真相来源。
来源: crates/fuel-core/src/service/sub_services.rs179-189 bin/fuel-core/src/cli/run.rs119-120
Gas Price Service 会根据网络需求和活动动态计算交易的合适 Gas 价格。
来源: crates/fuel-core/src/service/sub_services.rs253-276 bin/fuel-core/src/cli/run/gas_price.rs1-162
Relayer 在 Fuel 和数据可用性层(通常是以太坊等 L1 区块链)之间充当桥梁,负责
来源: crates/services/relayer/src/service.rs1-33 crates/fuel-core/src/service/sub_services.rs227-247
Compression Service 为高效的数据可用性和存储压缩区块,这对于 L2 解决方案尤为重要。
来源: crates/fuel-core/src/service/sub_services.rs404-417 bin/fuel-core/src/cli/run.rs553-558
Fuel Core 使用灵活的存储系统,可以与不同的后端配合运行
存储层旨在支持历史状态访问和高效查询。
来源: crates/fuel-core/src/service/config.rs46-99 crates/fuel-core/src/service.rs38-58
来源: crates/fuel-core/src/service/sub_services.rs278-290 crates/services/upgradable-executor/src/executor.rs397-439 crates/fuel-core/src/service/sub_services.rs179-189
Fuel Core 中的区块生产遵循以下步骤
区块生产触发器可以通过多种模式进行配置
Instant:在有交易可用时立即生产区块Manual:仅在手动触发时生产区块Never:禁用区块生产Open:在配置的时间段内生产区块来源: crates/fuel-core/src/service/sub_services.rs302-319 crates/fuel-core/src/service/sub_services.rs370-384 bin/fuel-core/src/cli/run.rs243-244
Fuel Core 通过命令行参数提供多种配置选项
主要配置类别包括
来源: bin/fuel-core/src/cli/run.rs122-315 crates/fuel-core/src/service/config.rs46-99
当 Fuel Core 节点启动时,它会从现有数据库初始化区块链状态,或者创建一个新的创世区块。创世过程
链配置在 JSON 文件中定义,指定如下参数
来源: crates/fuel-core/src/service/genesis.rs1-121 bin/fuel-core/chainspec/local-testnet/chain_config.json1-50 crates/chain-config/src/config/snapshots/fuel_core_chain_config__config__chain__tests__snapshot_local_testnet_config.snap1-50
Fuel Core 为外部系统提供了多种集成点
来源: crates/fuel-core/src/graphql_api/api_service.rs1-115 crates/services/relayer/src/service.rs1-33 README.md229-239
Fuel Core 通过 upgradable-executor 组件支持状态转换函数的版本控制。这允许
系统跟踪当前状态转换字节码版本,并可以根据所需版本使用原生执行器或 WASM 执行器。
来源: crates/services/upgradable-executor/src/executor.rs136-250 crates/types/src/blockchain/header.rs50-80
Fuel Core 是一个高度模块化且高性能的区块链执行层,专为 Layer 2 扩容设计。其架构强调关注点分离,允许组件独立演进,同时通过明确定义的接口来保持互操作性。这种设计提供了适应不断变化的需求所需的灵活性,以及高吞吐量区块链系统所需的性能特征。
有关特定组件的更详细信息,请参阅本 Wiki 的相关章节。