Goerli Testnet Guide for Infra Providers

This document outlines how infrastructure providers should deploy the Optimistic Goerli testnet.

Overview

The only changes between Optimistic Kovan and Optimistic Goerli are the environment variables that configure each replica. A comprehensive list of environment variables for Goerli are enclosed below. Note that you will need to start Geth with an empty data directory and reinitialize via geth init prior to starting it. If you are using one of our replica startup scripts, you can use [check-for-chaindata-berlin.sh](<https://github.com/ethereum-optimism/optimism/blob/develop/infra/op-replica/scripts/check-for-chaindata-berlin.sh>) to do this automatically.

l2geth Environment

Minimum version: 0.5.14

# These environment variables are designed for use with the
# check-for-chaindata-berlin.sh script linked above. If you have a
# custom Geth initialization script, you will need to handle the block
# signer key and Geth initialization manually.
#
# Be sure to specify USING_OVM=true when initializing Geth.
BLOCK_SIGNER_ADDRESS=0x27770a9694e4B4b1E130Ab91Bc327C36855f612E
BLOCK_SIGNER_PRIVATE_KEY=da5deb73dbc9dea2e3916929daaf079f75232d32a2cf37ff8b1f7140ef3fd9db
BLOCK_SIGNER_PRIVATE_KEY_PASSWORD=pwd
L2GETH_GENESIS_HASH=0x1067d2037744f17d34e3ceb88b0d654a3798f5d12b79b348085f13f1ec458636
L2GETH_GENESIS_URL=https://storage.googleapis.com/optimism/goerli/goerli-devnet-genesis-2022-06.json
L2GETH_BERLIN_ACTIVATION_HEIGHT="0"
USING_OVM="true"

# Forwards eth_sendRawTransaction to the sequencer
SEQUENCER_CLIENT_HTTP="<https://goerli.optimism.io>"

CHAIN_ID="420"
DATADIR=<your-datadir>
ETH1_CTC_DEPLOYMENT_HEIGHT="7017096"
ETH1_SYNC_SERVICE_ENABLE="true"
GASPRICE="0"
GCMODE=archive
NETWORK_ID="420"
NO_DISCOVER="true"
NO_USB="true"
ROLLUP_BACKEND=l2
ROLLUP_CLIENT_HTTP=<your-dtl-url>
ROLLUP_DISABLE_TRANSFERS="false"
ROLLUP_ENABLE_L2_GAS_POLLING="false"
ROLLUP_GAS_PRICE_ORACLE_OWNER_ADDRESS=0xc8910a1957d276cE5634B978d908B5ef9fB0e05B
ROLLUP_MAX_CALLDATA_SIZE="40000"
ROLLUP_POLL_INTERVAL_FLAG=1s
ROLLUP_SYNC_SERVICE_ENABLE="true"
ROLLUP_TIMESTAMP_REFRESH=5m
ROLLUP_VERIFIER_ENABLE="true"
RPC_ADDR=0.0.0.0
RPC_API=eth,rollup,net,web3,debug
RPC_CORS_DOMAIN='*'
RPC_ENABLE="true"
RPC_PORT="8545"
RPC_VHOSTS='*'
TARGET_GAS_LIMIT="15000000"
WS="true"
WS_ADDR=0.0.0.0
WS_API=eth,rollup,net,web3,debug
WS_ORIGINS='*'

data-transport-layer Environment

Minimum version: 0.5.27

DATA_TRANSPORT_LAYER__DEFAULT_BACKEND=l2
DATA_TRANSPORT_LAYER__L1_GAS_PRICE_BACKEND=l2
DATA_TRANSPORT_LAYER__SYNC_FROM_L1="false"
DATA_TRANSPORT_LAYER__SYNC_FROM_L2="true"
DATA_TRANSPORT_LAYER__L1_RPC_ENDPOINT=<your-l1-url>
DATA_TRANSPORT_LAYER__L2_RPC_ENDPOINT=<sequencer-url>
DATA_TRANSPORT_LAYER__ADDRESS_MANAGER=0xa6f73589243a6A7a9023b1Fa0651b1d89c177111
DATA_TRANSPORT_LAYER__CONFIRMATIONS="12"
DATA_TRANSPORT_LAYER__DANGEROUSLY_CATCH_ALL_ERRORS="true"
DATA_TRANSPORT_LAYER__DB_PATH=<your-db-path>
DATA_TRANSPORT_LAYER__ENABLE_METRICS="true"
DATA_TRANSPORT_LAYER__ETH_NETWORK_NAME=goerli
DATA_TRANSPORT_LAYER__L1_START_HEIGHT="7017096"
DATA_TRANSPORT_LAYER__L2_CHAIN_ID="420"
DATA_TRANSPORT_LAYER__LOGS_PER_POLLING_INTERVAL="2000"
DATA_TRANSPORT_LAYER__NODE_ENV=production
DATA_TRANSPORT_LAYER__POLLING_INTERVAL="500"
DATA_TRANSPORT_LAYER__SENTRY_TRACE_RATE="0.05"
DATA_TRANSPORT_LAYER__SERVER_HOSTNAME=0.0.0.0
DATA_TRANSPORT_LAYER__SERVER_PORT="7878"
DATA_TRANSPORT_LAYER__TRANSACTIONS_PER_POLLING_INTERVAL="1000"

replica-healthcheck Environment

Minimum version: 1.0.6

HEALTHCHECK__REFERENCE_RPC_PROVIDER=<sequencer-url>
HEALTHCHECK__TARGET_RPC_PROVIDER=<your-l2geth-url>