Files
lighthouse/book/src/become-a-validator.md
ethers 182b66f396 est_time for syncing is lower than distance (#697)
If I understood correctly, this should help avoid misunderstanding of how long a sync might take.

(Another option may be a code change that log for INFO Syncing will display est_time first, before the distance.)
2019-12-11 09:31:05 +11:00

6.5 KiB

Become an Ethereum 2.0 Validator*

* Testnet validator

Running Lighthouse validator is easy if you're familiar with the terminal. It runs on Linux, MacOS and Windows.

Before you start, you'll need Metamask and 3.2 gETH (Goerli ETH). We recommend the mudit.blog faucet for those familiar with Goerli, or goerli.net for an overview of the testnet.

1. Download and install Lighthouse

If you already have Rust installed, you can install Lighthouse with the following three commands:

  • $ git clone https://github.com/sigp/lighthouse.git
  • $ cd lighthouse
  • $ make

You've completed this step when you can run $ lighthouse --help and see the help menu.

  • If you're not familiar with Rust or you'd like more detailed instructions, see the Installation Guide.
  • The Docker Guide is great if you have Docker installed and would like to avoid installing Rust.

2. Start your Beacon Node

The beacon node is the core component of Eth2, it connects to other peers over the Internet and maintains a view of the chain.

Start your beacon node with:

$ lighthouse beacon --eth1 --http

Your beacon node has started syncing when you see the following (truncated) log:

Dec 09 12:57:18.026 INFO Syncing                                 distance: 16837 slots (2 days 8 hrs), ...

Don't be overly concerned about the "distance" because "est_time" for syncing will be much lower.

It has finished syncing once you see the following (truncated) log:

Dec 09 12:27:06.010 INFO Synced                                  slot: 16835, ...
  • The --http flag enables the HTTP API for the validator client.
  • The --eth1 flag tells the beacon node that it should sync with an Ethereum 1 node (e.g., Geth). This is only required if you wish to run a validator.
  • We are hosting a public Goerli archive node and have set this as the default, but you can specify your own Eth1 node using the --eth1-endpoint flag. Presently we require the node to be a full archive node, but we're working to fix this.

3. Generate your validator key

Generate new validator BLS keypairs using:

$ lighthouse account validator new random

You've completed this step when you see the equivalent line:

Dec 02 21:42:01.337 INFO Generated validator directories         count: 1, base_path: "/home/karl/.lighthouse/validators"
  • This will generate a new validator directory in the .lighthouse/validators directory. Your validator directory will be identified by it's public key, which looks something like 0xc483de.... You'll need to find this directory for the next step.
  • These keys are good enough for the Lighthouse testnet, however they shouldn't be considered secure until we've undergone a security audit (planned Jan 2020).

4. Start your validator client

For security reasons, the validator client runs separately to the beacon node. The validator client stores private keys and signs messages generated by the beacon node.

You'll need both your beacon node and validator client running if you want to stake.

Start the validator client with:

$ lighthouse validator

The validator client is running and has found your validator keys from step 3 when you see the following log:

Dec 09 13:08:59.171 INFO Loaded validator keypair store          voting_validators: 1
Dec 09 13:09:09.000 INFO Awaiting activation                     slot: 17787, ...

If your beacon node hasn't finished syncing yet, you'll see some ERRO messages indicating that your node isn't synced yet. It is safest to wait for your node to sync before moving onto the next step, otherwise your validator may activate before you're able to produce blocks and attestations. However, it generally takes 4-8+ hours after deposit for a validator to become active. If your est_time is less than 4 hours, you should be fine to just move to the next step. After all, this is a testnet and you're only risking Goerli ETH.

5. Submit your deposit

Upload the eth1_deposit_data.rlp file from your validator directory (created in step 3) to submit your 3.2 Goerli-ETH deposit using Metamask.

Hint: it's generally in the $HOME/.lighthouse/validators/0x... directory

Upload and Submit Deposit

Your validator deposit was submitted and this step is complete.

See the transaction on Etherscan or reload to perform another deposit.

Error

Unknown error.

This deposit is using gETH (Goerli ETH) which has no real value. Don't ever send real ETH to our deposit contract!

Next steps

Leave your beacon node and validator client running and you'll see logs as the beacon node keeps synced with the network and the validator client produces blocks and attestations.

It will take some time (minutes to hours) for the beacon chain to process and activate your validator, however you'll know you're active when the validator client starts successfully publishing attestations each slot:

Dec 03 08:49:40.053 INFO Successfully published attestation      slot: 98, committee_index: 0, head_block: 0xa208…7fd5,

Although you'll produce an attestation each slot, it's less common to produce a block. Watch for the block production logs too:

Dec 03 08:49:36.225 INFO Successfully published block            slot: 98, attestations: 2, deposits: 0, service: block

If you see any ERRO (error) logs, please reach out on Discord or create an issue.

Happy staking!

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <script charset="utf-8" src="https://cdn.ethers.io/scripts/ethers-v4.min.js" type="text/javascript"> </script> <script src="js/deposit.js"></script>