GOAT Network
Sequencers

Running a Sequencer Node

In this guide, “sequencer node” and “validator” refer to the same operational role from different perspectives.

Ensure the host has persistent volumes for /data/goat and /data/geth, or update your compose file to match your preferred paths.

System Requirements

AreaRequirement
CPUEquivalent to c5.2xlarge or better
Storage40 GiB root disk plus a 100 GiB gp3 volume mounted to /data
OSLinux, such as Ubuntu LTS
ToolingDocker, Docker Compose, and cast

Open Ports

PortProtocolSource
30303UDP0.0.0.0/0
30303TCP0.0.0.0/0
26656TCP0.0.0.0/0

Deployment

Fetch the compose file

Retrieve the correct docker-compose.yml from the GOAT Network release repository for your target network.

Start the services

Start sequencer services
docker compose up -d

Verify sync

Check node sync
docker compose exec goat goatd status | jq

Wait until "catching_up": false.

Back up /data/goat/config/priv_validator_key.json before continuing. Losing this key can block node recovery.

Validator Registration

Generate the creation proof

Generate validator creation proof
GOAT_VALIDATOR_OWNER=0xYOUR_OWNER_ADDRESS
GOAT_GETH_CHAIN_ID=$(docker compose exec geth geth attach --exec 'Number(eth.chainId())')
docker compose exec goat goatd modgen locking sign \
  --owner "$GOAT_VALIDATOR_OWNER" \
  --eth-chain-id "$GOAT_GETH_CHAIN_ID"

Review the generated values

The output includes the validator address, owner address, public key, and signature required for registration.

Confirm the minimum locking threshold

Read the locking threshold
cast call \
  --json \
  --rpc-url https://rpc.goat.network \
  0xbC10000000000000000000000000000000000004 \
  'creationThreshold()((address,uint256)[])'

Coordinate final approval

If your target environment still requires whitelisting, complete the approval step with the GOAT Network team before broadcasting the creation transaction.

Next References

On this page