Bitcoin Improvement Proposal 44. BIP44 is a Bitcoin Improvement Proposal that defines the structure of multi-asset wallets. It adds flexibility and privacy to HD Wallets, allowing you to derive many keys from one mnemonic seed.
Since deterministic wallets can manage large amounts of keys, it is important to know what derivation path they use when importing a seed phrase. This will ensure you can safely move your keys from one wallet to another.
Derivation paths are used to organize keys and addresses within an HD wallet tree. They were introduced with HD wallets in BIP 32 and are used for a number of cryptocurrencies including Bitcoin.
Each key in a HD wallet can be described by its derivation path. This derivation path contains information about the depth and index of that key, which determines where it resides in the tree.
When a key is imported to an HD wallet, its prefix tells the HD wallet exactly which derivation path to use to derive the address and find the bitcoin associated with it. This is crucial for displaying the correct balance to a user.
To help with this, a set of BIP44 constants have been defined for various currencies and networks. These include coin_type, change, account, address_index and address_change.
These BIP44 constants are defined according to the BIP44 standard, which was adapted from the BIP32 standard for Hierarchical Deterministic (HD) wallets. They are intended to guarantee isolation of accounts and avoid reusing keys, which can be a privacy leak.
UTXO-based coins (bitcoin, bitcoinGold, dash, digibyte, dogecoin, komodo, litecoin, peercoin, pivx, qtum, vericoin, viacoin and zcash) use this table for defining the derivation path of each address. If the derivation path is not conforming to this table, Trezor will warn the user and will not allow the address to be exported.
If the derivation path is conforming, it will have all five parts as defined in BIP32. This ensures that all BIP44-compatible wallets can derive a single key and find the associated bitcoin, as well as allowing them to export the public node for other non-UTXO blockchains.
However, some other chains may have different sequences for deriving addresses than this table, which is why it is important to check your derivation path when interacting with hardware wallets. You should also remember to record the derivation paths you use, as they are often not saved by default on the device.
To view a list of the derivation paths available for a particular asset in Exodus, simply navigate to the Account page and click on Advanced -> freshAddressPath. You will be able to see your address path and any other relevant details.
BIP44 (“Multi-account hierarchy for deterministic wallets”) defines a logical hierarchy for deterministic wallets. It allows handling of multiple coins, multiple accounts, external and internal chains per account and millions of addresses per chain.
The first level of derivation consists of an account address, which is derived from a single master extended private key. It can be derived in a public manner and used as an address to deposit or withdraw cryptocurrencies. It can also be derived in a private manner and used as an account to store assets that are controlled by the user.
This derived address can be stored in the address field of the login screen. The wallet can derive any number of accounts from a single seed, and the accounts are then available for access via any client that supports BIP44.
In addition to the account, the derivation path includes a purpose and coin_type, which are always set to 44′, as defined in BIP44. The purpose is used to distinguish between different accounts. The coin_type is set depending on the underlying coin type, and there’s a public list of registered coin types.
A wallet can then use this information to separate the key space into independent user identities, so that a user’s funds are never mixed across different accounts. This makes it possible for wallets to be used for donation purposes, as well as for savings and common expenses.
The BIP-44 standard is a good choice for personal wallets where the address space grows with the user’s needs. However, it is not a good choice for exchanges who typically use a single set of root credentials for managing assets of thousands of users.
Nevertheless, BIP-44 does have some key points that should be taken into consideration by all software implementing it. In particular, it introduces the concept of a gap limit, which is the maximum number of consecutive unused addresses the software must keep track of at any time.
In order to derive an account, the wallet must be able to verify that the path from the seed is valid. It must also be able to ensure that the resulting public address is not used by other wallets or applications. In order to do so, the wallet must be able to perform a BIP32 check.
BIP44 offers a few different ways to generate addresses. First, there is the standard deterministic derivation path with a fixed derivation level and a gap limit (a maximum number of consecutive unused addresses that the software should keep track of). Then, BIP44 also introduces the concept of an address discimination policy for staging networks. This ensures that a wallet created on one network does not accidentally use the same addresses on another.
There is also the possibility to derive multiple addresses in a hierarchical manner, using the same root account but different derivation levels on the following levels. Each derivation level is a sequence of numbers derived from the first account index. These indexes are then sequentially increased to generate new addresses for the account.
This is a good choice for personal wallets because the number of addresses increases with the user’s needs. However, it is a bad choice for exchanges that manage thousands of accounts and need to generate large numbers of unused addresses upfront to allow their users to deposit coins.
Alternatively, there is the option to create dedicated segregated witness addresses which are not used by the other accounts in the wallet. This ensures that only wallets compatible with the BIP will detect these addresses and handle them appropriately. The user can then either derive a public key from the resulting root account or create dedicated private keys that only the user can use to access these addresses. The latter option would allow for more complex address structures and better isolation than the former.
BIP 44 is a standard that provides hierarchical deterministic (HD) key derivation. The purpose of this standard is to allow users to derive many keys from a single seed phrase, making it possible for wallets to create multiple sets of public and private keys.
To achieve this, BIP44 defines a few key points that software implementing the standard should follow. For example, it specifies a gap limit – the maximum number of consecutive unused addresses that the software must keep track of at any given time. This is an important requirement for exchanges that typically use a single set of root credentials to manage the assets of thousands of users, where unused address space is a must.
The most impressive part of BIP 44 is probably its ability to generate a large number of random keys from a small mnemonic seed, which is not always feasible with traditional key generation schemes like RSA or AES. While this technology is certainly a feat of engineering, it is not without its drawbacks, including the difficulty in implementing the standard in hardware wallets. Luckily, there are several wallets that have been designed to take advantage of this capability, such as Bifrost Wallet, which defaults to the most efficient and BIP-friendly BIP44 path for all EVM-compatible chains.