- Proposal creation: A proposal, which is a list of calls to execute, is created by a participant using
GovernanceManager.createProposal
- The tier (containing quorum and other metadata, see
DataTypes.Tier
) is set to the highest tier of any of the calls to execute - The proposer votes are computed and checked against the proposal threshold (part of the tier information)
- If the proposer has enough voting power, the proposal is started
- The tier (containing quorum and other metadata, see
- Voting phase
- Any participant with voting power is allowed to vote "for", "against", or "abstain" using
GovernanceManager.vote
- A participant can change his/her vote at any time
- Any participant with voting power is allowed to vote "for", "against", or "abstain" using
- Proposal conclusion: a vote can be concluded by anyone using
GovernanceManager.tallyVote
- If the quorum is reached and the vote threshold is reached, the proposal is queued for execution
- If not, the proposal is marked as rejected
- Proposal execution: a proposal can be executed by anyone using
GovernanceManager.executeProposal
once the time lock for the tallied proposal has passed