TL;DR
A go-zenon hotfix release (v0.0.9) is coming that bundles two PRs: #81, which fixes the consensus bug that stalled the network at momentum 14,103,620 and knocked pillars off the chain, and #101, which restores the community spork address’s ability to activate sporks for the next two years. Both are required before any Phase 1 features can ship. When the release is cut, every node operator should upgrade, and bridge orchestrator pillars should upgrade first. After a 30–60 day adoption window, a spork will be issued that finalizes the upgrade; nodes still on v0.0.8 at that point will fork off.
What happened, and why this is a hotfix
A developer testing against mainnet double-signed a transaction: two copies of the same account block, each with a valid signature. Because the signature is excluded from the block hash, both copies had the same hash and height. But the raw stored bytes differed, and those bytes feed into the momentum’s changes-hash.
The momentum producer included one copy. Nodes that had received the other copy first kept it in their pool, computed a different changes-hash, rejected the momentum, and stopped syncing. That is the stall at 14,103,620. It forked the network and a number of pillars stopped producing momentums on the canonical chain.
This is a high-severity consensus bug. It is trivially reproducible by anyone who wants to, and it has to be closed before we put the bridge back into service. #81 fixes it: when a node is force-inserting a momentum, it now adopts the momentum’s copy of the block instead of the pool’s, and if insertion fails before commit, the pool state is restored rather than left corrupted. It also tightens validation of peer-supplied block lists during sync. A regression test reproduces the exact byte-mismatch failure and passes with the fix.
The second problem: we can’t issue sporks right now
The community spork address (z1qqvwzz2xq7q5gwk6uhcddgrpxlfcyzc8rsu82s) (Shai) had a hard-coded authorization window that ended at momentum 13,243,712, which mainnet crossed on 2026-05-13. Since then the community address has had no ability to create or activate sporks.
Sporks are important because that is how the network activates protocol upgrades and Kaine has left us. Phase 1 has a queue of features that depend on it: dynamic plasma, libp2p, governance upgrades, and further work Sol has planned. Some of these cannot be activated at all without a working spork mechanism. Without #101, Phase 1 is blocked at the protocol level regardless of how much code is ready.
#101 adds a second, future renewal window for the community address: momentums 14,455,739 through 19,791,985, roughly 2026-10-19 to 2028-09-19 at current momentum rates. Two design points worth understanding:
- The original window is left untouched. Nothing in chain history is reinterpreted, so old and new binaries agree on every historical momentum. A full genesis resync on the combined #81 + #101 build has been completed and verified.
- The new window is in the future. Until a community spork transaction is actually confirmed inside it, v0.0.8 and v0.0.9 nodes produce identical results at every height. Upgrading early carries no risk of diverging from the network.
- The community is still submitting PR comments (as of 29 Sept 2026) and they need to be addressed.
Why bundle them
Both PRs touch disjoint files, both have been reviewed by multiple reviewers, and both are prerequisites for the same goal: a bridge relaunch and a Phase 1 that can actually be activated. One release, one upgrade for operators, one adoption campaign.
The rollout plan
- Release. go-zenon v0.0.9-alphanet is published with #81 and #101 merged. Binaries are tagged to the exact built commit.
- Upgrade. pillars and node operators upgrade to v0.0.9. Pillars acting as bridge orchestrators should upgrade immediately — the bridge should not be relaunched on nodes carrying the #81 bug and they need #101 to avoid getting forked out.
- Adoption window (30–60 days). As a community we push to get as many pillars as possible on v0.0.9. We’ll track weight on the new version and post updates here.
- Spork issuance. We will ask Shai to issue a spork from the community address. That transaction is the point of divergence: nodes on v0.0.9 will accept it, nodes still on v0.0.8 will reject the momentum and fork off the network. This is deliberate. It is how the upgrade becomes final.
Until step 4, running v0.0.9 is strictly safe. After step 4, running v0.0.8 means you are no longer on Zenon mainnet.
What we’re asking of you
- Pillar operators: watch this thread for the release announcement, then upgrade. If you run an orchestrator, treat it as urgent.
- Node operators and public node hosts: same. Apps and wallets pointed at un-upgraded nodes will break when the spork lands.
- Everyone: if you know a pillar operator who isn’t active on the forum or Telegram, reach out. Adoption is the whole game here. The more weight we get on v0.0.9 quickly, the sooner the spork can be issued, the sooner the bridge comes back, and the sooner Phase 1 features can start landing.
Questions, objections, and review of the PRs themselves are welcome in this thread or on GitHub. The release announcement with binaries and upgrade instructions will follow as a separate post.