Browse Source

runtime: Finish working team to working group migration.

Shamil Gadelshin 4 years ago
parent
commit
5039fb96a4

+ 5 - 22
node/src/chain_spec/mod.rs

@@ -30,12 +30,11 @@ use sp_runtime::Perbill;
 
 use node_runtime::{
     membership, wasm_binary_unwrap, AuthorityDiscoveryConfig, BabeConfig, Balance, BalancesConfig,
-    ContentDirectoryConfig, ContentDirectoryWorkingGroupConfig, ContentWorkingGroupConfig,
-    CouncilConfig, CouncilElectionConfig, DataDirectoryConfig, DataObjectStorageRegistryConfig,
-    DataObjectTypeRegistryConfig, ElectionParameters, ForumConfig, GrandpaConfig, ImOnlineConfig,
-    MembersConfig, Moment, SessionConfig, SessionKeys, Signature, StakerStatus, StakingConfig,
-    StorageWorkingGroupConfig, SudoConfig, SystemConfig, VersionedStoreConfig,
-    VersionedStorePermissionsConfig, DAYS,
+    ContentDirectoryConfig, ContentWorkingGroupConfig, CouncilConfig, CouncilElectionConfig,
+    DataDirectoryConfig, DataObjectStorageRegistryConfig, DataObjectTypeRegistryConfig,
+    ElectionParameters, ForumConfig, GrandpaConfig, ImOnlineConfig, MembersConfig, Moment,
+    SessionConfig, SessionKeys, Signature, StakerStatus, StakingConfig, SudoConfig, SystemConfig,
+    VersionedStoreConfig, VersionedStorePermissionsConfig, DAYS,
 };
 
 // Exported to be used by chain-spec-builder
