本文档为 fuel-core 的开发者提供指南,涵盖开发工作流程、代码组织、测试策略和贡献实践。有关测试框架和基准测试的详细信息,请参阅测试与基准测试。有关 CI/CD 管道的详细信息,请参阅持续集成。
fuel-core 开发环境围绕几个关键组件组织,它们协同工作以提供全面的区块链节点实现。理解这些组件之间的关系对于高效开发至关重要。
来源:tests/tests/tx.rs1-20 benches/benches/vm.rs1-30 benches/src/lib.rs1-50
fuel-core 代码库遵循模块化架构,并明确区分关注点。理解这种结构对于高效开发至关重要。
来源:crates/fuel-core/src/schema/chain.rs1-30 crates/fuel-core/src/query/message.rs1-50
fuel-core 项目采用全面的测试方法,包含多种测试策略。主要的测试模式包括
tests/tests/ 目录中benches/ 目录中来源:tests/tests/tx.rs1-100 tests/tests/messages.rs1-100 tests/tests/contract.rs1-100
事务的标准测试模式包括:
TestContextAssembleAndRunTx 构建事务FuelClient 提交事务消息测试遵循相似的模式,但侧重于跨链消息功能
来源:tests/tests/messages.rs64-106
基准测试系统围绕 criterion 框架构建,并使用自定义的 VmBench 工具来测量 VM 性能和 gas 成本。
来源:benches/benches/vm.rs1-110 benches/src/lib.rs1-200 benches/src/bin/collect.rs1-100
VmBench 结构体提供了一个构建器模式用于创建基准测试
collect.rs 工具处理基准测试输出以生成 gas 成本参数
该工具读取 criterion 基准测试的 JSON 输出,并将其转换为共识参数的 gas 成本配置。
来源:benches/src/bin/collect.rs60-67
代码库提供了丰富的测试实用程序
来源:tests/tests/contract.rs1-50 tests/tests/tx.rs55-60
GraphQL API 是 fuel-core 的核心接口。Schema 开发遵循特定模式
该项目使用快照测试来确保 GraphQL schema 的稳定性。
来源:crates/client/src/client/schema/chain.rs554-567
GraphQL 查询包含复杂度注解,以防止昂贵的操作
来源:crates/fuel-core/src/schema/chain.rs815-825
设置开发环境
运行集成测试
性能验证
Schema 测试
TestContext 进行需要完整节点的集成测试VmBench 进行性能敏感的代码测试来源:tests/tests/tx.rs1-1083 benches/benches/vm.rs1-110 crates/client/src/client/schema/chain.rs550-568