docs(node-operation): single node type, verify-mode, drop deprecated zkTrie migration (#988)#148
docs(node-operation): single node type, verify-mode, drop deprecated zkTrie migration (#988)#148curryxbo wants to merge 4 commits into
Conversation
…h-l2/morph#988) - Remove the separate "validator node" page; there is one node type now. - Document DERIVATION_VERIFY_MODE on the node page: local (default, rebuild + compare versioned hashes vs L1) vs layer1 (pull beacon blob + derive via engine, equivalent to the former validator). Remind operators to set layer1 for the old validator-like L1-derivation behavior. - Drop the now-removed `make run-validator` commands from the docker upgrade guide. - Remove validator-node entry from the node-operators sidebar. Ref morph-l2/morph#966 (Feat: Sequencer Final PR) for the verify-mode behavior.
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ❌ Deployment failed View logs |
pre-rail | 1ca5cd4 | Jun 15 2026, 07:16 AM |
|
Warning Review limit reached
More reviews will be available in 13 minutes and 43 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughThis PR consolidates the separate validator node role into the full node, introducing a ChangesValidator Node Consolidation
Estimated code review effort🎯 2 (Simple) | ⏱️ ~8 minutes Possibly related issues
Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In
`@docs/build-on-morph/developer-resources/node-operation/full-node/1-run-in-docker.md`:
- Around line 199-203: The fenced log example in the docs is missing a language
tag which triggers markdownlint; update the fenced block around the log line
(`root hash or withdrawal hash is not equal originStateRootHash=0x...
deriveStateRootHash=0x...`) to include a language tag such as `text` (i.e.,
change ``` to ```text) so the markdown linter passes and the docs build cleanly.
- Around line 11-13: The callout's claim that there is "no longer a separate
'validator node' to run" should be softened and scoped to this specific guide to
avoid contradiction with other pages; update the text around the "Single node
type" callout to prefix it with a scope qualifier like "In this guide," or "For
this walkthrough," and avoid site‑wide absolutes, while keeping the existing
details about DERIVATION_VERIFY_MODE and the 'layer1' option and linking to
"Batch verification mode"; optionally add a short cross‑reference noting that
other docs (e.g., the integration one‑page) may still reference a separate
validator node and will be updated separately.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 84b991d1-81b3-459f-933f-09c39667bc69
📒 Files selected for processing (4)
docs/build-on-morph/developer-resources/node-operation/full-node/1-run-in-docker.mddocs/build-on-morph/developer-resources/node-operation/upgrade-node/2-upgrade-node-docker.mddocs/build-on-morph/developer-resources/node-operation/validator-node/1-run-in-docker.mdsidebars.js
💤 Files with no reviewable changes (3)
- docs/build-on-morph/developer-resources/node-operation/validator-node/1-run-in-docker.md
- docs/build-on-morph/developer-resources/node-operation/upgrade-node/2-upgrade-node-docker.md
- sidebars.js
| :::info Single node type | ||
| There is no longer a separate "validator node" to run. Every node verifies the chain against L1; the verification method is selected by `DERIVATION_VERIFY_MODE`. If you want a node that derives blocks from L1 like the former validator, set it to `layer1` — see [Batch verification mode](#batch-verification-mode) below. | ||
| ::: |
There was a problem hiding this comment.
Keep the validator-node wording scoped to this guide.
This callout is fine here, but docs/build-on-morph/build-on-morph/1-integration-one-page.md still tells readers to run a “full node and validator node”, so the docs read as contradictory until that page is updated too. Either update that doc in the same PR or soften this note to avoid a site-wide claim.
♻️ Proposed fix
-There is no longer a separate "validator node" to run. Every node verifies the chain against L1; the verification method is selected by `DERIVATION_VERIFY_MODE`. If you want a node that derives blocks from L1 like the former validator, set it to `layer1` — see [Batch verification mode](`#batch-verification-mode`) below.
+There is no longer a separate "validator node" to run in this guide. Every node verifies the chain against L1; the verification method is selected by `DERIVATION_VERIFY_MODE`. If you want a node that derives blocks from L1 like the former validator, set it to `layer1` — see [Batch verification mode](`#batch-verification-mode`) below.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@docs/build-on-morph/developer-resources/node-operation/full-node/1-run-in-docker.md`
around lines 11 - 13, The callout's claim that there is "no longer a separate
'validator node' to run" should be softened and scoped to this specific guide to
avoid contradiction with other pages; update the text around the "Single node
type" callout to prefix it with a scope qualifier like "In this guide," or "For
this walkthrough," and avoid site‑wide absolutes, while keeping the existing
details about DERIVATION_VERIFY_MODE and the 'layer1' option and linking to
"Batch verification mode"; optionally add a short cross‑reference noting that
other docs (e.g., the integration one‑page) may still reference a separate
validator node and will be updated separately.
| If a node detects a mismatch between the sequencer's submission and its own verification, it logs a line such as: | ||
|
|
||
| ``` | ||
| root hash or withdrawal hash is not equal originStateRootHash=0x... deriveStateRootHash=0x... | ||
| ``` |
There was a problem hiding this comment.
Add a language tag to the log example fence.
Markdownlint flags this fenced block as missing a language. Use text (or another appropriate language) so the docs build stays clean.
🧹 Proposed fix
-```
+```text
root hash or withdrawal hash is not equal originStateRootHash=0x... deriveStateRootHash=0x...</details>
<details>
<summary>🧰 Tools</summary>
<details>
<summary>🪛 markdownlint-cli2 (0.22.1)</summary>
[warning] 201-201: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
</details>
</details>
<details>
<summary>🤖 Prompt for AI Agents</summary>
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
@docs/build-on-morph/developer-resources/node-operation/full-node/1-run-in-docker.md
around lines 199 - 203, The fenced log example in the docs is missing a language
tag which triggers markdownlint; update the fenced block around the log line
(root hash or withdrawal hash is not equal originStateRootHash=0x... deriveStateRootHash=0x...) to include a language tag such as text (i.e.,
change totext) so the markdown linter passes and the docs build cleanly.
</details>
<!-- fingerprinting:phantom:triton:quartz -->
<!-- cr-comment:v1:19a1f728dc4cf36e4152ad1b -->
_Source: Linters/SAST tools_
<!-- This is an auto-generated comment by CodeRabbit -->
Mainnet/Hoodi have been on MPT for a long time; the migration guide is no longer needed. Remove the page, its sidebar entry, and the inbound links from the full-node page (tip) and prune-state (caution).
New Upgrade Node page for operators with an already-running node: in-place upgrade steps, env vars now required for all nodes, DERIVATION_VERIFY_MODE (local default / layer1 = former validator), and a caution to upgrade before the consensus switch height.
… is new Confirmed against morph node/derivation/config.go: BeaconRpc is the only required field (errors if empty); rollup/deposit/heights use per-network defaults. So upgrading the binary is enough; former validators just add DERIVATION_VERIFY_MODE=layer1.
Closes morph-l2/morph#988
What
Update the node operation docs for the single-node model (issue morph-l2/morph#988; aligns with run-morph-node PR morph-l2/run-morph-node#100, verify-mode behavior from morph-l2/morph#966).
Changes
DERIVATION_VERIFY_MODE:local(default): rebuild blob from local L2 + compare versioned hashes vs L1.layer1: pull L1 beacon blob + derive via engine — equivalent to the former validator node. Reminder: setlayer1for that old validator-style L1-derivation behavior.make run-validator/make stop-validatorcommands.Scope
Limited to the node-operation module. No style rewrites; unrelated outdated content left untouched. Verified with a local
pnpm build(exit 0, no broken links underonBrokenLinks: 'throw').🤖 Generated with Claude Code
Summary by CodeRabbit
DERIVATION_VERIFY_MODE(including guidance to restore former validator L1 behavior).