-
Notifications
You must be signed in to change notification settings - Fork 992
Onboarding testnet validators #604
Copy link
Copy link
Closed
Description
Here I propose a workflow for on-boarding validators to Goerli testnets (but it should also work for mainnet tetsnets).
Proposal
Components
There are two software components:
- the
account_managercrate, executed via the monolithiclighthousebinary.- Generates cryptographic keys, initializes validator slashing databases and produces eth1 deposit data.
- a single-page web application, served from some sigp domain but also available locally
- allows users to submit their validator deposit transactions via a browser (e.g., using metamask).
(1) already exists, however it requires additional features to suit this workflow. (2) does not exist yet.
Workflow
A user wishes to become a validator:
- The user downloads, builds and installs lighthouse from this repo.
- The user runs the following command
$ lighthouse account_manager validator new- A new directory is created for that validator in
~/.lighthouse/validators - Deposit and withdrawal BLS keystores are created (see Implement
Keystorespec for BLS12-381 secret keys #596). - An empty slashing database is created (see Implement Slashing Protection #588).
- An
eth1_tx_datafile is created (this is described later).
- A new directory is created for that validator in
- The user starts the validator (and any other validators in the datadir) by running
$ lighthouse validator_client- the logs of the validator client inform the user that their validator is not yet included in the beacon state (the validator is "unknown").
- The user goes to the "deposit website" and uploads their
eth1_tx_datafile and uses metamask to create a deposit transaction. It provides some feedback once the deposit is confirmed. - The user watches the logs of the validator client (started earlier) to see the validator transition from unknown, to deposited and then to active.
The eth1_tx_data file
This file is simply the inputs to the deposit function on the deposit contract.
It contains a simple, bytes representation of (pubkey, withdrawal_credentials, signature, deposit_data_root).
The deposit website
This just needs to be a static, single-page webpage acting as a shim between metamask and the eth1_tx_data file.
It only really needs three features:
- A button to upload the
eth1_tx_data - A button to create a deposit transaction using the
eth1_tx_data. - Some feedback about whether or not the transaction was mined and successful.
Reactions are currently unavailable