|
2 | 2 |
|
3 | 3 | Penumbra has a decentralized governance system intended to help the community of
|
4 | 4 | Penumbra users and stakeholders coordinate and express their opinions about the
|
5 |
| -future of the protocol. As a decentralized protocol, no single entity is in |
6 |
| -control of the network. Penumbra's governance system does not have control over |
| 5 | +future of the protocol. As a decentralized protocol, no single entity is in |
| 6 | +control of the network. Penumbra's governance system does not have control over |
7 | 7 | the network either, and acts as a coordination and signaling mechanism for the
|
8 | 8 | community.
|
9 | 9 |
|
10 | 10 | Penumbra's governance system is modeled after the design of the Cosmos SDK:
|
11 | 11 | validators cast default votes on behalf of their delegators, which delegators
|
12 | 12 | can permissionlessly override.
|
13 | 13 |
|
| 14 | +## Proposals |
| 15 | + |
| 16 | +Anyone can submit a governance proposal by depositing the required deposit of tokens. This permissionless model enables all stakeholders to participate in the governance process. |
| 17 | + |
| 18 | +### Deposit |
| 19 | + |
| 20 | +A proposal submitter must submit an escrow deposit. This deposit may be claimed after the voting concludes whether or not the proposal passes, or if the proposal is withdrawn. |
| 21 | + |
| 22 | +The deposit cannot be returned if the number of no votes exceeds the network's current proposal slash threshold parameter. The current required proposal deposit is 10 UM (set by the `proposalDepositAmount` parameter) |
| 23 | + |
14 | 24 | ### Proposal Types
|
15 | 25 |
|
16 | 26 | There are several types of proposal:
|
17 | 27 |
|
18 | 28 | - **Signaling**: the primary type of proposal, which has no effect on the chain. Signaling proposals allow collecting community sentiment as part of the process for reaching consensus.
|
19 | 29 | - **Upgrade**: a special kind of signaling proposal that also coordinates a chain halt. Once the chain halts, full node operators can choose whether to apply an upgrade to a new software version.
|
20 |
| -- **Emergency**: a special kind of signaling proposal that also coordinates a chain halt. Emergency proposals have special acceptance criteria but limited powers, described below. |
| 30 | +- **Emergency**: a special kind of signaling proposal that also optionally coordinates a chain halt. Emergency proposals have special acceptance criteria but limited powers, described below. |
21 | 31 | - **Parameter Change**: adjusts technical parameters for the chain's operation.
|
22 | 32 | - **(Un)Freeze IBC Client**: allows (un)freezing an IBC client for a counterparty chain, e.g., in the event the community determines that a counterparty chain was compromised.
|
23 | 33 | - **Community Pool Spend**: spends funds from the community pool. _Currently disabled via chain parameter pending community consensus around the role of the community pool and to minimize protocol risk_.
|
24 | 34 |
|
25 |
| -To deter spam, proposal submission requires posting a deposit, which can be |
26 |
| -slashed if the community rejects the proposal with an overwhelming margin (on |
27 |
| -mainnet, >80% rejection). |
28 |
| - |
29 |
| -### Voting |
| 35 | +## Voting |
30 | 36 |
|
31 | 37 | Both delegators and validators can vote on proposals. Validator votes are
|
32 |
| -public, and act as default votes for their delegators. Delegator votes are |
33 |
| -private, and override the validator's vote. Delegators can vote only if they |
34 |
| -held their delegation tokens when the proposal was submitted. |
| 38 | +public, attributable, and act as default votes for their delegators. Delegator votes are |
| 39 | +anonymous, and override their portion of the validator's vote. Delegators can vote only if they |
| 40 | +held delegation tokens to active validators when the proposal was submitted. |
| 41 | + |
| 42 | +### Vote Types |
| 43 | + |
| 44 | +There are three types of vote: |
| 45 | +* `Yes` |
| 46 | +* `No` |
| 47 | +* `Abstain` |
| 48 | + |
| 49 | +Penumbra does not have a `NoWithVeto` vote type. Proposal deposits will be slashed if the number of no votes exceeds the network's current proposal slash threshold parameter (80% by default, set by the `proposalSlashThreshold` parameter). The slashing mechanism exists to deter spam proposals. |
| 50 | + |
| 51 | +Votes cannot be changed after they are cast. |
| 52 | + |
| 53 | +### Pass Criteria |
| 54 | + |
| 55 | +At the end of the voting period, a proposal passes, fails, or is slashed. The proposal can also be withdrawn before the voting period ends. A withdrawn proposal can still be slashed. This diagram illustrates the proposal lifecycle: |
| 56 | + |
| 57 | +<picture> |
| 58 | + <img src="./images/governance-diagram.png" /> |
| 59 | +</picture> |
35 | 60 |
|
36 | 61 | Non-emergency proposals pass as long as they achieve:
|
37 | 62 |
|
38 |
| -- **Duration**: voting ends after a specified period, allowing delegators to vote (initially 48h); |
39 |
| -- **Quorum**: the minimum percentage of staked tokens that must have voted (40% on mainnet); |
40 |
| -- **Threshold**: the percentage of YES votes out of all votes must be above this threshold (67% on mainnet). |
| 63 | +- **Duration**: voting ends after a specified period, allowing delegators to vote (initially 48h, set by the `proposalVotingBlocks` parameter); |
| 64 | +- **Quorum**: the minimum percentage of staked tokens that must have voted (40% on mainnet, set by the `proposalValidQuorum` parameter); |
| 65 | +- **Threshold**: the percentage of YES votes out of all votes must be above this threshold (67% on mainnet, set by the `proposalPassThreshold` parameter). |
41 | 66 |
|
42 | 67 | Emergency proposals have special criteria: they pass immediately as soon as
|
43 | 68 | 1/3+1 of the stake weight votes YES, without waiting for delegator votes.
|
|
0 commit comments