Governance ZIP v1 — tl;dr and What Changed
I’ve posted Governance ZIP v1 for comment. This post is the short version: what the ZIP does, and what changed.
tl;dr
-
Adds
GovernanceContract: Pillars propose, Pillars vote, anyone executes approved actions on-chain. -
Scope is sporks only —
CreateSporkandActivateSpork— plus one escape hatch: rotating the signer set of the admin Multisig (a separate companion ZIP that will hold all Bridge/Liquidity operational controls). New in v1: both ZIPs activate at the same fork height, so governance never exists without its rotation target. -
From the fork,
GovernanceContractis the sole spork authority. The legacy spork-signer andCommunitySporkAddresspaths are deleted from the Spork contract. -
New in v1: an emergency spork track (Type-1E). Single 7-day round, approval only by Yes votes from >66% of all active Pillars (absolute — silence counts against), immediate execution. Because the fork removes the legacy authorities, governance’s slowest path must not be its only path: consensus bugs and live exploits can’t wait ~50 days. The bar is strictly harder than the standard track, so it works only when the whole network is paying attention.
-
Proposals must come from a registered Pillar owner address and carry a refundable 100 ZNN deposit — a fixed protocol constant, identical for every action type: returned if the vote passes or expires without decision, donated to Accelerator-Z only if Pillars actively vote it down (v1 change: NoDecision now refunds — proposers can’t compel turnout). No setter exists; changing the amount requires a Pillar-approved protocol upgrade via the ordinary Type-1 track.
-
Voting keeps the low-turnout ratchet (Type 1: 66%->55%->45%->40% participation, 50%->55%->60%->66% majority), and spork votes keep the mandatory deliberation window. v1 tightens Type-2: the floor rises from >25% to >33% participation (three rounds, not four), and rotations approved in low-turnout ratchet rounds execute only after a 72-hour delay — round-0 rotations stay immediate so a compromised signer set can still be replaced fast.
-
Activation is a hard fork at a fixed height with no adoption threshold. New in v1: the height is scheduled only after ≥66% of active Pillars signal the upgraded binary (version signaling in produced momentums) — a measurable readiness criterion that gates the scheduling, not the fork, so inaction still can’t veto it. Nodes on the old binary halt and must update and re-sync.
-
Bridge, Liquidity, and Token contracts are completely untouched.
What changed
1. Multisig dependency pinned. v0 referenced the companion Multisig ZIP without binding it. v1 requires both ZIPs to activate at the same fork height, which cannot be scheduled until the Multisig ZIP is accepted; the required interface (ChangeSignerSet callable by governance) and the initial signer-set bootstrap are stated normatively. The Multisig ZIP is now the explicit critical path.
2. Deposit fixed at 100 ZNN (closes v0 open question #2*)*. The deposit is a protocol constant for all action types — SetProposalDeposit and its bounds are removed entirely. Spam is already structurally bounded by Pillar-only proposing and the 2-open-actions cap, so an adjustment lever added attack surface (a deposit-as-censorship vector, and the only authorization edge from the Multisig into governance) without benefit. The capture loop (hostile Multisig raises the deposit to block its own removal) doesn’t need mitigating anymore — the lever no longer exists. If the amount ever drifts badly with price, Pillars change the constant through the ordinary Type-1 track.
3. Emergency spork track added. Type-1E, as above. An expired Type-1E refunds its deposit and may be re-proposed as ordinary Type-1.
4. Type-2 tightened (closes v0 open question #1 with a middle ground). Immediate finalization survives where it matters — a full-attention round-0 vote — while low-turnout ratchet approvals get a 72h public review window before taking effect. v0’s floor let ~16.5% of Pillars install a signer set instantly; v1’s minimum is ~21.8% plus the delay. The Multisig ZIP is also normatively barred from fund custody and from un-timelocked TSS-key replacement (e.g. ChangeTssECDSAPubKey), since TSS keys are de facto control of bridge funds.
5. NoDecision refunds the deposit. Forfeiture to AZ now applies only to proposals Pillars actively rejected. Spam stays bounded by Pillar-only proposing, a new cap of 2 open actions per Pillar owner, and Rejected-forfeiture.
6. Mechanics specified (closes v0 open question #3*)*. The active-Pillar count is snapshotted at round start (registry churn can’t move a live round’s thresholds); Pillars can change their vote until a round closes and votes never carry across rounds; ~60-day lead time is kept but now anchored to the ≥66% signaling criterion before the height is set.
7. Signer nomination resolved. A Type-2 proposal publishes its complete signer set + threshold, and the Pillar vote — not a nomination filter — is what legitimizes it. The Multisig ZIP must define objective eligibility criteria and may not exclude candidates by delegation status.
Unchanged from v0: the governance/operations split, Pillar-only proposing, permissionless execution, hard-fork activation with legacy-path removal, the Type-1 ratchet schedule and deliberation window, the two-threshold approval math, abstention handling, and the contract address.
Open questions for comment
-
Type-1E parameters: is 7 days / >66% absolute the right shape? Should an expired Type-1E auto-defer into a Type-1 round 0, or require re-proposing (current design: re-propose, since votes don’t carry anyway)?
-
Rotation delay: is 72 hours enough time for Pillars to see and contest a hostile low-turnout signer rotation before it lands?
Full spec: DRAFT Governance ZIP v1 for Comment