Skip to content

Base Azul Upgrade

The Base Azul upgrade activates Osaka features on Base alongside the TEE/ZK proof systems and requires every node operator to migrate to Base-native clients.

The full scope is documented in the Azul specification.

NetworkDateTimestamp
SepoliaApril 20, 2026 18:00 UTC1776708000
MainnetEarly May 2026TBD
LayerSoftwareVersion
Execution (EL)base-reth-nodev0.7.0+
Consensus (CL)base-consensusv0.7.0+

If you already run OP Reth via base/node, updating to the latest release switches you to base-reth-node automatically. Your existing ./reth-data directory is fully compatible — no resync or snapshot restore required.

  1. Stop the node:

    Terminal window
    docker compose down
  2. Pull the latest base/node:

    Terminal window
    git pull origin main
  3. Start the node:

    Terminal window
    docker compose up
  4. Confirm the client version with web3_clientVersion — the response should include base (for example, reth/v1.11.3-.../base/v0.7.0).

op-geth and nethermind are no longer supported. You must restart from a clean base-reth-node setup.

  1. Stop the node:

    Terminal window
    docker compose down
  2. Pull the latest base/node:

    Terminal window
    git pull origin main
  3. Remove the existing client data directory (for example, ./geth-data or ./nethermind-data).

  4. Edit .env.mainnet or .env.sepolia to match your preferences.

  5. Bootstrap from a Reth snapshot to skip a full sync.

  6. Start the node:

    Terminal window
    docker compose up

Replace op-node with base-consensus by updating your environment variables.

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

  2. Update .env with the new BASE_NODE_* variables (see the mapping below).

  3. Restart:

    Terminal window
    docker compose up
  4. Verify:

    • Tail consensus logs: docker compose logs -f node
    • Confirm sync status: optimism_syncStatus continues to work

If you use base/node, most variables are already populated in .env.mainnet and .env.sepolia. If you build from base/base, use the table below to translate op-node variables to base-consensus. Most are optional. Run base-consensus node --help for the full list.

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 need to resync? No, if you already run OP Reth — existing data is compatible.
  • What if I’m on op-geth or nethermind? Switch to base-reth-node and bootstrap from a Reth snapshot.
  • Do OP namespace RPCs still work? Yes, all existing RPCs remain supported.