#!/usr/bin/env bash
set -euo pipefail

: "${RETH_BIN:?missing RETH_BIN}"
: "${RETH_CHAIN:?missing RETH_CHAIN}"
: "${RETH_DATADIR:?missing RETH_DATADIR}"
: "${SIGNER_KEY:?missing SIGNER_KEY}"

JWT="$RETH_DATADIR/jwt.hex"
[ -f "$JWT" ] || { echo "missing JWT at $JWT" >&2; exit 2; }

exec "$RETH_BIN" node \
  --chain "$RETH_CHAIN" \
  --datadir "$RETH_DATADIR" \
  --http --http.addr "$RETH_HTTP_ADDR" --http.port "$RETH_RPC_PORT" --http.api all \
  --ws --ws.addr "$RETH_WS_ADDR" --ws.port "$RETH_WS_PORT" --ws.api all \
  --authrpc.addr "$RETH_AUTH_ADDR" --authrpc.port "$RETH_AUTH_RPC_PORT" \
  --authrpc.jwtsecret "$JWT" \
  --ipcpath "$RETH_DATADIR/reth.ipc" \
  --port "$RETH_DISCOVERY_PORT" --discovery.port "$RETH_DISCOVERY_PORT" \
  --metrics "$RETH_METRICS_ADDR:$RETH_METRICS_PORT" \
  --engine.persistence-threshold "$RETH_PERSISTENCE_THRESHOLD" \
  --engine.persistence-backpressure-threshold "$RETH_PERSISTENCE_BACKPRESSURE_THRESHOLD" \
  --engine.memory-block-buffer-target "$RETH_MEMORY_BLOCK_BUFFER_TARGET" \
  --telos.telos_endpoint "$TELOS_ENDPOINT" \
  --telos.signer_account "$SIGNER_ACCOUNT" \
  --telos.signer_permission "$SIGNER_PERMISSION" \
  --telos.signer_key "$SIGNER_KEY" \
  --telos.trust_consensus true \
  --telos.build_state
