-
Notifications
You must be signed in to change notification settings - Fork 8
verifying remote signing #10
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
base: main
Are you sure you want to change the base?
Conversation
Hi @franjoespejo, can you provide some more detail the changes you are proposing? Is there a issue or spec somewhere I could look at get more context? |
yep working on that now, will add it |
(1)
The validator client does not have access to the state and can't proof things against the a state_root. From Nimbus' documentation you should indicate is proofs against the block body itself https://nimbus.guide/web3signer.html#verifying-web3signer
(2)
I am confused by this statement, what's a "relayer" in this context? this relayer signature is the signature found in (3) I think you should split this PR into two features:
|
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.
LGTM
i think its worth pointing out that signing time is very time sensitive, so if any of these latencies added amount to very much, its likely you'll miss proposals, (70% of the network will reorg you if you're not timely) |
Motivation
The current landscape, wherein remote signers rely on and trust validator clients for block signing, presents challenges in ensuring the integrity of signed blocks. This proposal addresses these challenges by introducing mechanisms for an autonomous verification process.
Rationale
This enhancement provides verification capabilities of the block proposal content to remote signers before signing the block, thereby facilitating a trustless operational setup between the validator client and the remote signer.
The specification aims to optionally extend the capabilities of the remote signer API while maintaining compatibility with the current API with the following (optional, flag-enabled) addition:
Each signing request can include an array of objects with the properties index and proof, where the index is an arbitrary generalized index of any property nested under the block body, and proof is its corresponding Merkle proof against the block body root included in the request.
The Nimbus client has already implemented the verifying remote signer under the verifying web3signer name.
Specification overview
The following specification proposes a structured methodology to refine the interaction between validator clients and the remote signer.
1. Define verification properties in the validator client
This step communicates to the validator client via flags where to find the remote signer and which properties the remote signer can validate. These properties can include:
2. Verify signature requests for
/api/v1/eth2/sign/{pubkey}
Enhancing signature requests with Merkle proofs, facilitating property verification. Based on the properties specified for each validator in the previous step, the verifying remote signer will perform the following computation before signing:
signing_root
field which is the block body root, ensuring each property's integrity before signing.Sequence diagram