-
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
Remove key index restrictions from EIP-2334 #2670
Conversation
I don't think that any system linking the keys is necessary or useful; the suggestion will still require the same seed for both. |
Having the ability to create different wallets with their own set of keys is very useful, been around for years. I don't see reason to get backwards here.. |
Different wallets is fine, different wallets with the same seed less so. |
that's how every wallet outside of eth 2 works.. 1 see that supports many wallets |
They allow multiple accounts, not wallets. The terminology can be a bit different from one client to another, but the idea is that a single seed can generate multiple accounts. What we don't want is a single seed generating multiple streams of accounts, as that could cause user confusion (and endangerment of funds) as above. |
Current crypto wallets enable you dynamicy on 2 levels
A user, from a single seed, can create multiple wallets for the same coin type: That's the functionality everyone would expect from any key derivation scheme. |
I haven't seen that two-level functionality in any Ethereum wallets I've used. Regardless, this is about the removal of a specific requirement for certain indices in key derivation to enable the use cases I listed in the original post. Your suggestion does not enable the use cases. |
I am not generally in favour of this change because I think it introduces areas of potential confusion for users (and loss of keys within the keyspace). To tackle the particular arguments put forward here:
5 wallets/accounts - I think @alonmuroch is referring to the accounts and indices defined in BIP44. The difference between these two is whether they are public or privately derivable. It is functionality that is not really used in the Ethereum space, to my knowledge. |
I think the current path derivation scheme (i.e., what is removed in this PR) is quite desirable as it guides the user to separate the voting and withdrawal key-spaces. To achieve @mcdee's goals (as I understand them) I would prefer a change that retains the current "Validator keys" section, but:
I don't know enough about MPC make a firm statement as to whether or not (2) is indeed necessary. Optionally, if we implement (1) we could also specify that that |
@paulhauner I agree with desirability of separating voting and withdrawal keyspaces, but this is an EIP not a best practices guide. If one person wants to use @CarlBeek If there are a number of validator best practices that you believe should be made available for stakers place they could go in a separate document, but definition of the path and example uses of the path should not be tied together. |
If I were to generate keys into I'm also well aware that this is an EIP. EIPs are very much in the business of creating cryptography specifications that attempt to prevent users from having enough rope to hang themselves. I found this comment to be an off-the-cuff dismissal which did not address the content of my statement and, frankly, a little condescending. I'm not interested in hammering on this point, I just wanted to make my discontentment clear.
This point is fair and I'm not opposed to it all. However, if we were to remove the "Validator keys" section I would advocate for creating an EIP which replaces it. Consider this scenario: Alice creates a genesis validator and then exits a few weeks after genesis for whatever reason. Now, a year or two has passed and phase 1 has arrived and Alice wishes to withdraw her previously-staked ETH. Now, we didn't standardize on a path for validator keys and there are several competing standards, some of which included extra nodes in the path. Alice has forgotten which tool she used (it's been over a year, after all) and all she has is a twelve-word mnemonic. Alice is now in the territory of brute-forcing her keys from:
If we can make assumptions about |
I offer my apologies for this, it was not my intent.
I'd be very much behind this. |
I am not against creating a separate EIP for tracking this, but I am not convinced that this EIP specifies much if that section is removed, arguably only the Already there is some confusion as to exactly what each level should be used for as per the discussions in this thread and in eth1 this has been a train-wreck with 4 different paths in use and the subsequent EIPs (600 & 601) which haven't seen widespread adoption attempting to address this problem. |
@CarlBeek I'd fully support a generic definition of paths to use, e.g. |
There has been no activity on this pull request for two months. It will be closed in a week if no further activity occurs. If you would like to move this EIP forward, please respond to any outstanding feedback or add a comment indicating that you have addressed all required feedback and are ready for a review. |
This PR removes the specifics for Ethereum 2 validator keys from EIP-2334.
EIP-2334 provides important information to allow for standardisation of key paths, however the addition of specifics about how to generate validator keys makes it impossible to fully implement in common staking situations.
This part of the spec removed in this PR defines a specific relationship between validator and withdrawal keys that often does not exist in the real world. Situations that this part of the spec precludes include:
Removing these restrictions allow this EIP to be adhered to by more participants.