BIP44基于BIP-0032(从现在开始的BIP32)和BIP-0043(从现在开始的BIP43)中描述的目的方案中描述的算法定义确定性钱包的逻辑层级。BIP44是BIP43的特定应用。BIP44的层次结构非常全面。 它允许处理多个硬币,多个帐户,每个帐户的外部和内部链以及每个链数百万个地址。
<!--StartFragment-->
在BIP32中定义了5种路径级别:
m / purpose' / coin_type' / account' / change / address_index
路径中的撇号表示使用BIP32硬化衍生物。上面的每个路径的级别都有其特殊的意义,我们下面将做详细的说明。
Purpose是在BIP43建议之后将常数设置为44'(或0x8000002C)。 它表示根据本规范使用该节点的子树。
一个主节点(种子)可用于无限数量的独立加密币,如比特币,Litecoin或Namecoin。 但是,为各种加密币共享相同的空间有一些缺点。
此级别为每个加密币创建一个单独的子树,避免重用加密链中的地址并改善隐私问题。
硬币类型是一个常量,为每个加密币设置。 Cryptocoin开发人员可能会要求为他们的项目注册未使用的号码。
此级别将密钥空间拆分为独立的用户身份,因此钱包永远不会将硬币混合在不同的帐户中。
用户可以使用这些账户以与银行账户相同的方式组织资金; 用于捐赠目的(所有地址都被视为公共地址),用于保存目的,共同费用等。
帐户按顺序递增的方式从索引0开始编号。 此数字在BIP32派生中用作子索引。
如果先前的帐户没有交易历史记录(意味着之前没有使用过任何地址),则软件应该阻止创建帐户。
从外部源导入种子后,软件需要发现所有使用过的帐户。 “帐户发现”一章中描述了这种算法。
常量0用于外部链,常量1用于内部链(也称为找零地址)。 外部链用于在钱包外部可见的地址(例如,用于接收付款)。 内部链用于地址,这些地址并不意味着在钱包外可见,并用于返回交易更改。
地址按顺序递增的方式从索引0开始编号。 此数字在BIP32派生中用作子索引。
从外部源导入主种子时,软件应开始以下列方式发现帐户:
此算法是成功的,因为如果上一个帐户没有交易历史记录,程序应该禁止创建新帐户,如上面“帐户”一章所述。
请注意,该算法适用于交易历史记录,而不是帐户余额,因此您可以拥有一个总共0个硬币的帐户,算法仍将继续发现。
地址间隙限制当前设置为20,如果程序连续命中20个未使用的地址,则预计在此之后没有使用过的地址并停止搜索地址链。 我们只扫描外部链,因为内部链仅接收来自相关外部链的货币。
当用户试图通过生成新地址来超过外部链的间隙限制时,钱包程序应该发出警告。
注册的币种是“数字货币类型”;描述的是BIP44第2级使用的默认注册硬币类型。所有这些常量都用作硬化推导。
索引 | 十六进制 | 币 |
---|---|---|
0 | 0x80000000 | 比特币 |
1 | 0x80000001 | 比特币测试网 |
此BIP不是注册货币类型的中央目录,请访问SatoshiLabs,其中包含完整列表:
<!--EndFragment-->
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!