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

发布时间:2026/10/31 17:57:05

如何用 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/10/31 17:54:37

Windows下使用Volta管理Node.js版本全指南

1. Volta 简介与 Windows 安装准备 Volta 是一个现代化的 JavaScript 工具链管理器,它能够帮助开发者轻松管理 Node.js、npm、yarn 和 pnpm 等工具的版本。与传统的版本管理工具不同,Volta 采用了"零配置"的理念,通过智能的上下文感…

2026/10/31 17:54:37

VS2017预编译GDAL接入实战:从配置到避坑

简介:这份资源是面向 Visual Studio 2017 开发者的预编译 GDAL 库,省去从 CMake 配置、依赖梳理到编译排错的繁琐流程,下载后只需在项目中完成头文件与库路径配置即可调用。压缩包约 103.88MB,共 6305 个文件,以 obj、…

2026/10/31 17:54:37

高分辨率3D异常检测技术与MiniShift数据集应用

1. 高分辨率3D异常检测的核心挑战与MiniShift数据集价值在工业质检领域,3D异常检测技术正经历从传统2D视觉到三维空间分析的范式转移。传统方法受限于二维图像的信息缺失,对于表面凹陷、细微划痕等三维几何特征不敏感。而高分辨率点云数据能提供亚毫米级…

2026/10/31 17:54:37

高分辨率3D点云异常检测技术与工业质检应用

1. 项目概述:高分辨率3D异常检测的新标杆在工业质检领域,3D异常检测技术正经历从传统2D视觉到三维空间分析的范式转移。传统方法受限于二维图像的分辨率和视角,难以捕捉复杂曲面上的微小缺陷。我们团队最新提出的MiniShift-Simple3D方案&…

2026/10/31 17:54:37

小学信息学复赛四题拆解:从枚举到逆向思维的核心考点

简介:这份资源是第18届绍兴市少儿信息学竞赛复赛试题文档,面向备战NOIP系列赛事的小学高年级及初中信息学选手与辅导教师,用于熟悉复赛题型、检验算法与编程基本功。压缩包内共1个docx文件,约32KB,完整收录比赛题目说明…

2026/10/31 17:49:36

青草莓谈fuzzing: 聊一下目前模糊测试技术的发展的看法

模糊测试技术目前在安全漏洞挖掘中是 非常 火 非常 有 效的一个测试活动,并且也是出论文非常火的一个研究方向黑盒模糊测试技术在研究黑盒模糊测试的时候我们曾提出过很多目前还没有实现的甚至看起来很天真的研究方向通过协议文档自动生成测试模型套件通过协议交互抓…

2026/10/30 20:55:10

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/30 20:55:10

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/30 20:55:09

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/31 0:02:41

猫狗目标检测数据集:VOC/COCO/YOLO三格式一体化实战包

简介:本资源是一套面向计算机视觉初学者与YOLO目标检测实践者的猫狗图像数据集及配套开发工具包,专为快速上手目标检测模型训练而设计。资源包含1000张真实场景高清猫狗图片,标注质量高,同时提供VOC(XML)、…

2026/10/31 0:02:41

HDU2017多校标程复现:算法竞赛工程化真题沙盒

简介:本资源为2017年HDU多校联合训练第一场官方配套资料,面向ACM程序设计竞赛备赛学生、算法爱好者及高校编程集训队成员,旨在提供权威解题参考与完整测试验证环境。压缩包共40个文件,含15份C标程(覆盖全部赛题&#x…

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

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

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