Closed bwhm closed 4 years ago
Using the following ProposalParamemeters
, that I interpret as outlined below:
pub struct ProposalParameters<BlockNumber, Balance> {
/// During this period, votes can be accepted
pub voting_period: BlockNumber,
/// A pause before execution of the approved proposal. Zero means approved proposal would be
/// executed immediately.
pub grace_period: BlockNumber,
/// Quorum percentage of approving voters required to pass the proposal.
pub approval_quorum_percentage: u32,
/// Approval votes percentage threshold to pass the proposal.
pub approval_threshold_percentage: u32,
/// Quorum percentage of voters required to slash the proposal.
pub slashing_quorum_percentage: u32,
/// Slashing votes percentage threshold to slash the proposal.
pub slashing_threshold_percentage: u32,
/// Proposal stake
pub required_stake: Option<Balance>,
}
Say we have 50 CMs:
approval_quorum_percentage
means the absolute percentage required to pass. If this parameter is set to 60
, this will return true
as soon as 30 (not 31?) voters have voted yes.approval_threshold_percentage
means that we require a percentage of the voters vote yes. If this parameter is set to 80
, this will return true
while more than 80% of the votes are yes. Regardless of the amount of votes.
true
false
approval_quorum_percentage
and slashing_quorum_percentage
work the same way.approval_threshold_percentage
and slashing_threshold_percentage
work the same way.For a proposal to pass, both approval_quorum_percentage
and approval_threshold_percentage
has to be true
at the same time. Again, let:
approval_quorum_percentage
= 60approval_threshold_percentage
= 80
Assume the following voting scenario, where yes=n
and no=m
means at a specific time, n
CMs have voted approve
, and m
CMs have voted reject/slash
. I further assume abstain just matters for approval_threshold_percentage
:
First vote in:yes=1
& no=0
-> false,true
-> false
29 votes in:yes=29
& no=0
-> false,true
-> false
37 votes in:yes=29
& no=8
-> false,false
-> false
38 votes in:yes=30
& no=8
-> true,false
-> false
40 votes in:yes=32
& no=8
-> true,true
-> true
...the vote passes, and will be active after end of grace_period
Same logic for slashing, so we must ensure both cannot occur simultaneously.
"Default" values
voting_period
to 43200 (three days)approval_*
to 66% / 80%slashing_*
to 60% / 80%required_stake
to 0.25% (of issuance)As for other values that needs to be correlated with the issuance, I'm setting required_stake
as a percentage of issuance. This is probably ideal either, but should be better than a fixed value.
Proposal Parameters | Value |
---|---|
voting_period |
43200 |
grace_period |
0 |
approval_quorum_percentage |
50% |
approval_threshold_percentage |
75% |
slashing_quorum_percentage |
60% |
slashing_threshold_percentage |
80% |
required_stake |
0.1% |
Rationale:
grace_period
periodapproval_quorum_percentage
should be lower for good responsiveness, but require a higher approval_threshold_percentage
if so.uptime%
and frequency of expired provider
@mnaamani ?required_stake
could be quite low, as I see no reason to discourage theseProposal Parameters | Value |
---|---|
voting_period |
43200 |
grace_period |
14400 |
approval_quorum_percentage |
75% |
approval_threshold_percentage |
80% |
slashing_quorum_percentage |
60% |
slashing_threshold_percentage |
80% |
required_stake |
0.25% |
Rationale:
Proposal Parameters | Value |
---|---|
voting_period |
43200 |
grace_period |
0 |
approval_quorum_percentage |
66% |
approval_threshold_percentage |
80% |
slashing_quorum_percentage |
60% |
slashing_threshold_percentage |
80% |
required_stake |
0.25% |
Rationale:
grace_period
.Proposal Parameters | Value |
---|---|
voting_period |
43200 |
grace_period |
0 |
approval_quorum_percentage |
66% |
approval_threshold_percentage |
80% |
slashing_quorum_percentage |
60% |
slashing_threshold_percentage |
80% |
required_stake |
0.25% |
Rationale:
grace_period
, as the lead could cause harm during this period.Proposal Parameters | Value |
---|---|
voting_period |
43200 |
grace_period |
0 |
approval_quorum_percentage |
50% |
approval_threshold_percentage |
75% |
slashing_quorum_percentage |
60% |
slashing_threshold_percentage |
80% |
required_stake |
0.25% |
Rationale:
approval_*
.Dropped Will not be implemented as a proposal.
Proposal Parameters | Value |
---|---|
voting_period |
72000 |
grace_period |
72000 |
approval_quorum_percentage |
80% |
approval_threshold_percentage |
100% |
slashing_quorum_percentage |
60% |
slashing_threshold_percentage |
80% |
required_stake |
1% |
Rationale:
voting_period
to encourage research and discussion.grace_period
to avoid collapse, and allowing adjustments.approval_quorum_percentage
, and 100% approval_threshold_percentage
Proposal Parameters | Value |
---|---|
voting_period |
72000 |
grace_period |
* +1 |
approval_quorum_percentage |
66% |
approval_threshold_percentage |
80% |
slashing_quorum_percentage |
60% |
slashing_threshold_percentage |
80% |
required_stake |
0.75% |
Rationale:
voting_period
to encourage research and discussion.grace_period
to allow the next council to revert any "bad" changes.
*
indicates this should match whatever cycle length we initially set Constantinople
. (For rome, this would mean 201600
)newTermDuration
from state, and add +1, that would be even nicer, but not worth the work IMO. Maybe add a note in the code?default
values are ok.Proposal Parameters | Value |
---|---|
voting_period |
72000 |
grace_period |
14400 |
approval_quorum_percentage |
66% |
approval_threshold_percentage |
80% |
slashing_quorum_percentage |
60% |
slashing_threshold_percentage |
80% |
required_stake |
0.25% |
Rationale:
grace_period
for each spending proposal individually, but I suppose it can be solved by milestones and Text/signal Proposal
voting_period
to allow for discussions, and a (short) grace_period
to avoid inflation eating too much, while still giving the option to veto in case of abuse.Proposal Parameters | Value |
---|---|
voting_period |
72000 |
grace_period |
0. |
approval_quorum_percentage |
66% |
approval_threshold_percentage |
80% |
slashing_quorum_percentage |
60% |
slashing_threshold_percentage |
80% |
required_stake |
0.25% |
Rationale:
Instead of updating the comment, I'm making a new comment. Won't elaborate here, just numbers:
Proposal Parameters | Value |
---|---|
voting_period |
43200 |
grace_period |
0 |
approval_quorum_percentage |
50% |
approval_threshold_percentage |
75% |
slashing_quorum_percentage |
60% |
slashing_threshold_percentage |
80% |
required_stake |
25000 |
Proposal Parameters | Value |
---|---|
voting_period |
43200 |
grace_period |
14400 |
approval_quorum_percentage |
66% |
approval_threshold_percentage |
80% |
slashing_quorum_percentage |
60% |
slashing_threshold_percentage |
80% |
required_stake |
100000 |
Proposal Parameters | Value |
---|---|
voting_period |
43200 |
grace_period |
14400 |
approval_quorum_percentage |
66% |
approval_threshold_percentage |
80% |
slashing_quorum_percentage |
60% |
slashing_threshold_percentage |
80% |
required_stake |
100000 |
Proposal Parameters | Value |
---|---|
voting_period |
43200 |
grace_period |
0 |
approval_quorum_percentage |
60% |
approval_threshold_percentage |
75% |
slashing_quorum_percentage |
60% |
slashing_threshold_percentage |
80% |
required_stake |
50000 |
Proposal Parameters | Value |
---|---|
voting_period |
43200 |
grace_period |
0 |
approval_quorum_percentage |
60% |
approval_threshold_percentage |
75% |
slashing_quorum_percentage |
60% |
slashing_threshold_percentage |
80% |
required_stake |
50000 |
Proposal Parameters | Value |
---|---|
voting_period |
72000 |
grace_period |
72000 |
approval_quorum_percentage |
80% |
approval_threshold_percentage |
100% |
slashing_quorum_percentage |
60% |
slashing_threshold_percentage |
80% |
required_stake |
1000000 |
Proposal Parameters | Value |
---|---|
voting_period |
72000 |
grace_period |
100800 |
approval_quorum_percentage |
66% |
approval_threshold_percentage |
80% |
slashing_quorum_percentage |
60% |
slashing_threshold_percentage |
80% |
required_stake |
200000 |
Proposal Parameters | Value |
---|---|
voting_period |
72000 |
grace_period |
14400 |
approval_quorum_percentage |
60% |
approval_threshold_percentage |
80% |
slashing_quorum_percentage |
60% |
slashing_threshold_percentage |
80% |
required_stake |
25000 |
Proposal Parameters | Value |
---|---|
voting_period |
72000 |
grace_period |
0 |
approval_quorum_percentage |
60% |
approval_threshold_percentage |
80% |
slashing_quorum_percentage |
60% |
slashing_threshold_percentage |
80% |
required_stake |
25000 |
Released.
See #234