|
| 1 | +# RFC-00xx: Referenda Confirmation by Candle Auction |
| 2 | + |
| 3 | +| | | |
| 4 | +| --------------- | ---------------------------------------------------------------- | |
| 5 | +| **Start Date** | 22 March 2024 | |
| 6 | +| **Description** | Proposal to decide polls after confirm period via candle auction | |
| 7 | +| **Authors** | Pablo Dorado | |
| 8 | + |
| 9 | +## Summary |
| 10 | + |
| 11 | +In an attempt to mitigate risks derived from unwanted behaviours around long ongoing periods on |
| 12 | +referenda, this proposal describes how to finalize and decide a result of a poll via a |
| 13 | +mechanism similar to candle auctions. |
| 14 | + |
| 15 | +## Motivation |
| 16 | + |
| 17 | +Referenda protocol provide permissionless and efficient mechanisms to enable governance actors to |
| 18 | +decide the future of the blockchains around Polkadot network. However, they pose a series of risks |
| 19 | +derived from the game theory perspective around these mechanisms. One of them being where an actor |
| 20 | +uses the the public nature of the tally of a poll as a way of determining the best point in time to |
| 21 | +alter a poll in a meaningful way. |
| 22 | + |
| 23 | +While this behaviour is expected based on the current design of the referenda logic, given the |
| 24 | +recent extension of ongoing times (up to 1 month), the incentives for a bad actor to cause losses |
| 25 | +on a proposer, reflected as wasted cost of opportunity increase, and thus, this otherwise |
| 26 | +reasonable outcome becomes an attack vector, a potential risk to mitigate, especially when such |
| 27 | +attack can compromise critical guarantees of the protocol (such as its upgradeability). |
| 28 | + |
| 29 | +To mitigate this, the referenda underlying mechanisms should incentive actors to cast their votes |
| 30 | +on a poll as early as possible. This proposal's approach suggests using a Candle Auction that will |
| 31 | +be determined right after the confirm period finishes, thus decreasing the chances of actors to |
| 32 | +alter the results of a poll on confirming state, and instead incentivizing them to cast their votes |
| 33 | +earlier, on deciding state. |
| 34 | + |
| 35 | +## Stakeholders |
| 36 | + |
| 37 | +- **Governance actors**: Tokenholders and Collectives that vote on polls that have this mechanism |
| 38 | + enabled should be aware this change affects the outcome of failing a poll on its confirm period. |
| 39 | +- **Runtime Developers**: This change requires runtime developers to change configuration |
| 40 | + parameters for the Referenda Pallet. |
| 41 | +- **Tooling and UI developers**: Applications that interact with referenda must update to reflect |
| 42 | + the new `Finalizing` state. |
| 43 | + |
| 44 | +## Explanation |
| 45 | + |
| 46 | +Currently, the process of a referendum/poll |
| 47 | + |
| 48 | +```mermaid |
| 49 | +flowchart LR |
| 50 | + S[Submit] --> P[Preparing] |
| 51 | + P --> D[Deciding] |
| 52 | + D --> |Passing| C[Confirmation] |
| 53 | + C --> |Failing — while on decision period| D |
| 54 | + D --> |Failing| R[Rejected] |
| 55 | + C --> |Failing — after decision period| R |
| 56 | + C --> A[Approved] |
| 57 | +``` |
| 58 | + |
| 59 | +This specification proposes including a Finalization state for a poll. This state is described as |
| 60 | +the moment after and extends the decision for a couple of blocks, until is safe to consider the VRF |
| 61 | +used to determine the candle block is not known before the ongoing period (decision/confirmation) |
| 62 | +was over. |
| 63 | + |
| 64 | +```mermaid |
| 65 | +flowchart LR |
| 66 | + S[Submit] --> P[Preparing] |
| 67 | + P --> D[Deciding] |
| 68 | + D --> |Passing| C[Confirmation] |
| 69 | + C --> |Failing — while on decision period| D |
| 70 | + D --> |Failing| R[Rejected] |
| 71 | + C --> FF[Finalization] |
| 72 | + FF --> |Candle on/after passing| A[Approved] |
| 73 | + FF --> |Candle on/after failing| R |
| 74 | +
|
| 75 | + style FF fill: #0a0, color: #fff |
| 76 | +``` |
| 77 | + |
| 78 | +## Drawbacks |
| 79 | + |
| 80 | +<!-- TODO: Add if any --> |
| 81 | + |
| 82 | +## Prior Art and References |
| 83 | + |
| 84 | +> TODO: Mention Prior Art |
| 85 | +
|
| 86 | +- `pallet-auction` |
| 87 | + |
| 88 | +## Testing, Security, and Privacy |
| 89 | + |
| 90 | +> TODO: Mention which testing is done (and will be added on the `polkadot-sdk` PR. |
| 91 | +
|
| 92 | +## Unresolved Questions |
| 93 | + |
| 94 | +<!-- TODO: Add if any --> |
| 95 | + |
| 96 | +## Future Directions and Related Material |
| 97 | + |
| 98 | +<!-- TODO: Add if any --> |
0 commit comments