blockchain - HD钱包(bip32)地址推导路径

标签 blockchain bitcoin

我正在创建一个应用程序,需要从提供的 XPUB key 生成新地址。

例如xpub6CUGRUonZSQ4TWtTMmzXdrXDtypWKiKrhko4egpiMZbpiaQL2jkwSB1icqYh2cfDfVxdx4df189oLKnC5fSwqPfgyP3hooxujYzAu3fDVmz

我正在使用 Electrum 钱包和此应用程序提供的 key 。

我的应用程序允许用户添加自己的 xpub key ,因此我的应用程序将能够生成新地址,而不会影响用户隐私,只要 xpub key 仅由我的应用程序使用而不暴露向公众公开。

所以我正在寻找一种正确生成新地址的方法,我找到了一些库,但是我不确定派生路径,它应该是什么样子?

考虑以下路径示例

enter image description here

  1. 推导路径更多的是一种约定而不是规则吗?

  2. 比特币第一个外部第一个 m/44'/0'/0'/0/0 这是有效路径吗?我在这里找到了https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki

  3. 我还发现 Electrum 钱包使用另一个架构 https://bitcoin.stackexchange.com/questions/36955/what-bip32-derivation-path-does-electrum-use/36956采用以下格式。它使用 m/0/来接收地址,使用 m/1/来更改地址。

  4. 地址的最大数量 (n) 是多少?在线工具如何计算HD钱包的余额,如果N数很大,则需要大量的处理能力来计算总和。

总而言之,我想知道我应该使用什么格式的导出路径才不会出现兼容性问题?

如果有任何帮助,我将不胜感激。

最佳答案

问题1-3: 这是 bip44 约定,electrum 不遵循它,因此它与支持 bip44 的其他钱包不兼容。

问题4: 数量可以是无限的,如果您正在谈论某个父键的最大数量,答案是:

Each extended key has 2^31 normal child keys, and 2^31 hardened child key -https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki

如果你的应用程序设计导致大量地址,那是你自己的问题,你需要通过更好的设计来处理它,如果你指的是与其他钱包的兼容性,根据bip44,

Address gap limit is currently set to 20. If the software hits 20 unused addresses in a row, it expects there are no used addresses beyond this point and stops searching the address chain. https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#Address_gap_limit

关于blockchain - HD钱包(bip32)地址推导路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51152264/

相关文章:

blockchain - 一个流动性池可以有2个以上的代币吗

python - 从给定 'name' 操作的 namecoin 交易中提取输入地址

javascript - 如何浏览模块 ethereumjs-tx?

python - 按日期过滤 Pandas 数据框不起作用

javascript - 使用 bitcoinjs-min.js 从字节数组转换为十六进制格式

interface - 强制转换为接口(interface)和契约(Contract)实例之间有区别吗?

blockchain - 是否可以在 Solidity 智能合约创建上预留一个地址用于收税?

android - 从 Maven Central 使用 bitcoinj 时出现错误的 apk

go - 拨一个 jsonrpc 连接到比特币

p2p - 比特币客户端如何确定第一个连接的IP地址?