Appearance
Voting
Create proposals and vote on them.
Contract: 0xf5e003Ef0924993Bd690228787c315Ec3f86AC84
| Parameter | Value |
|---|---|
| Quorum | 10% |
| Voting period | 86,400 blocks |
| Proposals to date | 6 |
Lifecycle
propose → votingDelay → open for votingPeriod → succeeded or defeated
↓
executeA proposal opens after votingDelay, stays open for votingPeriod, and succeeds when it reaches quorum with more support than opposition.
Interface
| Function | Purpose |
|---|---|
propose(string title, string description) | Create a proposal |
castVote(uint256 id, Support support) | Vote |
execute(uint256 id) | Execute a succeeded proposal |
state(uint256 id) | Current lifecycle state |
proposalCount() | Total proposals |
quorumPercent() | Quorum threshold |
votingPeriod() · votingDelay() | Timing |
proposalThreshold() | Minimum stake to propose |
Support is an enum: For, Against, Abstain.
Creating a proposal
js
const gov = new ethers.Contract(GOVERNANCE, [
'function propose(string title, string description) returns (uint256)',
'function proposalThreshold() view returns (uint256)',
], signer);
await (await gov.propose('Increase reward rate', 'Full rationale here…')).wait();You need proposalThreshold to propose
The threshold stops the proposal list being flooded by addresses with no stake. Check it before calling — the transaction reverts otherwise.
Voting
js
const gov = new ethers.Contract(GOVERNANCE, [
'function castVote(uint256 id, uint8 support)',
'function state(uint256 id) view returns (uint8)',
], signer);
await (await gov.castVote(proposalId, 1)).wait(); // 1 = ForYour weight is your stake. One address votes once per proposal — the receipt is recorded and a second attempt reverts.
Abstain counts toward quorum
Abstaining is not the same as not voting. It contributes to quorum without supporting or opposing, which is how a proposal can reach quorum while the electorate signals it has no strong view.
Reading state
js
const state = await gov.state(proposalId);The enum covers pending, active, defeated, succeeded, executed and cancelled. Read the verified source on the contract's explorer page for the exact ordering before mapping the number to a label.
Execution
A succeeded proposal must be executed explicitly — success does not apply it. Anyone can call execute.
Real transactions
| Operation | Transaction | Block |
|---|---|---|
| Proposal created | 0x26a2550eeb5d663e8f5699db2127263bd4b2a4df17470d43c322a622e6c650b0 | 6,136,478 |
| Vote cast | 0x63546b881d0cf531b000acd73caef281dfa6f290390a1ce296ae1aeadd40e774 | 6,136,649 |