HD Wallets

Hierarchical Deterministic (HD) Wallets

Vault supports HD wallets according to BIP39 (i.e., mnemonic seed), BIP44 (i.e., multi-asset, multi-account) and the following derivation path hierarchy per BIP32:

m / purpose' / coin_type' / account' / change / index

Note: The apostrophe, as used above, indicates BIP32 hardened derivation at that level.

Purpose

Purpose is a constant set to 44' (or 0x8000002C) following the BIP43 recommendation. It indicates that the subtree of this node is used according to this specification. Hardened derivation is used at this level.

Coin Type

One mnemonic seed can be used for unlimited number of independent coin types (i.e., Bitcoin, Ethereum, etc.). This level creates a separate subtree for every coin, avoiding the reuse of addresses across coins. Hardened derivation is used at this level.

See this list of registered coin types.

Account

The account level of the derivation path splits the key space into independent identities. This ensures the wallet never mixes coins across accounts. Accounts are comparable to bank accounts in the context of how they organize and accept funds (i.e., public deposit and private signing facilities). Accounts are sequentially incremented, starting from index 0. This number is used as the child index in BIP32 derivation. Hardened derivation is used at this level.

Note: Account creation should be prevented while the previous account (i.e., the account at index - 1) has no transaction history (i.e., none of its addresses have been used).

Change

The constants 0 and 1 are used for the external and internal chains, respectively. The external chain is used for addresses that are meant to be visible outside of the wallet context (i.e., for receiving payments). The internal chain is used for addresses which should remain private within the wallet context; this chain is used to store change returned from broadcast transactions. Public derivation is used at this level.

Index

Addresses are numbered from index 0 in sequentially increasing manner. This number is used as child index in BIP32 derivation. Public derivation is used at this level.

BIP44 Specification

This documentation has been adapted from the BIP44 specification.

Last updated