lighthouse/scripts/local_testnet
Adam Szkoda b83fcd5e5c Local testnet fixes (#1499)
Fixes some outdated instructions and improves scripts portability so that they work e.g. on NixOS.
2020-08-11 02:16:33 +00:00
..
beacon_node.sh Local testnet fixes (#1499) 2020-08-11 02:16:33 +00:00
clean.sh Update local testnet scripts, fix eth1 sim (#1184) 2020-05-26 18:30:44 +10:00
README.md Local testnet fixes (#1499) 2020-08-11 02:16:33 +00:00
reset_genesis_time.sh Update local testnet scripts, fix eth1 sim (#1184) 2020-05-26 18:30:44 +10:00
second_beacon_node.sh Local testnet fixes (#1499) 2020-08-11 02:16:33 +00:00
setup.sh Local testnet fixes (#1499) 2020-08-11 02:16:33 +00:00
validator_client.sh Local testnet fixes (#1499) 2020-08-11 02:16:33 +00:00
vars.env Update local testnet scripts, fix eth1 sim (#1184) 2020-05-26 18:30:44 +10:00

Simple Local Testnet

These scripts allow for running a small local testnet with two beacon nodes and one validator client. This setup can be useful for testing and development.

Requirements

The scripts require lci and lighthouse to be installed on PATH. From the root of this repository, run:

cargo install --path lighthouse --force --locked
cargo install --path lcli --force --locked

Starting the testnet

Assuming you are happy with the configuration in var.env, create the testnet directory, genesis state and validator keys with:

./setup.sh

Start the first beacon node:

./beacon_node.sh

In a new terminal, start the validator client which will attach to the first beacon node:

./validator_client.sh

In a new terminal, start the second beacon node which will peer with the first:

./second_beacon_node.sh

Additional Info

Debug level

The beacon nodes and validator client have their --debug-level set to info. Specify a different debug level like this:

./validator_client.sh debug
./beacon_node.sh trace
./second_beacon_node.sh warn

Starting fresh

Delete the current testnet and all related files using:

./clean.sh

Updating the genesis time of the beacon state

If it's been a while since you ran ./setup then the genesis time of the genesis state will be far in the future, causing lots of skip slots.

Update the genesis time to now using:

./reset_genesis_time.sh

Note: you probably want to drop the beacon node database and the validator client slashing database if you do this. When using small validator counts it's probably easy to just use ./clean.sh && ./setup.sh.