Repository navigation
docs: describe how drive-abci reads Dash Core and records Core fork activations - #5754
Conversation
…ctivations The Component Pipeline chapter gains a "Syncing with Dash Core" section that expands steps 4 and 5 of run_block_proposal: - how the chain-locked core height moves, and how init chain starts it; - chain lock verification and submitting the lock to Core, including the almost-synced wait and both refusals; - why every node's Core answers about the same block, and the gap left by Core accepting a chain lock before it has the block; - the Core reads bound to that height, and what each step does on a Core error; - the startup wait, and the rules for adding a Core read. A new Architecture page, Core Fork Activations, describes: - the Misc record of Core forks Platform has seen active; - when update_core_info v1 asks Core, and why every node records the same height; - the window after the protocol upgrade, and the rule for consumers; - V24's coinbase signal, and the code that reads the record; - how to add a fork, and the preconditions for a fork without a block-enforced signal; - a possible table-driven evolution, marked as not implemented. Coding Conventions links both from a short rule next to "Consensus code reads the version from state". Every path and symbol was checked against the code. Claims about Tenderdash and Dash Core were checked against their sources. An accuracy review and a clarity review are folded in. Documentation only, so there is no test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 41 minutes. View limit details
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. |
|
📖 Book Preview built successfully. Download the preview from the workflow artifacts. Updated at 2026-11-04T05:05:40.695Z |
|
Waiting for bot review — thepastaclaw not yet. Wait for the missing reviews, or a writer can post |
|
✅ Final review complete — Phase 1 only — no blockers (commit 16f8f4e) · triage: trivial |
thepastaclaw
left a comment
There was a problem hiding this comment.
Final review — Phase 1 only (trivial change)
Verified the documentation finding against head ae304e4: the chain-lock walkthrough omits the explicit verifychainlock pre-check introduced in protocol version 15. No blocking issues were confirmed. The book preview passed CI, code suites were skipped for this documentation-only change, and PR Hygiene remains pending; the base's additional SUMMARY.md entry does not supersede this change.
🟡 1 suggestion(s)
Review provenance
Source: reviewer 1: glm-5.3-flash (agent: phase1-reviewer, role: general); reviewer 2: glm-5.3-flash (agent: phase1-reviewer, role: architecture-layering); final verifier: gpt-6.1-sol (agent: sol-gate-verifier, role: final-verifier)
- Triage:
trivialbygpt-6.1-sol(effort low) — The diff changes only book documentation and navigation, with no runtime, consensus, storage, or other behavioural changes. - Phase 1 reviewers:
glm-5.3-flash— general (completed, effort high); agentphase1-reviewer,glm-5.3-flash— architecture-layering (completed, effort high); agentphase1-reviewer - Phase 1 model:
glm-5.3-flash— zai quota: 5h 96% left, weekly 73% left; passed overgemini-3.8-flash-high(antigravity quota lookup failed) - Fresh verifier:
gpt-6.1-sol— final-verifier; agentsol-gate-verifier - Phase 2 reviewers: not run (triage rated this change trivial); this review comments and never approves
🤖 Prompt for all review comments with AI agents
These findings are from an automated code review. Verify each finding against the current code and only fix it if needed.
In `book/src/architecture/component-pipeline.md`:
- [SUGGESTION] book/src/architecture/component-pipeline.md:333-337: Distinguish Core signature verification from chain-lock submission
The walkthrough leaves Core's signature check implicit while naming only submitchainlock. From protocol version 15, verify_chain_lock_through_core_v1 explicitly calls Core's verifychainlock before submitting a chain lock that Platform cannot verify locally; a false result returns (false, None) without submission. This distinction matters because submission alone does not authenticate a chain lock when Core already holds one at or above its height. The version tables and should_check_signature_before_submitting_from_protocol_version_15 explicitly preserve that older behavior through version 14. Name verifychainlock and its version gate here so readers do not mistake submission and the returned height for signature verification.
Out-of-scope follow-up suggestions (1)
These are valid observations, but they are outside this PR's scope and should be handled in separate issues or author/maintainer-requested PRs rather than blocking this review.
- Track validation of Core's block hash at the chain-locked height — The new documentation identifies a concrete pre-existing gap: make_sure_core_is_synced_to_chain_lock_v0 treats Core's reported best chain-lock height as sufficient and does not compare Core's active-chain block hash at c with the verified chain lock. A competing block at that height can therefore feed inconsistent subsequent reads. This documentation-only PR exposes the limitation without introducing or worsening it.
- Follow-up: Track a separate consensus review of checking Core's block hash against the verified chain lock before dependent reads, including protocol-version placement and unknown-block behavior.
|
Bots are done — your move: post |
Step 4 of the Syncing with Dash Core section now says that, from protocol version 15, a chain lock Platform cannot verify against its own quorums goes through Core's verifychainlock before it is submitted. Protocol versions up to 14 rely on submitchainlock alone. It also says that submitchainlock returns Core's best height without checking the signature when Core already holds a chain lock at or above that height. Documentation only, so there is no test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Waiting for bot review — thepastaclaw not yet. Wait for the missing reviews, or a writer can post |
thepastaclaw
left a comment
There was a problem hiding this comment.
Re-review — Final review — Phase 1 only (trivial change)
Verified the documentation changes at head 16f8f4e and confirmed that the prior signature-verification suggestion is fixed. No actionable findings remain in the supplied reviewer evidence. The book-preview check passes, policy reconciliation passes, and PR Hygiene remains pending; code build and test jobs were skipped for this documentation-only change.
🔴 0 blocking | 🟡 0 suggestion(s) | 💬 0 nitpick(s)
Review provenance
Source: reviewer 1: glm-5.3-flash (agent: phase1-reviewer, role: general); reviewer 2: glm-5.3-flash (agent: phase1-reviewer, role: architecture-layering); final verifier: gpt-6.1-sol (agent: sol-gate-verifier, role: final-verifier)
- Triage:
trivialbygpt-6.1-sol(effort low) — The diff changes only book documentation and navigation, without changing runtime behaviour, consensus rules, or persisted state. - Phase 1 reviewers:
glm-5.3-flash— general (completed, effort high); agentphase1-reviewer,glm-5.3-flash— architecture-layering (completed, effort high); agentphase1-reviewer - Phase 1 model:
glm-5.3-flash— zai quota: 5h 92% left, weekly 69% left; passed overgemini-3.8-flash-high(antigravity quota lookup failed) - Fresh verifier:
gpt-6.1-sol— final-verifier; agentsol-gate-verifier - Phase 2 reviewers: not run (triage rated this change trivial); this review comments and never approves
🤖 Prompt for all review comments with AI agents
These findings are from an automated code review. Verify the current code and confirm that no unresolved issues remain.
No unresolved findings remain from the prior review on this head.
|
Bots are done — your move: post |
Issue being fixed or feature implemented
The book had one line each for "verify chain lock" and "update core info" in the block pipeline. It did not explain how drive-abci reads Dash Core deterministically, or why every validator's Core answers about the same block. It also did not cover the Core fork activation record that #5681 added at protocol version 15. Contributors adding a Core read, or a consumer of a Core fork, had no rules to follow.
What was done?
architecture/component-pipeline.md: a new section, "Syncing with Dash Core", which expands steps 4 and 5 ofrun_block_proposal:c, never at Core's tip.cmoves. Only a block with a chain lock update moves it (Tenderdash enforces this, andnext_block_tochecks it never decreases). The proposer takes the chain lock from its own Core. Init chain starts at the genesis core height.submitchainlock, the almost-synced wait, and theChainLockedBlockNotKnownByCoreandInvalidChainLockrefusals.cusually fails on that node.cwould close the gap, and that drive-abci does not do it.update_core_info.cdoes not depend on Core.wait_for_core_to_sync).CoreRPCLikeand read atc;c;drive_consensuswhitelist;architecture/core-fork-activations.md: a new page, listed under Architecture inSUMMARY.md:Misc (104) / [b'F', id] -> u32big endian, written once and covered by the app hash. Also theCoreForkenum and thefetch_core_fork_activation_heightread API (pass the block's transaction, andNonemeans "not seen active").cuntil the fork is recorded. Includes a mermaid flowchart and the argument that every node records the same height.CheckCbTx.CoreForkvariant, its key and structure node, and a newupdate_core_infogeneration.evo_shares:getdeploymentinfoatgetblockhash(c - 1)and the three preconditions for tracking one.CoreForkSignal), marked as not implemented.contributing/coding-conventions.md: a short rule, "Consensus code reads Core at the chain-locked height", next to "Consensus code reads the version from state". It links to both chapters.The asset unlock payload version 2 consumer is not described here: that code arrives with #5634, which will add its own paragraph to the Consumers section.
How Has This Been Tested?
Documentation only; no code changes.
v5.1-dev(after feat(drive-abci)!: record Core fork activation in state (PV15) #5681 merged).v1.8-dev:ValidateBlockChainLock, and how the prevoter and socket client handle errors.develop,v24.0.xandv23.0.x:submitchainlock,UpdateBestChainlock,CheckCbTx, the coinbase versions andgetdeploymentinfo.mdbookis not installed on the machine used. Instead, a script checked all 139 relative links and heading anchors in the changed files, and theSUMMARY.mdentry points to an existing file.Breaking Changes
None.
Checklist:
structure.rs, regeneratedgrovedb-structure.json, and checked the structure viewer link posted on this pull requestFor repository code-owners and collaborators only
🤖 Generated with Claude Code
PR Hygiene ·
16f8f4e/self-reviewedWhen every merge requirement is met, the
PR Hygienecheck passes. Reviewer limits do not block merging; other required GitHub checks and protections still apply.