Skip to content

Commit b3f6ed1

Browse files
committed
docs(azul): add health check, rollback, troubleshooting sections and verify commands
1 parent 0711852 commit b3f6ed1

1 file changed

Lines changed: 111 additions & 19 deletions

File tree

docs/base-chain/node-operators/base-v1-upgrade.mdx

Lines changed: 111 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -39,39 +39,45 @@ If you are already running OP Reth via [base/node](https://github.com/base/node)
3939

4040
1. Stop your node:
4141

42-
```bash
42+
```bash
4343
docker compose down
44-
```
44+
```
4545

4646
2. Update to the latest version of [base/node](https://github.com/base/node):
4747

48-
```bash
48+
```bash
4949
git pull origin main
50-
```
50+
```
5151

5252
3. Start your node:
5353

54-
```bash
54+
```bash
5555
docker compose up
56-
```
56+
```
5757

58-
4. Verify client version: `web3_clientVersion` should include `base` in the version string (e.g. `reth/v1.11.3-.../base/v0.9.0`)
58+
4. Verify client version: `web3_clientVersion` should include `base` in the version string (e.g. `reth/v1.11.3-.../base/v0.9.0`):
59+
60+
```bash
61+
curl -s -X POST http://localhost:8545 \
62+
-H "Content-Type: application/json" \
63+
-d '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":1}'
64+
```
5965

6066
### Migrating from another client
6167

6268
`op-geth` and `nethermind` are no longer supported. You will need to start fresh with `base-reth-node`.
6369

6470
1. Stop your node:
6571

66-
```bash
72+
```bash
6773
docker compose down
68-
```
74+
```
6975

7076
2. Update to the latest version of [base/node](https://github.com/base/node):
7177

72-
```bash
78+
```bash
7379
git pull origin main
74-
```
80+
```
7581

7682
3. Remove your old data directory (e.g. `./geth-data` or `./nethermind-data`).
7783

@@ -81,9 +87,9 @@ If you are already running OP Reth via [base/node](https://github.com/base/node)
8187

8288
6. Start your node:
8389

84-
```bash
90+
```bash
8591
docker compose up
86-
```
92+
```
8793

8894
## Migrating Consensus Layer
8995

@@ -95,19 +101,28 @@ Replace `op-node` with `base-consensus` by updating your environment variables.
95101

96102
3. Restart your node:
97103

98-
```bash
104+
```bash
99105
docker compose up
100-
```
106+
```
107+
108+
4. Verify sync status:
101109

102-
4. Verify:
103-
- Check consensus logs: `docker compose logs -f node`
104-
- Confirm sync status: `optimism_syncStatus` continues to work
110+
```bash
111+
# Check consensus logs
112+
docker compose logs -f node
113+
114+
# Confirm sync status via RPC
115+
curl -s -X POST http://localhost:7545 \
116+
-H "Content-Type: application/json" \
117+
-d '{"jsonrpc":"2.0","method":"optimism_syncStatus","params":[],"id":1}'
118+
```
105119

106120
### Environment Variable Mapping
107121

108122
If you use [base/node](https://github.com/base/node), most variables are already set in `.env.mainnet` and `.env.sepolia`. If you build from [base/base](https://github.com/base/base), use the table below to map your `op-node` environment variables to `base-consensus`. Most are optional. Run `base-consensus node --help` for the full list.
123+
109124
| `op-node` | `base-consensus` |
110-
|-----------|-------------------|
125+
|-----------|------------------|
111126
| `OP_NODE_NETWORK` | `BASE_NODE_NETWORK` |
112127
| `OP_NODE_ROLLUP_CONFIG` | `BASE_NODE_ROLLUP_CONFIG` |
113128
|| `BASE_NODE_LOG_VERBOSITY` |
@@ -150,9 +165,86 @@ If you use [base/node](https://github.com/base/node), most variables are already
150165
| `OP_NODE_P2P_DISABLE` ||
151166
| `OP_NODE_P2P_NAT` ||
152167

168+
## Post-Upgrade Health Check
169+
170+
After migrating, confirm your node is operating correctly:
171+
172+
```bash
173+
# 1. Check both containers are running
174+
docker compose ps
175+
176+
# 2. Verify EL client version includes 'base'
177+
curl -s -X POST http://localhost:8545 \
178+
-H "Content-Type: application/json" \
179+
-d '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":1}' \
180+
| jq '.result'
181+
182+
# 3. Check sync status (unsafe_l2 block number should be advancing)
183+
curl -s -X POST http://localhost:7545 \
184+
-H "Content-Type: application/json" \
185+
-d '{"jsonrpc":"2.0","method":"optimism_syncStatus","params":[],"id":1}' \
186+
| jq '{unsafe: .result.unsafe_l2.number, safe: .result.safe_l2.number}'
187+
188+
# 4. Check peer count (should be > 0)
189+
curl -s -X POST http://localhost:8545 \
190+
-H "Content-Type: application/json" \
191+
-d '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":1}' \
192+
| jq '.result'
193+
```
194+
195+
## Rollback
196+
197+
If you need to revert to your previous setup before activation:
198+
199+
```bash
200+
# 1. Stop the node
201+
docker compose down
202+
203+
# 2. Roll back to previous git state
204+
git checkout <previous-commit-or-tag>
205+
206+
# 3. Restart
207+
docker compose up
208+
```
209+
210+
<Warning>
211+
Rollback is only possible **before** the Azul activation timestamp. After activation, nodes running pre-Azul clients will not follow the canonical chain.
212+
</Warning>
213+
214+
## Troubleshooting
215+
216+
**Node fails to start after update**
217+
218+
Check logs for configuration errors:
219+
```bash
220+
docker compose logs node | tail -50
221+
```
222+
Ensure `USE_BASE_CONSENSUS=true` is set and all required `BASE_NODE_*` variables are present in your `.env` file.
223+
224+
**`web3_clientVersion` does not include `base`**
225+
226+
You may still be running `op-reth`. Confirm `git pull origin main` completed cleanly and re-run `docker compose up --build`.
227+
228+
**Sync stalled or `unsafe_l2` not advancing**
229+
230+
Check L1 RPC connectivity and confirm `BASE_NODE_L1_ETH_RPC` is reachable. A peer count of 0 suggests a network or firewall issue on your P2P port.
231+
232+
**`BASE_NODE_L2_ENGINE_AUTH_RAW` not set**
233+
234+
Generate a secure value and add it to your `.env` file:
235+
```bash
236+
echo "BASE_NODE_L2_ENGINE_AUTH_RAW=$(openssl rand -hex 32)" >> .env
237+
```
238+
239+
**`optimism_syncStatus` returns an error**
240+
241+
Confirm the consensus RPC port (default `7545`) is exposed and `BASE_NODE_RPC_PORT` matches your configuration.
242+
153243
## FAQ
154244

155245
- **Do I need to set `BASE_NODE_L2_ENGINE_AUTH_RAW`?** Yes — this must be set to a secure random hex string shared between the execution and consensus containers. Generate one with `openssl rand -hex 32`. Nodes using host networking or custom port mappings that rely on the default placeholder value are exposed to unauthenticated Engine API access.
156246
- **Do I need to re-sync?** Not if you are already running OP Reth. Existing data is compatible.
157247
- **What if I'm on `op-geth` or `nethermind`?** You need to switch to `base-reth-node`. Use a [Reth snapshot](/base-chain/node-operators/snapshots) to bootstrap.
158248
- **Do OP namespace RPCs still work?** Yes, all existing RPCs are supported.
249+
- **Can I run `base-reth-node` and `op-node` together temporarily?** No. `op-node` will not support Azul. Both layers must be migrated together before activation.
250+
- **Where do I get help?** Join the [Base Discord](https://discord.gg/buildonbase) and post in `🛠|node-operators`, or open an issue on [base/node](https://github.com/base/node/issues).

0 commit comments

Comments
 (0)