Governance Module Explained

Governance PR: What It Actually Adds

The Governance Module PR introduces the first version of an embedded Governance contract for go-zenon.

The short version: it lets pillars vote on predefined on-chain actions, and if an action passes, the Governance contract can execute that action as an embedded contract sender.

This is not a general-purpose smart contract system. It is a constrained governance mechanism for a limited set of protocol-level operations.

Activation

The Governance contract is gated behind a new governance spork.

Until that spork is issued by the authorized key and becomes active/enforced, the Governance contract is not available in normal protocol execution.

The current governance spork hash is a placeholder until the authorized-key-issued spork exists. Tests override it locally so the governance flow can be exercised before the real activation hash is known.

New Embedded Contract

The PR adds a new embedded contract address:

z1qxemdeddedxg0vernancexxxxxxxxxxxklyh23

Once the governance spork is active, this contract exposes four methods:

  • ProposeAction
  • ExecuteAction
  • VoteByName
  • VoteByProdAddress

The vote methods reuse the existing pillar voting model already used elsewhere in embedded contracts.

Proposing Actions

A user can submit a governance proposal with:

  • name
  • description
  • URL
  • destination contract
  • encoded action data

The proposal is stored under the Governance contract, assigned the proposal send-block hash as its ID, and added to the votable hash set so pillars can vote on it.

The proposal must pay the configured ProjectCreationAmount, similar to existing proposal-style embedded flows.

Action Types And Thresholds

Governance actions are split into two types with different voting periods and approval thresholds.

Type 1: Spork Actions

Actions targeting the Spork contract are Type 1.

These include:

  • creating a spork
  • activating a spork

A Type 1 action requires:

  • more yes votes than no votes
  • yes votes greater than 66% of active pillars

Type 1 actions also have a longer voting period.

Type 2: Administrative Actions

Other allowed governance actions are Type 2.

The current scope includes selected Bridge and Liquidity administrative methods. These are actions that previously depended on the contract administrator, but can now also be executed by Governance after a successful vote.

A Type 2 action requires:

  • more yes votes than no votes
  • yes votes greater than 50% of active pillars

Type 2 actions have a shorter voting period than Type 1 actions.

The implementation uses strict greater-than logic. Exactly 66% for Type 1 or exactly 50% for Type 2 is not enough; the yes vote count must exceed the threshold.

Voting

Active pillars can vote by pillar name or producer address.

An action passes only if it satisfies the threshold rules above and has more yes votes than no votes.

Execution is permissionless after that: anyone can call ExecuteAction, but the contract only executes if the proposal is still valid, not already executed, and has enough votes.

Execution

When a proposal passes, the Governance contract emits a contract-send block to the approved destination with the approved encoded data.

That means Governance does not directly mutate arbitrary state. It calls existing embedded contract methods through the normal VM path.

The PR also adds additional validation so governance proposals are constrained before voting:

  • action data must be valid base64
  • decoded action data is capped in size
  • destination contracts are restricted
  • destination methods are restricted
  • the target method payload is statically validated before the proposal is accepted

This prevents pillars from voting on malformed or unsupported actions that would fail later at execution time.

RPC API

The PR adds a public RPC namespace:

embedded.governance

With methods for reading governance actions, including:

  • get action by ID
  • list all actions with pagination
  • include vote breakdown
  • include expired status

Why This Matters

This PR moves some protocol administration from trusted key/admin flows toward an on-chain pillar voting process.

It is intentionally narrow in scope. Governance v1 does not allow arbitrary execution. It provides a controlled path for specific protocol operations, especially spork management and selected Bridge/Liquidity administration.

In practical terms, it gives the network a foundation for coordinating protocol changes through transparent on-chain proposals, votes, and execution.

1 Like

I know there have been a number of discussions around the governance module dating back over a year. Now that we have AI I’m able to interact with this code and want to help move the discussion forward.

The two big topics we discussed were presenting a ZIP for this work and testing the code. I also recall there was discussion about how difficult it will be to meet the approval thresholds in this proposal. I recently indexed the chain and did a pretty thorough voting analysis.

See full voting table below. Getting 66% or 50% will be hard, but not impossible. Rather than wait for a better solution I propose we review this one and debate it. If someone presents a better solution, let’s evaluate that too. I’m open to all ideas.

Based on the outcome of this discussion I will write up a ZIP and create a reproducible testnet that anyone can run to see and test the behavior of the code. I recently deployed the governance code, created a sporkID, activated a sporkID, and the enabled a contract in testnet. So preliminary testing is positive. I hope to release a branch with AI skills that tell a user how to test the code.

Full Detail Table – All 97 Pillars

