From 7a37199e5c29bad18d9ae8a0b2b5cdbcf23d2fce Mon Sep 17 00:00:00 2001 From: Thomas E Lackey Date: Thu, 2 May 2024 17:09:39 -0500 Subject: [PATCH] Switch to geth v1.14 --- .../config/fixturenet-eth/fixturenet-eth.env | 5 +- .../Dockerfile | 28 -------- .../build.sh | 8 --- .../genesis/Makefile | 13 ---- .../genesis/accounts/import_keys.sh | 17 ----- .../genesis/accounts/mnemonic_to_csv.py | 16 ----- .../genesis/el/build_el.sh | 40 ----------- .../genesis/el/el-config.yaml | 31 -------- .../cerc-fixturenet-eth-geth/Dockerfile | 4 +- .../cerc-fixturenet-eth-geth/run-el.sh | 70 +++++++++++++++++-- .../cerc-fixturenet-eth-lighthouse/Dockerfile | 12 ++-- .../genesis/cl/beacon_node.sh | 1 - .../genesis/cl/bootnode.sh | 2 - .../genesis/cl/build_cl.sh | 20 ++---- .../genesis/cl/validator_client.sh | 2 - .../genesis/cl/vars.env | 7 +- .../cerc-lighthouse/Dockerfile | 9 +-- .../container-build/cerc-lighthouse/build.sh | 2 +- .../stacks/fixturenet-eth/stack.yml | 2 +- tests/fixturenet-eth-stack/run-test.sh | 6 +- 20 files changed, 98 insertions(+), 197 deletions(-) delete mode 100644 stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/Dockerfile delete mode 100755 stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/build.sh delete mode 100644 stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/genesis/Makefile delete mode 100755 stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/genesis/accounts/import_keys.sh delete mode 100644 stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/genesis/accounts/mnemonic_to_csv.py delete mode 100755 stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/genesis/el/build_el.sh delete mode 100644 stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/genesis/el/el-config.yaml diff --git a/stack-orchestrator/config/fixturenet-eth/fixturenet-eth.env b/stack-orchestrator/config/fixturenet-eth/fixturenet-eth.env index 2bf489a..695c8fa 100644 --- a/stack-orchestrator/config/fixturenet-eth/fixturenet-eth.env +++ b/stack-orchestrator/config/fixturenet-eth/fixturenet-eth.env @@ -22,4 +22,7 @@ CERC_STATEDIFF_DB_LOG_STATEMENTS="${CERC_STATEDIFF_DB_LOG_STATEMENTS:-false}" CERC_STATEDIFF_WORKERS=2 CERC_GETH_VMODULE="statediff/*=5,rpc/*=5" -CERC_GETH_VERBOSITY=${CERC_GETH_VERBOSITY:-3} \ No newline at end of file +CERC_GETH_VERBOSITY=${CERC_GETH_VERBOSITY:-3} + +# Used by Lighthouse +SECONDS_PER_ETH1_BLOCK=${SECONDS_PER_ETH1_BLOCK:-3} diff --git a/stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/Dockerfile b/stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/Dockerfile deleted file mode 100644 index 4fa8d0f..0000000 --- a/stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/Dockerfile +++ /dev/null @@ -1,28 +0,0 @@ -FROM skylenet/ethereum-genesis-generator@sha256:210353ce7c898686bc5092f16c61220a76d357f51eff9c451e9ad1b9ad03d4d3 AS ethgen - -FROM golang:1.20-alpine as builder - -RUN apk add --no-cache python3 py3-pip - -COPY genesis /opt/genesis - -# Install ethereum-genesis-generator tools -COPY --from=ethgen /usr/local/bin/eth2-testnet-genesis /usr/local/bin/ -COPY --from=ethgen /usr/local/bin/eth2-val-tools /usr/local/bin/ -COPY --from=ethgen /apps /apps -RUN cd /apps/el-gen && pip3 install --break-system-packages -r requirements.txt -# web3==5.24.0 used by el-gen is broken on python 3.11 -RUN pip3 install --break-system-packages --upgrade "web3==6.5.0" -RUN pip3 install --break-system-packages --upgrade "typing-extensions" - -# Build genesis config -RUN apk add --no-cache make bash envsubst jq -RUN cd /opt/genesis && make genesis-el - -# Snag the genesis block info. -RUN go install github.com/cerc-io/eth-dump-genblock@latest -RUN eth-dump-genblock /opt/genesis/build/el/geth.json > /opt/genesis/build/el/genesis_block.json - -FROM alpine:latest - -COPY --from=builder /opt/genesis /opt/genesis diff --git a/stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/build.sh b/stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/build.sh deleted file mode 100755 index dac3676..0000000 --- a/stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash -# Build cerc/fixturenet-eth-genesis-premerge - -source ${CERC_CONTAINER_BASE_DIR}/build-base.sh - -SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) - -docker build -t cerc/fixturenet-eth-genesis-premerge:local -f ${SCRIPT_DIR}/Dockerfile ${build_command_args} $SCRIPT_DIR diff --git a/stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/genesis/Makefile b/stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/genesis/Makefile deleted file mode 100644 index a1eef57..0000000 --- a/stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/genesis/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -.PHONY: build -build: genesis - -.PHONY: genesis -genesis: genesis-el - -.PHONY: genesis-el -genesis-el: - cd el; ./build_el.sh - -.PHONY: clean -clean: - rm -rf build diff --git a/stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/genesis/accounts/import_keys.sh b/stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/genesis/accounts/import_keys.sh deleted file mode 100755 index e8dce0e..0000000 --- a/stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/genesis/accounts/import_keys.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -ACCOUNT_PASSWORD=${ACCOUNT_PASSWORD:-secret1212} - -for line in `cat ../build/el/accounts.csv`; do - BIP44_PATH="`echo "$line" | cut -d',' -f1`" - ADDRESS="`echo "$line" | cut -d',' -f2`" - PRIVATE_KEY="`echo "$line" | cut -d',' -f3`" - - echo "$ACCOUNT_PASSWORD" > .pw.$$ - echo "$PRIVATE_KEY" | sed 's/0x//' > .key.$$ - - echo "" - echo "$ADDRESS" - geth account import --datadir=~/ethdata --password .pw.$$ .key.$$ - rm -f .pw.$$ .key.$$ -done diff --git a/stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/genesis/accounts/mnemonic_to_csv.py b/stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/genesis/accounts/mnemonic_to_csv.py deleted file mode 100644 index 1e6d10f..0000000 --- a/stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/genesis/accounts/mnemonic_to_csv.py +++ /dev/null @@ -1,16 +0,0 @@ -from web3.auto import w3 -import ruamel.yaml as yaml -import sys - -w3.eth.account.enable_unaudited_hdwallet_features() - -testnet_config_path = "genesis-config.yaml" -if len(sys.argv) > 1: - testnet_config_path = sys.argv[1] - -with open(testnet_config_path) as stream: - data = yaml.safe_load(stream) - -for key, value in data['el_premine'].items(): - acct = w3.eth.account.from_mnemonic(data['mnemonic'], account_path=key, passphrase='') - print("%s,%s,%s" % (key, acct.address, acct.key.hex())) diff --git a/stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/genesis/el/build_el.sh b/stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/genesis/el/build_el.sh deleted file mode 100755 index 9ff77fa..0000000 --- a/stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/genesis/el/build_el.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env bash -set -e - -# See: https://github.com/skylenet/ethereum-genesis-generator/blob/master/entrypoint.sh - -rm -rf ../build/el -mkdir -p ../build/el - -tmp_dir=$(mktemp -d -t ci-XXXXXXXXXX) -envsubst < el-config.yaml > $tmp_dir/genesis-config.yaml - -ttd=`cat $tmp_dir/genesis-config.yaml | grep terminal_total_difficulty | awk '{ print $2 }'` -homestead_block=`cat $tmp_dir/genesis-config.yaml | grep homestead_block | awk '{ print $2 }'` -eip150_block=`cat $tmp_dir/genesis-config.yaml | grep eip150_block | awk '{ print $2 }'` -eip155_block=`cat $tmp_dir/genesis-config.yaml | grep eip155_block | awk '{ print $2 }'` -eip158_block=`cat $tmp_dir/genesis-config.yaml | grep eip158_block | awk '{ print $2 }'` -byzantium_block=`cat $tmp_dir/genesis-config.yaml | grep byzantium_block | awk '{ print $2 }'` -constantinople_block=`cat $tmp_dir/genesis-config.yaml | grep constantinople_block | awk '{ print $2 }'` -petersburg_block=`cat $tmp_dir/genesis-config.yaml | grep petersburg_block | awk '{ print $2 }'` -istanbul_block=`cat $tmp_dir/genesis-config.yaml | grep istanbul_block | awk '{ print $2 }'` -berlin_block=`cat $tmp_dir/genesis-config.yaml | grep berlin_block | awk '{ print $2 }'` -london_block=`cat $tmp_dir/genesis-config.yaml | grep london_block | awk '{ print $2 }'` -merge_fork_block=`cat $tmp_dir/genesis-config.yaml | grep merge_fork_block | awk '{ print $2 }'` - -python3 /apps/el-gen/genesis_geth.py $tmp_dir/genesis-config.yaml | \ - jq ".config.terminalTotalDifficulty=$ttd" | \ - jq ".config.homesteadBlock=$homestead_block" | \ - jq ".config.eip150Block=$eip150_block" | \ - jq ".config.eip155Block=$eip155_block" | \ - jq ".config.eip158Block=$eip158_block" | \ - jq ".config.byzantiumBlock=$byzantium_block" | \ - jq ".config.constantinopleBlock=$constantinople_block" | \ - jq ".config.petersburgBlock=$petersburg_block" | \ - jq ".config.istanbulBlock=$istanbul_block" | \ - jq ".config.berlinBlock=$berlin_block" | \ - jq ".config.londonBlock=$london_block" | \ - jq ".config.mergeForkBlock=$merge_fork_block" | \ - jq ".config.mergeNetsplitBlock=$merge_fork_block" \ - > ../build/el/geth.json -python3 ../accounts/mnemonic_to_csv.py $tmp_dir/genesis-config.yaml > ../build/el/accounts.csv diff --git a/stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/genesis/el/el-config.yaml b/stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/genesis/el/el-config.yaml deleted file mode 100644 index 8bcb0fa..0000000 --- a/stack-orchestrator/container-build/cerc-fixturenet-eth-genesis-premerge/genesis/el/el-config.yaml +++ /dev/null @@ -1,31 +0,0 @@ -mnemonic: "viable ketchup woman library opinion copy rhythm attend rose knock penalty practice photo bundle budget dentist enter round bind holiday useful arch danger lobster" -el_premine: - "m/44'/60'/0'/0/0": 10000000ETH - "m/44'/60'/0'/0/1": 10000000ETH - "m/44'/60'/0'/0/2": 10000000ETH - "m/44'/60'/0'/0/3": 10000000ETH - "m/44'/60'/0'/0/4": 10000000ETH - "m/44'/60'/0'/0/5": 10000000ETH -el_premine_addrs: {} -chain_id: 1212 -deposit_contract_address: "0x1212121212121212121212121212121212121212" -genesis_timestamp: 0 -terminal_total_difficulty: 1000 -homestead_block: 1 -eip150_block: 1 -eip155_block: 1 -eip158_block: 1 -byzantium_block: 1 -constantinople_block: 1 -petersburg_block: 1 -istanbul_block: 1 -berlin_block: 1 -london_block: 1 -merge_fork_block: 1 - -clique: - enabled: false - signers: - - 36d56343bc308d4ffaac2f793d121aba905fa6cc - - 5e762d4a3847cadaf40a4b0c39574b0ff6698c78 - - 15d7acc1019fdf8ab4f0f7bd31ec1487ecb5a2bd diff --git a/stack-orchestrator/container-build/cerc-fixturenet-eth-geth/Dockerfile b/stack-orchestrator/container-build/cerc-fixturenet-eth-geth/Dockerfile index e904686..3afb524 100644 --- a/stack-orchestrator/container-build/cerc-fixturenet-eth-geth/Dockerfile +++ b/stack-orchestrator/container-build/cerc-fixturenet-eth-geth/Dockerfile @@ -1,5 +1,5 @@ -FROM cerc/fixturenet-eth-genesis-premerge:local as fnetgen -FROM ethereum/client-go:release-1.11 as geth +FROM cerc/fixturenet-eth-genesis-postmerge:local as fnetgen +FROM ethereum/client-go:release-1.14 as geth # Using the same golang image as used to build geth: https://github.com/cerc-io/go-ethereum/blob/HEAD/Dockerfile FROM golang:1.21-alpine as delve diff --git a/stack-orchestrator/container-build/cerc-fixturenet-eth-geth/run-el.sh b/stack-orchestrator/container-build/cerc-fixturenet-eth-geth/run-el.sh index be35c8b..f84befd 100755 --- a/stack-orchestrator/container-build/cerc-fixturenet-eth-geth/run-el.sh +++ b/stack-orchestrator/container-build/cerc-fixturenet-eth-geth/run-el.sh @@ -6,7 +6,7 @@ fi ETHERBASE=`cat /opt/testnet/build/el/accounts.csv | head -1 | cut -d',' -f2` NETWORK_ID=`cat /opt/testnet/el/el-config.yaml | grep 'chain_id' | awk '{ print $2 }'` -NETRESTRICT=`ip addr | grep 'inet ' | grep -v '127.0' | head -1 | awk '{print $2}'` +NETRESTRICT=`ip addr | grep -w inet | grep -v '127.0' | awk '{print $2}'` CERC_ETH_DATADIR="${CERC_ETH_DATADIR:-$HOME/ethdata}" CERC_PLUGINS_DIR="${CERC_PLUGINS_DIR:-/usr/local/lib/plugeth}" @@ -50,6 +50,65 @@ else echo -n "$JWT" > /opt/testnet/build/el/jwtsecret + if [ "$CERC_RUN_STATEDIFF" == "detect" ] && [ -n "$CERC_STATEDIFF_DB_HOST" ]; then + dig_result=$(dig $CERC_STATEDIFF_DB_HOST +short) + dig_status_code=$? + if [[ $dig_status_code = 0 && -n $dig_result ]]; then + echo "Statediff DB at $CERC_STATEDIFF_DB_HOST" + CERC_RUN_STATEDIFF="true" + else + echo "No statediff DB available." + CERC_RUN_STATEDIFF="false" + fi + fi + + STATEDIFF_OPTS="" + if [ "$CERC_RUN_STATEDIFF" == "true" ]; then + ready=0 + echo "Waiting for statediff DB..." + while [ $ready -eq 0 ]; do + sleep 1 + export PGPASSWORD="$CERC_STATEDIFF_DB_PASSWORD" + result=$(psql -h "$CERC_STATEDIFF_DB_HOST" \ + -p "$CERC_STATEDIFF_DB_PORT" \ + -U "$CERC_STATEDIFF_DB_USER" \ + -d "$CERC_STATEDIFF_DB_NAME" \ + -t -c 'select max(version_id) from goose_db_version;' 2>/dev/null | awk '{ print $1 }') + if [ -n "$result" ]; then + echo "DB ready..." + if [ $result -ge $CERC_STATEDIFF_DB_GOOSE_MIN_VER ]; then + ready=1 + else + echo "DB not at required version (want $CERC_STATEDIFF_DB_GOOSE_MIN_VER, have $result)" + fi + fi + done + STATEDIFF_OPTS="--statediff \ + --statediff.db.host=$CERC_STATEDIFF_DB_HOST \ + --statediff.db.name=$CERC_STATEDIFF_DB_NAME \ + --statediff.db.nodeid=$CERC_STATEDIFF_DB_NODE_ID \ + --statediff.db.password=$CERC_STATEDIFF_DB_PASSWORD \ + --statediff.db.port=$CERC_STATEDIFF_DB_PORT \ + --statediff.db.user=$CERC_STATEDIFF_DB_USER \ + --statediff.db.logstatements=${CERC_STATEDIFF_DB_LOG_STATEMENTS:-false} \ + --statediff.db.copyfrom=${CERC_STATEDIFF_DB_COPY_FROM:-true} \ + --statediff.waitforsync=true \ + --statediff.workers=${CERC_STATEDIFF_WORKERS:-1} \ + --statediff.writing=true" + + if [ -d "${CERC_PLUGINS_DIR}" ]; then + # With plugeth, we separate the statediff options by prefixing with ' -- ' + STATEDIFF_OPTS="--pluginsdir "${CERC_PLUGINS_DIR}" -- ${STATEDIFF_OPTS}" + fi + fi + + OTHER_OPTS="" + # miner options were removed in v1.12 + GETH_VERSION=$(geth --version | grep -io '[0-9][0-9a-z.-]*') + if echo -e "$GETH_VERSION\n1.12" | sort -Vc; then + OTHER_OPTS="--miner.threads=1" + fi + $START_CMD \ --datadir="${CERC_ETH_DATADIR}" \ --bootnodes="${ENODE}" \ @@ -57,7 +116,7 @@ else --http \ --http.addr="0.0.0.0" \ --http.vhosts="*" \ - --http.api="${CERC_GETH_HTTP_APIS:-eth,web3,net,admin,personal,debug}" \ + --http.api="${CERC_GETH_HTTP_APIS:-eth,web3,net,admin,personal,debug,statediff}" \ --http.corsdomain="*" \ --authrpc.addr="0.0.0.0" \ --authrpc.vhosts="*" \ @@ -65,7 +124,7 @@ else --ws \ --ws.addr="0.0.0.0" \ --ws.origins="*" \ - --ws.api="${CERC_GETH_WS_APIS:-eth,web3,net,admin,personal,debug}" \ + --ws.api="${CERC_GETH_WS_APIS:-eth,web3,net,admin,personal,debug,statediff}" \ --http.corsdomain="*" \ --networkid="${NETWORK_ID}" \ --netrestrict="${NETRESTRICT}" \ @@ -74,12 +133,13 @@ else --cache.preimages \ --syncmode=full \ --mine \ - --miner.threads=1 \ --metrics \ --metrics.addr="0.0.0.0" \ --verbosity=${CERC_GETH_VERBOSITY:-3} \ - --log.vmodule="${CERC_GETH_VMODULE}" \ + --log.vmodule="${CERC_GETH_VMODULE:-statediff/*=5}" \ --miner.etherbase="${ETHERBASE}" \ + ${OTHER_OPTS} \ + ${STATEDIFF_OPTS} \ & geth_pid=$! diff --git a/stack-orchestrator/container-build/cerc-fixturenet-eth-lighthouse/Dockerfile b/stack-orchestrator/container-build/cerc-fixturenet-eth-lighthouse/Dockerfile index 090c49f..3e91363 100644 --- a/stack-orchestrator/container-build/cerc-fixturenet-eth-lighthouse/Dockerfile +++ b/stack-orchestrator/container-build/cerc-fixturenet-eth-lighthouse/Dockerfile @@ -1,6 +1,5 @@ FROM cerc/lighthouse-cli:local AS lcli -FROM skylenet/ethereum-genesis-generator@sha256:210353ce7c898686bc5092f16c61220a76d357f51eff9c451e9ad1b9ad03d4d3 AS ethgen -FROM cerc/fixturenet-eth-genesis-premerge:local AS fnetgen +FROM cerc/fixturenet-eth-genesis-postmerge:local AS fnetgen FROM cerc/lighthouse:local @@ -12,16 +11,13 @@ RUN apt-get update && apt-get -y upgrade && apt-get install -y --no-install-reco && apt-get clean \ && rm -rf /var/lib/apt/lists/* -COPY genesis /opt/testnet -COPY run-cl.sh /opt/testnet/run.sh - COPY --from=lcli /usr/local/bin/lcli /usr/local/bin/lcli -COPY --from=ethgen /usr/local/bin/eth2-testnet-genesis /usr/local/bin/eth2-testnet-genesis -COPY --from=ethgen /usr/local/bin/eth2-val-tools /usr/local/bin/eth2-val-tools -COPY --from=ethgen /apps /apps COPY --from=fnetgen /opt/genesis/el /opt/testnet/el COPY --from=fnetgen /opt/genesis/build/el /opt/testnet/build/el +COPY genesis /opt/testnet +COPY run-cl.sh /opt/testnet/run.sh + RUN cd /opt/testnet && make genesis-cl # Work around some bugs in lcli where the default path is always used. diff --git a/stack-orchestrator/container-build/cerc-fixturenet-eth-lighthouse/genesis/cl/beacon_node.sh b/stack-orchestrator/container-build/cerc-fixturenet-eth-lighthouse/genesis/cl/beacon_node.sh index 1f90615..7e92f49 100755 --- a/stack-orchestrator/container-build/cerc-fixturenet-eth-lighthouse/genesis/cl/beacon_node.sh +++ b/stack-orchestrator/container-build/cerc-fixturenet-eth-lighthouse/genesis/cl/beacon_node.sh @@ -10,7 +10,6 @@ set -Eeuo pipefail source ./vars.env SUBSCRIBE_ALL_SUBNETS= -DEBUG_LEVEL=${DEBUG_LEVEL:-debug} # Get positional arguments data_dir=$DATADIR/node_${NODE_NUMBER} diff --git a/stack-orchestrator/container-build/cerc-fixturenet-eth-lighthouse/genesis/cl/bootnode.sh b/stack-orchestrator/container-build/cerc-fixturenet-eth-lighthouse/genesis/cl/bootnode.sh index bda3b78..15aee6e 100755 --- a/stack-orchestrator/container-build/cerc-fixturenet-eth-lighthouse/genesis/cl/bootnode.sh +++ b/stack-orchestrator/container-build/cerc-fixturenet-eth-lighthouse/genesis/cl/bootnode.sh @@ -9,8 +9,6 @@ set -Eeuo pipefail source ./vars.env -DEBUG_LEVEL=${1:-info} - echo "Starting bootnode" # Clean up existing ENR dir to avoid node connectivity issues on a restart diff --git a/stack-orchestrator/container-build/cerc-fixturenet-eth-lighthouse/genesis/cl/build_cl.sh b/stack-orchestrator/container-build/cerc-fixturenet-eth-lighthouse/genesis/cl/build_cl.sh index 50b3e4e..5157b38 100755 --- a/stack-orchestrator/container-build/cerc-fixturenet-eth-lighthouse/genesis/cl/build_cl.sh +++ b/stack-orchestrator/container-build/cerc-fixturenet-eth-lighthouse/genesis/cl/build_cl.sh @@ -1,5 +1,6 @@ #!/usr/bin/env bash +# See https://github.com/sigp/lighthouse/scripts/local_testnet/setup.sh # # Deploys the deposit contract and makes deposits for $VALIDATOR_COUNT insecure deterministic validators. # Produces a testnet specification and a genesis state where the genesis time @@ -24,23 +25,26 @@ echo "(Note: errors of the form 'WARN: Scrypt parameters are too weak...' below lcli \ new-testnet \ --spec $SPEC_PRESET \ - --deposit-contract-address $ETH1_DEPOSIT_CONTRACT_ADDRESS \ --testnet-dir $TESTNET_DIR \ + --deposit-contract-address $ETH1_DEPOSIT_CONTRACT_ADDRESS \ --min-genesis-active-validator-count $GENESIS_VALIDATOR_COUNT \ --validator-count $VALIDATOR_COUNT \ --min-genesis-time $GENESIS_TIME \ --genesis-delay $GENESIS_DELAY \ --genesis-fork-version $GENESIS_FORK_VERSION \ --altair-fork-epoch $ALTAIR_FORK_EPOCH \ - --bellatrix-fork-epoch $MERGE_FORK_EPOCH \ + --bellatrix-fork-epoch $BELLATRIX_FORK_EPOCH \ + --capella-fork-epoch $CAPELLA_FORK_EPOCH \ + --deneb-fork-epoch $DENEB_FORK_EPOCH \ --eth1-id $ETH1_CHAIN_ID \ --eth1-block-hash $ETH1_BLOCK_HASH \ --eth1-follow-distance 1 \ --seconds-per-slot $SECONDS_PER_SLOT \ --seconds-per-eth1-block $SECONDS_PER_ETH1_BLOCK \ + --interop-genesis-state \ --force -echo Specification generated at $TESTNET_DIR. +echo Specification and genesis.ssz generated at $TESTNET_DIR. echo "Generating $VALIDATOR_COUNT validators concurrently... (this may take a while)" lcli \ @@ -50,13 +54,3 @@ lcli \ --node-count $BN_COUNT echo Validators generated with keystore passwords at $DATADIR. -echo "Building genesis state... (this might take a while)" - -lcli \ - interop-genesis \ - --spec $SPEC_PRESET \ - --genesis-time $GENESIS_TIME \ - --testnet-dir $TESTNET_DIR \ - $GENESIS_VALIDATOR_COUNT - -echo Created genesis state in $TESTNET_DIR diff --git a/stack-orchestrator/container-build/cerc-fixturenet-eth-lighthouse/genesis/cl/validator_client.sh b/stack-orchestrator/container-build/cerc-fixturenet-eth-lighthouse/genesis/cl/validator_client.sh index 30168f8..2c65e74 100755 --- a/stack-orchestrator/container-build/cerc-fixturenet-eth-lighthouse/genesis/cl/validator_client.sh +++ b/stack-orchestrator/container-build/cerc-fixturenet-eth-lighthouse/genesis/cl/validator_client.sh @@ -8,8 +8,6 @@ set -Eeuo pipefail source ./vars.env -DEBUG_LEVEL=info - BUILDER_PROPOSALS= # Get options diff --git a/stack-orchestrator/container-build/cerc-fixturenet-eth-lighthouse/genesis/cl/vars.env b/stack-orchestrator/container-build/cerc-fixturenet-eth-lighthouse/genesis/cl/vars.env index 081f8f7..83780b2 100644 --- a/stack-orchestrator/container-build/cerc-fixturenet-eth-lighthouse/genesis/cl/vars.env +++ b/stack-orchestrator/container-build/cerc-fixturenet-eth-lighthouse/genesis/cl/vars.env @@ -25,7 +25,9 @@ BOOTNODE_PORT=${BOOTNODE_PORT:-4242} # Hard fork configuration ALTAIR_FORK_EPOCH=${ALTAIR_FORK_EPOCH:-0} -MERGE_FORK_EPOCH=${MERGE_FORK_EPOCH:-0} +BELLATRIX_FORK_EPOCH=${BELLATRIX_FORK_EPOCH:-0} +CAPELLA_FORK_EPOCH=${CAPELLA_FORK_EPOCH:-0} +DENEB_FORK_EPOCH=${DENEB_FORK_EPOCH:-0} # Spec version (mainnet or minimal) SPEC_PRESET=${SPEC_PRESET:-mainnet} @@ -51,3 +53,6 @@ ETH1_TTD=${ETH1_TTD:-`cat $ETH1_GENESIS_JSON | jq -r '.config.terminalTotalDiffi ETH1_DEPOSIT_CONTRACT_ADDRESS=${ETH1_DEPOSIT_CONTRACT_ADDRESS:-`cat $ETH1_CONFIG_YAML | grep 'deposit_contract_address' | awk '{ print $2 }' | sed 's/"//g'`} ETH1_DEPOSIT_CONTRACT_BLOCK=${ETH1_DEPOSIT_CONTRACT_BLOCK:-0x0} SUGGESTED_FEE_RECIPIENT=`cat ../build/el/accounts.csv | head -1 | cut -d',' -f2` + +# --debug-level +DEBUG_LEVEL=${LIGHTHOUSE_DEBUG_LEVEL:-debug} diff --git a/stack-orchestrator/container-build/cerc-lighthouse/Dockerfile b/stack-orchestrator/container-build/cerc-lighthouse/Dockerfile index a5559f6..de32150 100644 --- a/stack-orchestrator/container-build/cerc-lighthouse/Dockerfile +++ b/stack-orchestrator/container-build/cerc-lighthouse/Dockerfile @@ -1,9 +1,10 @@ -ARG TAG_SUFFIX="-modern" -FROM sigp/lighthouse:v4.3.0${TAG_SUFFIX} +FROM sigp/lighthouse:v5.1.2 -RUN apt-get update; apt-get install bash netcat curl less jq wget -y; +RUN apt-get update && apt-get -y upgrade \ + && apt-get -y install bash netcat curl less jq wget \ + && apt-get clean && rm -rf /var/lib/apt/lists/* -WORKDIR /root/ +WORKDIR /root ADD start-lighthouse.sh . ENTRYPOINT [ "./start-lighthouse.sh" ] diff --git a/stack-orchestrator/container-build/cerc-lighthouse/build.sh b/stack-orchestrator/container-build/cerc-lighthouse/build.sh index cdc9561..2e9cfe3 100755 --- a/stack-orchestrator/container-build/cerc-lighthouse/build.sh +++ b/stack-orchestrator/container-build/cerc-lighthouse/build.sh @@ -6,4 +6,4 @@ source ${CERC_CONTAINER_BASE_DIR}/build-base.sh # See: https://stackoverflow.com/a/246128/1701505 SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -docker build -t cerc/lighthouse:local ${build_command_args} --build-arg TAG_SUFFIX="" ${SCRIPT_DIR} +docker build -t cerc/lighthouse:local ${build_command_args} ${SCRIPT_DIR} diff --git a/stack-orchestrator/stacks/fixturenet-eth/stack.yml b/stack-orchestrator/stacks/fixturenet-eth/stack.yml index e26b3b9..d36a6c9 100644 --- a/stack-orchestrator/stacks/fixturenet-eth/stack.yml +++ b/stack-orchestrator/stacks/fixturenet-eth/stack.yml @@ -6,7 +6,7 @@ repos: containers: - cerc/lighthouse - cerc/lighthouse-cli - - cerc/fixturenet-eth-genesis-premerge + - cerc/fixturenet-eth-genesis-postmerge - cerc/fixturenet-eth-geth - cerc/fixturenet-eth-lighthouse pods: diff --git a/tests/fixturenet-eth-stack/run-test.sh b/tests/fixturenet-eth-stack/run-test.sh index 99ac163..9db9d3f 100755 --- a/tests/fixturenet-eth-stack/run-test.sh +++ b/tests/fixturenet-eth-stack/run-test.sh @@ -69,7 +69,7 @@ initial_block_number=0 while [ "$initial_block_number" -eq 0 ] && [ $elapsed_time -lt $timeout ]; do sleep 10 log_info "Waiting for initial block..." - initial_block_number=$($SO_COMMAND deployment --dir $test_deployment_dir exec foundry "cast block-number") + initial_block_number=$($SO_COMMAND --stack fixturenet-eth deploy exec foundry "cast block-number") current_time=$(date +%s) elapsed_time=$((current_time - start_time)) done @@ -86,7 +86,7 @@ if [[ $initial_block_number -gt 0 ]]; then while [ "$subsequent_block_number" -le $((initial_block_number + 5)) ] && [ $elapsed_time -lt $timeout ]; do sleep 10 log_info "Waiting for five blocks or $timeout seconds..." - subsequent_block_number=$($SO_COMMAND deployment --dir $test_deployment_dir exec foundry "cast block-number") + subsequent_block_number=$($SO_COMMAND --stack fixturenet-eth deploy exec foundry "cast block-number") current_time=$(date +%s) elapsed_time=$((current_time - start_time)) done @@ -106,7 +106,7 @@ if [[ $block_number_difference -gt 1 && $block_number_difference -lt 100 ]]; the else echo "Test failed: block numbers were ${initial_block_number} and ${subsequent_block_number}" echo "Logs from stack:" - $SO_COMMAND deployment --dir $test_deployment_dir logs + $SO_COMMAND --stack fixturenet-eth deploy logs test_result=1 fi $SO_COMMAND deployment --dir $test_deployment_dir stop --delete-volumes