# OpenGov Treasury Proposals
Basic Units for Kusama:
https://github.com/paritytech/polkadot/blob/3fbf6e4698e6abcc621095c8bbeefe37f70568be/runtime/kusama/constants/src/lib.rs#L26-L32
CENTS: 333uKSM (was 33.3 uKSM)
QUID: 33.3mKSM (was 3.33 mKSM)
GRAND: 33.3 KSM (was 3.33 KSM)
# Treasury Spend Origins
Origins
https://github.com/paritytech/polkadot/blob/b984c40cc5217eda68f630e329320dc26578a0bc/runtime/kusama/src/governance/origins.rs#L55-L60
Limits:
https://github.com/paritytech/polkadot/blob/b984c40cc5217eda68f630e329320dc26578a0bc/runtime/kusama/src/governance/origins.rs#L173-L175
SmallSpender: 10 GRAND = 333 KSM
MediumSpender: 100 GRAND = 3333 KSM
BigSpender: 1000 GRAND = 33.3 kKSM
Treasurer: 10'000 GRAND = 333.3 kKSM
# Referenda Curves
https://github.com/paritytech/polkadot/blob/b984c40cc5217eda68f630e329320dc26578a0bc/runtime/kusama/src/governance/tracks.rs#L55-L62
## whitelisted caller (for Encointer runtime upgrade)
SubmissionDeposit = 100KSM, soon: 1 QUID = 33.3mKSM
decision_deposit = 100 GRAND = 3'333 KSM
DecisionPeriod = 14 days
ConfirmationPeriod = 3 hours
MinEnactmentPeriod = 3h
min support: 5%
## treasury
### BigSpender
SubmissionDeposit = 100KSM, soon: 1 QUID = 33.3mKSM
decision_deposit = 5 GRAND = 166 KSM
decision_period: 14 * DAYS,
confirm_period: 48 * HOURS,
min_enactment_period: 24 * HOURS,
### curves
`cargo test -- --nocapture` output for referenda pallet:
```
Curve Small Spend Approval := Linear[(0%, 100%) -> (60.7142857%, 50%) -> (100%, 50%)]:
t + 0h: 100%
t + 1h: 99.877451%
t + 2h: 99.754902%
t + 3h: 99.632353%
t + 6h: 99.264706%
t + 12h: 98.5294119%
t + 24h: 97.0588236%
t + 2d: 94.1176471%
t + 3d: 91.1764706%
t + 7d: 79.4117648%
t + 14d: 58.8235295%
t + 21d: 50%
t + 26d: 50%
t + 28d: 50%
99.9% threshold: 49 minutes
99% threshold: 8 hours
95% threshold: 40 hours
90% threshold: 3 days 9 hours
75% threshold: 8 days 12 hours
60% threshold: 13 days 14 hours
Curve Small Spend Support := Reciprocal[factor of FixedI64(0.007892829), x_offset of FixedI64(0.015544040), y_offset of FixedI64(-0.007772020)]:
t + 0h: 50.0000026%
t + 1h: 45.5636061%
t + 2h: 41.8401359%
t + 3h: 38.6705228%
t + 6h: 31.4744813%
t + 12h: 22.8531862%
t + 24h: 14.6209386%
t + 2d: 8.2978722%
t + 3d: 5.6561084%
t + 7d: 2.1951219%
t + 14d: 0.7537688%
t + 21d: 0.2538071%
t + 26d: 0.0588005%
t + 28d: 0%
30% threshold: 6 hours 47 minutes
10% threshold: 38 hours
3% threshold: 5 days 9 hours
1% threshold: 12 days
0.1% threshold: 24 days 18 hours
0.01% threshold: 27 days 15 hours
Curve Mid Spend Approval := Linear[(0%, 100%) -> (82.1428571%, 50%) -> (100%, 50%)]:
t + 0h: 100%
t + 1h: 99.9094204%
t + 2h: 99.8188407%
t + 3h: 99.728261%
t + 6h: 99.4565218%
t + 12h: 98.9130436%
t + 24h: 97.826087%
t + 2d: 95.652174%
t + 3d: 93.4782609%
t + 7d: 84.7826087%
t + 14d: 69.5652174%
t + 21d: 54.3478261%
t + 26d: 50%
t + 28d: 50%
99.9% threshold: 1 hours 6 minutes
99% threshold: 11 hours
95% threshold: 55 hours
90% threshold: 4 days 14 hours
75% threshold: 11 days 12 hours
60% threshold: 18 days 9 hours
Curve Mid Spend Support := Reciprocal[factor of FixedI64(0.014377233), x_offset of FixedI64(0.027972031), y_offset of FixedI64(-0.013986016)]:
t + 0h: 50.0000008%
t + 1h: 47.4037456%
t + 2h: 45.0571639%
t + 3h: 42.9258925%
t + 6h: 37.5634538%
t + 12h: 29.9727543%
t + 24h: 21.1764724%
t + 2d: 13.0653279%
t + 3d: 9.2421451%
t + 7d: 3.7735853%
t + 14d: 1.3245034%
t + 21d: 0.4494382%
t + 26d: 0.1044386%
Agenda #6: [Some(ScheduledV3 { maybe_id: None, priority: 128, call: MaybeHashed::Value(Call::Referenda(Call::nudge_referendum { index: 1 })), maybe_periodic: None, origin: OriginCaller::system(RawOrigin::Root), _phantom: PhantomData }), Some(ScheduledV3 { maybe_id: None, priority: 128, call: MaybeHashed::Value(Call::Referenda(Call::nudge_referendum { index: 2 })), maybe_periodic: None, origin: OriginCaller::system(RawOrigin::Root), _phantom: PhantomData }), Some(ScheduledV3 { maybe_id: None, priority: 128, call: MaybeHashed::Value(Call::Referenda(Call::nudge_referendum { index: 3 })), maybe_periodic: None, origin: OriginCaller::system(RawOrigin::Root), _phantom: PhantomData }), Some(ScheduledV3 { maybe_id: None, priority: 128, call: MaybeHashed::Value(Call::Referenda(Call::nudge_referendum { index: 4 })), maybe_periodic: None, origin: OriginCaller::system(RawOrigin::Root), _phantom: PhantomData })]
t + 28d: 0%
30% threshold: 11 hours
10% threshold: 65 hours
3% threshold: 8 days 8 hours
1% threshold: 16 days
0.1% threshold: 26 days 1 hours
0.01% threshold: 27 days 19 hours
Curve Big Spend Approval := Linear[(0%, 100%) -> (100%, 50%) -> (100%, 50%)]:
t + 0h: 100%
t + 1h: 99.9255953%
t + 2h: 99.8511905%
t + 3h: 99.7767858%
t + 6h: 99.5535715%
t + 12h: 99.1071429%
t + 24h: 98.2142858%
t + 2d: 96.4285715%
t + 3d: 94.6428572%
t + 7d: 87.5%
t + 14d: 75%
t + 21d: 62.5%
t + 26d: 53.5714286%
t + 28d: 50%
99.9% threshold: 1 hours 21 minutes
99% threshold: 13 hours
95% threshold: 67 hours
90% threshold: 5 days 14 hours
75% threshold: 14 days
60% threshold: 22 days 9 hours
Curve Big Spend Support := Reciprocal[factor of FixedI64(0.028326977), x_offset of FixedI64(0.053763445), y_offset of FixedI64(-0.026881723)]:
t + 0h: 50.0000008%
test tests::instaconfirm_then_reconfirm_with_elapsed_trigger_works ... ok
t + 1h: 48.5809452%
t + 2h: 47.236324%
t + 3h: 45.9604303%
t + 6h: 42.496173%
t + 12h: 36.8632725%
t + 24h: 28.9699587%
t + 2d: 19.9386516%
t + 3d: 14.9164688%
t + 7d: 6.6371686%
t + 14d: 2.4271846%
t + 21d: 0.8361204%
t + 26d: 0.1954652%
t + 28d: 0%
30% threshold: 22 hours
10% threshold: 4 days 17 hours
3% threshold: 12 days 10 hours
1% threshold: 20 days
0.1% threshold: 26 days 22 hours
0.01% threshold: 27 days 21 hours```
```
So, for big spend (max 3'333 KSM):
BigSpender:
Approval:
start with 100%, decrease to 50% over (small: 17,mid: 23, big: 28) days
Support:
Reciprocal curve that goes down from 50% to ~=0% support within (12,16,20) days. Because of the decision period of 48h, a passing threshold must be reached and kept after 26d at the latest
So we always need 0.2% support (pure KSM, ignoring conviction) for BigSpend
at current money supply of 13M KSM, we need 26kKSM tournout (currently, 650k$).
Our common good vote yielded >30kKSM, so it may be possible
But: Gav expects some whales to cast a default *Nay* vote on every referendum to make sure that no referendum can pass just by accident.
Still, I would expect that turnout is our biggest challenge, and there, these default-Nay could even help us
Check curves visualized here:
https://docs.google.com/spreadsheets/d/1V5o-VYVT2C0B1zj_9VnWjti6USwig1v1ND-96otA1Ug/edit#gid=310803467
As our treasury proposal will likely by >> 3'333 KSM, we need the `Treasurer` Origin:
Treasurer has a linear support curve which reaches 0.22% 3h (confirmation time) before end of decision period
Currently, 480kKSM are available in KSM treasury.
A proposal of 1M$ would be asking for 8% of the entire treasury, or entire 3 weeks of the year of inflation income
A 1M$ proposal will probably not pass
## update for runtime 9035
```
Curve Big Spend Support := Reciprocal[factor of FixedI64(0.028326977), x_offset of FixedI64(0.053763445), y_offset of FixedI64(-0.026881723)]:
t + 0h: 50.0000008%
t + 1h: 47.236324%
t + 2h: 44.7481262%
t + 3h: 42.496173%
t + 6h: 36.8632725%
t + 12h: 28.9699587%
t + 24h: 19.9386516%
t + 1d: 19.9386516%
t + 3d: 7.8796567%
t + 7d: 2.4271846%
t + 10d: 1%
t + 12d: 0.4215851%
t + 14d: 0%
30% threshold: 11 hours
10% threshold: 56 hours
3% threshold: 6 days 5 hours
1% threshold: 10 days
0.1% threshold: 13 days 11 hours
0.01% threshold: 13 days 22 hours
```
This means we need to reach 0.4215851% after 12d!!!!
active supply is 12.78MKSM, therefore, support has to reach 53.878kKSM