如何用 fuels-rs 以自定义共识参数与创世币启动本地 Fuel 测试链

发布时间:2026/9/10 12:17:37

如何用 fuels-rs 以自定义共识参数与创世币启动本地 Fuel 测试链 如何用 fuels-rs 以自定义共识参数与创世币启动本地 Fuel 测试链【免费下载链接】fuels-rsFuel Network Rust SDK项目地址: https://gitcode.com/GitHub_Trending/fu/fuels-rs当你为合约或交易编写测试时默认启动的本地节点使用的是默认共识参数和随机生成的初始币。如果你的测试需要验证特定的交易限制如单交易最大 gas、最大输入数量或自定义费用参数并且要指定某个地址持有确定的创世币数量fuels-rsFuel Network Rust SDK提供了完整的操作路径通过fuels::test_helpers中的setup_test_provider()把自定义的ChainConfig包含共识参数和创世币一起交给一个短生命周期本地节点并拿回一个连接该节点的Provider。本文基于仓库内的 cookbook 文档 docs/src/cookbook/custom-chain.md 与对应示例 custom_chain 测试 编写。准备条件示例代码位于工作区成员 examples/cookbook其依赖声明如下可直接照抄到自己的项目fuels { version 0.77.0, features [default] } rand 0.8.5 tokio { version 1.34.0, features [full] }工作区 Cargo.toml 要求 Rust 工具链rust-version 1.93.0SDK 当前版本为0.77.0。启动本地节点有两种方式见 docs/src/connecting/short-lived.md在本机安装fuel-core节点二进制安装步骤参见 docs/src/getting-started.md 中指向的 Fuel 工具链安装指南或者启用fuel-core-libfeature把fuel-core作为库运行无需安装二进制fuels { version 0.77.0, features [fuel-core-lib] }。以下代码默认在#[tokio::test]中运行因为setup_test_provider是异步函数。第一步定义自定义共识参数ConsensusParameters由TxParameters、FeeParameters等子参数组成通过set_*方法写入。下面这段代码来自 cookbook 示例把单交易最大 gas 设为 1000、最大输入数设为 2、gas 价格因子设为 10use fuels::{ prelude::*, tx::{ConsensusParameters, FeeParameters, TxParameters}, }; let tx_params TxParameters::default() .with_max_gas_per_tx(1_000) .with_max_inputs(2); let fee_params FeeParameters::default().with_gas_price_factor(10); let mut consensus_parameters ConsensusParameters::default(); consensus_parameters.set_tx_params(tx_params); consensus_parameters.set_fee_params(fee_params); let chain_config ChainConfig { consensus_parameters, ..ChainConfig::default() };TxParameters和FeeParameters的其余字段保持默认值Default::default()后只覆盖了上述 builder 方法设置的字段ChainConfig除consensus_parameters外也全部取默认。第二步生成创世币并绑定到地址启动节点前先用setup_single_asset_coins造出创世币。它接收持有地址、资产 ID、币的数量和每枚币的数量返回VecCoin可直接传给setup_test_provider。示例中的持有者是一个随机生成的签名者let signer PrivateKeySigner::random(mut thread_rng()); let coins setup_single_asset_coins( signer.address(), Default::default(), DEFAULT_NUM_COINS, DEFAULT_COIN_AMOUNT, );其中资产 ID 传Default::default()即基础资产用于付 gasDEFAULT_NUM_COINS与DEFAULT_COIN_AMOUNT是fuels::test_helpers导出的常量定义在 packages/fuels-test-helpers/src/wallets_config.rsDEFAULT_NUM_COINS 1、DEFAULT_COIN_AMOUNT 1_000_000_000rand::thread_rng来自上面声明的rand依赖。如果需要多个资产或精确控制每种资产的币数与数量可以改用setup_multiple_assets_coins或setup_custom_assets_coins函数签名与说明见 packages/fuels-test-helpers/src/lib.rs。第三步启动节点并获取 Providersetup_test_provider的签名为pub async fn setup_test_provider( coins: VecCoin, messages: VecMessage, node_config: OptionNodeConfig, chain_config: OptionChainConfig, ) - ResultProvider第四个参数就是你前面构造的chain_config。节点行为由第三个参数NodeConfig控制默认值DbType::InMemory、utxo_validation: true、Trigger::Instant、silent: true等定义在 packages/fuels-test-helpers/src/node_types.rs一般测试场景直接取默认即可let node_config NodeConfig::default(); let _provider setup_test_provider(coins, vec![], Some(node_config), Some(chain_config)).await?;调用成功后Provider已连接到一个运行你自定义ChainConfig的本地节点节点进程随测试进程存活测试结束后由setup_test_provider内部持有的句柄一并释放源码中通过tokio::spawnpending()持有句柄直到 provider 侧生命周期结束见 packages/fuels-test-helpers/src/lib.rs。注意如果第四个参数传Nonesetup_test_provider会回退到一个内置的 testnet 配置——它把交易大小上限提到10_000_000、合约大小上限提到1_000_000。要精确控制共识参数时必须显式传入Some(chain_config)。验证共识参数与链配置确实生效仓库内的测试用例给出了两种核对方式可直接照搬方式一整份对比共识参数。调用provider.consensus_parameters()取回链上生效的参数与本地构造的ConsensusParameters直接相等比较见 test_setup_test_client_consensus_parameters_configlet retrieved_parameters provider.consensus_parameters().await?; assert_eq!(retrieved_parameters, consensus_parameters);方式二通过chain_info()抽查关键字段。如果ChainConfig里还设置了chain_name等字段可以用provider.chain_info()核对链名与具体参数值见 test_chain_config_and_consensus_parameterslet chain_info provider.chain_info().await?; assert_eq!(chain_info.name, chain_name); assert_eq!( chain_info.consensus_parameters.tx_params().max_inputs(), max_inputs );用cargo test运行测试若测试通过输出默认被隐藏需要查看println!输出时可加-- --nocapture见 docs/src/testing/basics.md。限制与注意事项该流程启动的是短生命周期、内存数据库的测试节点定位为合约/交易测试环境不是持久化部署方案。需要持久存储时可在NodeConfig中把database_type设为DbType::RocksDb(Some(path))并配合rocksdbfeature 使用见 docs/src/connecting/short-lived.md 与 examples/cookbook/src/lib.rs 中的create_or_use_rocksdb示例。示例中的数值1_000、2、10是 cookbook 演示用的配置值应按自己的测试目标替换本文档不承诺这些数值对真实网络有任何含义。ChainConfig、NodeConfig等类型来自fuel-core-chain-config/fuels-test-helpers字段含义以 packages/fuels-test-helpers/src/node_types.rs 中的定义为准不要凭字段名推断未在文档中说明的行为。完整参考实现docs/src/cookbook/custom-chain.md 对应的 custom_chain 测试以及参数验证测试所在的 packages/fuels-test-helpers/src/lib.rs。【免费下载链接】fuels-rsFuel Network Rust SDK项目地址: https://gitcode.com/GitHub_Trending/fu/fuels-rs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/10 15:28:32

