Search Apps Documentation Source Content File Folder Download Copy Actions Download State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

README.md

2.10 Kb · 51 lines

Governor

⚠️ Experimental — generated with no human supervision by the daily MCP pipeline (Solidity→Gno port). Not audited. See r/moul/x/daily.


A simplified on-chain governance realm inspired by OpenZeppelin's Governor. It ports the core proposal → vote → execute lifecycle to Gno: Propose records a proposal's snapshot height and a deadline of ChainHeight() + votingPeriod, CastVote gives every address a single equally-weighted vote (1 address = 1 vote, tracked in an avl voter set), and State computes Active / Succeeded / Defeated from the deadline versus the current chain height plus whether the for tally beats against. Execute finalizes a Succeeded proposal.

Unlike the ERC20Votes-weighted original, voting power here is flat (one address, one vote) and there is no timelock — the emphasis is on a clean, deterministic state machine driven by block height.

Example calls

# open a proposal (returns its id)
Propose("Fund the docs working group for Q3")

# vote: 0=against, 1=for, 2=abstain (one vote per address)
CastVote(1, 1)

# read the current state: Active | Succeeded | Defeated | Executed
State(1)

# once past the deadline with for > against, finalize it
Execute(1)

Render("") lists every proposal with its tally bars (▓░) and state.


Part of moul/gno-contracts — moul's versioned gno.land contracts. See the repository for the full catalog, build/test tooling, and usage.

Dependency graph:

gno.land/r/moul/x/daily/governor/v0 dependency graph

🧪 Highly experimental — potentially vibe-coded. Not audited; may break, change, or be removed at any time. Do not use with anything of value. Full disclaimer: DISCLAIMER.