lighthouse/scripts/local_testnet
Jim McDonald 4298efeb23 Update testnet scripts (#1807)
## Proposed Changes

A couple of minor fixes to the testnet scripts.

First, `clean.sh` only attempts to remove the directory if it exists.  This ensures a good exit code even if the directory is not present.

Second, `setup.sh` uses an updated deposit contract address to match that in the generated spec to allow the chain to start.
2020-10-23 00:18:05 +00:00
..
beacon_node.sh Local testnet fixes (#1499) 2020-08-11 02:16:33 +00:00
clean.sh Update testnet scripts (#1807) 2020-10-23 00:18:05 +00: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 Shutdown like a Sir (#1545) 2020-08-19 05:51:14 +00:00
setup.sh Update testnet scripts (#1807) 2020-10-23 00:18:05 +00:00
validator_client.sh Strict slashing protection by default (#1750) 2020-10-09 02:05:32 +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.