CANN/ge性能分析启动接口

aclgrphProfStart 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFl…

2026/9/10 15:28:32

CANN/GE销毁查询信息接口

aclmdlBundleDestroyQueryInfo 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTor…

2026/9/10 15:28:32

QT事件循环机制与事件处理实战解析

1. QT事件循环机制深度解析 作为QT框架的核心机制,事件循环(Event Loop)承担着应用程序运行中枢的角色。我曾在多个工业控制项目中深刻体会到,不理解事件循环的开发者常会遇到界面卡死、信号槽失效等典型问题。让我们从底层原理开…

2026/9/10 15:23:32

2026年论文降重工具测评与使用指南

1. 论文降重工具的核心价值与选择标准写论文最头疼的就是查重率过高的问题。作为一名经历过无数次论文修改的老手,我深知降重工具的重要性。2026年的今天,市面上涌现出数十款降重工具,但质量参差不齐。真正好用的工具应该具备三个核心能力&am…

2026/9/9 13:11:35

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/10 11:16:38

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/10 0:00:55

目录对比去重实战:用哈希算法精准清理重复文件

我电脑里现在还有一块换了三次机的“数据墓地”硬盘,里面存着2016年以前所有旧笔记本的完整备份。平时不觉得有什么,直到前阵子想把它整理归档,发现同一个安装包、同一批照片、同一份论文草稿,在几个不同的备份目录里反复出现。更…

2026/9/10 0:00:55

Leaflet离线地图完整Demo合集:内网部署与坐标纠偏实战

简介:这是一份面向Web GIS开发者的LeafLet离线地图示例合集,帮助开发者快速掌握离线地图从搭建到交互的完整流程。压缩包共723个文件,大小14.06MB,以319个js脚本、175个html页面和29个css样式文件为主体,配合png/svg图…

2026/9/10 0:00:55

MATLAB读取Rinex 3.02观测文件:多系统GNSS数据解析实战

简介:基于MATLAB开发的Rinex3.02版观测文件(o文件)读取代码包,面向卫星定位导航方向的学习者与研究人员,用于解决新版观测文件的数据解析、历元提取与时间转换问题。压缩包共4个文件,包含两个m脚本、一个19…

2026/9/10 12:32:02

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/10 15:19:50

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/9 10:21:54

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码