ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

fuels-rs 测试钱包完整指南:用 WalletsConfig 批量配置多资产钱包一篇搞定

fuels-rs 测试钱包完整指南:用 WalletsConfig 批量配置多资产钱包一篇搞定 fuels-rs 测试钱包完整指南用 WalletsConfig 批量配置多资产钱包一篇搞定【免费下载链接】fuels-rsFuel Network Rust SDK项目地址: https://gitcode.com/GitHub_Trending/fu/fuels-rs在 fuels-rsFuel Network Rust SDK里写测试一个钱包往往不够用转账要发件方和收件方多代币场景还要让每个钱包持有指定数量、指定面值的资产。WalletsConfig就是为此准备的注资配方把钱包数量、资产清单、每个资产多少枚币、每枚币多少面值写清楚交给launch_custom_provider_and_get_wallets本地节点拉起后一批已注资的钱包会直接交到你手里。 为什么测试需要一批已注资的钱包真实链上拿钱包和给它注资是两件事测试里希望一步跳过。launch_custom_provider_and_get_wallets一次做完两件事启动本地节点按配方批量生成钱包并返回VecWallet。拿到列表就能直接下标取用——转账测试里wallets[0]转给wallets[1]不用再单独准备资金。 快速上手为 fuels-rs 测试钱包项目补齐 dev-dependencies在依赖 fuels 的项目里补上这三项即可官方示例 crate 的依赖声明见 examples/wallets/Cargo.toml[dev-dependencies] fuels { features [default, accounts-keystore] } rand 0.8 tokio { features [full] }注意launch_custom_provider_and_get_wallets是异步方法测试函数要标注#[tokio::test]才能跑。什么都不想传的话直接WalletsConfig::default()会返回 10 个开箱即用的钱包。用 WalletsConfig::new 快速配置一批基础资产钱包只注资 gas 支付用的基础资产时WalletsConfig::new就够用。三个参数全是Option传None的项取默认值参数含义为 None 时的默认值num_wallets生成的钱包数量10num_coins每个钱包持有的基础资产币数1coin_amount每枚币的面值1_000_000_000常量定义在 packages/fuels-test-helpers/src/wallets_config.rs。想精确一点——比如官方文档 docs/src/wallets/test-wallets.md 里5 个钱包、各 3 枚币、每枚 100的写法——就把三个值以Some传入。批量配置多资产钱包的步骤AssetConfig new_multiple_assets要覆盖多个自定义AssetId换用WalletsConfig::new_multiple_assets先用AssetConfig逐项描述资产再汇成 vec。示例创建 1 个钱包注入基础资产加 2 个随机资产随机 id 借助rand的Fill生成let mut rng rand::thread_rng(); let mut id1 AssetId::zeroed(); id1.try_fill(mut rng)?; let mut id2 AssetId::zeroed(); id2.try_fill(mut rng)?; // 必须手动加入基础资产否则钱包拿什么付 gas let assets vec![ AssetConfig { id: AssetId::zeroed(), num_coins: 2, coin_amount: 4 }, AssetConfig { id: id1, num_coins: 6, coin_amount: 8 }, AssetConfig { id: id2, num_coins: 10, coin_amount: 12 }, ]; let config WalletsConfig::new_multiple_assets(1, assets); let wallets launch_custom_provider_and_get_wallets(config, None, None).await?;一个易错点new_multiple_assets不会替你补基础资产必须手动把AssetId::zeroed()32 字节全零值连同币数和面值放进 assets。漏掉它钱包付不了 gas第一笔交易就会失败。配置写完后也可以用访问器num_wallets()和assets()先自检一遍。 结果验证get_asset_balance 与 get_balances 的断言写法钱包建好后用两个方法核对get_asset_balance查询单个资产的余额get_balances返回HashMapString, u128键是资产 ID 的十六进制字符串详见 docs/src/wallets/checking-balances-and-coins.md。断言口径很直接某资产余额 num_coins × coin_amount。e2e/tests/wallets.rs 里的test_wallet_balance_api_multi_asset正是这么断言的示例取值7 个资产、各 21 枚、每枚 11let number_of_assets 7; let coins_per_asset 21; let amount_per_coin 11; let balances wallet.get_balances().await?; assert_eq!(balances.len() as u64, number_of_assets); for asset_id in asset_ids { let balance wallet.get_asset_balance(asset_id).await?; assert_eq!(balance, (coins_per_asset * amount_per_coin) as u128); assert_eq!( *balances.get(asset_id.to_string()).unwrap(), (coins_per_asset * amount_per_coin) as u128 ); }两处断言各管一件事map 条目数等于配置的资产数、每个资产余额等于乘积。都通过注资才准确。️ 避坑指南三个容易忽略的细节确定性地址launch_provider_and_get_wallet或launch_custom_provider_and_get_wallets生成的钱包具有确定性地址多次运行看到相同地址不必奇怪。gas 只能由基础资产支付AssetId为 32 字节全零多资产配置时这是最容易忘的一项。币数上限若改走setup_multiple_assets_coins/setup_single_asset_coins这类 helper不经过WalletsConfig文档建议最多1_000_000枚币或1000枚币和资产同时不超过否则运行时间会明显拉长。文档示例中launch_custom_provider_and_get_wallets的后两个参数均传None日常照此即可。【免费下载链接】fuels-rsFuel Network Rust SDK项目地址: https://gitcode.com/GitHub_Trending/fu/fuels-rs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表