# Governance

## Contracts

The Governance module contains several important contracts:

* UbeToken: governance token; based on Uni
* RomulusDelgate:  This is a DAO governance contract similar to Compound Governance Alpha
* 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](https://gist.github.com/macalinao/03d181f7a2884a740db31e82450eb7a7/revisions).

## UbeToken

The UbeToken is the governance token of Ubeswap, used to vote on the direction of the protocol.&#x20;

The token is largely based on the Uni token; however, we have decomposed the contract into a series of contracts inherited from each other:

* [UbeToken](https://github.com/Ubeswap/ubeswap-contracts-new/blob/main/contracts/UbeToken.sol) -- the Ubeswap governance token.
* [VotingPower](https://github.com/Ubeswap/ubeswap-contracts-new/blob/main/contracts/voting/VotingPower.sol) -- keeps track of how much voting power an address has
* [VotingToken](https://github.com/Ubeswap/ubeswap-contracts-new/blob/main/contracts/voting/VotingToken.sol) -- a VotingPower that exposes a name, symbol, decimals, and balanceOf. Cannot be transferred.
* [TransferrableVotingToken](https://github.com/Ubeswap/ubeswap-contracts-new/blob/main/contracts/voting/TransferrableVotingToken.sol) -- a VotingToken that is fully ERC20-compliant and can be transferred.

We were careful to preserve whitespace on `VotingPower` and `TransferrableVotingToken`, as the code was copy/pasted from [Uni](https://github.com/Uniswap/governance/blob/master/contracts/Uni.sol).

## Deployment (New)

There are 6 steps to the deployment (these are the deployment steps of new tokenomics)

* [Deploying UBE Token](https://github.com/Ubeswap/ubeswap-contracts-new/blob/main/deploy/001_deploy_ube_token.ts)
* [Deploying UbeConvert ](https://github.com/Ubeswap/ubeswap-contracts-new/blob/main/deploy/002_deploy_ube_convert.ts)This contract is used for converting old UBE tokens to new UBE tokens
* [Deploying Governance](https://github.com/Ubeswap/ubeswap-contracts-new/blob/main/deploy/003_deploy_governance.ts)
* [Deplying New Stake](https://github.com/Ubeswap/ubeswap-contracts-new/blob/main/deploy/004_deploy_ube_stake.ts)
* [Deploying Vesting Contracts](https://github.com/Ubeswap/ubeswap-contracts-new/blob/main/deploy/005_deploy_new_ube_vestings.ts)  These contracts are vesting contracts for new tokenomics
