# Technical Implementations

### Proposal Structure

Create a folder for each new proposal under the `proposals_in_review/` and have the following files:

* `addresses.js` - has all the proposal-related addresses grouped by chains (for testnet, mainnet, etc.).
* `proposal.js` - contains the actual logic and content of the proposal.
* `submitProposal.js` - the script to submit the proposal.
* `test/` - the test folder contains all the testing and simulation scripts.

### Steps to create, test, and submit a proposal

* Write the proposal logic and content in `proposal.js` , and add related addresses in `addresses.js` file
* Create tests and simulations in the `test/` folder
* Run tests with `yarn test`
* Run the simulations with `yarn sim:in_review`
* Submit the proposal to the testnet: `yarn submit --network kovan proposals_in_review/NEW_PROPOSAL/submitProposal.js`
* Manual test and review the proposal on testnet
* Submit the proposal to mainnet: `yarn submit --network mainnet proposals_in_review/NEW_PROPOSAL/submitProposal.js`
