【钱包】【WEB3】【Flutter】一组助记词如何推导多个账号钱包
- 软件开发
- 2025-09-01 22:57:02

一、前言
一组助记词可以推导多个账户,是因为在区块链钱包中,助记词(Mnemonic)实际上是 BIP39 标准下生成的一个种子,该种子通过 BIP32/BIP44 标准可以派生出无限多个账户地址。
这里我将以太坊Ethereum为例,讲解一下常见的推导路径,将会结合blockchain_utils为例,blockchain_utils 是一个功能较为全面的库,支持 BIP32、BIP39、BIP44 等多种钱包路径和账户推导标准,非常适合用来实现从助记词派生多个账户地址的功能。
二、推导路径(Derivation Path) 常见路径标准: 链路径示例CoinType比特币(BTC)m/44’/60’/0’/0/00以太坊(ETH)m/44’/60’/0’/0/060波场(TRON)m/44’/195’/0’/0/0195火币链(HT)m/44’/1010’/0’/0/01010OK链(OKT)m/44’/996’/0’/0/0996BSC链和ETH一样 m/44’/60’/0’/0/060 路径结构解析: m / purpose' / coin_type' / account' / change / index 解释说明: m:根路径。purpose:固定为 44’,表示使用 BIP44 标准。coin_type:货币类型,比如:60 表示以太坊(Ethereum)0 表示比特币(Bitcoin)account:账户索引,比如 0、1、2……change:是否为找零地址,一般是 0。index:派生出的地址索引,比如 0、1、2…… 三、推导思路假设你已经有助记词了,你可以这样生成多个地址:
使用助记词生成种子(seed);使用种子生成主私钥(Master Private Key);根据不同的路径(例如 m/44’/60’/0’/0/0 到 m/44’/60’/0’/0/9)推导出多个地址。 四、代码事例 引入依赖 dependencies: flutter: sdk: flutter blockchain_utils: ^4.0.0 从助记词推导多个以太坊(Ethereum)地址 import 'package:blockchain_utils/blockchain_utils.dart'; void deriveEthAddresses(String mnemonic, {int count = 5}) { // 1. 助记词转Seed final seed = Mnemonic.createSeed(mnemonic); // 2. 通过Seed创建HD钱包根私钥 final rootKey = HdPrivateKey.master(seed, Network.mainnet()); // 3. 推导路径 BIP44: m/44'/60'/0'/0/i const basePath = "m/44'/60'/0'/0/"; for (int i = 0; i < count; i++) { final derivedKey = rootKey.derivePath(basePath + i.toString()); // 获取私钥 final privateKeyHex = derivedKey.privateKey.toHex(); // 获取以太坊地址 final ethAddress = EthAddress.fromPrivateKey(derivedKey.privateKey).toString(); print('地址 $i: $ethAddress'); print('私钥 $i: $privateKeyHex\n'); } } 运行 void main() { const mnemonic = "clutch captain shoe salt awake harvest setup primary inmate ugly among become"; deriveEthAddresses(mnemonic, count: 5); } 地址 0: 0x8f3c8d3e8b4b2a9fb8f9e04c9c55b918dcf94a36 私钥 0: 0xabcdef123456789... 地址 1: 0x5a8b8e3f6b3a2d9fb4f3e04b9c55c918dcf94b23 私钥 1: 0x123456abcdef789... 路径解释(BIP44) 项目含义m/44’/60’/0’/0/0以太坊默认地址路径 (BIP44标准)44’目的 (Purpose) 固定为 44’60’币种 (Coin type) 以太坊是 600’账户 (Account)0外部 (Change) 一般为 00地址索引 (Index) 其他:生成TRON地址 // TRON地址 final tronKey = rootKey.derivePath("m/44'/195'/0'/0/0"); final tronAddress = TronAddress.fromPrivateKey(tronKey.privateKey); print('TRON 地址: $tronAddress'); 五、注意事项 不同链的路径不同,比如: BTC: m/44'/0'/0'/0/0 ETH: m/44'/60'/0'/0/0 BSC(币安智能链):同 ETH 使用 m/44'/60'/0'/0/0 助记词推导的所有地址,都属于同一个钱包,共享同一套助记词。备份助记词,即可恢复所有地址。这种方式非常常见,比如 imToken、MetaMask 等钱包,都是用助记词生成多个地址。 六、关于作者(ZFJ_张福杰) 官网: zfjsafe 博客: zfj1128.blog.csdn.netGithub: github /zfjsyqkGitee: gitee /zfj1128【钱包】【WEB3】【Flutter】一组助记词如何推导多个账号钱包由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【钱包】【WEB3】【Flutter】一组助记词如何推导多个账号钱包”