比特币钱包-btcwallet(三) 账户创建与地址创建

资讯 2024-07-15 阅读:53 评论:0
美化布局示例

欧易(OKX)最新版本

【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   全球官网 大陆官网

币安(Binance)最新版本

币安交易所app【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

火币HTX最新版本

火币老牌交易所【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

(这部分基本是翻译自BIP39的wiki,具体地址见参考文献)
BIP39 就是为了解决seed不好记忆的问题诞生的。其最终目标也是生成seed, 不过要先生成助记词,然后再有助记词生成seed 。下面我们看一下两步:

(this part is basically translated from BIP39's wiki, the address of which is the reference)
BIP39 was born to solve the problem of the bad memory of the Seed. The ultimate goal is also to generate the Seed, but Mr. is required to enter the notes and then to use the notes to generate the Seed. Here's two steps:

1.1.1 生成助记词

原理很简单,先有一个128~256位的熵,然后生成校验码 checknum , 然后将校验码添加到熵后面,形成一个拼接的字符串,接下来一步是每11位分隔一下,每个11位会对应一个单词(有一个单词列表)。这些单词最终就组成了助记词。

The principle is simple: first there is a 128 - 256-bit entropy, then there is a checknum, then the checksum is added to the entropy, forming a collusive string, and the next step is to separate every 11, and each 11 will correspond to a word (there is a list of words).

助记词生成.png

图片来自 《精通比特币》

助记词的单词列表的几个特点:
(1)去除了易混的单词,比如build 跟built 。
(2)经过了排序,方便后续使用trie前缀树进行压缩。

Several features of the list of words to support the word:
(1) removes the easier words, such as buld and bult.
(2) is sorted to facilitate subsequent compression using the tree prefix.

1.1.2 由助记词生成seed

利用助记词 + salt ("mnemonic"+ 可选的密码短语) ,使用HMAC-SHA512 算法,使用2048次哈希来延伸助记词和salt 参数,产生一个512位的种子。

Using the word + salt ("mnemonic"+optional passphrase), using the HMAC-SHA512 algorithm, 2048 Hash extensions the word and salt parameters to produce a 512-bit torrent.

助记词到种子.png

图片来自 《精通比特币》

可选的密码短语,使得助记词不能单独使用,避免助记词被盗后被利用。

The choice of password phrases prevents the use of assistive words on their own and avoids their use when stolen.

1.2.1 子密钥的产生

私有子密钥的产生:母密钥 + 链码 + 索引结合并散列可以生成子密钥。结果是512位的散列,右半部分是256位的链码,左半部分是子密钥。

Private sub-key generation: The parent key + chain code + index combines and hash to generate a sub-key. The result is a 512-bit hash, a 256-digit chain code for the right half, and a sub-key for the left half.

母公钥衍生子私钥跟链码.png
1.2.2 扩展密钥

密钥以及链码被结合之后,就叫扩展密钥。
扩展密钥 + 索引,就可以导出子密钥。

When the key and the chain code are combined, they are called Extended Keys.
The Extended Key + Index allows you to export subkeys.

1.2.3 强化子密钥

因为扩展公钥包含链码,如果子密钥被知道或者被泄露,链码就可以用来衍生其他所有的子私钥。非常危险。为了应对这种风险,HD钱包使用了一种叫做强化衍生的替代衍生函数,打破了母公钥以及子私钥之间的关系。这个硬化函数使用了母私钥去推到子链码,而不能采用母公钥去推到链码。

Because the extended public key contains a chain code, which can be used to derive all other private keys if the subkey is known or leaked. Very dangerous. To address this risk, the HD wallet uses an alternative derivative called enhanced derivative, breaking the relationship between the parent and the sub-key. The hardening function uses the parent private key to push to the sub-chain code, not the parent key to push to the chain number.


通过母私钥,衍生出子私钥跟链码.png
1.2.4 HD钱包识别符(密钥路径)

由主私钥衍生出的私钥起始以”m“打头,由主公钥衍生出的公钥以"M"打头。比如m/x/y 是m/x 的第y个子密钥。

Private keys derived from the main private key start with " m" and "M" with the public key derived from the main public key. For example, m/x/y is the yth subkey of m/x.

BIP43 是对BIP32的一种支持,其目的是为了大家生成的密钥路径都遵循相同的规范,其产物还是密钥

BIP43 is a support for BIP32, the purpose of which is that all key paths generated follow the same specifications, and that the product is the key .

不同人员开发的钱包可能会有不同的规定方式,这就导致了同一种路径可能有多个解释。为了避免混乱,BIP43中将第一层级的编号定义为“目的域”,不同的协议使用不同的编号。比如如果一个钱包结构满足BIP44,它的秘钥路径就应该是m/44’/*这样我们就知道对这个路径的理解方式应该按照BIP44里的规定。

In order to avoid confusion, BIP43 defines the number of the first tier as the “end area” and different protocols use different numbers . For example, if a wallet structure meets BIP44, its key path should be m/44’/* so that we know that this path should be understood in a way that is consistent with BIP44.

BIP43中还规定了在一个数字后加撇号表示这是一个加固子秘钥,也就是说其真实的生成编号为i+2^31 ,比如上文中的44’,其真实对应的生成编号为2^31 +44,即0x8000002C。

Also specified in BIP43 is a numeric mark indicating that it is a reinforced sub-key

BIP44在BIP43基础上,提出了多账户结构。其产物还是密钥

BIP44 presents a multi-account structure based on BIP43.

BIP44的五层结构:

Five layers of BIP44:


其中每部分的含义是:

Each of these parts means:

  • m 表示私钥, M表示地址
  • purpose 默认为44
  • coin_type 特指币种,并且允许多元货币HD钱包中的货币在第二层级下有自己的子币种,比如比特币就有m/44'/0'、m/44'/1' m/44'/2'。
  • account 账户, 就是为了组织结构的划分,比如某个钱包账户中,有多少子账户。方便统计管理。
  • change ,有两种,一个是用来接收地址,一个是用来创造找零地址。
  • address_index ,change 的下一级,用来指定是接收还是找零地址的第几个。
协议关系.png

解锁

Unlock


解锁过程就是利用timeout 构造一个定时器,然后利用这个定时器创建了一个 unlockRequests, 然后向启动时定义的walletLocker routine 中发送unlockRequests 。
walletLocker 的routine来处理这个解锁逻辑。

The locking process is to construct a timer using timeout, then use this timer to create an unlockRequests, and then send unlockRequests to the walletlocker rootine defined at startup. The
walletLocker rootine handles this unlocking logic.

创建账户

Create Account



btcwallet 创建的账户是 BIP44类型的账户。

The account created by btcwallet is a BIP44-type account.


创建账户.png


如果按照BIP44的定义,生成账户的这一步应该是实现到了BIP44里面的 account 这一级。


If, as defined in BIP44, this step in generating an account should have reached the level of account in BIP44.




创建地址.png

本文讲解了BIP39, BIP32,BIP43,BIP44基础协议,然后从源码角度分析了账户创建跟地址创建的流程。

This paper describes the BIP39, BIP32, BIP43, BIP44 basic protocols, and then analyses the process of account creation from a source-code perspective and the creation of addresses.

BIP32 BIP44 https://www.cnblogs.com/bytom/p/10410568.html
BIP39 助记词相关bitcorn 官方wiki https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki
《精通比特币》第二版
BIP32 翻译 https://blog.csdn.net/pony_maggie/article/details/76178228
HD钱包 bip43 bip44 https://www.linksfin.com/article/244279

[BIP32 BIP32 BIP44 "brain"[Fbretbrebrebreb/bbb/bbb/bb/bb/bb/bb/bb/bb.int.int.int_Ab.int.int/bb/b/bbbb.int.int.int.int/b.int.int.int/bbbbbbb/b.int.int.int/b.int/bb/bb.int/b/b/bbb/b/bbb/bbbb/bbbb/bbbbbbbbbbb/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb. http http http http http http http http http http http http http http http http/bbbbbbbbbb.bbbbbbbbbbbbbbbbbbbbbbbbbb.bbbbbb.b.b.b.b.bbbbbbbbbbbbbbbbbbbb.

本文是《循序渐进比特币》的第九篇-《btcwallet(三) 账户创建与地址创建》。
如果有疑问,可以直接留言,也可以关注公众号 “链人成长chainerup” 提问留言,或者加入知识星球“链人成长”~

This is the ninth issue of Stepwise Bitcoin -- btcwallet(iii) Account Creation and Address Creation.
If you have any questions, you can leave a direct message, or you can focus on the public number “Chainerup” asking questions, or joining the knowledge planet “Chainerup” ~

美化布局示例

欧易(OKX)最新版本

【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   全球官网 大陆官网

币安(Binance)最新版本

币安交易所app【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

火币HTX最新版本

火币老牌交易所【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址
文字格式和图片示例

注册有任何问题请添加 微信:MVIP619 拉你进入群

弹窗与图片大小一致 文章转载注明

分享:

扫一扫在手机阅读、分享本文

发表评论
平台列表
美化布局示例

欧易(OKX)

  全球官网 大陆官网

币安(Binance)

  官网

火币(HTX)

  官网

Gate.io

  官网

Bitget

  官网

deepcoin

  官网
热门文章
  • 从 IPFS社区Meetup谈谈2020年的IPFS的发展历程

    从 IPFS社区Meetup谈谈2020年的IPFS的发展历程
    8月3日, IPFS社区Meetup 如期举办,这一次的社区Meetup由交流与演讲和闪电演示两部分组成,其实该会议主要带领我们回顾了IPFS在2020年的发展历程(包括项目进展、IPFS生态发展等),展示了IPFS及其生态。2020年对于IPFS而言是不平凡的一年,其唯一激励层Filecoin的主网即将上线,这让IPFS和Filecoin在全球范围内得到了前所未有的关注,也推动了IPFS的高速发展。接下来,我们一起走进IPFS在20...
  • 超10万人爆仓,比特币跳水,发生了什么

    超10万人爆仓,比特币跳水,发生了什么
    现货比特币ETF上市第二日,数字货币再迎来抛售。比特币一度跌破42000美元/枚,截止1月13日内跌幅超7%,报42562.1美元/枚。The current Bitcoin ETF is on the second day of the market and the digital currency is sold again. Bitcoin fell by over 7% to $4562.1 on 13 January.现货比特币ETF普遍跌6%左右。其中,DEFI跌...
  • 兴业基金调研远光软件、东芯股份

    兴业基金调研远光软件、东芯股份
    根据6月6日公布的公开市场信息和机构研究,世界安全基金会最近对下列两家上市公司进行了一项研究: 1) 光电软件(工程师基金参与公司专项研究) 其中一个亮点是该公司深入参与建造南方网中心和技术平台,导致南网市场在 " 九天 " 平台产品方面取得重大突破;该公司的Won-宇宙大厅已上线,而且,除了Won-宇宙之外,远洋宇宙的应用现已扩大到Won-宇宙发射、Won-宇宙-教师和政党建设-宇宙;该公司的Far-O-Cloud平台已经实现了完全成熟的国家生产,也可以在全国云中运作。...
  • 0.00003374个比特币等于多少人民币/美金

    0.00003374个比特币等于多少人民币/美金
    0.00003374比特币等于多少人民币?根据比特币对人民币的最新汇率,0.00003374比特币等于2.2826 1222美元/16.5261124728人民币。比特币(BTC)美元(USDT)人民币(CNY)0.00003374克洛克-0/22216.5261124728比特币对人民币的最新汇率为:489807.72 CNY(1比特币=489807.72人民币)(1美元=7.24人民币)(0.00003374USDT=0.0002442776 CNY)。汇率更新于2024...
  • $DOG暴涨400%,加密货币或许正在重新定义和计量“价值”

    $DOG暴涨400%,加密货币或许正在重新定义和计量“价值”
    近/克洛克-0/5,Meme币狗?走吗?去哪?那个?MOON($ DOG)连续上涨超过230%,突破前期高点,达到0.0062美元。在同一时期,比特币生态的许多主流L2协议代币下跌了50%以上。这些就是我们所说的“价值币”。虽然大起大落不能说明什么,但从过去的牛市来看,领头羊MemeCoin表现非凡。在上一轮牛市中,$DOGE的价格上涨了超过150倍,其市值接近900亿美元。还有其他MemeCoin,如$Shib、$People、$ELON、$AKITA等。2 vkwmkpm...
标签列表