Proposals
veYB holders vote on proposals in the YB DAO, the governance DAO of YieldBasis. A proposal can change protocol parameters, add gauges, or replace contract implementations. Any address with veYB voting power can create a proposal.
A proposal passes with 30% participation and 55% support. Voting lasts at least 7 days. In the second half of the voting period, voting power decays linearly. A proposal can execute early when the remaining votes cannot change the result.
The YB DAO is an Aragon DAO. Its voting plugin is the Aragon TokenVoting plugin, with veYB as the voting token. For the address of each, read DAO, governance, and vesting in Contract addresses.
Parameters
The YB DAO deployed the voting plugin with these settings on 15 September 2025. It can change them with updateVotingSettings, updateCooldownSettings, and updateDecaySettings. To check a current value, call its getter on the TokenVoting plugin.
The parameters table gives each setting, its getter and value at deployment, and what the value means.
| Parameter | Getter and setting at deployment | Meaning |
|---|---|---|
| Minimum proposer voting power | minProposerVotingPower() = 1 | Voting power above zero. Any active veYB lock qualifies. The value 1 is a raw unit in the comparison, not an amount that you lock. |
| Proposal cooldown | getProposalCooldownPeriod() = 86400 | One address can create one proposal in 24 hours. |
| Minimum participation | minParticipation() = 300000 | 30% of total veYB voting power at the snapshot. |
| Support threshold | supportThreshold() = 550000 | More than 55% of Yes and No votes must be Yes. |
| Minimum duration | minDuration() = 604800 | Voting lasts at least 7 days. |
| Decay midpoint | getDecayMidpointBasisPoints() = 5000 | Decay starts at 50% of the voting period. |
| Voting mode | votingMode() = 1 | Early execution is on. Vote replacement is off. |
| Vote options | — | Yes, No, Abstain. |
Create a proposal
An address can create a proposal when it meets both of these conditions:
- It has veYB voting power above zero at the second before the proposal transaction. The plugin reads this with
getPastVoteson veYB. So you need an active veYB lock before the block of your proposal transaction. - It has not created a proposal in the last 24 hours. A second proposal from the same address within 24 hours reverts with
ProposalCooldownNotMet.
Any lock that VotingEscrow.create_lock accepts has voting power above zero until it expires. The smallest is 126,144,000 wei of YB (about 1.26 × 10⁻¹⁰ YB).
To propose, call createProposal on the plugin, or use the governance interface of the YB DAO.
Voting power and decay
When someone creates a proposal, the plugin takes a snapshot of veYB balances. Your voting power on the proposal starts from your balance at that snapshot, so veYB that you lock later does not count on that proposal. You cannot change a vote after you cast it, because voting mode 1 does not allow vote replacement.
When you vote, the plugin applies a time decay:
- First 50% of the voting period: you vote with your full snapshot power.
- After 50%: your power falls linearly to zero at the end of the voting period.
The decay reduces the effect of votes in the last hours of a proposal.
The following example takes a vote with the minimum 7-day duration and the deployment midpoint of 50%. The midpoint is then day 3.5. A vote cast on day 2 counts with full snapshot power. A vote cast on day 5.25 counts with half of it: 1.75 of the 3.5 days after the midpoint remain, and 1.75 / 3.5 = 0.5. The formula after the midpoint is:
power = snapshot_power × time_remaining / (end − midpoint)
The variable table gives the source of each term.
| Term | Value or source |
|---|---|
snapshot_power | Your veYB voting power at the proposal snapshot. |
end | The end of the voting period. The period lasts at least minDuration(): 604800 seconds (7 days) at deployment. |
midpoint | The point at getDecayMidpointBasisPoints() of the voting period: 5000 (50%) at deployment. |
time_remaining | end minus the time of your vote. |
The voting-power decay chart shows the same 7-day vote. Drag the slider to a day to read the share of snapshot power that a vote cast on that day carries. At the default, day 0, the share is 100%. It stays at 100% until day 3.5 and reaches 0% on day 7.
Voting Power Decay Over Time
Early execution
A proposal can execute before its voting period ends when the outcome is certain. The outcome is certain when both of these conditions are true:
- Participation reaches the minimum (30%).
- Support stays above the threshold (55%) even if all remaining voting power votes No.
Early execution is on when votingMode() returns 1. The YB DAO can turn it off with updateVotingSettings.
Execution
When a proposal reaches participation and support, or meets the early-execution conditions, any address can call execute() on the plugin. The YB DAO runs the proposal actions in the same transaction, because it has no timelock. A voter can also execute in the same transaction as the vote, with tryEarlyExecution = true.
Who controls what
The YB DAO shares control of YieldBasis with the Curve DAO and the Curve Emergency DAO, so a YB DAO proposal cannot change every setting. For the powers of each group, read Roles and permissions.
Pool policy changes
After initialization, only a Curve DAO vote can attach, replace, or remove a pool policy, so a YB DAO proposal cannot. For who owns each policy and who can kill it, read Pool policies in Roles and permissions.
Related
- veYB: the source of voting power.
- Roles and permissions: what the YB DAO, the Curve DAO, and the Curve Emergency DAO each control.
- Gauges and emissions: gauge voting, which is separate from proposal voting.
- Dev: VotingEscrow: the contract that stores the veYB balances that proposals snapshot.