钱包

关于分层确定性钱包(HD wallet)的说明

分层确定性钱包(HD wallet)是一种特殊的钱包,最初在比特币的BIP32中详细说明,允许用户从单个种子中获取任意数量的帐户。让我们首先定义一些术语便于更好的理解:

  • 钱包:从给定种子获得的帐户集合。
  • 账号:一组公私钥对。
  • 私钥:私钥是用于签署消息的秘密信息。在区块链上下文中,私钥标识帐户的所有者。永远不应该向他人透露用户的私钥。
  • 公钥:公钥是通过对私钥应用单向数学函数获得的一段信息。从它可以派生出一个地址。无法从公钥中找到私钥。
  • 地址:地址是具有人类可读前缀的公共字符串,用于标识帐户。它是通过对公钥应用数学变换得到的。
  • 数字签名:数字签名是一段加密信息,它在不透露私钥的情况下证明已批准的给定消息的给定私钥的所有者。
  • 种子:和助记词一样。
  • 助记词:助记词是一组单词序列,用作派生私钥的种子。助记词是每个钱包的核心。永远不要忘记。把它写在一张纸上,存放在安全的地方。如果你失去了它,就没有办法找回它。如果某人获得了对它的访问权,那么他就获得了对所有相关帐户的访问权。

分层确定性钱包的核心是种子。通过这个种子,用户可以确定地生成账号。要从种子生成账号,应用单向数学转换。要决定生成哪个帐户,用户指定一个path,通常是一个integer(012、……)。

例如,通过将path指定为0,钱包将从种子生成私钥0。然后,可以从私钥0生成公钥0。最后,可以从公钥0生成地址0

     Account 0                         Account 1                         Account 2

+------------------+              +------------------+               +------------------+
|                  |              |                  |               |                  |
|    Address 0     |              |    Address 1     |               |    Address 2     |
|        ^         |              |        ^         |               |        ^         |
|        |         |              |        |         |               |        |         |
|        |         |              |        |         |               |        |         |
|        |         |              |        |         |               |        |         |
|        +         |              |        +         |               |        +         |
|  Public key 0    |              |  Public key 1    |               |  Public key 2    |
|        ^         |              |        ^         |               |        ^         |
|        |         |              |        |         |               |        |         |
|        |         |              |        |         |               |        |         |
|        |         |              |        |         |               |        |         |
|        +         |              |        +         |               |        +         |
|  Private key 0   |              |  Private key 1   |               |  Private key 2   |
|        ^         |              |        ^         |               |        ^         |
+------------------+              +------------------+               +------------------+
         |                                 |                                  |
         |                                 |                                  |
         |                                 |                                  |
         +--------------------------------------------------------------------+
                                           |
                                           |
                                 +---------+---------+
                                 |                   |
                                 |  Mnemonic (Seed)  |
                                 |                   |
                                 +-------------------+

从种子中推导出帐号的过程是确定性的。这意味着给定相同的路径,派生的私钥将始终相同。

存储在帐户中的资金由私钥控制。此私钥是使用助记词通过单向函数生成的。如果丢失了私钥,则可以使用助记词找回它。但是,如果丢失了助记词,则将无法访问所有派生的私钥。同样,如果有人获得了您的助记词访问权限,他们就可以访问所有相关帐户。

IRIShub钱包

IRIShub钱包是基于BIP44的分层确定性钱包。BIP44基于BIP32中描述的算法定义确定性钱包的逻辑层次结构,该算法允许处理多种代币,多个帐户,每个帐户的外部和内部链以及每个链的数百万个地址,例如比特币和以太坊。

BIP44在BIP32路径中定义以下5个级别:

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

IRISnet的coin_type与在SLIP44登记的cosmos stake token ATOM 118相同。

所以IRISnet密钥BIP44 path的前缀为44'/118'/,它的默认值是44'/118'/0'/0/0