BarnBridge DAO lays the foundation for its products. It is governed by BOND ERC-20 tokens. The total supply of BOND tokens is a fixed amount of 10,000,000. There is no mint function in the token smart contract.
The voting on the DAO is performed with the non-tradable vBOND tokens. To get vBOND, users stake or lock their BOND tokens.
- Create proposal: 1% of BOND staked in Barn (at 1m BOND staked = 10k vBOND)
- Minimum quorum: 40% of BOND staked in Barn (at 1m BOND staked = 400k vBOND)
- Minimum acceptance: 60% of votes (at 400k vBOND voted — 240k votes for)
- Users lock BOND for a period of up to 1 year and get bonus vBOND.
- The bonus is linear - max 1 year, max 2x multiplier.
Example: - lock 1,000 BOND for 1 year and get 2,000 vBOND - lock 1,000 BOND for 6 months and get 1,500 vBOND
- Bonus has a linear decay relative to locking duration.
Example: lock 1,000 BOND for 1 year and get 2,000 vBOND at T0 - after 6 months the balance is 1,500 vBOND
- Users can lock and the period is the same:
- base balance is increased with the added BOND.
- multiplier is recalculated relatively to the new lock expiration date.
- Users can only withdraw BOND balance after the lock expires.
- Users stake BOND tokens without locking them. No bonus is applied. vBOND balance = $BOND balance.
- Users can stake more BOND and get the same amount of vBOND
- Users can redeem BOND tokens at any time.
- There can be only one delegatee at a time.
- Only actual balance can be delegated, not a bonus.
- Delegated balance cannot be locked.
- Users can get the delegated vBONDs back at any time.
Anyone who holds enough vBOND can create a proposal. A proposal creator can only have one active proposal at a time but can vote on other proposals.
Proposal is formed of:
- List of targets (addresses)
- List of values
- List of signatures
- List of calldata
Proposal has a maximum number of 10 actions that can be executed. When the proposal is executed, either all actions are executed or none of them. If one action reverts, the whole proposal execution reverts.
In order to give DAO participants enough time to stake, vote, check and discuss proposals, each of these periods lasts for 4 days: Warm-up, Voting, Queued for execution, Grace.
Notice, the Queue period is the only state that requires a user action to activate. So when it is activated, its 4 day lasting period counts from the moment when the voting ended, not when the user did the action. For example, if voting ends and someone queues the proposal 2 days after, it will not stay in the queue for 4 more days but only 2 days because 2 have already passed.
After being created, the proposal enters the Warm-up state to allow people to stake their BOND.
After Warm-up, any user can vote. The voting period starts immediately. At the first incoming vote if the creator’s balance falls below the 1% threshold the proposal is canceled automatically or it can be canceled by calling a function.
Once a proposal is accepted, it will have to wait in a queue before it can be executed. During this time, it can be canceled by:
- the creator;
- anyone if the creator’s balance falls below the 1% threshold;
- abrogation proposal.
Once a proposal becomes executable, any user can call the execute function. If the proposal is not executed during the Grace period, it is marked as expired and cannot be executed anymore.
Abrogation proposal is a special type of proposal with 50% of staked BOND acceptance criteria. It can be created only during the Queue period.
A regular proposal can only have one associated abrogation proposal at any given time.
Anyone can vote on the abrogation proposals. Allowed voting actions are:
- vote for or against;
- cancel vote;
- change vote.
When the abrogation proposal starts, a new snapshot for voter balances is taken. Abrogation proposal’s duration is never greater than the initial proposal’s Queue period. Abrogation proposal’s end time is the same as the initial proposal’s end time.
When someone goes to execute the initial proposal — there is a check if an abrogation proposal that met its acceptance criteria exists.
- Users vote using their vBOND balance + delegated vBOND at the voting start timestamp/block.
- The votes can only be pro or against.
- Users can cancel and change their vote at any time.