详解加密数字货币钱包中的BIP32、BIP44、BIP39概念


加密数字货币钱包是一种用于存储和管理数字货币的工具,它可以让用户生成和使用加密密钥来进行交易和其他操作。在加密数字货币钱包的开发和使用中,有三个重要的概念,分别是BIP32、BIP44和BIP39。这些概念都是由比特币社区提出的一些改进提案(Bitcoin Improvement Proposals),旨在提高钱包的安全性、易用性和兼容性。

什么是BIP32?

BIP32是一种分层确定性钱包(Hierarchical Deterministic Wallets)的标准,它可以让用户从一个单一的种子(seed)生成一系列的密钥对(公钥和私钥),并按照一定的层级结构进行组织和管理。这样可以避免用户需要备份和记忆大量的密钥,也可以方便地恢复和迁移钱包。

BIP32的核心思想是使用一个扩展私钥(extended private key)和一个扩展公钥(extended public key)来推导出无限多个子密钥对。扩展私钥由一个256位的私钥和一个256位的链码(chain code)组成,扩展公钥由一个256位的公钥和一个256位的链码组成。链码是用于增加密钥推导过程中的熵(entropy)的随机数,可以提高密钥的安全性。

BIP32使用两种方式来推导子密钥对,分别是硬化推导(hardened derivation)和非硬化推导(non-hardened derivation)。硬化推导只使用扩展私钥来生成子扩展私钥,而非硬化推导可以使用扩展公钥来生成子扩展公钥。这样可以实现不同的用途,比如硬化推导可以用于保护主密钥不被暴露,而非硬化推导可以用于生成只读的子账户。

BIP32还定义了一个分层结构来组织和标识不同的子密钥对,使用斜杠(/)来分隔不同的层级。比如m/0’/1/2’表示从主扩展私钥m开始,经过硬化推导得到第0个子扩展私钥,再经过非硬化推导得到第1个子扩展公钥,再经过硬化推导得到第2个子扩展私钥。每个层级都有一个索引号(index),从0开始计数,如果是硬化推导,则在索引号前加上撇号('),表示加上了一个常数2^31。

什么是BIP44?

BIP44是在BIP32的基础上提出的一种多币种多账户分层确定性钱包(Multi-Account Hierarchy for Deterministic Wallets)的标准,它可以让用户在同一个种子下生成和管理多种不同类型的数字货币,并按照一定的路径规范进行划分和命名。这样可以避免用户需要为每种数字货币创建不同的种子或者钱包,也可以方便地恢复和迁移所有资产。

BIP44的核心思想是定义了一个固定的五级路径结构来组织和标识不同的子密钥对,使用斜杠(/)来分隔不同的层级。比如m/44’/0’/0’/0/0表示从主扩展私钥m开始,经过硬化推导得到第44个子扩展私钥,再经过硬化推导得到第0个子扩展私钥,再经过非硬化推导得到第0个子扩展公钥,再经过非硬化推导得到第0个子扩展公钥,再经过非硬化推导得到第0个子密钥对。每个层级都有一个索引号(index),从0开始计数,如果是硬化推导,则在索引号前加上撇号('),表示加上了一个常数2^31。

BIP44的五级路径结构分别代表了以下含义:

  • 第一层:用于表示不同的用途,目前固定为44,表示遵循BIP44标准。
  • 第二层:用于表示不同的币种类型,使用一个数字来标识,比如0表示比特币,1表示莱特币,60表示以太坊等。这些数字由SLIP-0044维护和更新。
  • 第三层:用于表示不同的账户,每个账户可以有自己的余额和地址。用户可以根据自己的需要创建多个账户,比如用于区分个人和商业用途等。
  • 第四层:用于表示不同的地址类型,目前有两种类型,分别是0表示外部地址(external address),1表示内部地址(internal address)。外部地址是用于接收转入的资金,内部地址是用于找零或者转移资金等。
  • 第五层:用于表示不同的地址索引,每个地址都有一个唯一的索引号,从0开始计数。用户可以根据自己的需要生成多个地址。

什么是BIP39?

BIP39是一种助记词(mnemonic)的标准,它可以让用户使用一组易于记忆和书写的单词来代替复杂的种子或者密钥。这样可以避免用户因为输入错误或者遗忘而导致资产丢失,也可以方便地备份和恢复钱包。

BIP39的核心思想是使用一个固定的2048个单词的列表来生成助记词,并使用一个可选的密码短语(passphrase)来增加安全性。助记词和密码短语通过一个哈希函数(PBKDF2)来生成一个512位的种子,然后再通过另一个哈希函数(HMAC-SHA512)来生成一个扩展私钥和一个链码,作为BIP32或者BIP44的输入。

BIP39支持不同长度的助记词,分别是12、15、18、21和24个单词。每个单词都有11位的二进制编码,最后还有一位校验位(checksum)。校验位是通过对所有单词的二进制编码进行SHA256哈希运算得到的。校验位的长度取决于助记词的长度,比如12个单词对应1位校验位,24个单词对应8位校验位。校验位可以防止用户在输入助记词时出现拼写错误或者顺序错误。

BIP39还支持不同语言的助记词列表,目前有英语、中文、法语、意大利语、日语、韩语、西班牙语等。但是建议用户使用英语列表,因为它是最广泛支持和兼容的。

总结

BIP32、BIP44和BIP39是加密数字货币钱包中涉及到的三个重要概念。它们都是由比特币社区提出的一些改进提案(Bitcoin Improvement Proposals),旨在提高钱包的安全性、易用性和兼容性。BIP32是一种分层确定性钱包的标准,它可以让用户从一个单一的种子生成一系列的密钥对,并按照一定的层级结构进行组织和管理。BIP44是在BIP32的基础上提出的一种多币种多账户分层确定性钱包的标准,它可以让用户在同一个种子下生成和管理多种不同类型的数字货币,并按照一定的路径规范进行划分和命名。BIP39是一种助记词的标准,它可以让用户使用一组易于记忆和书写的单词来代替复杂的种子或者密钥。

本文链接地址:https://www.wwsww.cn/qianbao/19886.html
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。