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

相关文章
|
分布式计算 DataWorks BI
MaxCompute数据问题之运行报错如何解决
MaxCompute数据包含存储在MaxCompute服务中的表、分区以及其他数据结构;本合集将提供MaxCompute数据的管理和优化指南,以及数据操作中的常见问题和解决策略。
521 1
|
开发工具 git
Git 如何将一个项目的代码放到一个新的仓库中,但不在新的仓库中显示旧的提交记录
Git 如何将一个项目的代码放到一个新的仓库中,但不在新的仓库中显示旧的提交记录
762 0
|
22天前
|
弹性计算 容灾 定位技术
阿里云服务器ECS哪些地区有节点?全球地域汇总,开服运营20地域、80可用区
阿里云ECS已覆盖全球四大洲20+地域、80+可用区,含中国华北、华东、华南等10+地域及海外新加坡、东京、法兰克福等15+地域。支持多可用区容灾部署与低延迟内网通信,满足不同业务对地理位置、合规性及高可用的需求。
136 13
|
12月前
|
人工智能 前端开发 API
MoneyPrinterTurbo:23.9K Star!这个AI把写文案+找素材+剪视频全包了,日更10条不是梦
MoneyPrinterTurbo 是一款功能强大的 AI 工具,支持通过主题或关键词自动生成视频文案、素材、字幕与背景音乐,并合成高清短视频,适合批量生成与多语言支持。
1158 4
|
数据安全/隐私保护
OAuth 2.0身份验证及授权
8月更文挑战第24天
856 0
|
12月前
|
数据采集 人工智能 监控
Crawl4LLM:你的模型还在吃垃圾数据?CMU博士开源AI爬虫,自动筛选高价值网页,数据抓取质量飙升300%
Crawl4LLM 是清华大学和卡内基梅隆大学联合开发的智能爬虫系统,通过网页价值评估和优先级队列技术,显著提升大语言模型预训练数据采集效率。
638 4
|
前端开发
Typora更换炫酷主题(含主题下载云盘链接)
Typora更换炫酷主题(含主题下载云盘链接)
3918 0
Typora更换炫酷主题(含主题下载云盘链接)
|
数据可视化 Swift
小钢炮进化,MiniCPM 3.0 开源!4B参数超GPT3.5性能,无限长文本,超强RAG三件套!模型推理、微调实战来啦!
旗舰端侧模型面壁「小钢炮」系列进化为全新 MiniCPM 3.0 基座模型,再次以小博大,以 4B 参数,带来超越 GPT-3.5 的性能。并且,量化后仅 2GB 内存,端侧友好。
小钢炮进化,MiniCPM 3.0 开源!4B参数超GPT3.5性能,无限长文本,超强RAG三件套!模型推理、微调实战来啦!

热门文章

最新文章