HDWallet
HD 钱包(分层确定性钱包)是一种加密钱包,它可以从单一的种子生成一系列的加密密钥。这种机制允许用户从一个根密钥派生出多个子密钥,进而生成多个加密货币地址,而无需每次都保存独立的密钥。HD 钱包的账户路径遵循一定的规则,这些规则通常遵守 BIP32、BIP44、BIP49 和 BIP84 这类比特币改进提案的标准。
BIP32 - 分层确定性钱包
BIP32 定义了 HD 钱包的基本架构,包括如何从一个种子生成树状结构的密钥,并如何从这些密钥派生出地址。BIP32 定义的路径格式如下:
m / purpose' / coin_type' / account' / change / address_index
各部分含义如下:
- m:表示这个路径是从主密钥(Master Key)开始的。
- purpose':使用撇号(')表示这是一个"硬化"的派生,purpose 通常根据不同的 BIP 规范来设定,如 BIP44。
- coin_type':代币类型,用于不同的加密货币,例如比特币是 0',以太 坊是 60'。
- account':账户编号,用户可以有多个账户,每个账户下可以有多个地址。
- change:通常用 0 表示接收地址,1 表示找零地址。
- address_index:地址索引,同一个账户下的每个地址都有一个唯一的索引号。
BIP44 - 多币种和多账户钱包
BIP44 在 BIP32 的基础上添加了对多币种和多账户的支持,其路径规则基本相同,但在 purpose 位置规定了使用 44',以此标识遵循 BIP44 的路径规则。 它引入了 coin_type'层级,使得同一个 HD 钱包能够支持多种加密货币,以及 account'层级,允许用户为不同的目的维护多个子账户。
BIP49 - 分层确定性钱包 P2WPKH-nested-in-P2SH
BIP49 提出了一种特殊的派生路径,用于支持 P2WPKH-nested-in-P2SH 类型的地址,这对于某些需要兼容性的场景很有用。在这种情况下,purpose 位置使用 49'。
BIP84 - 分层确定性钱包 P2WPKH
BIP84 专为支持 P2WPKH(Pay to Witness Public Key Hash)类型的地址而设计,使用 84'作为 purpose。这种类型的地址以 bc1 开头,是比特币的 SegWit 地址。
示例
Bitcoin 的一个示例路径可能是:m/44'/0'/0'/0/0,这表示第一个 BIP44 定义的比特币账户的第一个接收地址。 Ethereum 的一个示例路径可能是:m/44'/60'/0'/0/0,表示第一个 BIP44 定义的以太坊账户的第一个接收地址。 通过使用 HD 钱包和遵循这些 BIP 规范,用户和开发者可以更有效地管理和使用他们的加密货币,同时也保持了良好的兼容性和安全性。