81 lines
2.3 KiB
Bash
81 lines
2.3 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
# See https://linuxconfig.org/how-to-propagate-a-signal-to-child-processes-from-a-bash-script
|
||
|
cleanup() {
|
||
|
echo "Signal received, cleaning up..."
|
||
|
kill $(jobs -p)
|
||
|
|
||
|
wait
|
||
|
echo "Done"
|
||
|
}
|
||
|
trap 'cleanup' SIGINT SIGTERM
|
||
|
|
||
|
if [ "true" == "$RUN_BOOTNODE" ]; then
|
||
|
cd /opt/testnet/build/cl
|
||
|
python3 -m http.server 3000 &
|
||
|
|
||
|
|
||
|
cd /opt/testnet/cl
|
||
|
./bootnode.sh 2>&1 | tee /var/log/lighthouse_bootnode.log &
|
||
|
bootnode_pid=$!
|
||
|
|
||
|
wait $bootnode_pid
|
||
|
else
|
||
|
while [ 1 -eq 1 ]; do
|
||
|
echo "Waiting on geth ..."
|
||
|
sleep 5
|
||
|
result=`wget --no-check-certificate --quiet \
|
||
|
-O - \
|
||
|
--method POST \
|
||
|
--timeout=0 \
|
||
|
--header 'Content-Type: application/json' \
|
||
|
--body-data '{ "jsonrpc": "2.0", "id": 1, "method": "eth_blockNumber", "params": [] }' "${ETH1_ENDPOINT:-localhost:8545}" | jq -r '.result'`
|
||
|
if [ ! -z "$result" ] && [ "null" != "$result" ]; then
|
||
|
break
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
cd /opt/testnet/cl
|
||
|
|
||
|
if [ -z "$LIGHTHOUSE_GENESIS_STATE_URL" ]; then
|
||
|
# Check if beacon node data exists to avoid resetting genesis time on a restart
|
||
|
if [ -d /opt/testnet/build/cl/node_"$NODE_NUMBER"/beacon ]; then
|
||
|
echo "Skipping genesis time reset"
|
||
|
else
|
||
|
./reset_genesis_time.sh
|
||
|
fi
|
||
|
else
|
||
|
while [ 1 -eq 1 ]; do
|
||
|
echo "Waiting on Genesis time ..."
|
||
|
sleep 5
|
||
|
result=`wget --no-check-certificate --quiet -O - --timeout=0 $LIGHTHOUSE_GENESIS_STATE_URL | jq -r '.data.genesis_time'`
|
||
|
if [ ! -z "$result" ]; then
|
||
|
./reset_genesis_time.sh $result
|
||
|
break;
|
||
|
fi
|
||
|
done
|
||
|
fi
|
||
|
|
||
|
if [ ! -z "$ENR_URL" ]; then
|
||
|
while [ 1 -eq 1 ]; do
|
||
|
echo "Waiting on ENR for boot node..."
|
||
|
sleep 5
|
||
|
result=`wget --no-check-certificate --quiet -O - --timeout=0 $ENR_URL`
|
||
|
if [ ! -z "$result" ]; then
|
||
|
export ENR="$result"
|
||
|
break;
|
||
|
fi
|
||
|
done
|
||
|
fi
|
||
|
|
||
|
export JWTSECRET="/opt/testnet/build/cl/jwtsecret"
|
||
|
echo -n "$JWT" > $JWTSECRET
|
||
|
|
||
|
./beacon_node.sh 2>&1 | tee /var/log/lighthouse_bn.log &
|
||
|
beacon_pid=$!
|
||
|
./validator_client.sh 2>&1 | tee /var/log/lighthouse_vc.log &
|
||
|
validator_pid=$!
|
||
|
|
||
|
wait $beacon_pid $validator_pid
|
||
|
fi
|