Bytom BIP-32协议和BIP-44协议

简介: 我们知道HD(分层确定性)钱包,基于 BIP-32;多币种和多帐户钱包,基于 BIP-44;最近比原社区的钱包开发者对比原的BIP-32和BIP-44协议有疑问,所以我今天就专门整理了一下该协议的内容以及在比原中涉及的代码。

我们知道HD(分层确定性)钱包,基于 BIP-32;多币种和多帐户钱包,基于 BIP-44;最近比原社区的钱包开发者对比原的BIP-32和BIP-44协议有疑问,所以我今天就专门整理了一下该协议的内容以及在比原中涉及的代码。来做一个详细的介绍!

BIP-32协议

BIP32协议原英文地址:

地址:https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#extended-keys

BIP32:定义 Hierarchical Deterministic wallet (简称 “HD Wallet”),是一个系统可以从单一个 seed 产生一树状结构储存多组 keypairs(私钥和公钥)。好处是可以方便的备份、转移到其他相容装置(因为都只需要 seed),以及分层的权限控制等。具体的内容细节可以翻阅文档。

那么下面我列出了在比原链中BIP-32协议的具体实现,具体的实现的代码逻辑可以在:https://github.com/Bytom/bytom/blob/master/blockchain/signers/signers.go 找到下面的方法。研究代码实现过程.

比原链中BIP32协议的代码实现:

avatar

BIP-44协议

BIP-44原英文协议地址

地址: https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki

BIP-44协议是基于BIP-0032和BIP-0043中描述的目的方案中描述的算法定义确定性钱包的逻辑层级。赋予树状结构中的各层特殊的意义。让同一个 seed 可以支援多币种、多帐户等。各层定义如下:

 m / purpose' / coin_type' / account' / change / address_index
 //purporse': 固定值44', 代表是BIP44
 //coin_type': 这个代表的是币种, 可以兼容很多种币, 比如BTC是0', ETH是60,BTM是99'
 //btc一般是 m/44'/0'/0'/0
 //eth一般是 m/44'/60'/0'/0
 //btm一般是 m/44'/99'/0'/0

HD(分层确定性)钱包树状结构提供了极大的灵活性。每一个母扩展密钥有 40 亿个子密钥:20 亿个常规子密钥和 20 亿个强化子密钥。而每个子密钥又会有 40 亿个子密钥并 且以此类推。只要你愿意,这个树结构可以无限类推到无穷代。但是,又由于有了这个灵活性,对无限的树状结构进行导航就变得异常困难。尤其是对于在不同的HD钱包之间进行转移交易,因为内部组织到内部分支以及亚分支的可能性是无穷的.

BIP-43 提出使用第一个强化子索引作为特殊的标识符表示 树状结构的“purpose”。基于BIP-43,HD(分层确定性)钱包应该使用且只用第一层级的树的分 支,而且有索引号码去识别结构并且有命名空间来定义剩余的树的目的地。举个例子,HD(分层确定性)钱包只使用分支 m/i’/是为了表明那个被索引号“i”定义的特殊为目地。

在BIP-43 标准下,为了延长的那个特殊规范,BIP-44提议了多账户结构作为 “purpose”。所有遵循BIP-44的HD(分层确定性)钱包依据只使用树的第一个分支的要求而被定 义:m/44’/。 BIP-44 指定了包含5个预定义树状层级的结构:

第一层的 purpose 总是被设定为 44’。
第二层的“coin_type”特指币种并且允许多元货币 HD 钱包中的货币在第二个层级下有自己的亚树状结构。常见的数字资产定义:Bitcoin is m/44’/0’、Ethereum Testnet is m/44’/1’,以及 Bytom is m/44’/99’。

完整注册数字资产类型列表: https://github.com/satoshilabs/slips/blob/master/slip-0044.md

第三层级是“account”,这可以允许使用者为了会计或者组织目的,而去再细 分他们的钱包到独立的逻辑性亚账户。 举个例子,一个HD钱包可能包含两个比 特币“账户”:m/44’/0’/0’ 和 m/44’/0’/1’。每个账户都是它自己亚树的根。
第四层级就是“change”。每一个HD钱包有两个亚树,一个是用来接收地址一个是用来创造找零地址。注意无论先前的层级是否使用强化衍生,这一层级使用的都 是常规衍生。这是为了允许这一层级的树可以在不安全环境下,输出扩展公钥。

