BIP44 协议概述

  • Dapplink
  • 发布于 2025-05-03 15:43
  • 阅读 11

BIP44基于BIP-0032(从现在开始的BIP32)和BIP-0043(从现在开始的BIP43)中描述的目的方案中描述的算法定义确定性钱包的逻辑层级。BIP44是BIP43的特定应用。BIP44的层次结构非常全面。 它允许处理多个硬币,多个帐户,每个帐户的外部和内部链以及每个链数百万个地址。

<!--StartFragment-->

一.路径级别

在BIP32中定义了5种路径级别:

m / purpose' / coin_type' / account' / change / address_index

路径中的撇号表示使用BIP32硬化衍生物。上面的每个路径的级别都有其特殊的意义,我们下面将做详细的说明。

1.purpose

Purpose是在BIP43建议之后将常数设置为44'(或0x8000002C)。 它表示根据本规范使用该节点的子树。

2.coin_type

一个主节点(种子)可用于无限数量的独立加密币,如比特币,Litecoin或Namecoin。 但是,为各种加密币共享相同的空间有一些缺点。

此级别为每个加密币创建一个单独的子树,避免重用加密链中的地址并改善隐私问题。

硬币类型是一个常量,为每个加密币设置。 Cryptocoin开发人员可能会要求为他们的项目注册未使用的号码。

2.Account

此级别将密钥空间拆分为独立的用户身份,因此钱包永远不会将硬币混合在不同的帐户中。

用户可以使用这些账户以与银行账户相同的方式组织资金; 用于捐赠目的(所有地址都被视为公共地址),用于保存目的,共同费用等。

帐户按顺序递增的方式从索引0开始编号。 此数字在BIP32派生中用作子索引。

如果先前的帐户没有交易历史记录(意味着之前没有使用过任何地址),则软件应该阻止创建帐户。

从外部源导入种子后,软件需要发现所有使用过的帐户。 “帐户发现”一章中描述了这种算法。

4.Change

常量0用于外部链,常量1用于内部链(也称为找零地址)。 外部链用于在钱包外部可见的地址(例如,用于接收付款)。 内部链用于地址,这些地址并不意味着在钱包外可见,并用于返回交易更改。

5.Index

地址按顺序递增的方式从索引0开始编号。 此数字在BIP32派生中用作子索引。

二.账户发现机制

从外部源导入主种子时,软件应开始以下列方式发现帐户:

  • 派生第一个帐户的节点(索引= 0)
  • 派生此帐户的外部链节点
  • 扫描外链的地址; 遵循下面描述的差距限制
  • 如果外部链上未找到任何交易,请停止发现
  • 如果有某些交易,请增加帐户索引并转到步骤1

此算法是成功的,因为如果上一个帐户没有交易历史记录,程序应该禁止创建新帐户,如上面“帐户”一章所述。

请注意,该算法适用于交易历史记录,而不是帐户余额,因此您可以拥有一个总共0个硬币的帐户,算法仍将继续发现。

1.地址差距限制

地址间隙限制当前设置为20,如果程序连续命中20个未使用的地址,则预计在此之后没有使用过的地址并停止搜索地址链。 我们只扫描外部链,因为内部链仅接收来自相关外部链的货币。

当用户试图通过生成新地址来超过外部链的间隙限制时,钱包程序应该发出警告。

2.注册的币种

注册的币种是“数字货币类型”;描述的是BIP44第2级使用的默认注册硬币类型。所有这些常量都用作硬化推导。

索引 十六进制
0 0x80000000 比特币
1 0x80000001 比特币测试网

此BIP不是注册货币类型的中央目录,请访问SatoshiLabs,其中包含完整列表:

  • https\://github.com/satoshilabs/slips/blob/master/slip-0044.md

<!--EndFragment-->

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Dapplink
Dapplink
0xBdcb...f214
首个模块化、可组合的Layer3协议。