The Governance module contains several important contracts:
UbeToken: governance token; based on Uni
ReleaseUbe: non-transferrable token that releases Ube at an even rate over a period of 156 weeks. Based on Uni to keep track of voting power.
Timelock: based on the Uniswap timelock contract; ensures a minimum of 2 days must pass between the time an admin transaction is created and posted and the time that the transaction is executed.
A diff between Uni governance contracts and Ubeswap is available here.
Timelocks
Timelocks are a way to ensure that actions of protocol governance can be viewed ahead of time. We plan on launching a dashboard soon to allow users to view the actions of any of these timelocks.
Community -- Receives a share of mined tokens. Used to fund community projects.
Executive -- Controls most functions of Ubeswap; owner of most important contracts, notably:
The protocol fee switch in UbeswapFactory
The allocation of rewards between different liquidity mining pools (PoolManager)
The allocation of ReleaseUbe
CeloReserve -- Receives a share of mined tokens. Will be given to the Celo Reserve.
Currently, all Timelocks are admined by a wallet at 0x489AAc7Cb9A3B233e4a289Ec92284C8d83d49c6f. We plan on transitioning this as soon as possible to a multisig, then to a DAO.
UbeToken
The UbeToken is the governance token of Ubeswap, used to vote on the direction of the protocol. Currently the voting mechanism is not live-- we plan on shipping it and a portal some time in Q3.
The token is largely based on the Uni token; however, we have decomposed the contract into a series of contracts inherited from each other:
​VotingPower -- keeps track of how much voting power an address has
​VotingToken -- a VotingPower that exposes a name, symbol, decimals, and balanceOf. Cannot be transferred.
​TransferrableVotingToken -- a VotingToken that is fully ERC20-compliant and can be transferred.
This decomposition was performed in order to easily allow ReleaseUbe to use the same logic without being transferrable.
We were careful to preserve whitespace on VotingPower and TransferrableVotingToken, as the code was copy/pasted from Uni.
ReleaseUbe
ReleaseUbe allows for early Ube team members and early supporters to vote on proposals while still preventing those team members from selling their tokens early.
ReleaseUbe's release schedule distributes 25.7M UBE under the following schedule: