sigp / siren

User interface for Lighthouse

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Ability to add validators

AgeManning opened this issue · comments

Users may be adding validators to an already running set.

One typical approach is to use the EF staking cli script which facilitates new deposists. The resulting artifact from this process is an encrypted json file which needs to be imported into a validator client.

Currently users can do this manually via the API or have to shutdown their VC and then import the file.

It would be a significant UX improvement if users could just add them via Siren.

What we would need:
Some button somewhere that allows us to "import" a validator.

The import should have some window that allows a user to either copy and paste a bunch of json (the json file) or select the file from disk, such that we can load it for them.

Users can select to disable this validator if they want.
They will need to enter a password to decrypt the file.
They will need to enter a fee-recipient (which is a valid execution address (we need to validate this).

Once entered, Siren will register the keystore by building the required json (see the below link) and sending to this endpoint:
https://lighthouse-book.sigmaprime.io/api-vc-endpoints.html#post-lighthousevalidatorskeystore

Note, that the json constructed will require

{ 
enable: 
password:
keystore:
}

which Siren can format based on the input.

Once accepted, Siren should then set the fee-recipient using the following endpoint:
https://ethereum.github.io/keymanager-APIs/#/Fee%20Recipient/setFeeRecipient

The pubkey is known from the keystore json. It might be nice to show this pubkey once users enter the json file, to ensure the user knows which validator is being imported.

If the json import fails, we should not set the fee-recipient and display an error. If the fee-recipient call fails, we should alert the user. Potentially allowing the users to set the fee recipient from the dash would be an added bonus and a way they could try again. The fee-recipient is just an execution address.