forked from sigp/lighthouse
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
The testnet will be on the local computer and have 1 eth1 node, 4 beacon nodes, 1 validator with 20 vc's.
- Loading branch information
1 parent
ea78315
commit 21d1af4
Showing
8 changed files
with
231 additions
and
26 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,25 +1,54 @@ | ||
#!/usr/bin/env bash | ||
|
||
# | ||
# Starts a beacon node based upon a genesis state created by | ||
# `./setup.sh`. | ||
# Starts a beacon node based upon a genesis state created by `./setup.sh`. | ||
# | ||
# Usage: ./beacon_node.sh <DATADIR> <NETWORK-PORT> <HTTP-PORT> <OPTIONAL-DEBUG-LEVEL> | ||
|
||
source ./vars.env | ||
|
||
DEBUG_LEVEL=${4:-info} | ||
SUBSCRIBE_ALL_SUBNETS= | ||
DEBUG_LEVEL=${DEBUG_LEVEL:-info} | ||
|
||
# Get options | ||
while getopts "d:sh" flag; do | ||
case "${flag}" in | ||
d) DEBUG_LEVEL=${OPTARG};; | ||
s) SUBSCRIBE_ALL_SUBNETS="--subscribe-all-subnets";; | ||
h) | ||
echo "Start a beacon node" | ||
echo | ||
echo "usage: $0 <Options> <DATADIR> <NETWORK-PORT> <HTTP-PORT>" | ||
echo | ||
echo "Options:" | ||
echo " -s: pass --subscribe-all-subnets to 'lighthouse bn ...', default is not passed" | ||
echo " -d: DEBUG_LEVEL, default info" | ||
echo " -h: this help" | ||
echo | ||
echo "Positional arguments:" | ||
echo " DATADIR Value for --datadir parameter" | ||
echo " NETWORK-PORT Value for --enr-udp-port, --enr-tcp-port and --port" | ||
echo " HTTP-PORT Value for --http-port" | ||
exit | ||
;; | ||
esac | ||
done | ||
|
||
# Get positional arguments | ||
data_dir=${@:$OPTIND+0:1} | ||
network_port=${@:$OPTIND+1:1} | ||
http_port=${@:$OPTIND+2:1} | ||
|
||
exec lighthouse \ | ||
--debug-level $DEBUG_LEVEL \ | ||
bn \ | ||
--datadir $1 \ | ||
$SUBSCRIBE_ALL_SUBNETS \ | ||
--datadir $data_dir \ | ||
--testnet-dir $TESTNET_DIR \ | ||
--staking \ | ||
--enr-address 127.0.0.1 \ | ||
--enr-udp-port $2 \ | ||
--enr-tcp-port $2 \ | ||
--port $2 \ | ||
--http-port $3 \ | ||
--enr-udp-port $network_port \ | ||
--enr-tcp-port $network_port \ | ||
--port $network_port \ | ||
--http-port $http_port \ | ||
--disable-packet-filter \ | ||
--target-peers $((NODE_COUNT - 1)) | ||
--target-peers $((BN_COUNT - 1)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#!/usr/bin/env bash | ||
# Kill processes | ||
|
||
# First parameter is the file with | ||
# one pid per line. | ||
if [ -f "$1" ]; then | ||
while read pid | ||
do | ||
echo killing $pid | ||
kill $pid | ||
done < $1 | ||
fi | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
#!/usr/bin/env bash | ||
# Start all processes necessary to create a local testnet | ||
|
||
source ./vars.env | ||
|
||
# VC_COUNT is defaulted in vars.env | ||
DEBUG_LEVEL=${DEBUG_LEVEL:-info} | ||
|
||
# Get options | ||
while getopts "v:d:h" flag; do | ||
case "${flag}" in | ||
v) VC_COUNT=${OPTARG};; | ||
d) DEBUG_LEVEL=${OPTARG};; | ||
h) | ||
validators=$(( $VALIDATOR_COUNT / $BN_COUNT )) | ||
echo "Start local testnet, defaults: 1 eth1 node, $BN_COUNT beacon nodes," | ||
echo "and $VC_COUNT validator clients with each vc having $validators validators." | ||
echo | ||
echo "usage: $0 <Options>" | ||
echo | ||
echo "Options:" | ||
echo " -v: VC_COUNT default: $VC_COUNT" | ||
echo " -d: DEBUG_LEVEL default: info" | ||
echo " -h: this help" | ||
exit | ||
;; | ||
esac | ||
done | ||
|
||
if (( $VC_COUNT > $BN_COUNT )); then | ||
echo "Error $VC_COUNT is too large, must be <= BN_COUNT=$BN_COUNT" | ||
exit | ||
fi | ||
|
||
# Init some constants | ||
PID_FILE=$TESTNET_DIR/PIDS.pid | ||
LOG_DIR=$TESTNET_DIR | ||
|
||
# Stop local testnet and remove $PID_FILE | ||
./stop_local_testnet.sh | ||
|
||
# Clean $DATADIR and create empty log files so the | ||
# user can "tail -f" right after starting this script | ||
# even before its done. | ||
./clean.sh | ||
mkdir -p $LOG_DIR | ||
for (( bn=1; bn<=$BN_COUNT; bn++ )); do | ||
touch $LOG_DIR/beacon_node_$bn.log | ||
done | ||
for (( vc=1; vc<=$VC_COUNT; vc++ )); do | ||
touch $LOG_DIR/validator_node_$vc.log | ||
done | ||
|
||
# Sleep with a message | ||
sleeping() { | ||
echo sleeping $1 | ||
sleep $1 | ||
} | ||
|
||
# Execute the command with logs saved to a file. | ||
# | ||
# First parameter is log file name | ||
# Second parameter is executable name | ||
# Remaining parameters are passed to executable | ||
execute_command() { | ||
LOG_NAME=$1 | ||
EX_NAME=$2 | ||
shift | ||
shift | ||
CMD="$EX_NAME $@ &>> $LOG_DIR/$LOG_NAME" | ||
echo "executing: $CMD" | ||
echo "$CMD" > "$LOG_DIR/$LOG_NAME" | ||
eval "$CMD &" | ||
} | ||
|
||
# Execute the command with logs saved to a file | ||
# and is PID is saved to $PID_FILE. | ||
# | ||
# First parameter is log file name | ||
# Second parameter is executable name | ||
# Remaining parameters are passed to executable | ||
execute_command_add_PID() { | ||
execute_command $@ | ||
echo "$!" >> $PID_FILE | ||
} | ||
|
||
# Start ganache-cli, setup things up and start the bootnode. | ||
# The delays are necessary, hopefully there is a better way :( | ||
|
||
# Delay to let ganache-cli to get started | ||
execute_command_add_PID ganache_test_node.log ./ganache_test_node.sh | ||
sleeping 2 | ||
|
||
# Delay to get data setup | ||
execute_command setup.log ./setup.sh | ||
sleeping 15 | ||
|
||
# Delay to let boot_enr.yaml to be created | ||
execute_command_add_PID bootnode.log ./bootnode.sh | ||
sleeping 1 | ||
|
||
# Start beacon nodes | ||
BN_udp_tcp_base=9000 | ||
BN_http_port_base=8000 | ||
|
||
(( $VC_COUNT < $BN_COUNT )) && SAS=-s || SAS= | ||
|
||
for (( bn=1; bn<=$BN_COUNT; bn++ )); do | ||
execute_command_add_PID beacon_node_$bn.log ./beacon_node.sh $SAS -d $DEBUG_LEVEL $DATADIR/node_$bn $((BN_udp_tcp_base + $bn)) $((BN_http_port_base + $bn)) | ||
done | ||
|
||
# Start requested number of validator clients | ||
for (( vc=1; vc<=$VC_COUNT; vc++ )); do | ||
execute_command_add_PID validator_node_$vc.log ./validator_client.sh $DATADIR/node_$vc http://localhost:$((BN_http_port_base + $vc)) $DEBUG_LEVEL | ||
done | ||
|
||
echo "Started!" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
#!/usr/bin/env bash | ||
# Stop all processes that were started with start_local_testnet.sh | ||
|
||
source ./vars.env | ||
|
||
PID_FILE=$TESTNET_DIR/PIDS.pid | ||
./kill_processes.sh $PID_FILE | ||
rm -f $PID_FILE |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters