# 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