#!/bin/bash set -eu VERBOSITY=${GETH_VERBOSITY:-3} GETH_DATA_DIR=/data RPC_PORT="${RPC_PORT:-8545}" WS_PORT="${WS_PORT:-8546}" AUTHRPC_PORT="${AUTHRPC_PORT:-8551}" METRICS_PORT="${METRICS_PORT:-6060}" HOST_IP="0.0.0.0" P2P_PORT="${P2P_PORT:-30303}" ADDITIONAL_ARGS="" OP_GETH_GCMODE="${OP_GETH_GCMODE:-archive}" if [[ -z "$OP_NODE_NETWORK" ]]; then echo "expected OP_NODE_NETWORK to be set" 1>&2 exit 1 fi mkdir -p $GETH_DATA_DIR echo "$OP_NODE_L2_ENGINE_AUTH_RAW" > "$OP_NODE_L2_ENGINE_AUTH" if [ "${OP_GETH_ETH_STATS+x}" = x ]; then ADDITIONAL_ARGS="$ADDITIONAL_ARGS --ethstats=$OP_GETH_ETH_STATS" fi if [ "${OP_GETH_ALLOW_UNPROTECTED_TXS+x}" = x ]; then ADDITIONAL_ARGS="$ADDITIONAL_ARGS --rpc.allow-unprotected-txs=$OP_GETH_ALLOW_UNPROTECTED_TXS" fi if [ "${OP_GETH_STATE_SCHEME+x}" = x ]; then ADDITIONAL_ARGS="$ADDITIONAL_ARGS --state.scheme=$OP_GETH_STATE_SCHEME" fi exec ./geth \ --datadir="$GETH_DATA_DIR" \ --verbosity="$VERBOSITY" \ --http \ --http.corsdomain="*" \ --http.vhosts="*" \ --http.addr=0.0.0.0 \ --http.port="$RPC_PORT" \ --http.api=web3,debug,eth,net,engine \ --authrpc.addr=0.0.0.0 \ --authrpc.port="$AUTHRPC_PORT" \ --authrpc.vhosts="*" \ --authrpc.jwtsecret="$OP_NODE_L2_ENGINE_AUTH" \ --ws \ --ws.addr=0.0.0.0 \ --ws.port="$WS_PORT" \ --ws.origins="*" \ --ws.api=debug,eth,net,engine \ --metrics \ --metrics.addr=0.0.0.0 \ --metrics.port="$METRICS_PORT" \ --syncmode=full \ --gcmode="$OP_GETH_GCMODE" \ --nodiscover \ --maxpeers=100 \ --nat=extip:$HOST_IP \ --rollup.sequencerhttp="$OP_GETH_SEQUENCER_HTTP" \ --rollup.halt=major \ --op-network="$OP_NODE_NETWORK" \ --port="$P2P_PORT" \ $ADDITIONAL_ARGS # intentionally unquoted