Skip to content
BaseHub by wbnns Updated

Azul Node Upgrade Guide

Azul is only supported by base-reth-node (execution) and base-consensus (consensus). Nodes still running op-node, op-geth, op-reth, nethermind, or kona cannot follow the upgrade and have to be migrated.

Azul went live on mainnet at May 28, 2026 18:00 UTC (1779991200). The Azul overview carries the full activation-timestamp table.

LayerSoftwareMainnetTestnet
Execution (EL)base-reth-nodev0.9.0+v0.7.0+
Consensus (CL)base-consensusv0.9.0+v0.7.0+

Operators already on OP Reth through the compose setup only need to update — the latest version switches the binary to base-reth-node automatically, and your current ./reth-data directory carries over with no re-sync or snapshot restore required.

  1. Stop your node:

    Terminal window
    docker compose down
  2. Move to base/base, which now publishes the operator node, and update it:

    Terminal window
    # Coming from a base/node clone? Clone base/base next to it and bring your env file across:
    git clone https://github.com/base/base.git
    cp ../node/.env.mainnet ./base/.env.mainnet # or .env.sepolia
    # Already tracking base/base:
    git pull origin main
  3. Start your node:

    Terminal window
    docker compose up
  4. Confirm the client version: web3_clientVersion should now carry base in the string (for example reth/v1.11.3-.../base/v0.9.0).

op-geth and nethermind are no longer supported, so you will have to start over on base-reth-node.

  1. Stop your node:

    Terminal window
    docker compose down
  2. Clone base/base, or update an existing clone:

    Terminal window
    git clone https://github.com/base/base.git
    # or, where it is already cloned:
    git pull origin main
  3. Delete the old data directory (for example ./geth-data or ./nethermind-data).

  4. Adjust .env.mainnet or .env.sepolia to your preferences.

  5. Bootstrap from a Reth snapshot so you can skip a full sync.

  6. Start your node:

    Terminal window
    docker compose up

Swap op-node for base-consensus by updating environment variables.

  1. Set USE_BASE_CONSENSUS=true in your .env file.

  2. Add the new BASE_NODE_* environment variables (mapping below).

  3. Restart your node:

    Terminal window
    docker compose up
  4. Verify:

    • Tail the consensus logs: docker compose logs -f node
    • Confirm sync status: optimism_syncStatus still responds

The .env.mainnet and .env.sepolia templates in base/base already populate most of these. If you build from base/base, translate your op-node variables with the table below. Nearly all of them are optional. base-consensus node --help prints the complete set.

op-nodebase-consensus
OP_NODE_NETWORKBASE_NODE_NETWORK
OP_NODE_ROLLUP_CONFIGBASE_NODE_ROLLUP_CONFIG
BASE_NODE_LOG_VERBOSITY
BASE_NODE_LOG_FORMAT
OP_NODE_L1_ETH_RPCBASE_NODE_L1_ETH_RPC
OP_NODE_L1_BEACONBASE_NODE_L1_BEACON
OP_NODE_L1_TRUST_RPCBASE_NODE_L1_TRUST_RPC
OP_NODE_L2_ENGINE_RPCBASE_NODE_L2_ENGINE_RPC
OP_NODE_L2_ENGINE_AUTHBASE_NODE_L2_ENGINE_AUTH
BASE_NODE_L2_ENGINE_AUTH_ENCODED
OP_NODE_P2P_BOOTNODESBASE_NODE_P2P_BOOTNODES
OP_NODE_P2P_LISTEN_IPBASE_NODE_P2P_LISTEN_IP
OP_NODE_P2P_LISTEN_TCP_PORTBASE_NODE_P2P_LISTEN_TCP_PORT
OP_NODE_P2P_LISTEN_UDP_PORTBASE_NODE_P2P_LISTEN_UDP_PORT
OP_NODE_P2P_ADVERTISE_IPBASE_NODE_P2P_ADVERTISE_IP
OP_NODE_P2P_ADVERTISE_TCPBASE_NODE_P2P_ADVERTISE_TCP_PORT
OP_NODE_P2P_ADVERTISE_UDPBASE_NODE_P2P_ADVERTISE_UDP_PORT
OP_NODE_P2P_PRIV_PATHBASE_NODE_P2P_PRIV_PATH
OP_NODE_P2P_PEER_SCORINGBASE_NODE_P2P_SCORING
OP_NODE_P2P_PEER_BANNINGBASE_NODE_P2P_BAN_PEERS
OP_NODE_P2P_PEER_BANNING_THRESHOLDBASE_NODE_P2P_BAN_THRESHOLD
OP_NODE_P2P_PEER_BANNING_DURATIONBASE_NODE_P2P_BAN_DURATION
OP_NODE_METRICS_ENABLEDBASE_NODE_METRICS_ENABLED
OP_NODE_METRICS_ADDRBASE_NODE_METRICS_ADDR
OP_NODE_METRICS_PORTBASE_NODE_METRICS_PORT
OP_NODE_RPC_ADDRBASE_NODE_RPC_ADDR
OP_NODE_RPC_PORTBASE_NODE_RPC_PORT
OP_NODE_RPC_ENABLE_ADMINBASE_NODE_RPC_ENABLE_ADMIN
OP_NODE_RPC_ADMIN_STATEBASE_NODE_RPC_ADMIN_STATE
OP_NODE_SAFEDB_PATHBASE_NODE_SAFEDB_PATH
OP_NODE_SYNCMODE
OP_NODE_VERIFIER_L1_CONFS
OP_NODE_L2_ENGINE_KIND
OP_NODE_L1_RPC_KIND
OP_NODE_L1_BEACON_FETCH_ALL_SIDECARS
OP_NODE_L1_BEACON_FALLBACKS
OP_NODE_ROLLUP_LOAD_PROTOCOL_VERSIONS
OP_NODE_P2P_STATIC
OP_NODE_P2P_DISABLE
OP_NODE_P2P_NAT
  • Do I have to re-sync? No, not if you are already on OP Reth — the existing data directory is compatible.
  • What if I run op-geth or nethermind? Move to base-reth-node and bootstrap from a Reth snapshot.
  • Do the OP namespace RPCs still work? Yes — every existing RPC remains supported.