Pillar Proj Yes Proj No Proj Abs Proj NoVote Phase Yes Phase No Phase Abs Phase NoVote Combined %
Zed 122 35 29 2 79 3 1 2 98.5%
tapwoot 118 31 27 12 79 0 0 6 93.4%
DeeZNNutz.com 107 58 12 11 72 0 2 11 91.9%
SultanOfStaking 93 53 16 26 73 2 4 6 88.3%
ZenonORG 91 53 17 27 78 1 1 5 88.3%
Zeus 96 48 9 35 73 1 1 10 83.5%
WotGasFees 89 46 2 51 76 1 0 8 78.4%
AndastraCapital 81 57 2 48 69 0 0 16 76.6%
Octopos01 97 43 6 42 58 0 0 27 74.7%
Mariposa01 96 39 6 47 57 0 0 28 72.5%
ZenonORG4 84 16 18 70 74 1 1 9 71.1%
ZenonORG2 83 17 17 71 74 1 1 9 70.7%
ZenonORG3 84 16 17 71 73 1 1 10 70.3%
EmeraldCap 93 32 6 57 56 1 0 28 68.9%
StakeServe 95 29 6 58 55 0 0 30 67.8%
PillarNoM 80 45 1 62 53 0 0 32 65.6%
Time 74 32 8 74 52 0 0 33 60.8%
Elements 74 33 1 80 42 0 0 43 54.9%
WAGMI 68 43 5 72 30 0 0 55 53.5%
starfruit 48 42 2 96 50 0 0 35 52.0%
Anvil 60 9 16 103 45 1 5 34 49.8%
AlienBoyz 63 28 1 96 44 0 0 41 49.8%
Real-Estate 65 11 2 110 52 0 0 33 47.6%
Vopo 71 3 0 114 47 0 0 38 44.3%
Toker 58 17 2 111 37 7 0 41 44.3%
Shigo 42 38 1 107 27 0 0 58 39.6%
apestrongtogether 39 39 2 108 22 0 0 63 37.4%
bigdickenergy 37 42 1 108 20 0 1 64 37.0%
HyperGrowth 40 10 6 132 43 0 0 42 36.3%
DCA 43 18 2 125 29 0 0 56 33.7%
Zeno 44 12 0 132 32 0 0 53 32.2%
MoonBaZe 45 4 0 139 34 1 0 50 30.8%
build_republic 32 17 1 138 29 3 0 53 30.0%
0x3639.com 31 11 5 141 32 0 1 52 29.3%
Outlawz 43 2 2 141 28 3 0 54 28.6%
WolfRayet-102 39 5 0 144 29 0 0 56 26.7%
12N11 35 15 3 135 16 0 3 66 26.4%
Z-United 34 12 0 142 24 1 0 60 26.0%
zAppers 27 10 1 150 26 0 0 59 23.4%
ZenDAO 34 3 1 150 20 0 1 64 21.6%
Milkdromeda 28 3 3 154 20 0 0 65 19.8%
Zircon 29 9 1 149 14 0 0 71 19.4%
UTOPIA 30 9 0 149 12 0 0 73 18.7%
AncientPillar 29 7 1 151 14 0 0 71 18.7%
alien-valley.io 18 14 4 152 11 1 0 73 17.6%
stardust 32 1 0 155 15 0 0 70 17.6%
ElderZ 16 9 1 162 21 0 0 64 17.2%
Swagmi 12 9 0 167 24 0 0 61 16.5%
ZenonOG 12 3 17 156 10 0 0 75 15.4%
edgepillar.com 18 3 4 163 14 0 1 70 14.7%
AREA51 10 6 2 170 21 0 0 64 14.3%
Zygonidz 18 6 0 164 14 0 0 71 13.9%
Ignition 15 0 1 172 20 1 0 64 13.6%
SPillar 8 4 18 158 5 0 0 80 12.8%
Nexus 16 3 0 169 12 0 1 72 11.7%
Stark 15 3 2 168 10 1 0 74 11.4%
holover.se 10 10 2 166 8 0 0 77 11.0%
singularity 25 0 0 163 5 0 0 80 11.0%
NoMLabz.org 14 3 1 170 11 0 1 73 11.0%
SolarSail 12 7 2 167 8 0 0 77 10.6%
Paradox 7 7 0 174 9 0 0 76 8.4%
XYZ 6 12 1 169 2 0 0 83 7.7%
GreyZ 4 2 2 180 13 0 0 72 7.7%
cypherpunk 6 2 0 180 13 0 0 72 7.7%
ZENON.NETWORK 8 0 1 179 8 0 0 77 6.2%
Nomverse 0 3 1 184 13 0 0 72 6.2%
sunfyre 8 1 0 179 8 0 0 77 6.2%
GenesisPillar 9 2 1 176 3 0 0 82 5.5%
Stargate 8 1 2 177 4 0 0 81 5.5%
SpaceInvaderz 6 0 0 182 6 0 0 79 4.4%
Smoothies 9 0 0 179 1 0 0 84 3.7%
UFO 5 0 0 183 1 0 0 84 2.2%
Tacos 2 0 0 186 2 1 0 82 1.8%
1ZNN1BTC 0 3 0 185 2 0 0 83 1.8%
blackhole 2 1 0 185 1 0 0 84 1.5%
THEREWERESIGNZ 2 0 0 186 1 0 0 84 1.1%
AlienApeZ 3 0 0 185 0 0 0 85 1.1%
invictus 2 0 0 186 0 0 0 85 0.7%
Zaulus 2 0 0 186 0 0 0 85 0.7%
707 2 0 0 186 0 0 0 85 0.7%
LT 2 0 0 186 0 0 0 85 0.7%
SPX6900 1 0 0 187 1 0 0 84 0.7%
Zaurum 2 0 0 186 0 0 0 85 0.7%
Megalith 0 0 0 188 1 0 0 84 0.4%
222 1 0 0 187 0 0 0 85 0.4%
blow 1 0 0 187 0 0 0 85 0.4%
bonsai 0 0 0 188 0 0 0 85 0.0%
nobu 0 0 0 188 0 0 0 85 0.0%
Inception 0 0 0 188 0 0 0 85 0.0%
theone 0 0 0 188 0 0 0 85 0.0%
CH405 0 0 0 188 0 0 0 85 0.0%
Unizen 0 0 0 188 0 0 0 85 0.0%
Publius 0 0 0 188 0 0 0 85 0.0%
zamiri 0 0 0 188 0 0 0 85 0.0%
Halar1 0 0 0 188 0 0 0 85 0.0%
Hybrid21 0 0 0 188 0 0 0 85 0.0%
ZenonORG5 0 0 0 188 0 0 0 85