Skip to content

Commit 32bf5b4

Browse files
committed
draft: referenda confirmation by candle auction
1 parent fe8db0f commit 32bf5b4

File tree

1 file changed

+98
-0
lines changed

1 file changed

+98
-0
lines changed
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
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

Comments
 (0)