分层确定性的概念早在 BIP32 提案提出。根据比特币核心开发者 Gregory Maxwell 的原始描述和讨论,Pieter Wuille 在2012 年 02月 11日整理完善提交 BIP32, 后续的BIP43 、 BIP34 、BIP44的规则使得 HD 钱包非常强大,用户只需要保存一个种子,就能控制所有币种,所有账户的钱包。具体可以查看(https://github.com/bitcoin/bips)
很多交易所都使用HD 钱包做为冷钱包,每新加入一个用户通过HD公钥生成一个地址,因此也需要多散落在分散HD 地址里的地址进行归集。
国内企业钱包服务商 ET 钱包开源了他们的归集工具,本文他们的代码为蓝本讲解。
相关代码在 https://github.com/etwallet/etpay 的etPayCollects 目录下
首先讲解ETH 以及Erc20代币的归集
1.准备gas费用
Erc 20的归集需要支付gas费用,具体根据实际情况让相应地址里有对应的eth 即可。
2.通过助记词生成私钥。
EthUtils 工具类里面 调用静态类函数getPrivateKeyByMnemonicCode
就可以实现
3.构建交易
EthUtils 调用静态类函数createEthTx 根据传入进来的地址 金额 gas费用等 调用ethereumj 组成交易(在组交易的过程中需要到eth节点获取一个once)
4.签名交易
5.广播交易到 eth网络
Erc20 的代币归集类似 具体封装在EthTokenUtils 有需要的童鞋可以参考一下。