From 8c74bc2957ffd47f173d4d4faba0719503dc8c2d Mon Sep 17 00:00:00 2001 From: Nick Johnson Date: Thu, 13 Apr 2017 17:39:27 +0100 Subject: [PATCH 1/8] Create eip-draft-hdwallets.md --- EIPS/eip-draft-hdwallets.md | 76 +++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 EIPS/eip-draft-hdwallets.md diff --git a/EIPS/eip-draft-hdwallets.md b/EIPS/eip-draft-hdwallets.md new file mode 100644 index 00000000000000..c9a785c7bf6ac6 --- /dev/null +++ b/EIPS/eip-draft-hdwallets.md @@ -0,0 +1,76 @@ +## Preamble + + EIP: + Title: Ethereum hierarchy for deterministic wallets + Author: Nick Johnson , Micah Zoltu + Type: Standard Track + Category : ERC + Status: Draft + Created: 2017-04-13 + Replaces: [84](https://github.com/ethereum/EIPs/issues/84) + + +## Abstract +This EIP defines a logical hierarchy for deterministic wallets based on [BIP32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) and the purpose scheme defined in [BIP43](https://github.com/bitcoin/bips/blob/master/bip-0043.mediawiki). + +This EIP is a particular application of BIP43. + +## Motivation +At present, different Ethereum clients and wallets use different derivation paths; a summary of them can be found [here](https://github.com/ethereum/EIPs/issues/84#issuecomment-292324521). Some of these paths violate BIP44, the standard defining derivation paths starting with `m/44'/`. This creates confusion and incompatibility between wallet implementations, in some cases making funds from one wallet inaccessible on another, and in others requiring prompting users manually for a derivation path, which hinders usability. + +Further, BIP44 was designed with UTXO-based blockchains in mind, and is a poor fit for Ethereum, which uses an accounts abstraction instead. + +As an alternative, we propose a deterministic wallet hierarchy better tailored to Ethereum's unique requiremnts. + +## Specification +We define the following 3 levels in BIP32 path: + +
+m / purpose' / subpurpose' / wallet'
+
+ +Apostrophe in the path indicates that BIP32 hardened derivation is used. + +Each level has a special meaning, described in the chapters below. + +### Purpose + +Purpose is a constant set to a value to be determined; the authors of this EIP are still engaged in the standards process to obtain assignment of a 'purpose' field. + +The purpose field indicates that the subtree of this node is used according to this specification. + +Hardened derivation is used at this level. + +### Subpurpose +Subpurpose is set to the EIP number specifying the remainder of the BIP32 derivation path. For paths following this EIP specification, the number assigned to this EIP is used. + +### Wallet +This component of the path splits the wallet into different user identities, allowing a single wallet to have multiple public identities. + +Accounts are numbered from index 0 in sequentially increasing manner. This number is used as child index in BIP32 derivation. + +Hardened derivation is used at this level. + +Software should prevent a creation of an account if a previous account does not have a transaction history (meaning its address has not been used before). + +Software needs to discover all used accounts after importing the seed from an external source. + +## Rationale +The existing convention is to use the 'Ethereum' coin type, leading to paths starting with `m/44'/60'/*`. Because this still assumes a UTXO-based coin, we contend that this is a poor fit, resulting in standardisation, usability, and security compromises. As a result, we are making the above proposal to define an entirely new hierarchy for Ethereum-based chains. + +## Backwards Compatibility +The introduction of another derivation path requires existing software to add support for this scheme in addition to any existing schemes. Given the already confused nature of wallet derivation paths in Ethereum, we anticipate this will cause relatively little additional disruption, and has the potential to improve matters significantly in the long run. + +For applications that utilise mnemonics, the authors expect to submit another EIP draft that describes a method for avoiding backwards compatibility concerns when transitioning to this new derivation path. + +## Test Cases +TBD + +## Implementation +None yet. + +## References +[This discussion on derivation paths](https://github.com/ethereum/EIPs/issues/84) + +## Copyright +Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). From 441db8bbe774432c53c1499751c2b737b8b68efc Mon Sep 17 00:00:00 2001 From: Nick Johnson Date: Fri, 14 Apr 2017 12:25:30 +0100 Subject: [PATCH 2/8] Update eip-draft-hdwallets.md --- EIPS/eip-draft-hdwallets.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/EIPS/eip-draft-hdwallets.md b/EIPS/eip-draft-hdwallets.md index c9a785c7bf6ac6..71c72b8984fb79 100644 --- a/EIPS/eip-draft-hdwallets.md +++ b/EIPS/eip-draft-hdwallets.md @@ -11,9 +11,9 @@ ## Abstract -This EIP defines a logical hierarchy for deterministic wallets based on [BIP32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) and the purpose scheme defined in [BIP43](https://github.com/bitcoin/bips/blob/master/bip-0043.mediawiki). +This EIP defines a logical hierarchy for deterministic wallets based on [BIP32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki), the purpose scheme defined in [BIP43](https://github.com/bitcoin/bips/blob/master/bip-0043.mediawiki) and eip-draft-ethereum-purpose. -This EIP is a particular application of BIP43. +This EIP is a particular application of eip-draft-ethereum-purpose. ## Motivation At present, different Ethereum clients and wallets use different derivation paths; a summary of them can be found [here](https://github.com/ethereum/EIPs/issues/84#issuecomment-292324521). Some of these paths violate BIP44, the standard defining derivation paths starting with `m/44'/`. This creates confusion and incompatibility between wallet implementations, in some cases making funds from one wallet inaccessible on another, and in others requiring prompting users manually for a derivation path, which hinders usability. From d8476ef1c861eb578bb6e9057ff52a71f3cd10e4 Mon Sep 17 00:00:00 2001 From: Nick Johnson Date: Mon, 18 Jun 2018 16:33:02 +0100 Subject: [PATCH 3/8] Update and rename eip-draft-hdwallets.md to eip-601.md --- EIPS/{eip-draft-hdwallets.md => eip-601.md} | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) rename EIPS/{eip-draft-hdwallets.md => eip-601.md} (92%) diff --git a/EIPS/eip-draft-hdwallets.md b/EIPS/eip-601.md similarity index 92% rename from EIPS/eip-draft-hdwallets.md rename to EIPS/eip-601.md index 71c72b8984fb79..b24e75a795d4c3 100644 --- a/EIPS/eip-draft-hdwallets.md +++ b/EIPS/eip-601.md @@ -1,14 +1,13 @@ -## Preamble - - EIP: - Title: Ethereum hierarchy for deterministic wallets - Author: Nick Johnson , Micah Zoltu - Type: Standard Track - Category : ERC - Status: Draft - Created: 2017-04-13 - Replaces: [84](https://github.com/ethereum/EIPs/issues/84) - +--- +eip: 612 +title: Ethereum hierarchy for deterministic wallets +author: Nick Johnson , Micah Zoltu +type: Standard Track +category : ERC +status: Draft +created: 2017-04-13 +replaces: 84 +--- ## Abstract This EIP defines a logical hierarchy for deterministic wallets based on [BIP32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki), the purpose scheme defined in [BIP43](https://github.com/bitcoin/bips/blob/master/bip-0043.mediawiki) and eip-draft-ethereum-purpose. From 81f14227a389aa16d082827cf31abd20df8235fb Mon Sep 17 00:00:00 2001 From: Nick Johnson Date: Tue, 19 Mar 2019 11:07:51 +1300 Subject: [PATCH 4/8] Update eip-601.md --- EIPS/eip-601.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EIPS/eip-601.md b/EIPS/eip-601.md index b24e75a795d4c3..f3613fdb9d15f3 100644 --- a/EIPS/eip-601.md +++ b/EIPS/eip-601.md @@ -1,7 +1,7 @@ --- eip: 612 title: Ethereum hierarchy for deterministic wallets -author: Nick Johnson , Micah Zoltu +author: Nick Johnson (@arachnid), Micah Zoltu (@micahzoltu) type: Standard Track category : ERC status: Draft From 07ead880d7812bba5b69ed9b79a6dc22faaf6174 Mon Sep 17 00:00:00 2001 From: Nick Johnson Date: Tue, 19 Mar 2019 11:08:43 +1300 Subject: [PATCH 5/8] Update eip-601.md --- EIPS/eip-601.md | 1 + 1 file changed, 1 insertion(+) diff --git a/EIPS/eip-601.md b/EIPS/eip-601.md index f3613fdb9d15f3..bbefe1ce54c1a5 100644 --- a/EIPS/eip-601.md +++ b/EIPS/eip-601.md @@ -5,6 +5,7 @@ author: Nick Johnson (@arachnid), Micah Zoltu (@micahzoltu) type: Standard Track category : ERC status: Draft +discussions-to: https://ethereum-magicians.org/t/eip-erc-app-keys-application-specific-wallet-accounts/2742 created: 2017-04-13 replaces: 84 --- From d1a12084e6078e009be0c1ff2d2d89e349e05cfb Mon Sep 17 00:00:00 2001 From: Nick Johnson Date: Tue, 19 Mar 2019 11:18:51 +1300 Subject: [PATCH 6/8] Update eip-601.md --- EIPS/eip-601.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/EIPS/eip-601.md b/EIPS/eip-601.md index bbefe1ce54c1a5..218ac8829d9860 100644 --- a/EIPS/eip-601.md +++ b/EIPS/eip-601.md @@ -23,10 +23,10 @@ Further, BIP44 was designed with UTXO-based blockchains in mind, and is a poor f As an alternative, we propose a deterministic wallet hierarchy better tailored to Ethereum's unique requiremnts. ## Specification -We define the following 3 levels in BIP32 path: +We define the following 4 levels in BIP32 path:
-m / purpose' / subpurpose' / wallet'
+m / purpose' / subpurpose' / EIP' / wallet'
 