被HD(分层确定性)钱包衍生的可用的地址是第四层级的子级,就是第五层级的树的“address_index”。比如,第三个层级的主账户收到比原支付的地址就是 M/44’/99’/0’/0/2。

下面介绍一下比原链中BIP-44协议的实现,我们在 :https://github.com/Bytom/bytom/blob/master/blockchain/signers/signers.go 找到下面的方法。可以研究具体的代码实现过程。

比原链中BIP44协议的实现:

avatar

比原中用BIP-44生成钱包地址

在项目中找到 CreateAddress 方法,这个方法会用到BIP-44协议来创建地址:

avatar

avatar

比原现在会默认使用BIP-44协议,所以在下面的switch语句中,会默认到BIP0044.

avatar

avatar

到此BIP-32协议和BIP-44协议已经介绍完,并且在比原的代码中的实现也已经列出来了。感兴趣的小伙伴可以读代码研究详细的实现过程,如果有什么问题,欢迎在比原技术社区提问!

比原项目仓库:

Github地址:https://github.com/Bytom/bytom

Gitee地址:https://gitee.com/BytomBlockchain/bytom

相关文章
|
网络协议 网络安全 网络架构
网络应用基础 TCPIP协议(NETBASE第四课)
网络应用基础 TCPIP协议(NETBASE第四课)
142 0
|
7月前
|
安全 网络协议 数据安全/隐私保护
网络技术基础(18)——PPP与PPPoE协议
【3月更文挑战第5天】本文介绍了广域网的基本架构和PPP协议。广域网涉及CE(用户边缘设备)、PE(服务提供商边缘设备)和P(服务提供商设备),其中CE为企业出口,PE类似光猫,P为运营商内部设备。PPP是数据链路层协议,用于点到点连接,提供PAP和CHAP安全认证,并通过LCP和NCP协商链路和网络层参数。PPP协商包括链路层、认证(可选)和网络层三个阶段。PPPoE协议结合了PPP和以太网优点,用于以太网上进行PPP认证和计费,其会话建立包含发现、会话和终结阶段。配置PPP或PPPoE时,需在对应接口设置账号密码和认证方式。
|
存储 网络协议 算法
互联网和传输层协议
互联网是一个非常庞大的结构,从整体来看,互联网是一个立体的、庞大的网状结构。但是如果将它放大、再放大,将镜头拉近,在微观层面,我们会看到一个个网络、一台台设备,还会看到大量的封包在交换、有设备在不断地改变封包的走向、损坏的封包被重发、一个个光电信号被转化和传输。
161 0
互联网和传输层协议
|
网络协议
【计算机网络】数据链路层 : 广域网 ( 广域网概念 | PPP 协议 | PPP 协议功能 | PPP 协议组成 | PPP 协议帧格式 )
【计算机网络】数据链路层 : 广域网 ( 广域网概念 | PPP 协议 | PPP 协议功能 | PPP 协议组成 | PPP 协议帧格式 )
415 0
【计算机网络】数据链路层 : 广域网 ( 广域网概念 | PPP 协议 | PPP 协议功能 | PPP 协议组成 | PPP 协议帧格式 )
Cisco统一通信经销商
本文研究全球及中国市场Cisco统一通信经销商现状及未来发展趋势,侧重分析全球及中国市场的主要企业,同时对比北美、欧洲、中国、日本、东南亚和印度等地区的现状及未来发展趋势
|
网络协议 UED
TCP Cluster for mqtt 技术实施方案
http://style.witmart.com/style/201204/img/referralprogram/cn/employers/web-design/250x250banner.jpg)" >
2249 0
|
Go 异构计算
Bytom矿池接入协议指南
矿机配置 https://gist.github.com/HAOYUatHZ/a47400bde4a138825faef415387b532c固件升级 https://shop.bitmain.com.
1782 0

热门文章

最新文章