ERC-600 Ethereum Deterministic Wallet Path Allocation (Ethereum purpose allocation for Deterministic Wallets)

Final · Accounts & wallets · created 2017-04-13

In deterministic wallets, which generate many keys from a single seed, this defines the Ethereum-specific key derivation path m/43'/60'/EIP' so that different wallets can generate addresses in the same way.

Why it is needed

A deterministic wallet generates many keys and addresses from a single seed, such as a recovery phrase, along defined paths. BIP44, the existing standard that specifies which path to use, was designed for coins like Bitcoin that track balances as unspent transaction outputs (UTXOs). Ethereum uses an account balance model, so this hierarchy does not fit well. As a result, wallets developed competing derivation path strategies, which caused incompatibility between clients. This standard was created to offer a way to standardize paths in a manner that better fits Ethereum's distinct needs.

In depth

A logical hierarchy built on BIP32 and BIP43

This standard defines a logical hierarchy for Ethereum based on BIP32, the key derivation scheme for deterministic wallets, BIP43, which distinguishes purposes by the first level of the path (purpose), and a change proposed to BIP43. The original text states explicitly that this EIP is one specific application of BIP43. In other words, it does not create a new cryptographic technique. It is a standard that fixes Ethereum's place within an already widely used key derivation scheme.

Why BIP44 does not fit Ethereum

Ethereum is based on account balances rather than UTXOs, so the hierarchy defined by BIP44 does not fit well. As a result, several competing derivation path strategies emerged among deterministic wallets, leading to incompatibility between clients. This standard aims to provide a path to standardize this in a way that better fits Ethereum's own requirements.

Path structure m / purpose' / subpurpose' / EIP'

Two levels are defined on top of the BIP32 path, so the full structure becomes m / purpose' / subpurpose' / EIP'. The apostrophe (') in the path marks BIP32 hardened derivation, and all three levels use hardened derivation. Each level has the special meaning described below.

Values at each level: 43, 60, EIP number

purpose is set to 43 following the BIP43 proposal, and indicates that the path is for cryptocurrencies other than Bitcoin. subpurpose is set to 60, the SLIP-44 code for Ethereum. The final EIP level is set to the number of the EIP that specifies the rest of the BIP32 derivation path. This lets new Ethereum-centric applications that use deterministic wallets define paths without having to go through the Bitcoin-side BIP process.

Why the existing practice m/44'/60'/* is being replaced

The existing practice is to use the 'Ethereum' coin type with paths that start with m/44'/60'/*. The source argues that this approach is unsuitable because it still assumes UTXO-based coins, and that it creates compromises in standardization, usability and security. It therefore makes the proposal above, which defines an entirely new hierarchy for Ethereum-family chains.

Backwards compatibility and implementation status

Because another derivation path is introduced, existing software must support this scheme in addition to the ones it already supports. The source considers that Ethereum's wallet derivation paths are already in a confusing state, so the additional confusion would be relatively small and the proposal has the potential to improve the situation greatly in the long run. However, it states that at the time of writing the test cases are TBD and there is no implementation yet.

Original ERC · ← ERCs