@@ -228,8 +227,6 @@ pub fn testnet_genesis(
     const STASH: Balance = 5_000;
     const ENDOWMENT: Balance = 100_000_000;
 
-    let default_text_constraint = node_runtime::working_group::default_text_constraint();
-
     GenesisConfig {
         frame_system: Some(SystemConfig {
             code: wasm_binary_unwrap().to_vec(),
@@ -310,20 +307,6 @@ pub fn testnet_genesis(
         data_object_storage_registry: Some(DataObjectStorageRegistryConfig {
             first_relationship_id: 1,
         }),
-        working_group_Instance2: Some(StorageWorkingGroupConfig {
-            phantom: Default::default(),
-            working_group_mint_capacity: 0,
-            opening_human_readable_text_constraint: default_text_constraint,
-            worker_application_human_readable_text_constraint: default_text_constraint,
-            worker_exit_rationale_text_constraint: default_text_constraint,
-        }),
-        working_group_Instance3: Some(ContentDirectoryWorkingGroupConfig {
-            phantom: Default::default(),
-            working_group_mint_capacity: 0,
-            opening_human_readable_text_constraint: default_text_constraint,
-            worker_application_human_readable_text_constraint: default_text_constraint,
-            worker_exit_rationale_text_constraint: default_text_constraint,
-        }),
         content_directory: Some({
             ContentDirectoryConfig {
                 class_by_id: vec![],

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

@@ -58,13 +58,11 @@ mod proposal_types;
 #[cfg(test)]
 mod tests;
 
-use codec::Codec;
 use frame_support::dispatch::DispatchResult;
 use frame_support::traits::{Currency, Get};
-use frame_support::{decl_error, decl_module, decl_storage, ensure, print, Parameter};
+use frame_support::{decl_error, decl_module, decl_storage, ensure, print};
 use frame_system::ensure_root;
-use sp_arithmetic::traits::{BaseArithmetic, Zero};
-use sp_runtime::traits::MaybeSerialize;
+use sp_arithmetic::traits::Zero;
 use sp_std::clone::Clone;
 use sp_std::str::from_utf8;
 use sp_std::vec::Vec;
@@ -74,11 +72,8 @@ pub use crate::proposal_types::{
 };
 use common::origin::ActorOriginValidator;
 use common::working_group::WorkingGroup;
-use frame_support::sp_runtime::traits::Member;
 use governance::election_params::ElectionParameters;
-pub use proposal_types::{
-    ApplicationId, OpeningId, ProposalDetails, ProposalDetailsOf, ProposalEncoder,
-};
+pub use proposal_types::{ProposalDetails, ProposalDetailsOf, ProposalEncoder};
 use proposals_discussion::ThreadMode;
 use proposals_engine::{
     BalanceOf, ProposalCreationParameters, ProposalObserver, ProposalParameters,
@@ -132,26 +127,6 @@ pub trait Trait:
     /// Encodes the proposal usint its details.
     type ProposalEncoder: ProposalEncoder<Self>;
 
-    /// Working group OpeningId type
-    type WorkingGroupOpeningId: Parameter
-        + Member
-        + BaseArithmetic
-        + Codec
-        + Default
-        + Copy
-        + MaybeSerialize
-        + PartialEq;
-
-    /// Working group ApplicationId type
-    type WorkingGroupApplicationId: Parameter
-        + Member
-        + BaseArithmetic
-        + Codec
-        + Default
-        + Copy
-        + MaybeSerialize
-        + PartialEq;
-
     /// 'Set validator count' proposal parameters.
     type SetValidatorCountProposalParameters: Get<
         ProposalParameters<Self::BlockNumber, BalanceOf<Self>>,
@@ -540,10 +515,7 @@ decl_module! {
             title: Vec<u8>,
             description: Vec<u8>,
             staking_account_id: Option<T::AccountId>,
-            fill_opening_parameters: FillOpeningParameters<
-                OpeningId<T>,
-                ApplicationId<T>
-            >,
+            fill_opening_parameters: FillOpeningParameters,
             exact_execution_block: Option<T::BlockNumber>,
         ) {
             let proposal_details = ProposalDetails::FillWorkingGroupLeaderOpening(fill_opening_parameters);

+ 5 - 15
runtime-modules/proposals/codex/src/proposal_types/mod.rs

@@ -16,20 +16,13 @@ pub trait ProposalEncoder<T: crate::Trait> {
     fn encode_proposal(proposal_details: ProposalDetailsOf<T>) -> Vec<u8>;
 }
 
-/// Type alias for an application id.
-pub type ApplicationId<T> = <T as crate::Trait>::WorkingGroupApplicationId;
-
-/// Type alias for an opening id.
-pub type OpeningId<T> = <T as crate::Trait>::WorkingGroupOpeningId;
-
 /// _ProposalDetails_ alias for type simplification
 pub type ProposalDetailsOf<T> = ProposalDetails<
     crate::BalanceOfMint<T>,
     crate::BalanceOfGovernanceCurrency<T>,
     <T as frame_system::Trait>::BlockNumber,
     <T as frame_system::Trait>::AccountId,
-    OpeningId<T>,
-    ApplicationId<T>,
+    working_group::OpeningId,
     crate::BalanceOf<T>,
     working_group::WorkerId<T>,
     crate::MemberId<T>,
@@ -44,7 +37,6 @@ pub enum ProposalDetails<
     BlockNumber,
     AccountId,
     OpeningId,
-    ApplicationId,
     StakeBalance,
     WorkerId,
     MemberId,
@@ -95,7 +87,7 @@ pub enum ProposalDetails<
     DeprecatedBeginReviewWorkingGroupLeaderApplications(OpeningId, WorkingGroup),
 
     /// Fill opening for the working group leader position.
-    FillWorkingGroupLeaderOpening(FillOpeningParameters<OpeningId, ApplicationId>),
+    FillWorkingGroupLeaderOpening(FillOpeningParameters),
 
     /// Set working group budget capacity.
     SetWorkingGroupBudgetCapacity(MintedBalance, WorkingGroup),
@@ -122,7 +114,6 @@ impl<
         BlockNumber,
         AccountId,
         OpeningId,
-        ApplicationId,
         StakeBalance,
         WorkerId,
         MemberId,
@@ -133,7 +124,6 @@ impl<
         BlockNumber,
         AccountId,
         OpeningId,
-        ApplicationId,
         StakeBalance,
         WorkerId,
         MemberId,
@@ -161,12 +151,12 @@ pub struct TerminateRoleParameters<WorkerId, Balance> {
 /// Parameters for the 'fill opening for the leader position' proposal.
 #[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
 #[derive(Encode, Decode, Clone, PartialEq, Debug)]
-pub struct FillOpeningParameters<OpeningId, ApplicationId> {
+pub struct FillOpeningParameters {
     /// Finalizing opening id.
-    pub opening_id: OpeningId,
+    pub opening_id: working_group::OpeningId,
 
     /// Id of the selected application.
-    pub successful_application_id: ApplicationId,
+    pub successful_application_id: working_group::ApplicationId,
 
     /// Defines working group with the open position.
     pub working_group: WorkingGroup,

+ 7 - 5
runtime-modules/working-group/src/checks.rs

@@ -1,6 +1,6 @@
 use crate::{
-    BalanceOf, GroupWorker, Instance, JobOpening, MemberId, OpeningType, RewardPolicy, StakePolicy,
-    Trait, WorkerId,
+    ApplicationId, BalanceOf, GroupWorker, Instance, JobOpening, MemberId, OpeningId, OpeningType,
+    RewardPolicy, StakePolicy, Trait, WorkerId,
 };
 
 use super::Error;
@@ -10,6 +10,7 @@ use frame_support::{ensure, StorageMap, StorageValue};
 use frame_system::{ensure_root, ensure_signed};
 use sp_arithmetic::traits::Zero;
 use sp_std::collections::btree_set::BTreeSet;
+use sp_std::marker::PhantomData;
 use sp_std::vec::Vec;
 
 use crate::types::{ApplicationInfo, StakeParameters};
@@ -33,7 +34,7 @@ pub(crate) fn ensure_origin_for_opening_type<T: Trait<I>, I: Instance>(
 
 // Check opening: returns the opening by id if it is exists.
 pub(crate) fn ensure_opening_exists<T: Trait<I>, I: Instance>(
-    opening_id: &T::OpeningId,
+    opening_id: &OpeningId,
 ) -> Result<JobOpening<T::BlockNumber, BalanceOf<T>>, Error<T, I>> {
     ensure!(
         <crate::OpeningById::<T, I>>::contains_key(opening_id),
@@ -47,7 +48,7 @@ pub(crate) fn ensure_opening_exists<T: Trait<I>, I: Instance>(
 
 // Check application: returns applicationId and application tuple if exists.
 pub(crate) fn ensure_application_exists<T: Trait<I>, I: Instance>(
-    application_id: &T::ApplicationId,
+    application_id: &ApplicationId,
 ) -> Result<ApplicationInfo<T, I>, Error<T, I>> {
     ensure!(
         <crate::ApplicationById::<T, I>>::contains_key(application_id),
@@ -59,12 +60,13 @@ pub(crate) fn ensure_application_exists<T: Trait<I>, I: Instance>(
     Ok(ApplicationInfo {
         application_id: *application_id,
         application,
+        marker: PhantomData,
     })
 }
 
 // Check application: returns applicationId and application tuple if exists.
 pub(crate) fn ensure_succesful_applications_exist<T: Trait<I>, I: Instance>(
-    successful_application_ids: &BTreeSet<T::ApplicationId>,
+    successful_application_ids: &BTreeSet<ApplicationId>,
 ) -> Result<Vec<ApplicationInfo<T, I>>, Error<T, I>> {
     // Check for non-empty set of application ids.
     ensure!(

+ 20 - 41
runtime-modules/working-group/src/lib.rs

@@ -36,14 +36,13 @@ mod errors;
 mod tests;
 mod types;
 
-use codec::Codec;
 use frame_support::traits::{Currency, Get};
 use frame_support::weights::Weight;
 use frame_support::IterableStorageMap;
-use frame_support::{decl_event, decl_module, decl_storage, ensure, Parameter, StorageValue};
+use frame_support::{decl_event, decl_module, decl_storage, ensure, StorageValue};
 use frame_system::{ensure_root, ensure_signed};
-use sp_arithmetic::traits::{BaseArithmetic, One, Zero};
-use sp_runtime::traits::{Hash, MaybeSerialize, Member, SaturatedConversion, Saturating};
+use sp_arithmetic::traits::{One, Zero};
+use sp_runtime::traits::{Hash, SaturatedConversion, Saturating};
 use sp_std::collections::{btree_map::BTreeMap, btree_set::BTreeSet};
 use sp_std::vec::Vec;
 
@@ -63,26 +62,6 @@ use membership::staking_handler::StakingHandler;
 pub trait Trait<I: Instance = DefaultInstance>:
     frame_system::Trait + membership::Trait + balances::Trait
 {
-    /// OpeningId type
-    type OpeningId: Parameter
-        + Member
-        + BaseArithmetic
-        + Codec
-        + Default
-        + Copy
-        + MaybeSerialize
-        + PartialEq;
-
-    /// ApplicationId type
-    type ApplicationId: Parameter
-        + Member
-        + BaseArithmetic
-        + Codec
-        + Default
-        + Copy
-        + MaybeSerialize
-        + PartialEq;
-
     /// _Administration_ event type.
     type Event: From<Event<Self, I>> + Into<<Self as frame_system::Trait>::Event>;
 
@@ -106,9 +85,9 @@ decl_event!(
     /// _Group_ events
     pub enum Event<T, I = DefaultInstance>
     where
-       <T as Trait<I>>::OpeningId,
-       <T as Trait<I>>::ApplicationId,
-       ApplicationIdToWorkerIdMap = BTreeMap<<T as Trait<I>>::ApplicationId, WorkerId<T>>,
+       OpeningId = OpeningId,
+       ApplicationId = ApplicationId,
+       ApplicationIdToWorkerIdMap = BTreeMap<ApplicationId, WorkerId<T>>,
        WorkerId = WorkerId<T>,
        <T as frame_system::Trait>::AccountId,
        Balance = BalanceOf<T>,
@@ -219,21 +198,21 @@ decl_event!(
 decl_storage! {
     trait Store for Module<T: Trait<I>, I: Instance=DefaultInstance> as WorkingGroup {
         /// Next identifier value for new job opening.
-        pub NextOpeningId get(fn next_opening_id): T::OpeningId;
+        pub NextOpeningId get(fn next_opening_id): OpeningId;
 
         /// Maps identifier to job opening.
         pub OpeningById get(fn opening_by_id): map hasher(blake2_128_concat)
-            T::OpeningId => JobOpening<T::BlockNumber, BalanceOf<T>>;
+            OpeningId => JobOpening<T::BlockNumber, BalanceOf<T>>;
 
         /// Count of active workers.
         pub ActiveWorkerCount get(fn active_worker_count): u32;
 
         /// Maps identifier to worker application on opening.
         pub ApplicationById get(fn application_by_id) : map hasher(blake2_128_concat)
-            T::ApplicationId => JobApplication<T>;
+            ApplicationId => JobApplication<T>;
 
         /// Next identifier value for new worker application.
-        pub NextApplicationId get(fn next_application_id) : T::ApplicationId;
+        pub NextApplicationId get(fn next_application_id) : ApplicationId;
 
         /// Next identifier for a new worker.
         pub NextWorkerId get(fn next_worker_id) : WorkerId<T>;
@@ -312,19 +291,19 @@ decl_module! {
                 reward_policy,
             };
 
-            let new_opening_id = NextOpeningId::<T, I>::get();
+            let new_opening_id = NextOpeningId::<I>::get();
 
             OpeningById::<T, I>::insert(new_opening_id, new_opening);
 
             // Update NextOpeningId
-            NextOpeningId::<T, I>::mutate(|id| *id += <T::OpeningId as One>::one());
+            NextOpeningId::<I>::mutate(|id| *id += <OpeningId as One>::one());
 
             Self::deposit_event(RawEvent::OpeningAdded(new_opening_id));
         }
 
         /// Apply on a worker opening.
         #[weight = 10_000_000] // TODO: adjust weight: it should also consider a description length
-        pub fn apply_on_opening(origin, p : ApplyOnOpeningParameters<T, I>) {
+        pub fn apply_on_opening(origin, p : ApplyOnOpeningParameters<T>) {
             // Ensure the origin of a member with given id.
             T::MemberOriginValidator::ensure_actor_origin(origin, p.member_id)?;
 
@@ -372,13 +351,13 @@ decl_module! {
             );
 
             // Get id of new worker/lead application
-            let new_application_id = NextApplicationId::<T, I>::get();
+            let new_application_id = NextApplicationId::<I>::get();
 
             // Store an application.
             ApplicationById::<T, I>::insert(new_application_id, application);
 
             // Update the next application identifier value.
-            NextApplicationId::<T, I>::mutate(|id| *id += <T::ApplicationId as One>::one());
+            NextApplicationId::<I>::mutate(|id| *id += <ApplicationId as One>::one());
 
             // Trigger the event.
             Self::deposit_event(RawEvent::AppliedOnOpening(p.opening_id, new_application_id));
@@ -389,8 +368,8 @@ decl_module! {
         #[weight = 10_000_000] // TODO: adjust weight
         pub fn fill_opening(
             origin,
-            opening_id: T::OpeningId,
-            successful_application_ids: BTreeSet<T::ApplicationId>,
+            opening_id: OpeningId,
+            successful_application_ids: BTreeSet<ApplicationId>,
         ) {
             // Ensure job opening exists.
             let opening = checks::ensure_opening_exists::<T, I>(&opening_id)?;
@@ -662,7 +641,7 @@ decl_module! {
         #[weight = 10_000_000] // TODO: adjust weight
         pub fn withdraw_application(
             origin,
-            application_id: T::ApplicationId
+            application_id: ApplicationId
         ) {
             // Ensuring worker application actually exists
             let application_info = checks::ensure_application_exists::<T, I>(&application_id)?;
@@ -695,7 +674,7 @@ decl_module! {
         #[weight = 10_000_000] // TODO: adjust weight
         pub fn cancel_opening(
             origin,
-            opening_id: T::OpeningId,
+            opening_id: OpeningId,
         ) {
             // Ensure job opening exists.
             let opening = checks::ensure_opening_exists::<T, I>(&opening_id)?;
@@ -870,7 +849,7 @@ impl<T: Trait<I>, I: Instance> Module<T, I> {
     fn fulfill_successful_applications(
         opening: &JobOpening<T::BlockNumber, BalanceOf<T>>,
         successful_applications_info: Vec<ApplicationInfo<T, I>>,
-    ) -> BTreeMap<T::ApplicationId, WorkerId<T>> {
+    ) -> BTreeMap<ApplicationId, WorkerId<T>> {
         let mut application_id_to_worker_id = BTreeMap::new();
 
         successful_applications_info

+ 9 - 7
runtime-modules/working-group/src/types.rs

@@ -5,6 +5,7 @@ use sp_std::vec::Vec;
 
 #[cfg(feature = "std")]
 use serde::{Deserialize, Serialize};
+use sp_std::marker::PhantomData;
 
 /// Group job application type alias.
 pub type JobApplication<T> = Application<<T as frame_system::Trait>::AccountId, MemberId<T>>;
@@ -15,16 +16,17 @@ pub type MemberId<T> = <T as membership::Trait>::MemberId;
 /// Type identifier for a worker role, which must be same as membership actor identifier.
 pub type WorkerId<T> = <T as membership::Trait>::ActorId;
 
-/// Type alias for an application id.
-pub type ApplicationId<T> = <T as crate::Trait>::ApplicationId;
+/// Type for an application id.
+pub type ApplicationId = u64;
 
-/// Type alias for an opening id.
-pub type OpeningId<T> = <T as crate::Trait>::OpeningId;
+/// Type for an opening id.
+pub type OpeningId = u64;
 
 // ApplicationId - JobApplication - helper struct.
 pub(crate) struct ApplicationInfo<T: crate::Trait<I>, I: crate::Instance> {
-    pub application_id: T::ApplicationId,
+    pub application_id: ApplicationId,
     pub application: JobApplication<T>,
+    pub marker: PhantomData<I>,
 }
 
 // WorkerId - GroupWorker - helper struct.
@@ -250,9 +252,9 @@ pub struct StakeParameters<AccountId, Balance> {
 }
 
 /// ApplyOnOpeningParams type alias.
-pub type ApplyOnOpeningParameters<T, I> = ApplyOnOpeningParams<
+pub type ApplyOnOpeningParameters<T> = ApplyOnOpeningParams<
     MemberId<T>,
-    <T as crate::Trait<I>>::OpeningId,
+    OpeningId,
     <T as frame_system::Trait>::AccountId,
     BalanceOf<T>,
 >;

+ 3 - 6
runtime/src/integration/proposals/proposal_encoder.rs

@@ -78,8 +78,8 @@ impl ProposalEncoder<Runtime> for ExtrinsicProposalEncoder {
                 )
             }
             ProposalDetails::DeprecatedBeginReviewWorkingGroupLeaderApplications(
-                opening_id,
-                working_group,
+                _opening_id,
+                _working_group,
             ) => {
                 print(
                     "Error: Calling deprecated BeginReviewWorkingGroupLeaderApplications encoding option.",
@@ -162,10 +162,7 @@ where
 
     // Generic call constructor for the add working group opening.
     fn create_fill_opening_call(
-        fill_opening_params: proposals_codex::FillOpeningParameters<
-            proposals_codex::OpeningId<T>,
-            proposals_codex::ApplicationId<T>,
-        >,
+        fill_opening_params: proposals_codex::FillOpeningParameters,
     ) -> working_group::Call<T, I> {
         let mut successful_application_ids = BTreeSet::new();
         successful_application_ids.insert(fill_opening_params.successful_application_id);

+ 0 - 6
runtime/src/lib.rs

@@ -572,8 +572,6 @@ parameter_types! {
 }
 
 impl working_group::Trait<StorageWorkingGroupInstance> for Runtime {
-    type OpeningId = OpeningId;
-    type ApplicationId = ApplicationId;
     type Event = Event;
     type MaxWorkerNumberLimit = MaxWorkerNumberLimit;
     type StakingHandler =
@@ -584,8 +582,6 @@ impl working_group::Trait<StorageWorkingGroupInstance> for Runtime {
 }
 
 impl working_group::Trait<ContentDirectoryWorkingGroupInstance> for Runtime {
-    type OpeningId = OpeningId;
-    type ApplicationId = ApplicationId;
     type Event = Event;
     type MaxWorkerNumberLimit = MaxWorkerNumberLimit;
     type StakingHandler =
@@ -653,8 +649,6 @@ impl proposals_codex::Trait for Runtime {
     type RuntimeUpgradeWasmProposalMaxLength = RuntimeUpgradeWasmProposalMaxLength;
     type MembershipOriginValidator = MembershipOriginValidator<Self>;
     type ProposalEncoder = ExtrinsicProposalEncoder;
-    type WorkingGroupOpeningId = OpeningId;
-    type WorkingGroupApplicationId = ApplicationId;
     type SetValidatorCountProposalParameters = SetValidatorCountProposalParameters;
     type RuntimeUpgradeProposalParameters = RuntimeUpgradeProposalParameters;
     type TextProposalParameters = TextProposalParameters;

+ 0 - 6
runtime/src/primitives.rs

@@ -65,12 +65,6 @@ pub type ActorId = u64;
 /// Represent an member in membership group, which is the same in the working groups.
 pub type MemberId = u64;
 
-/// Defines opening id for the working groups.
-pub type OpeningId = u64;
-
-/// Defines application id for the working groups.
-pub type ApplicationId = u64;
-
 /// App-specific crypto used for reporting equivocation/misbehavior in BABE and
 /// GRANDPA. Any rewards for misbehavior reporting will be paid out to this
 /// account.