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

Spike on generic exits #2848

Closed
xenowits opened this issue Feb 1, 2024 · 2 comments · Fixed by #2934
Closed

Spike on generic exits #2848

xenowits opened this issue Feb 1, 2024 · 2 comments · Fixed by #2934
Assignees
Labels
protocol Protocol Team tickets V1

Comments

@xenowits
Copy link
Contributor

xenowits commented Feb 1, 2024

🎯 Problem to be solved

We need to do a technical spike to figure out possible approaches to support generic exits (see PRD).

🛠️ Proposed solution

Spike to see if we can craft a generic solution to the problem of exiting distributed validators. The output of this spike should be a design doc containing the research findings.

Note that we also have a design doc that could be useful for this spike.

🧪 Tests

None

@github-actions github-actions bot added the protocol Protocol Team tickets label Feb 1, 2024
@gsora
Copy link
Collaborator

gsora commented Feb 13, 2024

Document detailing a generic approach is available here: https://docs.google.com/document/d/1f5k0IduzndNBWldmfcGhyxxiWjVjo4CeqTOFg0-py4M/edit#heading=h.mssb0822zapb

@boulder225 boulder225 added the V1 label Feb 21, 2024
@gsora
Copy link
Collaborator

gsora commented Feb 27, 2024

The charon exit submit-partial-exit command

This Charon command is a middle ground between a lido-dv-exit-style deployment and full manual exit through the beacon node.

charon exit submit-partial-exit submits a partial exit for a specified validator through the CLI, and uses Obol API as its aggregation point -- just like lido-dv-exit.

An accessory command, charon exit full-exit will download the full exit message from Obol API if available, and broadcast it.

Both commands need a beacon node to function, because they need to:

  • fetch the validator index during submit-partial-exit
  • broadcast the full exit message during full exit

The commands by design don't allow for multiple validator to be processed at the same time, but their composable nature allow for building simple automation scripts.

Exiting a validator would work like this:

  • user A invokes charon exit submit-partial-exit --beacon-node http://beaconnode-address 0xabcd...
  • waits until threshold operators also ran the same command
  • any user runs charon exit full-exit --beacon-node http://beaconnode-address 0xabcd...

obol-bulldozer bot pushed a commit that referenced this issue Feb 29, 2024
Add partial exit endpoints handlers to Charon's Obol API client package.

Added unit tests and a mock server.

This code was taken and adapted from lido-dv-exit: once this PR gets merged, we'll remove it from there.

category: feature
ticket: #2848
obol-bulldozer bot pushed a commit that referenced this issue Apr 3, 2024
This PR adds exit-related commands under the `exit` subcommand:

 - `submit-partial-exit`, which signs and submit to an instance of Obol API a partial exit for a given DV in a given cluster lock
 - `broadcast`, which downloads a full exit from an instance of Obol API for a given validator if available, and broadcasts it to the configured beacon node
 - `active-validator-list`, which returns the list of validators which are `ACTIVE_ONGOING` contained in the specified cluster lock (useful for scripting).

Moved `obolapi` mock implementation to `testutil/obolapimock` so other tests can use it.

Added a few utility functions in `eth2util/keystore`, taken from `lido-dv-exit`: since it depends on Charon, we can migrate them.

category: feature
ticket: #2848 

Closes #2848.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
protocol Protocol Team tickets V1
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants