我正在创建一个应用程序,该应用程序需要通过提供的XPUB
键生成一个新地址。
例如xpub6CUGRUonZSQ4TWtTMmzXdrXDtypWKiKrhko4egpiMZbpiaQL2jkwSB1icqYh2cfDfVxdx4df189oLKnC5fSwqPfgyP3hooxujYzAu3fDVmz
我正在使用Electrum钱包和此应用提供的钥匙。
我的应用程序允许用户添加自己的xpub密钥,因此,只要xpub
密钥仅由我的应用程序使用而不公开,则我的应用程序将能够生成新地址而不会影响用户的隐私。
因此,我正在寻找一种正确生成新地址的方法,我找到了一些库,但是我不确定派生路径,它的外观如何?
考虑以下路径示例
推导路径是否更多是惯例而不是规则?
Bitcoin first external first m / 44' / 0' / 0' / 0 / 0
这是有效路径吗?我在这里https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki
我还发现Electrum钱包使用以下格式的另一种模式https://bitcoin.stackexchange.com/questions/36955/what-bip32-derivation-path-does-electrum-use/36956。它使用m / 0 /接收地址,并使用m / 1 /更改地址。
最大的地址数(n)是多少?在线工具如何计算HD钱包的余额,如果N数很大,则需要大量处理能力来计算总和。
总而言之,我想知道我应该使用哪种格式的派生路径以确保兼容性没有问题?
感谢您的帮助。
答案 0 :(得分:0)
问题1-3: 这是bip44的惯例,electrum并未遵循它,因此它与其他支持bip44的钱包不兼容。
问题4: 这个数字可以是无限的,如果您正在谈论某个父键的最大数字,答案是:
每个扩展密钥都有2 ^ 31个普通子密钥和2 ^ 31个强化子密钥 键 -https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki
根据bip44,如果您的应用程序设计导致大量地址,那是您自己的问题,需要通过更好的设计来解决,并且如果您指的是与其他钱包的兼容性,
地址间隙限制当前设置为20。如果软件达到20 连续使用未使用的地址,它期望没有使用的地址 超出这一点,并停止搜索地址链。 https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#Address_gap_limit