-
Notifications
You must be signed in to change notification settings - Fork 5.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ethereum purpose allocation and path scheme for deterministic wallets #600
Conversation
eip-draft-ethereum-purpose.md
Outdated
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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Given the already confused nature of wallet derivation paths in Ethereum, we anticipate this will cause relatively little additional disruption
This sentence does not exactly instill me with a sense of tranquility, it more reminds me how many very difficult UX problems we still have to solve.
That said, I agree, we've already "bought in" to this confusing paradigm, and isolating accounts per-purpose is a standard evolution that we've been looking forward to for a long time.
These changes are modest, and I think easily agreeable to any client developers currently supporting the BIP39 standards.
My discussions on the Bitcoin mailing list have resulted in this PR: bitcoin/bips#523 Short version: Ethereum would be |
@iam-peekay #600 defines a framework upon which to extend BIP32 derivation paths in a way that is more-or-less compatible with BIP43 derivation paths. #601 is the first (and so far only) proposed implementation that leverages that new framework. This is akin to BIP32 that defines how derivation paths work (we still use that), BIP43 which defines how people spec derivation paths (similar to EIP600) and BIP 44 which is an application of BIP43 (just as EIP601 is an application of EIP600). |
@MicahZoltu thank you! that's helpful. Just so I completely understand, I'm currently architecting the key management for an application I'm building, and I'm looking at following the spec defined in #602. But I assume for now I'll have to either stick with NPM modules ethereumjs-wallet/hdkey and bip39 to handle seed phrases and HD keys or write my own eip602 NPM module to handle seed phrases and HD keys? Sorry if it's a noob question! |
I believe all 3 of these specs are BIP32 compatible and I think they are all BIP43 compatible. If you can find a library that speaks those then these should work. That being said, I don't think anyone has written a JS library specifically against this proposal (or the other two) yet. |
Thanks @MicahZoltu. Agreed. |
This is a courtesy notice to let you know that the format for EIPs has been modified slightly. If you want your draft merged, you will need to make some small changes to how your EIP is formatted:
If your PR is editing an existing EIP rather than creating a new one, this has already been done for you, and you need only rebase your PR. In addition, a continuous build has been setup, which will check your PR against the rules for EIP formatting automatically once you update your PR. This build ensures all required headers are present, as well as performing a number of other checks. Please rebase your PR against the latest master, and edit your PR to use the above format for frontmatter. For convenience, here's a sample header you can copy and adapt:
|
@Arachnid I propose we move this to Last Call (after you clean it up per your above comment). Discussion has died down on it and I think there is value in actually getting this finalized. |
eip-600.md
Outdated
category: ERC | ||
status: Draft | ||
created: 2017-04-13 | ||
replaces: 84 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Needs discussion link. I recommend Ethereum Magicians.
eip-600.md
Outdated
--- | ||
eip: 600 | ||
title: Ethereum purpose allocation for Deterministic Wallets | ||
author: Nick Johnson <nick@ethereum.org>, Micah Zoltu |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
GitHub handle is MicahZoltu
Why hasn't this been merged for discussion? |
Because I can't convince @Arachnid to add a discussion-url. :P |
eip-600.md
Outdated
status: Draft | ||
discussions-to: https://ethereum-magicians.org/t/eip-erc-app-keys-application-specific-wallet-accounts/2742 | ||
created: 2017-04-13 | ||
replaces: 84 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is no EIP 84
Hardened derivation is used at this level. | ||
|
||
### Subpurpose | ||
Subpurpose is set to 60, the SLIP-44 code for Ethereum. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Where is the reference to SLIP-44?
This EIP defines a logical hierarchy for deterministic wallets based on BIP32 and the purpose scheme defined in BIP43.
This EIP is a particular application of BIP43.