# Creating a proposal

This is a guide for creating a proposal in any Romulus governance system.

## Prerequisites

* A minimum number of voting power. In most systems, it will be 1% of all voting power
* A basic understanding of smart contracts

## How to create a proposal

1. Pick the governance system you would like to create a proposal in. E.g. Poof.cash, Ubeswap etc.
2. Press `Create Proposal`
3. Add commands that your proposal will execute. For example, if you wanted to transfer 100 [POOF](https://explorer.celo.org/address/0x00400FcbF0816bebB94654259de7273f4A05c762/transactions) to `0x0000000000000000000000000000000000000000`
   1. Lookup the POOF contract interface. Since POOF is an ERC20, it will have [these functions](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol). Transferring refers to the function `function transfer(address recipient, uint256 amount) external returns (bool);`
   2. Press `Add` under `Commands`
   3. Specify the [POOF](https://explorer.celo.org/address/0x00400FcbF0816bebB94654259de7273f4A05c762/transactions) contract address as the target because that is the contract we need to call to transfer tokens. In this scenario, it is `0x00400FcbF0816bebB94654259de7273f4A05c762`
   4. &#x20;Specify `0` as the value as there is no need to give CELO to the POOF contract to transfer
   5. Specify `transfer(address, uint256)` as the signature
   6. Specify `address,uint256` as the types
   7. Specify `0x0000000000000000000000000000000000000000,100` as the values

## Notes

* Creating a proposal **does not** affect your token balance
* Every proposer can only have one active proposal at a time
* If your voting power falls below the minimum number of votes for proposal creation while your proposal is active, your active proposal is at risk of being cancelled by anyone
* If your proposal succeeds, you need to actively queue, then execute the proposal to ensure that the actions occur
* Proposers can always cancel their own active proposal
