|
通过助记词导入钱包 创建新钱包的时候我们采用的是调用seedFromRandomWithMnemonic()方法通过随机助记词生成种子去创建的,那么我们在创建钱包的时候指定助记词即可实现通过助记词导入钱包,这就需要使用到另外一个方法seedFromMnemonic(),它的API定义如下: 点击此处添加图片说明文字 根据API的定义可知,必传参数有如下两个,注意它没有回调。 BIP39: String, 助记词。 opts: 可选参数,它是一个对象,包含的字断如下: opts.network: string, 钱包连接的网络类型,支持正式网络和测试网络,分别表示为:livenet、testnet。 opts.passphrase: 助记词的密码,通过助记词+密码共同生成种子,所以密码不一样种子就不一样,导致无法找回账号。 opts.account: Number, 账号序号,默认为0。 opts.derivationStrategy: String, 使用的BIP协议,默认为BIP44。 因此通过助记词导入钱包的代码实现如下: 点击此处添加图片说明文字 输出如下: F6CA929D-C18F-440E-B25B-E2EC53AE3992 使用的助记词是“eternal list thank chaos trick paper sniff ridge make govern invest abandon”密码是”lixu1234qwer”,生成的地址为“mm16s7xsf8Wjwxhprc6YzLW9gVncqZNGBR”,路径是“m/0/0”,公钥是“031cf3493c5fcb4eabdfaa4191a02cc30429539ea6b80f5590bc4a8b6222f0d3ba”,这些数据与第二章中我们验证的数据一致。 三、导出钱包助记词 既然能通过导入助记词恢复钱包,那也能导出钱包助记词,这个数据在上一章中我们创建钱包后已经能够获取到助记词字断了,但是它需要解锁后才能获取,即通过import()方法解锁。
需要安装库:bitcoinjs-lib、bip39、bip32。 bitcoin.networks.testnet:指定为测试网络,若切换到正式网络,则为bitcoin.networks.bitcoin,同时需要改变路径。 bip39.generateMnemonic():用于生成助记词。 bip39.mnemonicToSeed(mnemonic, "lixu1234qwer"):将助记词与密码转成种子。 bip32.fromSeed(seed, myNetwork):将种子转为相应网络下的root。 const path = "m/44'/1'/0'/0/"+i:指定第一个账号的第i个扩展子账号路径。若切换到正式网络,路径则是"m/44'/0'/0'/0/"+i root.derivePath(path):获取指定路径的keyPair。 keyPair.toWIF():获取私钥。 keyPair.publicKey.toString("hex"):获取公钥。 const { address } = bitcoin.payments.p2pkh({ pubkey: keyPair.publicKey , network:network}):获取普通比特币地址,p2pkh这是最常见的比特币交易地址类型。可见:在测试网络中的地址是以m或n开头,在正式网络中是以1开头。
|
|