Skip to content
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

Use different key-pair for running the sidecar #33

Closed
3 tasks
thedevbirb opened this issue May 24, 2024 · 4 comments
Closed
3 tasks

Use different key-pair for running the sidecar #33

thedevbirb opened this issue May 24, 2024 · 4 comments
Labels
C: mev-boost-relay Component: mev-boost-relay C: smart-contracts Component: smart contracts T: feature Type: Feature

Comments

@thedevbirb
Copy link
Contributor

thedevbirb commented May 24, 2024

In the first version of Bolt the sidecar will operate with an ECDSA private key, such that we can easily bind to an Ethereum address that we call BasedProposer in Bolt. This is useful for many reasons:

  • It's easier to handle all on-chain bonding, staking and payments
  • Exposing the validator's private identity is bad security practice

However, the downside is that validators normally operate with BLS12_381 private keys in the beacon chain. In our registry (where we perform the Bolt opt-in) we must somehow bind the validator identity with an ECDSA key.

To do this, we can:

  1. sign a message of this type with the BLS key:
    { "address":"0xc2B6a65d53117005eC36cB7e624484D18467b37F",  "message": "opt-in request for BOLT" }
  2. in the registry, verify the BLS signature against the BLS pubkey derived from a beacon-chain oracle. This verification should happen inside a function call for which the msg.sender is the Ethereum address that was signed in step 1.
  3. if the signature is valid, check that msg.sender matches the one in step 1.
  4. if true, update the basedProposers mapping in the registry to hold this new value.

Tasklist (to be updated)

  • Create a mapping in the registry between sidecar public keys and validator public keys (or indexes)
  • Enforce validator to specify an alternative public key before registering
  • Modify the POST constraints endpoint on the relay to authenticate via this public key. Constraints are already signed there fore we only need to check is the corresponding public key is known and associated to a validator
@thedevbirb thedevbirb added C: mev-boost-relay Component: mev-boost-relay C: smart-contracts Component: smart contracts T: feature Type: Feature labels May 24, 2024
@thedevbirb thedevbirb changed the title Use different private key for sidecar Use different key-pair for running the sidecar May 24, 2024
@thedevbirb thedevbirb modified the milestones: v0.2, v0.1 May 24, 2024
@merklefruit
Copy link
Collaborator

Relevant to add: the registry contract must also implement a beacon chain oracle for validator pubkeys, such that the binding is completely permissionless.

@merklefruit
Copy link
Collaborator

Related to #63

@mempirate
Copy link
Contributor

Handled by commit-boost for now

@mempirate mempirate removed this from the v0.3: Holesky 1 milestone Sep 9, 2024
@thedevbirb
Copy link
Contributor Author

This has been solved by introducing standardised interfaces, ERC-2335 keystores and Helix relay

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C: mev-boost-relay Component: mev-boost-relay C: smart-contracts Component: smart contracts T: feature Type: Feature
Projects
None yet
Development

No branches or pull requests

3 participants