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.
Activation timeline
Section titled “Activation timeline”| Network | Date | Timestamp |
|---|---|---|
| Sepolia | April 20, 2026 18:00 UTC | 1776708000 |
| Mainnet | Early May 2026 | TBD |
Required software
Section titled “Required software”| Layer | Software | Version |
|---|---|---|
| Execution (EL) | base-reth-node | v0.7.0+ |
| Consensus (CL) | base-consensus | v0.7.0+ |
Migrating the execution layer
Section titled “Migrating the execution layer”From OP Reth
Section titled “From OP Reth”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.
-
Stop the node:
Terminal window docker compose down -
Pull the latest base/node:
Terminal window git pull origin main -
Start the node:
Terminal window docker compose up -
Confirm the client version with
web3_clientVersion— the response should includebase(for example,reth/v1.11.3-.../base/v0.7.0).
From other clients
Section titled “From other clients”op-geth and nethermind are no longer supported. You must restart from a clean base-reth-node setup.
-
Stop the node:
Terminal window docker compose down -
Pull the latest base/node:
Terminal window git pull origin main -
Remove the existing client data directory (for example,
./geth-dataor./nethermind-data). -
Edit
.env.mainnetor.env.sepoliato match your preferences. -
Bootstrap from a Reth snapshot to skip a full sync.
-
Start the node:
Terminal window docker compose up
Migrating the consensus layer
Section titled “Migrating the consensus layer”Replace op-node with base-consensus by updating your environment variables.
-
Set
USE_BASE_CONSENSUS=truein your.envfile. -
Update
.envwith the newBASE_NODE_*variables (see the mapping below). -
Restart:
Terminal window docker compose up -
Verify:
- Tail consensus logs:
docker compose logs -f node - Confirm sync status:
optimism_syncStatuscontinues to work
- Tail consensus logs:
Environment variable mapping
Section titled “Environment variable mapping”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-node | base-consensus |
|---|---|
OP_NODE_NETWORK | BASE_NODE_NETWORK |
OP_NODE_ROLLUP_CONFIG | BASE_NODE_ROLLUP_CONFIG |
| — | BASE_NODE_LOG_VERBOSITY |
| — | BASE_NODE_LOG_FORMAT |
OP_NODE_L1_ETH_RPC | BASE_NODE_L1_ETH_RPC |
OP_NODE_L1_BEACON | BASE_NODE_L1_BEACON |
OP_NODE_L1_TRUST_RPC | BASE_NODE_L1_TRUST_RPC |
OP_NODE_L2_ENGINE_RPC | BASE_NODE_L2_ENGINE_RPC |
OP_NODE_L2_ENGINE_AUTH | BASE_NODE_L2_ENGINE_AUTH |
| — | BASE_NODE_L2_ENGINE_AUTH_ENCODED |
OP_NODE_P2P_BOOTNODES | BASE_NODE_P2P_BOOTNODES |
OP_NODE_P2P_LISTEN_IP | BASE_NODE_P2P_LISTEN_IP |
OP_NODE_P2P_LISTEN_TCP_PORT | BASE_NODE_P2P_LISTEN_TCP_PORT |
OP_NODE_P2P_LISTEN_UDP_PORT | BASE_NODE_P2P_LISTEN_UDP_PORT |
OP_NODE_P2P_ADVERTISE_IP | BASE_NODE_P2P_ADVERTISE_IP |
OP_NODE_P2P_ADVERTISE_TCP | BASE_NODE_P2P_ADVERTISE_TCP_PORT |
OP_NODE_P2P_ADVERTISE_UDP | BASE_NODE_P2P_ADVERTISE_UDP_PORT |
OP_NODE_P2P_PRIV_PATH | BASE_NODE_P2P_PRIV_PATH |
OP_NODE_P2P_PEER_SCORING | BASE_NODE_P2P_SCORING |
OP_NODE_P2P_PEER_BANNING | BASE_NODE_P2P_BAN_PEERS |
OP_NODE_P2P_PEER_BANNING_THRESHOLD | BASE_NODE_P2P_BAN_THRESHOLD |
OP_NODE_P2P_PEER_BANNING_DURATION | BASE_NODE_P2P_BAN_DURATION |
OP_NODE_METRICS_ENABLED | BASE_NODE_METRICS_ENABLED |
OP_NODE_METRICS_ADDR | BASE_NODE_METRICS_ADDR |
OP_NODE_METRICS_PORT | BASE_NODE_METRICS_PORT |
OP_NODE_RPC_ADDR | BASE_NODE_RPC_ADDR |
OP_NODE_RPC_PORT | BASE_NODE_RPC_PORT |
OP_NODE_RPC_ENABLE_ADMIN | BASE_NODE_RPC_ENABLE_ADMIN |
OP_NODE_RPC_ADMIN_STATE | BASE_NODE_RPC_ADMIN_STATE |
OP_NODE_SAFEDB_PATH | BASE_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-gethornethermind? Switch tobase-reth-nodeand bootstrap from a Reth snapshot. - Do OP namespace RPCs still work? Yes, all existing RPCs remain supported.