Closed valefar-on-discord closed 3 weeks ago
I'm thinking about changing the logic to be a more generic "sign message with validator keystore"...
It would be nice if you could link the related proposals if they exist in a draft or a working document somewhere else.
It would be nice if you could link the related proposals if they exist in a draft or a working document somewhere else.
The only location for the proposal right now is https://github.com/eth-educators/update-credentials-without-mnemonic
If we are in agreement, my plan would be to get this landed (when ready) and create a new release. I'll then update the other repo with the new instructions and then we can broadcast to determine interest.
Do you want the logic as-is in here, or do you prefer the more generic "sign message" logic?
After some thought I'd prefer to keep it as is.
The generic signing came as an idea with the Stakers Union project where you have to turn off your validator to prove ownership. My thought was signing the Stakers Union's Oath with the validator keystore would do just as well.
But I am also of the opinion that any form of generic signing is dangerous. This needs to be a highly secure project based on the operations. I would rather build out a separate command for that use case if the need arises.
OK, I agree. I am interested in seeing this in. Even if we end up backing it out again, if there’s just not appetite to actually do this, from the Ethereum devs.
Let’s see what Remy says when he’s back next week.
Test Coverage: Download HTML Report
Name Stmts Miss Cover
----------------------------------------------------------------------------------------
ethstaker_deposit/__init__.py 0 0 100%
ethstaker_deposit/bls_to_execution_change_keystore.py 33 2 94%
ethstaker_deposit/cli/__init__.py 0 0 100%
ethstaker_deposit/cli/existing_mnemonic.py 28 0 100%
ethstaker_deposit/cli/exit_transaction_keystore.py 40 2 95%
ethstaker_deposit/cli/exit_transaction_mnemonic.py 62 8 87%
ethstaker_deposit/cli/generate_bls_to_execution_change.py 64 14 78%
ethstaker_deposit/cli/generate_bls_to_execution_change_keystore.py 42 2 95%
ethstaker_deposit/cli/generate_keys.py 41 2 95%
ethstaker_deposit/cli/new_mnemonic.py 26 0 100%
ethstaker_deposit/cli/partial_deposit.py 61 5 92%
ethstaker_deposit/credentials.py 197 68 65%
ethstaker_deposit/deposit.py 55 10 82%
ethstaker_deposit/exceptions.py 2 0 100%
ethstaker_deposit/key_handling/__init__.py 0 0 100%
ethstaker_deposit/key_handling/key_derivation/__init__.py 0 0 100%
ethstaker_deposit/key_handling/key_derivation/mnemonic.py 90 7 92%
ethstaker_deposit/key_handling/key_derivation/path.py 17 1 94%
ethstaker_deposit/key_handling/key_derivation/tree.py 36 0 100%
ethstaker_deposit/key_handling/keystore.py 100 0 100%
ethstaker_deposit/settings.py 22 1 95%
ethstaker_deposit/utils/__init__.py 0 0 100%
ethstaker_deposit/utils/ascii_art.py 2 0 100%
ethstaker_deposit/utils/click.py 70 3 96%
ethstaker_deposit/utils/config.py 3 0 100%
ethstaker_deposit/utils/constants.py 29 0 100%
ethstaker_deposit/utils/crypto.py 29 1 97%
ethstaker_deposit/utils/deposit.py 9 0 100%
ethstaker_deposit/utils/exit_transaction.py 24 0 100%
ethstaker_deposit/utils/file_handling.py 8 0 100%
ethstaker_deposit/utils/intl.py 54 3 94%
ethstaker_deposit/utils/ssz.py 60 7 88%
ethstaker_deposit/utils/validation.py 217 51 76%
----------------------------------------------------------------------------------------
TOTAL 1421 187 87%
I wish there was more efforts into bringing this as an official EIP and gathering more comments and more reviews from peers in the ecosystem. I'm happy to review this PR and include it in the project but I fear it will not be used if the principles and the specs behind this feature are not accepted at the protocol level.
We’d include this to gauge interest and see how many people are impacted. That’s how we get the protocol on board. Chicken and egg.
At some point it’ll be removed again.
Test Coverage: Download HTML Report
Name Stmts Miss Cover
----------------------------------------------------------------------------------------
ethstaker_deposit/__init__.py 1 0 100%
ethstaker_deposit/bls_to_execution_change_keystore.py 33 2 94%
ethstaker_deposit/cli/__init__.py 0 0 100%
ethstaker_deposit/cli/existing_mnemonic.py 28 0 100%
ethstaker_deposit/cli/exit_transaction_keystore.py 40 2 95%
ethstaker_deposit/cli/exit_transaction_mnemonic.py 62 8 87%
ethstaker_deposit/cli/generate_bls_to_execution_change.py 64 14 78%
ethstaker_deposit/cli/generate_bls_to_execution_change_keystore.py 42 2 95%
ethstaker_deposit/cli/generate_keys.py 41 2 95%
ethstaker_deposit/cli/new_mnemonic.py 26 0 100%
ethstaker_deposit/cli/partial_deposit.py 61 5 92%
ethstaker_deposit/credentials.py 197 68 65%
ethstaker_deposit/deposit.py 57 10 82%
ethstaker_deposit/exceptions.py 2 0 100%
ethstaker_deposit/key_handling/__init__.py 0 0 100%
ethstaker_deposit/key_handling/key_derivation/__init__.py 0 0 100%
ethstaker_deposit/key_handling/key_derivation/mnemonic.py 90 7 92%
ethstaker_deposit/key_handling/key_derivation/path.py 17 1 94%
ethstaker_deposit/key_handling/key_derivation/tree.py 36 0 100%
ethstaker_deposit/key_handling/keystore.py 100 0 100%
ethstaker_deposit/settings.py 23 1 96%
ethstaker_deposit/utils/__init__.py 0 0 100%
ethstaker_deposit/utils/ascii_art.py 2 0 100%
ethstaker_deposit/utils/click.py 70 3 96%
ethstaker_deposit/utils/config.py 3 0 100%
ethstaker_deposit/utils/constants.py 29 0 100%
ethstaker_deposit/utils/crypto.py 29 1 97%
ethstaker_deposit/utils/deposit.py 9 0 100%
ethstaker_deposit/utils/exit_transaction.py 24 0 100%
ethstaker_deposit/utils/file_handling.py 8 0 100%
ethstaker_deposit/utils/intl.py 54 3 94%
ethstaker_deposit/utils/ssz.py 60 7 88%
ethstaker_deposit/utils/validation.py 217 51 76%
----------------------------------------------------------------------------------------
TOTAL 1425 187 87%
There is a cohort of users who have lost or are missing their mnemonic and are unable to update their withdrawal credentials. As of now, these funds are locked permanently and indefinitely. We have a potential solution that can allow these users to regain their funds though we have no approval or proper implementation. One of the necessary components of this solution is a signature from the validator keystore that can be used as a proof of ownership of the validator. This adds the ability for a user to generate said signature.
The users runs
generate-bls-to-execution-change-keystore
with the provided keystore, password, validator index, and designed execution address to update their withdrawal credentials with. This command outputs and signature json file where the message will contain the provided execution address and validator index.