From ecf71233c32bc294690fc05590bf206bf3666180 Mon Sep 17 00:00:00 2001 From: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Date: Wed, 11 Aug 2021 23:08:16 +0200 Subject: [PATCH] More standard staking miner deposits (#3621) --- polkadot/runtime/kusama/src/lib.rs | 21 ++++++++++++++++----- polkadot/runtime/polkadot/src/lib.rs | 19 +++++++++++++------ polkadot/runtime/westend/src/lib.rs | 7 ++----- 3 files changed, 31 insertions(+), 16 deletions(-) diff --git a/polkadot/runtime/kusama/src/lib.rs b/polkadot/runtime/kusama/src/lib.rs index b89d41d81d..357ba07d23 100644 --- a/polkadot/runtime/kusama/src/lib.rs +++ b/polkadot/runtime/kusama/src/lib.rs @@ -345,11 +345,8 @@ parameter_types! { // signed config pub const SignedMaxSubmissions: u32 = 16; - pub const SignedDepositBase: Balance = deposit(1, 0); - // A typical solution occupies within an order of magnitude of 50kb. - // This formula is currently adjusted such that a typical solution will spend an amount equal - // to the base deposit for every 50 kb. - pub const SignedDepositByte: Balance = deposit(1, 0) / (50 * 1024); + pub const SignedDepositBase: Balance = deposit(2, 0); + pub const SignedDepositByte: Balance = deposit(0, 10) / 1024; // Each good submission will get 1/10 KSM as reward pub SignedRewardBase: Balance = UNITS / 10; // fallback: emergency phase. @@ -1921,3 +1918,17 @@ sp_api::impl_runtime_apis! { } } } + +#[cfg(test)] +mod tests_fess { + use super::*; + use sp_runtime::assert_eq_error_rate; + + #[test] + fn signed_deposit_is_sensible() { + // ensure this number does not change, or that it is checked after each change. + // a 1 MB solution should need around 0.16 KSM deposit + let deposit = SignedDepositBase::get() + (SignedDepositByte::get() * 1024 * 1024); + assert_eq_error_rate!(deposit, UNITS * 16 / 100, UNITS / 100); + } +} diff --git a/polkadot/runtime/polkadot/src/lib.rs b/polkadot/runtime/polkadot/src/lib.rs index 96df94b18e..2388edcc88 100644 --- a/polkadot/runtime/polkadot/src/lib.rs +++ b/polkadot/runtime/polkadot/src/lib.rs @@ -350,11 +350,10 @@ parameter_types! { // signed config pub const SignedMaxSubmissions: u32 = 16; - pub const SignedDepositBase: Balance = deposit(1, 0); - // A typical solution occupies within an order of magnitude of 50kb. - // This formula is currently adjusted such that a typical solution will spend an amount equal - // to the base deposit for every 50 kb. - pub const SignedDepositByte: Balance = deposit(1, 0) / (50 * 1024); + // 40 DOTs fixed deposit.. + pub const SignedDepositBase: Balance = deposit(2, 0); + // 0.01 DOT per KB of solution data. + pub const SignedDepositByte: Balance = deposit(0, 10) / 1024; // Each good submission will get 1 DOT as reward pub SignedRewardBase: Balance = 1 * UNITS; // fallback: emergency phase. @@ -1549,7 +1548,7 @@ mod test_fees { use pallet_transaction_payment::Multiplier; use parity_scale_codec::Encode; use separator::Separatable; - use sp_runtime::FixedPointNumber; + use sp_runtime::{assert_eq_error_rate, FixedPointNumber}; #[test] fn payout_weight_portion() { @@ -1674,6 +1673,14 @@ mod test_fees { println!("can support {} nominators to yield a weight of {}", active, weight_with(active)); assert!(active > target_voters, "we need to reevaluate the weight of the election system"); } + + #[test] + fn signed_deposit_is_sensible() { + // ensure this number does not change, or that it is checked after each change. + // a 1 MB solution should take (40 + 10) DOTs of deposit. + let deposit = SignedDepositBase::get() + (SignedDepositByte::get() * 1024 * 1024); + assert_eq_error_rate!(deposit, 50 * DOLLARS, DOLLARS); + } } #[cfg(test)] diff --git a/polkadot/runtime/westend/src/lib.rs b/polkadot/runtime/westend/src/lib.rs index 03924f55d8..7e1d5125a6 100644 --- a/polkadot/runtime/westend/src/lib.rs +++ b/polkadot/runtime/westend/src/lib.rs @@ -331,11 +331,8 @@ parameter_types! { // signed config pub const SignedMaxSubmissions: u32 = 128; - pub const SignedDepositBase: Balance = deposit(1, 0); - // A typical solution occupies within an order of magnitude of 50kb. - // This formula is currently adjusted such that a typical solution will spend an amount equal - // to the base deposit for every 50 kb. - pub const SignedDepositByte: Balance = deposit(1, 0) / (50 * 1024); + pub const SignedDepositBase: Balance = deposit(2, 0); + pub const SignedDepositByte: Balance = deposit(0, 10) / 1024; // Each good submission will get 1 WND as reward pub SignedRewardBase: Balance = 1 * UNITS; // fallback: emergency phase.