Browse Source

runtime: Migrate ‘text’ proposal params.

Shamil Gadelshin 4 years ago
parent
commit
c09febc3f8

+ 0 - 2
node/src/chain_spec/mod.rs

@@ -340,8 +340,6 @@ pub fn testnet_genesis(
         versioned_store_permissions: Some(versioned_store_permissions_config),
         content_wg: Some(content_working_group_config),
         proposals_codex: Some(ProposalsCodexConfig {
-            text_proposal_voting_period: cpcp.text_proposal_voting_period,
-            text_proposal_grace_period: cpcp.text_proposal_grace_period,
             spending_proposal_voting_period: cpcp.spending_proposal_voting_period,
             spending_proposal_grace_period: cpcp.spending_proposal_grace_period,
             add_working_group_opening_proposal_voting_period: cpcp

+ 4 - 7
runtime-modules/proposals/codex/src/lib.rs

@@ -139,6 +139,9 @@ pub trait Trait:
     type RuntimeUpgradeProposalParameters: Get<
         ProposalParameters<Self::BlockNumber, BalanceOf<Self>>,
     >;
+
+    /// 'Text' proposal parameters
+    type TextProposalParameters: Get<ProposalParameters<Self::BlockNumber, BalanceOf<Self>>>;
 }
 
 /// Balance alias for GovernanceCurrency from `common` module. TODO: replace with BalanceOf
@@ -229,12 +232,6 @@ decl_storage! {
         pub ProposalDetailsByProposalId get(fn proposal_details_by_proposal_id):
             map hasher(blake2_128_concat) T::ProposalId => ProposalDetailsOf<T>;
 
-        /// Voting period for the 'text' proposal
-        pub TextProposalVotingPeriod get(fn text_proposal_voting_period) config(): T::BlockNumber;
-
-        /// Grace period for the 'text' proposal
-        pub TextProposalGracePeriod get(fn text_proposal_grace_period) config(): T::BlockNumber;
-
         /// Voting period for the 'spending' proposal
         pub SpendingProposalVotingPeriod get(fn spending_proposal_voting_period) config(): T::BlockNumber;
 
@@ -353,7 +350,7 @@ decl_module! {
                 description,
                 staking_account_id,
                 proposal_details: proposal_details.clone(),
-                proposal_parameters: proposal_types::parameters::text_proposal::<T>(),
+                proposal_parameters: T::TextProposalParameters::get(),
                 proposal_code: T::ProposalEncoder::encode_proposal(proposal_details),
                 exact_execution_block
             };

+ 0 - 10
runtime-modules/proposals/codex/src/proposal_types/mod.rs

@@ -217,12 +217,6 @@ pub struct RoleParameters<Balance, BlockNumber> {
 /// Contains proposal config parameters. Default values are used by migration and genesis config.
 #[derive(Copy, Clone)]
 pub struct ProposalsConfigParameters {
-    /// 'Text' proposal voting period
-    pub text_proposal_voting_period: u32,
-
-    /// 'Text' proposal grace period
-    pub text_proposal_grace_period: u32,
-
     /// 'Set election parameters' proposal voting period
     pub set_election_parameters_proposal_voting_period: u32,
 
@@ -299,8 +293,6 @@ pub struct ProposalsConfigParameters {
 impl Default for ProposalsConfigParameters {
     fn default() -> Self {
         ProposalsConfigParameters {
-            text_proposal_voting_period: 72000u32,
-            text_proposal_grace_period: 0u32,
             set_election_parameters_proposal_voting_period: 72000u32,
             set_election_parameters_proposal_grace_period: 201_601_u32,
             set_lead_proposal_voting_period: 43200u32,
@@ -335,8 +327,6 @@ impl ProposalsConfigParameters {
     /// All remaining proposals get assigned grace_period.
     pub fn with_grace_and_voting_periods(grace_period: u32, voting_period: u32) -> Self {
         ProposalsConfigParameters {
-            text_proposal_voting_period: voting_period,
-            text_proposal_grace_period: 0,
             set_election_parameters_proposal_voting_period: voting_period,
             set_election_parameters_proposal_grace_period: grace_period,
             set_lead_proposal_voting_period: voting_period,

+ 0 - 14
runtime-modules/proposals/codex/src/proposal_types/parameters.rs

@@ -1,19 +1,5 @@
 use crate::{BalanceOf, Module, ProposalParameters};
 
-// Proposal parameters for the text proposal
-pub(crate) fn text_proposal<T: crate::Trait>() -> ProposalParameters<T::BlockNumber, BalanceOf<T>> {
-    ProposalParameters {
-        voting_period: <Module<T>>::text_proposal_voting_period(),
-        grace_period: <Module<T>>::text_proposal_grace_period(),
-        approval_quorum_percentage: 60,
-        approval_threshold_percentage: 80,
-        slashing_quorum_percentage: 60,
-        slashing_threshold_percentage: 80,
-        required_stake: Some(<BalanceOf<T>>::from(25000u32)),
-        constitutionality: 1,
-    }
-}
-
 // Proposal parameters for the 'Spending' proposal
 pub(crate) fn spending_proposal<T: crate::Trait>(
 ) -> ProposalParameters<T::BlockNumber, BalanceOf<T>> {

+ 1 - 0
runtime-modules/proposals/codex/src/tests/mock.rs

@@ -278,6 +278,7 @@ impl crate::Trait for Test {
     type ProposalEncoder = ();
     type SetValidatorCountProposalParameters = DefaultProposalParameters;
     type RuntimeUpgradeProposalParameters = DefaultProposalParameters;
+    type TextProposalParameters = DefaultProposalParameters;
 }
 
 impl ProposalEncoder<Test> for () {

+ 1 - 1
runtime-modules/proposals/codex/src/tests/mod.rs

@@ -128,7 +128,7 @@ fn create_text_proposal_common_checks_succeed() {
                     None,
                 )
             },
-            proposal_parameters: crate::proposal_types::parameters::text_proposal::<Test>(),
+            proposal_parameters: <Test as crate::Trait>::TextProposalParameters::get(),
             proposal_details: ProposalDetails::Text(b"text".to_vec()),
         };
         proposal_fixture.check_all();

+ 2 - 1
runtime/src/lib.rs

@@ -606,12 +606,13 @@ parameter_types! {
 }
 
 impl proposals_codex::Trait for Runtime {
-    type MembershipOriginValidator = MembershipOriginValidator<Self>;
     type TextProposalMaxLength = TextProposalMaxLength;
     type RuntimeUpgradeWasmProposalMaxLength = RuntimeUpgradeWasmProposalMaxLength;
+    type MembershipOriginValidator = MembershipOriginValidator<Self>;
     type ProposalEncoder = ExtrinsicProposalEncoder;
     type SetValidatorCountProposalParameters = SetValidatorCountProposalParameters;
     type RuntimeUpgradeProposalParameters = RuntimeUpgradeProposalParameters;
+    type TextProposalParameters = TextProposalParameters;
 }
 
 impl constitution::Trait for Runtime {

+ 14 - 0
runtime/src/proposals_configuration/defaults.rs

@@ -29,3 +29,17 @@ pub(crate) fn runtime_upgrade_proposal() -> ProposalParameters<BlockNumber, Bala
         constitutionality: 1,
     }
 }
+
+// Proposal parameters for the text proposal
+pub(crate) fn text_proposal() -> ProposalParameters<BlockNumber, Balance> {
+    ProposalParameters {
+        voting_period: 72000,
+        grace_period: 0,
+        approval_quorum_percentage: 60,
+        approval_threshold_percentage: 80,
+        slashing_quorum_percentage: 60,
+        slashing_threshold_percentage: 80,
+        required_stake: Some(25000),
+        constitutionality: 1,
+    }
+}

+ 9 - 1
runtime/src/proposals_configuration/mod.rs

@@ -24,6 +24,7 @@ mod tests;
 parameter_types! {
     pub SetValidatorCountProposalParameters: ProposalParameters<BlockNumber, Balance> = ALL_PROPOSALS_PARAMETERS.set_validator_count_proposal;
     pub RuntimeUpgradeProposalParameters: ProposalParameters<BlockNumber, Balance> = ALL_PROPOSALS_PARAMETERS.runtime_upgrade_proposal;
+    pub TextProposalParameters: ProposalParameters<BlockNumber, Balance> = ALL_PROPOSALS_PARAMETERS.text_proposal;
 }
 
 ///////////
@@ -31,6 +32,7 @@ parameter_types! {
 struct AllProposalsParameters {
     pub set_validator_count_proposal: ProposalParameters<BlockNumber, Balance>,
     pub runtime_upgrade_proposal: ProposalParameters<BlockNumber, Balance>,
+    pub text_proposal: ProposalParameters<BlockNumber, Balance>,
 }
 
 // to initialize parameters only once.
@@ -66,10 +68,15 @@ fn convert_json_object_to_proposal_parameters(
             defaults::set_validator_count_proposal(),
         );
         parameters.runtime_upgrade_proposal = create_proposal_parameters_object(
-            json_object,
+            json_object.clone(),
             "runtime_upgrade_proposal",
             defaults::runtime_upgrade_proposal(),
         );
+        parameters.text_proposal = create_proposal_parameters_object(
+            json_object,
+            "text_proposal",
+            defaults::text_proposal(),
+        );
     }
 
     parameters
@@ -172,5 +179,6 @@ fn default_parameters() -> AllProposalsParameters {
     AllProposalsParameters {
         set_validator_count_proposal: defaults::set_validator_count_proposal(),
         runtime_upgrade_proposal: defaults::runtime_upgrade_proposal(),
+        text_proposal: defaults::text_proposal(),
     }
 }

+ 11 - 1
runtime/src/proposals_configuration/sample_proposal_parameters.json

@@ -10,5 +10,15 @@
     "required_stake": 7,
     "constitutionality": 8
   },
-  "runtime_upgrade_proposal" : {}
+  "runtime_upgrade_proposal" : {},
+  "text_proposal": {
+    "voting_period": 1,
+    "grace_period": 2,
+    "approval_quorum_percentage": 3,
+    "approval_threshold_percentage": 4,
+    "slashing_quorum_percentage": 5,
+    "slashing_threshold_percentage": 6,
+    "required_stake": 7,
+    "constitutionality": 8
+  }
 }

+ 2 - 2
runtime/src/proposals_configuration/tests.rs

@@ -1,10 +1,10 @@
 use crate::ProposalParameters;
 
 // Enable during the conditional compilation tests.
-#[ignore]
+//#[ignore]
 #[test]
 fn proposal_parameters_are_initialized() {
-    let actual_params = super::RuntimeUpgradeProposalParameters::get();
+    let actual_params = super::TextProposalParameters::get();
     let expected_params = ProposalParameters {
         voting_period: 1,
         grace_period: 2,