Apostrophe in the path indicates that BIP32 hardened derivation is used. @@ -35,14 +35,19 @@ Each level has a special meaning, described in the chapters below. ### Purpose -Purpose is a constant set to a value to be determined; the authors of this EIP are still engaged in the standards process to obtain assignment of a 'purpose' field. - -The purpose field indicates that the subtree of this node is used according to this specification. +Purpose is a constant set to 43, indicating the key derivation is for a non-bitcoin cryptocurrency. Hardened derivation is used at this level. ### Subpurpose -Subpurpose is set to the EIP number specifying the remainder of the BIP32 derivation path. For paths following this EIP specification, the number assigned to this EIP is used. +Subpurpose is set to 60, the SLIP-44 code for Ethereum. + +Hardened derivation is used at this level. + +### EIP +EIP is set to the EIP number specifying the remainder of the BIP32 derivation path. For paths following this EIP specification, the number assigned to this EIP is used. + +Hardened derivation is used at this level. ### Wallet This component of the path splits the wallet into different user identities, allowing a single wallet to have multiple public identities. From 549014bb11bf132c5e31374fa01ac90f19e84d66 Mon Sep 17 00:00:00 2001 From: Nick Johnson Date: Tue, 19 Mar 2019 11:23:51 +1300 Subject: [PATCH 7/8] Update eip-601.md --- EIPS/eip-601.md | 1 - 1 file changed, 1 deletion(-) diff --git a/EIPS/eip-601.md b/EIPS/eip-601.md index 218ac8829d9860..f4ca2b1204409f 100644 --- a/EIPS/eip-601.md +++ b/EIPS/eip-601.md @@ -7,7 +7,6 @@ category : ERC status: Draft discussions-to: https://ethereum-magicians.org/t/eip-erc-app-keys-application-specific-wallet-accounts/2742 created: 2017-04-13 -replaces: 84 --- ## Abstract From f51e8e8ac0a40e63381f9270427ffd1ba157a755 Mon Sep 17 00:00:00 2001 From: Nick Johnson Date: Tue, 19 Mar 2019 11:37:51 +1300 Subject: [PATCH 8/8] Update eip-601.md --- EIPS/eip-601.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/EIPS/eip-601.md b/EIPS/eip-601.md index f4ca2b1204409f..4768679ab2305a 100644 --- a/EIPS/eip-601.md +++ b/EIPS/eip-601.md @@ -1,8 +1,8 @@ --- -eip: 612 +eip: 601 title: Ethereum hierarchy for deterministic wallets author: Nick Johnson (@arachnid), Micah Zoltu (@micahzoltu) -type: Standard Track +type: Standards Track category : ERC status: Draft discussions-to: https://ethereum-magicians.org/t/eip-erc-app-keys-application-specific-wallet-accounts/2742