给比太导入xpub/ypub主公钥的方法

BurntCoins 副船长 发布在 比特派/比太钱包
 3242  7

【本贴内容源自观察和摸索,不保证靠谱,希望比太对这方面有所改善,比如支持导入xpub、支持PSBT、支持bech32等等】


拿到一个xpub(或ypub)主公钥后,怎么导入比太呢?


很容易想到的办法,就是去找到它背后的BIP39助记词,直接给比太导入助记词。如果不想让私钥触网,那就稍微麻烦一些:再找一台手机,再安装一个比太冷钱包,用它直接输入BIP39助记词后,生成监视二维码,再让联网的比太扫描它。

不过,有些人的需求可能比较偏门,就想问手里有个xpub,怎么导入,先导入了再说——哪怕导入后除了监视啥也干不了……

(如果比太未来支持PSBT,那应该就可以搭配其他冷钱包端使用了)


为了方便,我们拿这个BIP39助记词生成xpub主公钥来进行示例:eager this chief because object woman purpose olympic disease learn resemble basic

(可以到这里下载Ian Coleman的BIP39工具:https://github.com/iancoleman/bip39/releases


把上述BIP39助记词输入Ian Coleman的BIP39工具(输入到BIP39 Mnemonic里面),切换到BIP44(生成1开头的传统地址),可以看到:

(第一个,也就是第0号账户的)账户主公钥(Account Extended Public Key):xpub6CoCKvs4XbftbPTExWoQ2R8TPcfTWe8hZVDPUzv3tF2LALRg1wSJyVevdHUkJHAS48odzKnrqPQx37NkQ5jGiQ2SKaSsDKTzDd5EN6EiEHB

(这个账户的)第一个地址:1H3YEgAWjM6J869FAzh1pmK5Lmi8aEC2Dv


再切换到BIP49(生成3开头的兼容隔离见证地址),可以看到:

账户主公钥:ypub6WVUC8541nruKutQAvLVzXcWyizNuJgLnQ7xsA1QUy3wDkw3QSwtfeDrMr7Cb9J2gYvDksDRPQouaS8sQPCWwXV9vXfatopRgvfi6EmU5XM

第一个地址:3JjPt34pf1fAaDVGvingUEV4Z4TkTpmepw


1.如果你不用隔离见证的话,那你完全可以不用走下面这几步,只需要把BIP44主公钥前面加上BitherHD:这个前缀,然后生成二维码(参考第5步),再用比太扫码即可。不过我还是推荐你用隔离见证,毕竟隔离见证交易有折扣,转出矿工费低:

BitherHD:xpub6CoCKvs4XbftbPTExWoQ2R8TPcfTWe8hZVDPUzv3tF2LALRg1wSJyVevdHUkJHAS48odzKnrqPQx37NkQ5jGiQ2SKaSsDKTzDd5EN6EiEHB

实际上,3开头的兼容隔离见证地址转出时,反而要消耗更多字节数,对区块空间是一种浪费;只不过,在隔离见证的折扣规则下,它的“虚拟字节数”更少,所以矿工费仍然显著低于1开头的传统地址。

bc1开头的原生隔离见证地址,用了全新设计的Bech32编码,不过比太目前并没有支持Bech32地址。Bech32编码由纯小写字母(而不是Base58那样是大小写混合)+数字组成,在二维码中可以转换成全大写字母,这样可以缩小编码二维码所需的面积。不过,很多地方还不能识别这种新地址,所以才会有3开头的兼容隔离见证地址这种折衷选择。

不过隔离见证地址暂时还没有统一的消息签名方案,只有一个草案BIP322。


2.首先,需要一个命令行工具bx(bitcoin explorer),来自libbitcoin,这里可以找到下载:https://github.com/libbitcoin/libbitcoin-explorer/wiki/Download-BX

我这里用Windows做示例。按WIN+R,输入cmd,确定,就可以打开命令提示符。对于Linux和Mac,那当然就需要打开终端了。

如果命令方面你还不太玩得转,可以把下载到的bx-windows-x64-icu.exe这个文件(Mac同理,是bx-osx-x64-qrcode)拖动到命令窗口里,这样就会自动填写好它的路径。

Win10的命令提示符默认开启快速编辑模式,可以直接按住左键拖动鼠标来选择要复制的文字,选择完成后松开左键,按一下右键就完成了复制。再按一次右键就是粘贴。


3.把BIP49的ypub转换成xpub。

先用bx对ypub开头的BIP49主公钥进行解码,命令是这样:

bx-windows-x64-icu.exe base58check-decode ypub6WVUC8541nruKutQAvLVzXcWyizNuJgLnQ7xsA1QUy3wDkw3QSwtfeDrMr7Cb9J2gYvDksDRPQouaS8sQPCWwXV9vXfatopRgvfi6EmU5XM

(注意不要少了空格)

会得到输出:

wrapper 
{
checksum 1224178393
payload 9d7cb20301065c4880000000e2d57fd86721d923529147ebdf34235aced2df17c9232abe711dbca1d4d0ab130211d806d117cdb1d7ad82780169d7ad5d7fc5df62f997e85ba4f1f771a499b99a
version 4
}

注意payload开头是9d7cb2(转码为Base58后,它和version的04一同组成了ypub这四个字母),我们把它替换成88b21e:

88b21e0301065c4880000000e2d57fd86721d923529147ebdf34235aced2df17c9232abe711dbca1d4d0ab130211d806d117cdb1d7ad82780169d7ad5d7fc5df62f997e85ba4f1f771a499b99a

然后用bx把它转换回Base58编码:

bx-windows-x64-icu.exe base58check-encode -v 04 88b21e0301065c4880000000e2d57fd86721d923529147ebdf34235aced2df17c9232abe711dbca1d4d0ab130211d806d117cdb1d7ad82780169d7ad5d7fc5df62f997e85ba4f1f771a499b99a

得到输出:

xpub6BfCtTQ8s7KRUchHLZYsnSX1okqvxggqsHbk5m7X6xg4Af7p9nnL3aZiLe9cbEe7GuoR1PcrvkTMh9XJggnW9HoZ4ByAJtzwRCc4heuuADj


4.写出供比太导入的字符串。

开头是BitherHDSupportP2SHP2WPKH:这个前缀,然后依次就是BIP44主公钥和BIP49主公钥,两个主公钥之间用英文逗号,分隔:

BitherHDSupportP2SHP2WPKH:xpub6CoCKvs4XbftbPTExWoQ2R8TPcfTWe8hZVDPUzv3tF2LALRg1wSJyVevdHUkJHAS48odzKnrqPQx37NkQ5jGiQ2SKaSsDKTzDd5EN6EiEHB,xpub6BfCtTQ8s7KRUchHLZYsnSX1okqvxggqsHbk5m7X6xg4Af7p9nnL3aZiLe9cbEe7GuoR1PcrvkTMh9XJggnW9HoZ4ByAJtzwRCc4heuuADj


5.用这个字符串生成二维码,并用比太钱包设置的“监视冷HD账户”扫描它。

目前Ian Coleman的BIP39工具就自带生成二维码的功能,把上面的字符串粘贴进BIP32 Root Key这个框,就会自动显示二维码,如果没显示,就鼠标左键单击一下这个输入框。


6.如果没什么问题,比太会提示你核对第一个地址,然后确定就导入成功了,而且你还能随时切换成隔离见证地址。

  • 正序
  • 最新
只看帖主 楼层直达
登录 账号发表你的看法,还没有账号?立即免费 注册