diff --git a/docs/concepts/governance/02-process.md b/docs/concepts/governance/02-process.md index 77cf9a4abc..8831acfb2d 100644 --- a/docs/concepts/governance/02-process.md +++ b/docs/concepts/governance/02-process.md @@ -3,92 +3,113 @@ id: process title: Process --- -This document is a living document which represents the current process guidelines for developing and advancing Uniswap Governance Proposals. +This is a living document which represents the current process guidelines for developing and advancing Uniswap Governance Proposals. It was last updated September 2024. -## Process +## Tools -Several governance venues are available to Uniswap governance, each serving its own particular purpose. +Uniswap Governance takes place in several venues. Each serves its own particular purpose. -1. [_gov.uniswap.org_](https://gov.uniswap.org/) +1. [_Governance Forum_](https://gov.uniswap.org/) -gov.uniswap.org is a Discourse-hosted forum for governance-related discussion. Community members must register for an account before sharing or liking posts. New members are required to enter 4 topics and read 15 posts over the course of 10 minutes before they are permitted to post themselves. +A Discourse-hosted forum for governance-related discussion. Community members must register for an account before sharing or liking posts. New members must read 4 topics and a combined 15 posts over the course of at least 10 minutes before they may post themselves. 2. [_Snapshot_](https://snapshot.org/#/uniswapgovernance.eth) -Snapshot is a simple voting interface that allows users to signal sentiment off-chain. Votes on snapshot are weighted by the number of UNI delegated to the address used to vote. +A simple voting interface that allows users to signal sentiment off-chain. Votes on Snapshot are weighted by the number of UNI delegated to the address used to vote. + +3. [_Uniswap Agora_](https://vote.uniswapfoundation.org) + +The [Uniswap Foundation](https://www.uniswapfoundation.org) supports this voting and delegation interface. [Tally](https://www.tally.xyz/gov/uniswap) is another excellent app that supports proposal creation, delegation, and voting. + + +## Process + +Below we outline the current Uniswap governance process, detailing where these venues fit in. These processes are subject to change according to feedback from the Uniswap community. -3. [_Governance Portal_](https://app.uniswap.org/#/vote) +### Phase 1: Request for Comment (RFC) -The formal governance portal can be accessed directly through the Uniswap app interface. Votes are delegated and cast through the portal. +_Timeframe_: At least 7 days -Below we outline a preliminary draft for the Uniswap governance process, detailing exactly where these venues fit in. These processes are subject to change according to feedback from the Uniswap community. +_Form_: [Governance Forum](https://gov.uniswap.org/) Post -### Phase 1: Temperature Check — Discourse/Snapshot +As a proposer, you should use the RFC phase to introduce the community to your proposal. Your post should detail exactly what you are asking delegates to vote on as well as your rationale for why it is a good idea. You should be prepared to answer questions about your proposal. Willingness to adjust based on community feedback is a hallmark of successful past proposals. -The purpose of the Temperature Check is to determine if there is sufficient will to make changes to the status quo. +To post a RFC, label your post “RFC - [Your Title Here]”. Prior to moving to Phase 2, give the community at least 7 days to read and comment on the RFC. Please respond to questions in the comments, and take feedback into account in the next iteration of the proposal posted in Phase 2. + +### Phase 2: Temperature Check + +_Timeframe_: 5 days + +_Quorum_: 10M UNI + +_Form_: [Snapshot Poll](https://snapshot.org/#/uniswapgovernance.eth) + +The purpose of the Temperature Check is to signal community sentiment on a proposal prior to moving towards an onchain vote. To create a Temperature Check: -1. Ask a general, non-biased question to the community on gov.uniswap.org about a potential change (example: "Should Uniswap governance add liquidity mining for XYZ token?"). Forum posts should be labeled as follows: "Temperature Check - [Your Title Here]". The forum post should include a link to the associated Snapshot poll. +1. Incorporate the community feedback from the RFC phase into the proposal. -1. Voters use Snapshot to indicate their interest in bringing it forward to the next stage. Snapshot poll lengths should be set to 2 days. +2. Create and post this version of the proposal in the [Governance Forum](https://gov.uniswap.org/) with the title “Temperature Check — [Your Title Here]”. Include a link to the RFC post. You will update the post to include a link to the Snapshot poll after you’ve posted that. -That's it! You've just started the process of gaining support for a proposal. At the end of the 2 days, a majority vote with a 25k UNI yes-vote threshold wins. +3. Create a [Snapshot poll](https://snapshot.org/#/uniswap). The voting options should consist of those which have gained support in the RFC Phase. This poll can be either binary or multiple choice but must include a `No change` option. Set the poll duration to 5 days. Include a link to the Forum Temperature Check post. -If the Temperature check does not suggest a change from the status quo, the topic will be closed on the governance site. If the Temperature Check does suggest a change, proceed to Stage 2: Consensus Check. +4. Update the Forum post with a link to the Snapshot Poll. -### Phase 2: Consensus Check — Discourse/Snapshot +At the end of 5 days, the option with the majority of votes wins. There must be at least 10M UNI `Yes` votes to move onto Phase 3. If the “No change” option wins, the proposal will not move onto the Phase 3. -The purpose of the Consensus Check is to establish formal discussion around a potential proposal. +### Phase 3: Governance Proposal -To create a Consensus Check: +_Timeframe_: 2 day waiting period, 7 day voting period, 2 day timelock -1. Use feedback from the Temperature Check post and create a new Snapshot poll which covers the options which have gained support. This poll can either be binary or multiple choice but you are required to include the option "Make no change" or its equivalent. Set the poll duration to 5 days. + _Threshold_: 1M UNI -1. Create a new topic in the Proposal Discussion category on gov.uniswap.org titled "Consensus Check — [Your Title Here]". This will alert the community that this topic has already passed Temperature Check. Any topics beginning with Consensus Check that have not passed Temperature Check will immediately be removed by moderators. Make sure that the discussion thread links to the new Snapshot poll and the Temperature Check thread. +_Quorum_: 40M UNI votes in favor -1. Reach out to your network to build support for the proposal. Discuss the proposal and actively solicit delegates to vote on it. Be willing to respond to questions on the Consensus Check topic. Share your view point, although try to remain as impartial as possible. +Form: [Governance Proposal](https://vote.uniswapfoundation.org/) -At the end of 5 days, whichever option has the majority of votes wins, and can be included in a governance proposal for Stage 3. A 50k UNI yes-vote quorum is required for the Consensus Check to pass. +![](./images/proposal_flow.png) -If the option "Make no change" wins, the Consensus Check topic will be closed by the moderators. +Phase 3 is the final step of the governance process. If this vote passes, then a change will be enacted onchain. -### Phase 3: Governance Proposal — Governance Portal +To create an onchain Governance Proposal: -Phase 3 — Governance Proposal — is the final step of the governance process. The proposal should be based on the winning outcome from the Consensus Check and can consist of one or multiple actions, up to a maximum of 10 actions per proposal. +1. Incorporate any last iterations to your proposal based on feedback prior to posting. -To create a Governance Proposal: +2. Create a topic in the [Governance Forum](https://gov.uniswap.org/) titled "Governance Proposal — [Your Title Here]" and link to previous forum posts and the Temperature Check Snapshot poll. -1. Write the code for your proposal, which will be voted on through the Governance Portal. More resources can be found [here](https://compound.finance/docs/governance#propose) **.** All proposed code should be audited by a professional auditor. This auditing process may be paid or reimbursed by the community treasury. +3. Create your proposal. This can be done either through an interface (e.g. [Tally](https://tally.xyz/gov/uniswap)) or through writing the calldata for more complicated proposal logic. If the proposal passed, this calldata will execute. If writing the calldata yourself, please review the logic with a qualified Uniswap community member prior to posting the proposal. -1. Ensure that you have at least 2.5 million UNI delegated to your address in order to submit a proposal, or find someone who has enough UNI to meet the proposal threshold to propose on your behalf. +4. Ensure that at least 1 million UNI is delegated to your address in order to submit a proposal, or find a delegate who has enough delegated UNI to meet the proposal threshold to propose on your behalf. -1. Create a topic in the Proposal Discussion category on gov.uniswap.org titled "Governance Proposal — [Your Title Here]" and link to any relevant Snapshot polls/discussion threads as well as the code audit report. Topics that begin with "Governance Proposal" that have not successfully passed through the Temperature Check and Consensus Check stages will be removed by moderators. +5. Once you submit the proposal, a two-day voting delay will start. After the voting delay finishes, a ~seven-day voting period begins. If the proposal passes, a two-day timelock must pass before you can execute the proposed code. -1. Call the propose() function of the Governor Bravo to deploy your proposal. +## Changes to the Governance Process -Once the propose() function has been called, a two day voting delay will start. After voting delay is finished a seven day voting period begins. Ongoing discussion can take place in the gov.uniswap.org forum. If the proposal passes successfully, a two day timelock will follow before the proposed code is executed. +Timeframe: 7 days -## Soft governance +_Quorum_: 40M UNI -The process described above lays out a structure for those wishing to host a formal vote around a particular issue. +Form: [Snapshot Poll](https://snapshot.org/#/uniswap) -However, governing this system also requires a degree of "meta governance", discussions that inform the direction of and the implementation processes behind policy but which don't qualify as policy themselves. +In the future, the community governance process above may need to undergo additional changes to continue to meet the needs of the Uniswap community. While an onchain vote is not required to change the majority of this process, a clear display of community support and acceptance is important for process changes to have legitimacy. -The community may discuss new ideas and strategies for governance — including changes to the three-step process outlined above — in the "Governance-Meta" category. On-chain voting is not necessary to make updates to off-chain processes. +Thus, changes to all off-chain community governance processes should be voted on through an off-chain Snapshot vote. There should be a 7-day voting period and 40M UNI quorum. ## Governance Glossary -- **UNI:** An ERC-20 token that designates the weight of a user's voting rights. The more UNI a user has in their wallet, the more weight their delegation or vote on a proposal holds. +- **UNI:** An ERC-20 token that designates the weight of a user's voting rights. The more UNI a user has in their wallet, the more weight their delegation or vote on a proposal holds. + +- **Delegation:** UNI holders cannot vote or create proposals until they delegate their voting rights to an address. A UNI holder can delegate to one address at a time, including their own address. Note that delegation does not lock tokens; it simply adds votes to the chosen delegation address. -- **Delegation:** UNI holders cannot vote or create proposals until they delegate their voting rights to an address. Delegation can be given to one address at a time, including the holder's own address. Note that delegation does not lock tokens; it simply adds votes to the chosen delegation address. +- **Proposal:** A proposal is executable code that modifies the governance contract or treasury and how they work. To create a proposal, a user must have at least 0.10% (1M UNI) of all UNI delegated to their address. Proposals are stored in the "proposals" mapping of the Governor smart contract. All proposals are subject to a ~7-day voting period. If the proposer does not maintain their vote weight balance throughout the voting period, anyone may cancel the proposal. -- **Proposal:** A proposal is executable code that modifies the governance contract or treasury and how they work. In order to create a proposal, a user must have at least 0.25% (2.5M UNI) of all UNI delegated to their address. Proposals are stored in the "proposals" mapping of the Governor smart contract. All proposals are subject to a 7-day voting period. If the proposer does not maintain their vote weight balance throughout the voting period, the proposal may be canceled by anyone. +- **Threshold:** The amount of UNI that must be delegated to an address to take a given action. Currently, the only action with a threshold is posting an onchain vote. -- **Quorum:** In order for a vote to pass, it must achieve quorum of 4% of all UNI (40M) voting in the affirmative. The purpose of the quorum is to ensure that the only measures that pass have adequate voter participation. +- **Quorum:** In order for a vote to pass, 4% of all UNI (40M) must vote in favor. Votes against and abstentions do not count towards a quorum. The purpose of the quorum is to ensure that the only measures that pass have adequate voter participation. -- **Voting:** Users can vote for or against single proposals once they have voting rights delegated to their address. Votes can be cast while a proposal is in the "Active" state. Votes can be submitted immediately using "castVote" or submitted later with "castVoteBySig" (For more info on castVoteBySig and offline signatures, see EIP-712). If the majority of votes (and a 4% quorum of UNI) vote for a proposal, the proposal may be queued in the Timelock. +- **Voting:** Users can vote for or against single proposals once they have voting rights delegated to their address. Votes can be cast while a proposal is in the "Active" state. Votes can be submitted immediately using "castVote" or submitted later with "castVoteBySig" (For more info on castVoteBySig and offline signatures, see EIP-712). If the majority of votes (and a 4% quorum of UNI) vote for a proposal, the proposal may be queued in the Timelock. -- **Voting Period:** Once a proposal has been put forward, Uniswap community members will have a seven day period (the Voting Period) to cast their votes. +- **Voting Period:** Once a proposal has been created, Uniswap community members will have a seven day period (the Voting Period) to cast their votes. -- **Timelock:** All governance and other administrative actions are required to sit in the Timelock for a minimum of 2 days, after which they can be implemented. +- **Timelock:** All governance proposals must sit in the Timelock for a minimum of 2 days, after which they can be executed. diff --git a/docs/concepts/governance/03-guide-to-voting.md b/docs/concepts/governance/03-guide-to-voting.md index dad35d5584..b0b7d2039e 100644 --- a/docs/concepts/governance/03-guide-to-voting.md +++ b/docs/concepts/governance/03-guide-to-voting.md @@ -1,54 +1,58 @@ --- id: guide-to-voting -title: Beginners Guide to Voting +title: Beginners' Guide to Voting --- This guide contains everything you need to start voting in Uniswap Governance. -In order to participate you will need: +To participate you will need: - [UNI Tokens](https://uniswap.org/blog/uni/) - ETH for transaction costs -- A Crypto wallet that supports the Ethereum protocol and holds UNI Tokens. Like the [Uniswap wallet](https://wallet.uniswap.org/). +- A wallet that supports the Ethereum protocol and holds UNI tokens. (We suggest the [Uniswap wallet](https://wallet.uniswap.org/)). - To [delegate](#delegation) your tokens before the vote is active. The governance [process](./02-process.md) begins in the [Governance Forum](https://gov.uniswap.org/), where you can find proposals under consideration, gather information about community sentiment, and engage with the community. -Once a given proposal has made it through the proposal process and is ready for voting, it will appear in the Uniswap [voting dashboard](https://app.uniswap.org/#/vote) - where you can view all current and former Uniswap proposals. +Once a given proposal is ready for an onchain vote, it will appear in the Uniswap [voting dashboard](https://vote.uniswapfoundation.org/) - where you can view all current and former Uniswap proposals. ![](./images/Proposals_Overview.png) -If a proposal is currently live for voting, it will say `active` next to the title. Clicking the proposal will show all the necessary information, documentation, and discussion needed for a voter to make an informed decision. +Clicking a proposal will show all the necessary information, documentation, and discussion needed for a voter to make an informed decision, and help visualize how the voting transpired. ![](./images/Proposal_Active.png) -Once a proposal has reached the voting stage it represents real, executable code which will alter the functionality of Uniswap Governance or anything under its jurisdiction - proper care should be taken to ensure that the code represented in the proposal has been audited and is found to be in good faith. +***Once a proposal has reached the voting stage it represents real, executable code which will alter the functionality of Uniswap Governance or anything under its jurisdiction. Proper care should be taken to ensure that the code represented in the proposal has been audited and is found to be in good faith.*** ## Delegation UNI is a tradable asset and functions like most other standard ERC20 tokens, except it has a deeper power as a voting mechanism. In order for UNI to be used as a vote, the owner must first go through the delegation process. Delegating UNI binds the voting power of your tokens to an address so it may be used to vote. This address could be yourself, or a trusted party who you believe will vote in the best interest of Uniswap Governance. -A democratic consensus, in our process called “quorum”, is determined by the percentage of UNI tokens in favor of, or against, a proposal. 1% of all UNI must be cast in favor to submit a proposal, and 4% in order to pass a vote. +To submit a proposal, an address must have 1,000,000 UNI delegated to it. -To delegate your UNI tokens and enact their voting power, visit the [Uniswap voting dashboard](https://app.uniswap.org/#/vote) and click the button that says “Unlock Voting”. +For a proposal to pass, 40,000,000 UNI (from any number of addresses) must vote on it, and the majority must be in favor. -Once you click this button, you will see a screen that gives you the option to self delegate, or add a delegate address. If you wish to delegate your UNI voting power to your own address, click “Self Delegate”. +To delegate your UNI tokens, visit the [Uniswap voting dashboard](https://vote.uniswapfoundation.org/delegates). Connect your Wallet, browse delegates, and click "Delegate" on your chosen delegate. -![](./images/Unlock_Voting.png) +![](./images/Delegate_Selection.png) -When you click “Self Delegate”, a transaction will pop up in Metamask. If this doesn’t happen, double check that metamask is connected to app.uniswap.org, turn off any popup blockers, and try again. Click confirm, and once the transaction has processed, you will see that the voting dashboard homepage has changed to show the number of votes you have, and “Delegated to: Self”. +![](./images/Delegate_Button.png) -If you wish to delegate your voting power to another party, choose “Add Delegate” and enter the ethereum address of your chosen voting party. +You can also delegate to yourself if you wish to participate in voting directly. After connecting your wallet, click your wallet address, then "view my profile." From there, you can click "Delegate" on your own profile to delegate your voting power to yourself. -![](./images/Delegate_To_Address.png) +Once you click this button, you will see a screen that gives you the option to self delegate, or add a delegate address. If you wish to delegate your UNI voting power to your own address, click “Self Delegate”. You can also update your delegation at any time. -An important note: much like voter registration in a larger democracy, for UNI to be used in a vote it must be delegated before both the voting period and the preceding proposal period. This means if you want your vote to count, you must delegate it in anticipation of any proposal you may be interested in. +![](./images/Delegate_To_Self.png) -If you are unsure of how best to vote and are interested in delegating your UNI voting power to another party, you can visit the [Delegation Pitch](https://gov.uniswap.org/c/delegation-pitch/6) section of the governance forum. Here parties participating in Uniswap Governance pitch their platform and voting agenda for users to read and discuss. +When you click “Self Delegate”, a transaction will pop up in your wallet. If this doesn’t happen, double check that you have connected your wallet, turn off any popup blockers, and try again. Click "Confirm". When the transaction has processed, you will see that the updated voting power on your profile. Note that delegating your voting power is an event that is captured on chain, so setting and updating your delegation costs gas. + +An important note: much like voter registration in a larger democracy, for UNI to be used in a vote it must be delegated before both the voting period. This means if you want your vote to count, you must delegate it in anticipation of any proposal you may be interested in. + +If you are unsure of how best to vote and are interested in delegating your UNI voting power to another party, you can visit the [Delegation Pitch](https://gov.uniswap.org/c/delegation-pitch/6) section of the Governance Forum. Here parties participating in Uniswap Governance pitch their platform and voting agenda for users to read and discuss. ## Voting -If you have successfully self delegated and there is an active proposal, you are ready to vote in Uniswap Governance. +If you have self delegated and there is an active proposal, you are ready to vote in Uniswap Governance. To cast your vote, navigate to the proposals page and click on an active proposal. @@ -56,14 +60,10 @@ To cast your vote, navigate to the proposals page and click on an active proposa After reviewing the attached details and deciding your opinion, choose “Vote For”, or “Vote Against”. -![](./images/Proposal_Active.png) - Once you’ve chosen, a window will pop up allowing you to execute the vote. -![](./images/Voting.png) - -When you click to cast your vote, metamask will pop up asking you to confirm your transaction. Click “submit”, wait a bit, and check that the transaction has been confirmed. +When you click to cast your vote, your wallet will pop up asking you to confirm your transaction. Click “submit” or "confirm", wait a bit, and check that the transaction has been confirmed. You can view your votes from your profile, or on the proposal itself. -![](./images/Submitting_Vote.png) +![](./images/Vote_Confirmation.png) That’s it! Once your transaction has been confirmed, you will have cast your vote and participated in Uniswap Governance. diff --git a/docs/concepts/governance/images/Delegate_Button.png b/docs/concepts/governance/images/Delegate_Button.png new file mode 100644 index 0000000000..f30a474cb9 Binary files /dev/null and b/docs/concepts/governance/images/Delegate_Button.png differ diff --git a/docs/concepts/governance/images/Delegate_Selection.png b/docs/concepts/governance/images/Delegate_Selection.png new file mode 100644 index 0000000000..3455c450c5 Binary files /dev/null and b/docs/concepts/governance/images/Delegate_Selection.png differ diff --git a/docs/concepts/governance/images/Delegate_To_Address.png b/docs/concepts/governance/images/Delegate_To_Address.png deleted file mode 100644 index 3a28aae5fa..0000000000 Binary files a/docs/concepts/governance/images/Delegate_To_Address.png and /dev/null differ diff --git a/docs/concepts/governance/images/Delegate_To_Self.png b/docs/concepts/governance/images/Delegate_To_Self.png new file mode 100644 index 0000000000..db70af497f Binary files /dev/null and b/docs/concepts/governance/images/Delegate_To_Self.png differ diff --git a/docs/concepts/governance/images/Proposal_Active.png b/docs/concepts/governance/images/Proposal_Active.png index fda802fa1e..d829cca7a6 100644 Binary files a/docs/concepts/governance/images/Proposal_Active.png and b/docs/concepts/governance/images/Proposal_Active.png differ diff --git a/docs/concepts/governance/images/Proposal_Executed.png b/docs/concepts/governance/images/Proposal_Executed.png deleted file mode 100644 index 534c18df51..0000000000 Binary files a/docs/concepts/governance/images/Proposal_Executed.png and /dev/null differ diff --git a/docs/concepts/governance/images/Proposal_Flow.png b/docs/concepts/governance/images/Proposal_Flow.png new file mode 100644 index 0000000000..fc2fd16b1c Binary files /dev/null and b/docs/concepts/governance/images/Proposal_Flow.png differ diff --git a/docs/concepts/governance/images/Proposals_Overview.png b/docs/concepts/governance/images/Proposals_Overview.png index d9bb154209..a12c9261bb 100644 Binary files a/docs/concepts/governance/images/Proposals_Overview.png and b/docs/concepts/governance/images/Proposals_Overview.png differ diff --git a/docs/concepts/governance/images/Submitting_Vote.png b/docs/concepts/governance/images/Submitting_Vote.png deleted file mode 100644 index 0126e2a587..0000000000 Binary files a/docs/concepts/governance/images/Submitting_Vote.png and /dev/null differ diff --git a/docs/concepts/governance/images/Unlock_Voting.png b/docs/concepts/governance/images/Unlock_Voting.png deleted file mode 100644 index 753a08e48b..0000000000 Binary files a/docs/concepts/governance/images/Unlock_Voting.png and /dev/null differ diff --git a/docs/concepts/governance/images/Unlocking_Votes.png b/docs/concepts/governance/images/Unlocking_Votes.png deleted file mode 100644 index ed271d1b80..0000000000 Binary files a/docs/concepts/governance/images/Unlocking_Votes.png and /dev/null differ diff --git a/docs/concepts/governance/images/Vote_Confirmation.png b/docs/concepts/governance/images/Vote_Confirmation.png new file mode 100644 index 0000000000..d429ec81b0 Binary files /dev/null and b/docs/concepts/governance/images/Vote_Confirmation.png differ diff --git a/docs/concepts/governance/images/Voting.png b/docs/concepts/governance/images/Voting.png deleted file mode 100644 index 6513b92611..0000000000 Binary files a/docs/concepts/governance/images/Voting.png and /dev/null differ diff --git a/docs/concepts/governance/images/gov_diagram-1.png b/docs/concepts/governance/images/gov_diagram-1.png deleted file mode 100644 index 1670841c1f..0000000000 Binary files a/docs/concepts/governance/images/gov_diagram-1.png and /dev/null differ