69 lines
1.9 KiB
Bash
69 lines
1.9 KiB
Bash
#!/bin/sh
|
|
set -exu
|
|
|
|
VERBOSITY=${GETH_VERBOSITY:-3}
|
|
GETH_DATA_DIR=/db
|
|
GETH_CHAINDATA_DIR="$GETH_DATA_DIR/geth/chaindata"
|
|
GETH_KEYSTORE_DIR="$GETH_DATA_DIR/keystore"
|
|
GENESIS_FILE_PATH="${GENESIS_FILE_PATH:-/genesis.json}"
|
|
CHAIN_ID=$(cat "$GENESIS_FILE_PATH" | jq -r .config.chainId)
|
|
BLOCK_SIGNER_PRIVATE_KEY="3e4bde571b86929bf08e2aaad9a6a1882664cd5e65b96fff7d03e1c4e6dfa15c"
|
|
BLOCK_SIGNER_ADDRESS="0xca062b0fd91172d89bcd4bb084ac4e21972cc467"
|
|
RPC_PORT="${RPC_PORT:-8545}"
|
|
WS_PORT="${WS_PORT:-8546}"
|
|
|
|
if [ ! -d "$GETH_KEYSTORE_DIR" ]; then
|
|
echo "$GETH_KEYSTORE_DIR missing, running account import"
|
|
echo -n "pwd" > "$GETH_DATA_DIR"/password
|
|
echo -n "$BLOCK_SIGNER_PRIVATE_KEY" | sed 's/0x//' > "$GETH_DATA_DIR"/block-signer-key
|
|
geth account import \
|
|
--datadir="$GETH_DATA_DIR" \
|
|
--password="$GETH_DATA_DIR"/password \
|
|
"$GETH_DATA_DIR"/block-signer-key
|
|
else
|
|
echo "$GETH_KEYSTORE_DIR exists."
|
|
fi
|
|
|
|
if [ ! -d "$GETH_CHAINDATA_DIR" ]; then
|
|
echo "$GETH_CHAINDATA_DIR missing, running init"
|
|
echo "Initializing genesis."
|
|
geth --verbosity="$VERBOSITY" init \
|
|
--datadir="$GETH_DATA_DIR" \
|
|
"$GENESIS_FILE_PATH"
|
|
else
|
|
echo "$GETH_CHAINDATA_DIR exists."
|
|
fi
|
|
|
|
# Warning: Archive mode is required, otherwise old trie nodes will be
|
|
# pruned within minutes of starting the devnet.
|
|
|
|
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,txpool,net,engine \
|
|
--ws \
|
|
--ws.addr=0.0.0.0 \
|
|
--ws.port="$WS_PORT" \
|
|
--ws.origins="*" \
|
|
--ws.api=debug,eth,txpool,net,engine \
|
|
--syncmode=full \
|
|
--nodiscover \
|
|
--maxpeers=1 \
|
|
--networkid=$CHAIN_ID \
|
|
--password="$GETH_DATA_DIR"/password \
|
|
--allow-insecure-unlock \
|
|
--authrpc.addr="0.0.0.0" \
|
|
--authrpc.port="8551" \
|
|
--authrpc.vhosts="*" \
|
|
--authrpc.jwtsecret=/config/jwt-secret.txt \
|
|
--gcmode=archive \
|
|
--metrics \
|
|
--metrics.addr=0.0.0.0 \
|
|
--metrics.port=6060 \
|
|
"$@"
|