Page cover image

Proposals

Creating Proposals on GitHub

Creating proposals for the Aggregated Finance DAO is a very simple process. It all starts with GitHub, where all the proposal discussion needs to happen:

If you want to be involved in the discussions on GitHub then you will need to create a GitHub account. It's a very easy process, just follow the prompts:

The AGFI DAO is a "repository" on GitHub. Normally repositories are used to store code, but in our case we'll just use it for discussion and information about the Proposals for the DAO.

Did you know Ethereum uses GitHub for all of its proposals too? You can check out the Ethereum proposals here: https://github.com/ethereum/EIPs

Every Proposal is handled as an Issue in the DAO repository.

You will see all the open proposals here when you view the Issues section. If you want to start a discussion about a new proposal, click New Issue on the top-right of the page:

There are some templates you can use to make a new proposal. After the DAO gets set up most of these will be "Treasury Allocation" proposals. If none of these proposals meet your needs you can also choose Open a blank issue at the bottom.

Now all you need to do is fill out the details. Give it a title that makes sense, and fill in the details about what the proposal will do and why it should be voted on. Once you've filled in all the information, click Submit new issue:

The proposal will be open for anyone to review, comment, and discuss if it should move to a formal vote.

The Proposal Managers may edit or reject your proposal if it doesn't satisfy all the information needed to move it to a formal vote. Every vote needs a justification as to why it should happen, otherwise why do it at all?

If you want to voice your opinion, you can write your own response to any proposal at the bottom by adding a comment:

Opening Proposals on Tally

On the Tally DAO interface, click Create new proposal.

Connect your wallet and click Continue.

Fill out the description from the proposal information defined on the GitHub proposal and click Continue.

Depending on what actions the proposal is meant to take, you must define at least one for the proposal.

For example, transferring tokens will show the tokens held in the timelock treasury that can be transferred, and you can define who will receive the tokens and how many:

Alternatively, you can define a custom action that the proposal will perform. This is any action that calls a smart contract function, so you can use these to modify things like the AGFI Governor contract, Timelock contract, and more.

To define a custom action, paste in a contract address to the Target contract address. If it's a contract that has been verified on Etherscan then the contract methods will automatically load. If it's not a verified contract you will need the contract ABI data to show the contract methods.

Once you've set the address, select the Contract method you want the vote to call. Then any parameters that are required for that contract method will appear, and you will need to define the values that they're changing to. In the example below the action is to call setVotingPeriod with the newVotingPeriod set to 1000.

The DAO interface won't warn you if your proposal actions are technically possible or not. Some function calls require the DAO contract to hold certain rights, like ownership over another contract. If you aren't sure what you're doing, consult the DAO Proposal Managers for advice.

If you want a proposal to not actually perform any action at all because it's a "meta" change to the project, then simple define the action as a transfer of 0 ETH to any address.

Once you've defined the actions for the proposal (you can define up to 10, so if you need to execute a sequence of contract calls that's entirely possible), click Continue.

You will get a preview of your proposal. Click Submit on-chain if you want to get it opened immediately, or click Save Draft if you want to save it for later.

Once a proposal is submitted on-chain a voting delay period starts. This period is by default set to 1 day, which gives people enough time to delegate their votes if required. While this delay period is in effect the proposal will show as "Pending" on Tally.

Queueing Proposals on Tally

Proposals can only be queued once the voting period has finished, and the vote received more FOR votes than AGAINST/ABSTAIN votes.

To queue a proposal, open Manage Proposals on the Tally DAO interface and click Queue. You will be prompted by your wallet software to confirm the transaction, which will incur a network gas cost.

A queued proposal must wait for the timelock period to expire before it can be executed. If you hold the right to cancel proposals, you can also cancel the proposal at this point if required.

Executing Proposals on Tally

Proposals can only be executed if they've been queued in the timelock and not still waiting for the timelock period to end, which by default is 1 day from when the proposal was queued.

To execute a proposal, open Manage Proposals on the Tally DAO interface and click Execute. You will be prompted by your wallet software to confirm the transaction, which will incur a network gas cost.

Once the proposal has been executed the proposal process is complete.

Opening Proposals on Snapshot

Snapshot.org is used for any votes that do not require releasing funds from the AGFI Timelock treasury or modification of the Tally DAO voting parameters.

To create a new Snapshot vote, click New proposal.

Set the Title of the proposal to the same as the proposal on GitHub. Set the Description as the same as the proposal on GitHub. Set the Discussion as a link to the GitHub proposal. Click Continue.

Provide the choices for the vote. For the majority of votes just have the options as For and Against. The Voting period is automatically set by the DAO configuration, so you don't need to change it. Click Publish.

Your wallet will prompt you to sign the new proposal. This doesn't cost any gas, it's just using your wallet to prove that it's you authorizing the proposal.

The proposal is now queued for voting to start according to the configured voting period.

Last updated