Skip to content

kaiax/gov: validate the governing node successor - #1056

Open
hyunsooda wants to merge 1 commit into
kaiachain:devfrom
hyunsooda:fix/validate-governing-node-successor
Open

kaiax/gov: validate the governing node successor#1056
hyunsooda wants to merge 1 commit into
kaiachain:devfrom
hyunsooda:fix/validate-governing-node-successor

Conversation

@hyunsooda

Copy link
Copy Markdown
Contributor

Proposed changes

The consistency check for a governing-node vote compares the current governing node against the council and never inspects the proposed value, which only has to be a well-formed address. After Permissionless only the governing node may vote, and voting requires council membership, so a successor that is the zero address or outside the council leaves header governance with no way back. Validate the proposed value where that rule applies.

Types of changes

  • 🐛 Bug fix
  • ✨ Non-hardfork changes (node upgrade not required)
  • 💥 Hardfork / consensus-breaking changes
  • 🧪 Test improvements
  • 🧰 CI / build tool
  • ♻️ Chore / Refactor / Non-functional changes

Checklist

  • 📖 I have read the CONTRIBUTING GUIDELINES doc
  • 📝 I have signed in the PR comment I have read the CLA Document and I hereby sign the CLA in first time contribute after having read CLA
  • 🟢 Lint and unit tests pass locally with my changes ($ make test)

Related issues

Further comments

The check is gated on Permissionless because VerifyVote also runs on pre-fork headers, and tightening it unconditionally could reject a header that was accepted before.

@hyunsooda hyunsooda self-assigned this Sep 1, 2026
@hyunsooda
hyunsooda force-pushed the fix/validate-governing-node-successor branch from ab0b0fe to 3d5848d Compare September 1, 2026 09:08
The consistency check for a governing-node vote compares the current
governing node against the council and never inspects the proposed value,
which only has to be a well-formed address. After Permissionless only the
governing node may vote, and voting requires council membership, so a
successor that is the zero address or outside the council leaves header
governance with no way back.

Constraint: VerifyVote also runs on pre-fork headers, so the check is gated on Permissionless rather than applied unconditionally
Rejected: Fail at the fork block when the existing governing node is ineligible | that halts every node on a chain already holding a bad value, which is worse than a frozen parameter
Rejected: Require the successor to be in the committee rather than the council | a briefly paused validator is a legitimate successor
Confidence: high
Scope-risk: narrow
Not-tested: A successor that is in the council at vote time but leaves it afterwards through the node lifecycle
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@hyunsooda hyunsooda changed the title headergov: validate the governing node successor kaiax/gov: validate the governing node successor Sep 1, 2026
@hyunsooda
hyunsooda force-pushed the fix/validate-governing-node-successor branch from 3d5848d to fccfde7 Compare September 1, 2026 09:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant