Pārlūkot izejas kodu

runtime: Decrease dependency on membership pallet.

- Move MemberId and ActorId to the separate trait in the common pallet.
Shamil Gadelshin 4 gadi atpakaļ
vecāks
revīzija
e945103124
30 mainītis faili ar 143 papildinājumiem un 116 dzēšanām
  1. 2 1
      Cargo.lock
  2. 4 1
      runtime-modules/common/Cargo.toml
  3. 33 1
      runtime-modules/common/src/lib.rs
  4. 4 2
      runtime-modules/governance/src/mock.rs
  5. 10 26
      runtime-modules/membership/src/lib.rs
  6. 3 4
      runtime-modules/membership/src/mock.rs
  7. 2 3
      runtime-modules/proposals/codex/src/lib.rs
  8. 5 2
      runtime-modules/proposals/codex/src/tests/mock.rs
  9. 1 2
      runtime-modules/proposals/discussion/src/lib.rs
  10. 5 2
      runtime-modules/proposals/discussion/src/tests/mock.rs
  11. 2 1
      runtime-modules/proposals/engine/src/lib.rs
  12. 5 2
      runtime-modules/proposals/engine/src/tests/mock/mod.rs
  13. 2 3
      runtime-modules/proposals/engine/src/types/mod.rs
  14. 5 2
      runtime-modules/service-discovery/src/mock.rs
  15. 2 0
      runtime-modules/staking-handler/Cargo.toml
  16. 2 4
      runtime-modules/staking-handler/src/lib.rs
  17. 5 2
      runtime-modules/staking-handler/src/mock.rs
  18. 3 4
      runtime-modules/storage/src/lib.rs
  19. 5 2
      runtime-modules/storage/src/tests/mock.rs
  20. 2 13
      runtime-modules/working-group/src/checks.rs
  21. 5 4
      runtime-modules/working-group/src/lib.rs
  22. 5 2
      runtime-modules/working-group/src/tests/mock.rs
  23. 1 3
      runtime-modules/working-group/src/tests/mod.rs
  24. 5 6
      runtime-modules/working-group/src/types.rs
  25. 2 1
      runtime/src/integration/proposals/council_origin_validator.rs
  26. 1 3
      runtime/src/integration/proposals/membership_origin_validator.rs
  27. 1 1
      runtime/src/integration/proposals/mod.rs
  28. 5 2
      runtime/src/lib.rs
  29. 0 1
      runtime/src/tests/proposals_integration/mod.rs
  30. 16 16
      runtime/src/tests/proposals_integration/working_group_proposals.rs

+ 2 - 1
Cargo.lock

@@ -3736,13 +3736,14 @@ dependencies = [
 
 [[package]]
 name = "pallet-common"
-version = "3.1.0"
+version = "4.0.0"
 dependencies = [
  "frame-support",
  "frame-system",
  "pallet-timestamp",
  "parity-scale-codec",
  "serde",
+ "sp-arithmetic",
  "sp-runtime",
  "strum 0.19.5",
  "strum_macros 0.19.4",

+ 4 - 1
runtime-modules/common/Cargo.toml

@@ -1,6 +1,6 @@
 [package]
 name = 'pallet-common'
-version = '3.1.0'
+version = '4.0.0'
 authors = ['Joystream contributors']
 edition = '2018'
 
@@ -13,6 +13,8 @@ sp-runtime = { package = 'sp-runtime', default-features = false, git = 'https://
 frame-support = { package = 'frame-support', default-features = false, git = 'https://github.com/paritytech/substrate.git', rev = 'a200cdb93c6af5763b9c7bf313fa708764ac88ca'}
 frame-system = { package = 'frame-system', default-features = false, git = 'https://github.com/paritytech/substrate.git', rev = 'a200cdb93c6af5763b9c7bf313fa708764ac88ca'}
 pallet-timestamp = { package = 'pallet-timestamp', default-features = false, git = 'https://github.com/paritytech/substrate.git', rev = 'a200cdb93c6af5763b9c7bf313fa708764ac88ca'}
+sp-arithmetic = { package = 'sp-arithmetic', default-features = false, git = 'https://github.com/paritytech/substrate.git', rev = 'a200cdb93c6af5763b9c7bf313fa708764ac88ca'}
+
 
 [features]
 default = ['std']
@@ -25,4 +27,5 @@ std = [
 	'frame-support/std',
 	'frame-system/std',
 	'pallet-timestamp/std',
+	'sp-arithmetic/std',
 ]

+ 33 - 1
runtime-modules/common/src/lib.rs

@@ -6,9 +6,41 @@ pub mod currency;
 pub mod origin;
 pub mod working_group;
 
-use codec::{Decode, Encode};
+use codec::{Codec, Decode, Encode};
+use frame_support::Parameter;
 #[cfg(feature = "std")]
 use serde::{Deserialize, Serialize};
+use sp_arithmetic::traits::BaseArithmetic;
+use sp_runtime::traits::{MaybeSerialize, Member};
+
+/// Member id type alias
+pub type MemberId<T> = <T as Trait>::MemberId;
+
+/// Actor id type alias
+pub type ActorId<T> = <T as Trait>::ActorId;
+
+/// Generic trait for membership dependent pallets.
+pub trait Trait: frame_system::Trait {
+    /// Describes the common type for the members.
+    type MemberId: Parameter
+        + Member
+        + BaseArithmetic
+        + Codec
+        + Default
+        + Copy
+        + MaybeSerialize
+        + PartialEq;
+
+    /// Describes the common type for the working group members (workers).
+    type ActorId: Parameter
+        + Member
+        + BaseArithmetic
+        + Codec
+        + Default
+        + Copy
+        + MaybeSerialize
+        + PartialEq;
+}
 
 /// Defines time in both block number and substrate time abstraction.
 #[cfg_attr(feature = "std", derive(Serialize, Deserialize))]

+ 4 - 2
runtime-modules/governance/src/mock.rs

@@ -72,10 +72,12 @@ impl election::Trait for Test {
 
     type CouncilElected = (Council,);
 }
+impl common::Trait for Test {
+    type MemberId = u64;
+    type ActorId = u64;
+}
 impl membership::Trait for Test {
     type Event = ();
-    type MemberId = u64;
-    type ActorId = u32;
     type MembershipFee = MembershipFee;
 }
 impl minting::Trait for Test {

+ 10 - 26
runtime-modules/membership/src/lib.rs

@@ -5,41 +5,25 @@ pub mod genesis;
 pub(crate) mod mock;
 mod tests;
 
-use codec::{Codec, Decode, Encode};
+use codec::{Decode, Encode};
 use frame_support::traits::{Currency, Get};
-use frame_support::{decl_error, decl_event, decl_module, decl_storage, ensure, Parameter};
+use frame_support::{decl_error, decl_event, decl_module, decl_storage, ensure};
 use frame_system::ensure_signed;
-use sp_arithmetic::traits::{BaseArithmetic, One};
-use sp_runtime::traits::{MaybeSerialize, Member};
+use sp_arithmetic::traits::One;
 use sp_std::borrow::ToOwned;
 use sp_std::vec::Vec;
 
+// The storage working group instance alias.
+//pub type StorageWorkingGroupInstance = working_group::Instance2;
+
 // Balance type alias
 type BalanceOf<T> = <T as balances::Trait>::Balance;
 
-pub trait Trait: frame_system::Trait + balances::Trait + pallet_timestamp::Trait {
+pub trait Trait:
+    frame_system::Trait + balances::Trait + pallet_timestamp::Trait + common::Trait
+{
     type Event: From<Event<Self>> + Into<<Self as frame_system::Trait>::Event>;
 
-    type MemberId: Parameter
-        + Member
-        + BaseArithmetic
-        + Codec
-        + Default
-        + Copy
-        + MaybeSerialize
-        + PartialEq;
-
-    /// Describes the common type for the working group members (workers).
-    type ActorId: Parameter
-        + Member
-        + BaseArithmetic
-        + Codec
-        + Default
-        + Copy
-        + MaybeSerialize
-        + PartialEq
-        + Ord;
-
     /// Defines the default membership fee.
     type MembershipFee: Get<BalanceOf<Self>>;
 }
@@ -213,7 +197,7 @@ decl_storage! {
 decl_event! {
     pub enum Event<T> where
       <T as frame_system::Trait>::AccountId,
-      <T as Trait>::MemberId,
+      <T as common::Trait>::MemberId,
     {
         MemberRegistered(MemberId, AccountId),
         MemberUpdatedAboutText(MemberId),

+ 3 - 4
runtime-modules/membership/src/mock.rs

@@ -79,14 +79,13 @@ impl balances::Trait for Test {
     type MaxLocks = ();
 }
 
-impl GovernanceCurrency for Test {
-    type Currency = balances::Module<Self>;
+impl common::Trait for Test {
+    type MemberId = u64;
+    type ActorId = u32;
 }
 
 impl Trait for Test {
     type Event = ();
-    type MemberId = u64;
-    type ActorId = u32;
     type MembershipFee = MembershipFee;
 }
 

+ 2 - 3
runtime-modules/proposals/codex/src/lib.rs

@@ -71,6 +71,7 @@ pub use crate::proposal_types::{
 };
 use common::origin::ActorOriginValidator;
 use common::working_group::WorkingGroup;
+use common::MemberId;
 pub use proposal_types::{ProposalDetails, ProposalDetailsOf, ProposalEncoder};
 use proposals_discussion::ThreadMode;
 use proposals_engine::{
@@ -104,7 +105,7 @@ pub trait Trait:
     frame_system::Trait
     + proposals_engine::Trait
     + proposals_discussion::Trait
-    + membership::Trait
+    + common::Trait
     + governance::election::Trait
     + staking::Trait
 {
@@ -191,8 +192,6 @@ pub type BalanceOfGovernanceCurrency<T> =
 pub type BalanceOfMint<T> =
     <<T as minting::Trait>::Currency as Currency<<T as frame_system::Trait>::AccountId>>::Balance;
 
-type MemberId<T> = <T as membership::Trait>::MemberId;
-
 decl_error! {
     /// Codex module predefined errors
     pub enum Error for Module<T: Trait> {

+ 5 - 2
runtime-modules/proposals/codex/src/tests/mock.rs

@@ -44,10 +44,13 @@ impl common::currency::GovernanceCurrency for Test {
     type Currency = balances::Module<Self>;
 }
 
-impl membership::Trait for Test {
-    type Event = ();
+impl common::Trait for Test {
     type MemberId = u64;
     type ActorId = u64;
+}
+
+impl membership::Trait for Test {
+    type Event = ();
     type MembershipFee = MembershipFee;
 }
 

+ 1 - 2
runtime-modules/proposals/discussion/src/lib.rs

@@ -61,12 +61,11 @@ use sp_std::clone::Clone;
 use sp_std::vec::Vec;
 
 use common::origin::ActorOriginValidator;
+use common::MemberId;
 use types::{DiscussionPost, DiscussionThread};
 
 pub use types::ThreadMode;
 
-type MemberId<T> = <T as membership::Trait>::MemberId;
-
 /// Proposals discussion WeightInfo.
 /// Note: This was auto generated through the benchmark CLI using the `--weight-trait` flag
 pub trait WeightInfo {

+ 5 - 2
runtime-modules/proposals/discussion/src/tests/mock.rs

@@ -73,10 +73,13 @@ impl common::currency::GovernanceCurrency for Test {
     type Currency = balances::Module<Self>;
 }
 
-impl membership::Trait for Test {
-    type Event = TestEvent;
+impl common::Trait for Test {
     type MemberId = u64;
     type ActorId = u64;
+}
+
+impl membership::Trait for Test {
+    type Event = TestEvent;
     type MembershipFee = MembershipFee;
 }
 

+ 2 - 1
runtime-modules/proposals/engine/src/lib.rs

@@ -109,7 +109,7 @@
 // Ensure we're `no_std` when compiling for Wasm.
 #![cfg_attr(not(feature = "std"), no_std)]
 
-use types::{MemberId, ProposalOf};
+use types::ProposalOf;
 
 pub use types::{
     ApprovedProposalDecision, BalanceOf, ExecutionStatus, Proposal, ProposalCodeDecoder,
@@ -137,6 +137,7 @@ use sp_arithmetic::traits::{SaturatedConversion, Saturating, Zero};
 use sp_std::vec::Vec;
 
 use common::origin::ActorOriginValidator;
+use common::MemberId;
 use staking_handler::StakingHandler;
 
 /// Proposals engine WeightInfo.

+ 5 - 2
runtime-modules/proposals/engine/src/tests/mock/mod.rs

@@ -81,10 +81,13 @@ parameter_types! {
     pub const MembershipFee: u64 = 100;
 }
 
-impl membership::Trait for Test {
-    type Event = TestEvent;
+impl common::Trait for Test {
     type MemberId = u64;
     type ActorId = u64;
+}
+
+impl membership::Trait for Test {
+    type Event = TestEvent;
     type MembershipFee = MembershipFee;
 }
 

+ 2 - 3
runtime-modules/proposals/engine/src/types/mod.rs

@@ -13,6 +13,8 @@ use sp_std::cmp::PartialOrd;
 use sp_std::ops::Add;
 use sp_std::vec::Vec;
 
+use common::MemberId;
+
 mod proposal_statuses;
 
 pub use proposal_statuses::{
@@ -407,9 +409,6 @@ pub struct ProposalCreationParameters<BlockNumber, Balance, MemberId, AccountId>
     pub exact_execution_block: Option<BlockNumber>,
 }
 
-// Type alias for member id.
-pub(crate) type MemberId<T> = <T as membership::Trait>::MemberId;
-
 /// Balance alias for `balances` module.
 pub type BalanceOf<T> = <T as balances::Trait>::Balance;
 

+ 5 - 2
runtime-modules/service-discovery/src/mock.rs

@@ -91,10 +91,13 @@ impl minting::Trait for Test {
     type MintId = u64;
 }
 
-impl membership::Trait for Test {
-    type Event = MetaEvent;
+impl common::Trait for Test {
     type MemberId = u64;
     type ActorId = u64;
+}
+
+impl membership::Trait for Test {
+    type Event = MetaEvent;
     type MembershipFee = MembershipFee;
 }
 

+ 2 - 0
runtime-modules/staking-handler/Cargo.toml

@@ -11,6 +11,7 @@ frame-system = { package = 'frame-system', default-features = false, git = 'http
 sp-arithmetic = { package = 'sp-arithmetic', default-features = false, git = 'https://github.com/paritytech/substrate.git', rev = 'a200cdb93c6af5763b9c7bf313fa708764ac88ca'}
 pallet-balances = { package = 'pallet-balances', default-features = false, git = 'https://github.com/paritytech/substrate.git', rev = 'a200cdb93c6af5763b9c7bf313fa708764ac88ca'}
 membership = { package = 'pallet-membership', default-features = false, path = '../membership'}
+common = { package = 'pallet-common', default-features = false, path = '../common'}
 
 [dev-dependencies]
 sp-io = { package = 'sp-io', default-features = false, git = 'https://github.com/paritytech/substrate.git', rev = 'a200cdb93c6af5763b9c7bf313fa708764ac88ca'}
@@ -29,4 +30,5 @@ std = [
     'sp-arithmetic/std',
     'pallet-balances/std',
     'membership/std',
+    'common/std',
 ]

+ 2 - 4
runtime-modules/staking-handler/src/lib.rs

@@ -6,6 +6,7 @@
 // Ensure we're `no_std` when compiling for Wasm.
 #![cfg_attr(not(feature = "std"), no_std)]
 
+use common::MemberId;
 use frame_support::dispatch::{DispatchError, DispatchResult};
 use frame_support::traits::{Currency, Get, LockIdentifier, LockableCurrency, WithdrawReasons};
 use sp_arithmetic::traits::Zero;
@@ -16,16 +17,13 @@ mod mock;
 #[cfg(test)]
 mod test;
 
-/// Type alias for member id.
-pub type MemberId<T> = <T as membership::Trait>::MemberId;
-
 /// Balance alias for `balances` module.
 pub type BalanceOf<T> = <T as pallet_balances::Trait>::Balance;
 
 /// Defines abstract staking handler to manage user stakes for different activities
 /// like adding a proposal. Implementation should use built-in LockableCurrency
 /// and LockIdentifier to lock balance consistently with pallet_staking.
-pub trait StakingHandler<T: frame_system::Trait + membership::Trait + pallet_balances::Trait> {
+pub trait StakingHandler<T: frame_system::Trait + common::Trait + pallet_balances::Trait> {
     /// Locks the specified balance on the account using specific lock identifier.
     fn lock(account_id: &T::AccountId, amount: BalanceOf<T>);
 

+ 5 - 2
runtime-modules/staking-handler/src/mock.rs

@@ -67,10 +67,13 @@ impl pallet_balances::Trait for Test {
     type MaxLocks = ();
 }
 
-impl membership::Trait for Test {
-    type Event = ();
+impl common::Trait for Test {
     type MemberId = u64;
     type ActorId = u64;
+}
+
+impl membership::Trait for Test {
+    type Event = ();
     type MembershipFee = MembershipFee;
 }
 

+ 3 - 4
runtime-modules/storage/src/lib.rs

@@ -7,11 +7,10 @@ pub mod data_object_type_registry;
 
 mod tests;
 
-// The storage working group instance alias.
-pub type StorageWorkingGroupInstance = working_group::Instance2;
+pub use common::MemberId;
 
-// Alias for the member id.
-pub(crate) type MemberId<T> = <T as membership::Trait>::MemberId;
+/// The storage working group instance alias.
+pub type StorageWorkingGroupInstance = working_group::Instance2;
 
 /// Storage provider is a worker from the working group module.
 pub type StorageProviderId<T> = working_group::WorkerId<T>;

+ 5 - 2
runtime-modules/storage/src/tests/mock.rs

@@ -198,10 +198,13 @@ impl data_object_storage_registry::Trait for Test {
     type ContentIdExists = MockContent;
 }
 
-impl membership::Trait for Test {
-    type Event = MetaEvent;
+impl common::Trait for Test {
     type MemberId = u64;
     type ActorId = u32;
+}
+
+impl membership::Trait for Test {
+    type Event = MetaEvent;
     type MembershipFee = MembershipFee;
 }
 

+ 2 - 13
runtime-modules/working-group/src/checks.rs

@@ -1,6 +1,6 @@
 use crate::{
-    ApplicationId, BalanceOf, Instance, MemberId, Opening, OpeningId, OpeningType, RewardPolicy,
-    StakePolicy, Trait, Worker, WorkerId,
+    ApplicationId, BalanceOf, Instance, Opening, OpeningId, OpeningType, RewardPolicy, StakePolicy,
+    Trait, Worker, WorkerId,
 };
 
 use super::Error;
@@ -148,17 +148,6 @@ pub fn ensure_worker_exists<T: Trait<I>, I: Instance>(
     Ok(worker)
 }
 
-// Check worker: verifies that origin is signed and corresponds with the membership.
-pub(crate) fn ensure_origin_signed_by_member<T: Trait<I>, I: Instance>(
-    origin: T::Origin,
-    member_id: &MemberId<T>,
-) -> Result<(), Error<T, I>> {
-    membership::Module::<T>::ensure_member_controller_account_signed(origin, member_id)
-        .map_err(|_| Error::<T, I>::InvalidMemberOrigin)?;
-
-    Ok(())
-}
-
 /// Check worker: ensures the origin contains signed account that belongs to existing worker.
 pub fn ensure_worker_signed<T: Trait<I>, I: Instance>(
     origin: T::Origin,

+ 5 - 4
runtime-modules/working-group/src/lib.rs

@@ -48,7 +48,7 @@ use sp_std::vec::Vec;
 
 pub use errors::Error;
 pub use types::{
-    Application, ApplicationId, ApplyOnOpeningParameters, BalanceOf, MemberId, Opening, OpeningId,
+    Application, ApplicationId, ApplyOnOpeningParameters, BalanceOf, Opening, OpeningId,
     OpeningType, Penalty, RewardPolicy, StakeParameters, StakePolicy, Worker, WorkerId,
 };
 use types::{ApplicationInfo, WorkerInfo};
@@ -56,11 +56,12 @@ use types::{ApplicationInfo, WorkerInfo};
 pub use checks::{ensure_origin_is_active_leader, ensure_worker_exists, ensure_worker_signed};
 
 use common::origin::ActorOriginValidator;
+use common::MemberId;
 use staking_handler::StakingHandler;
 
 /// The _Group_ main _Trait_
 pub trait Trait<I: Instance = DefaultInstance>:
-    frame_system::Trait + membership::Trait + balances::Trait
+    frame_system::Trait + balances::Trait + common::Trait
 {
     /// _Administration_ event type.
     type Event: From<Event<Self, I>> + Into<<Self as frame_system::Trait>::Event>;
@@ -423,8 +424,8 @@ decl_module! {
             // Ensuring worker actually exists
             let worker = checks::ensure_worker_exists::<T, I>(&worker_id)?;
 
-            // Ensure that origin is signed by member with given id.
-            checks::ensure_origin_signed_by_member::<T, I>(origin, &worker.member_id)?;
+            // Ensure the origin of a member with given id.
+            T::MemberOriginValidator::ensure_actor_origin(origin, worker.member_id)?;
 
             // Ensure the worker is active.
             ensure!(!worker.is_leaving(), Error::<T, I>::WorkerIsLeaving);

+ 5 - 2
runtime-modules/working-group/src/tests/mock.rs

@@ -94,10 +94,13 @@ impl balances::Trait for Test {
     type MaxLocks = ();
 }
 
-impl membership::Trait for Test {
-    type Event = TestEvent;
+impl common::Trait for Test {
     type MemberId = u64;
     type ActorId = u64;
+}
+
+impl membership::Trait for Test {
+    type Event = TestEvent;
     type MembershipFee = MembershipFee;
 }
 

+ 1 - 3
runtime-modules/working-group/src/tests/mod.rs

@@ -510,9 +510,7 @@ fn update_worker_role_account_fails_with_invalid_origin() {
             UpdateWorkerRoleAccountFixture::default_with_ids(worker_id, 1)
                 .with_origin(RawOrigin::None);
 
-        update_worker_account_fixture.call_and_assert(Err(
-            Error::<Test, DefaultInstance>::InvalidMemberOrigin.into(),
-        ));
+        update_worker_account_fixture.call_and_assert(Err(DispatchError::Other("Bad origin")));
     });
 }
 

+ 5 - 6
runtime-modules/working-group/src/types.rs

@@ -7,14 +7,13 @@ use sp_std::vec::Vec;
 use serde::{Deserialize, Serialize};
 use sp_std::marker::PhantomData;
 
+use common::{ActorId, MemberId};
+
 /// Working group job application type alias.
 pub type Application<T> = JobApplication<<T as frame_system::Trait>::AccountId, MemberId<T>>;
 
-/// Member identifier in membership::member module.
-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;
+pub type WorkerId<T> = ActorId<T>;
 
 /// Type for an application id.
 pub type ApplicationId = u64;
@@ -30,12 +29,12 @@ pub(crate) struct ApplicationInfo<T: crate::Trait<I>, I: crate::Instance> {
 }
 
 // WorkerId - Worker - helper struct.
-pub(crate) struct WorkerInfo<T: membership::Trait + frame_system::Trait + balances::Trait> {
+pub(crate) struct WorkerInfo<T: common::Trait + frame_system::Trait + balances::Trait> {
     pub worker_id: WorkerId<T>,
     pub worker: Worker<T>,
 }
 
-impl<T: membership::Trait + frame_system::Trait + balances::Trait> From<(WorkerId<T>, Worker<T>)>
+impl<T: common::Trait + frame_system::Trait + balances::Trait> From<(WorkerId<T>, Worker<T>)>
     for WorkerInfo<T>
 {
     fn from((worker_id, worker): (WorkerId<T>, Worker<T>)) -> Self {

+ 2 - 1
runtime/src/integration/proposals/council_origin_validator.rs

@@ -3,9 +3,10 @@
 use sp_std::marker::PhantomData;
 
 use common::origin::ActorOriginValidator;
+use common::MemberId;
 use proposals_engine::VotersParameters;
 
-use super::{MemberId, MembershipOriginValidator};
+use super::MembershipOriginValidator;
 
 /// Handles work with the council.
 /// Provides implementations for ActorOriginValidator and VotersParameters.

+ 1 - 3
runtime/src/integration/proposals/membership_origin_validator.rs

@@ -3,11 +3,9 @@
 use sp_std::marker::PhantomData;
 
 use common::origin::ActorOriginValidator;
+use common::MemberId;
 use frame_system::ensure_signed;
 
-/// Member of the Joystream organization
-pub type MemberId<T> = <T as membership::Trait>::MemberId;
-
 /// Default membership actor origin validator.
 pub struct MembershipOriginValidator<T> {
     marker: PhantomData<T>,

+ 1 - 1
runtime/src/integration/proposals/mod.rs

@@ -7,5 +7,5 @@ mod proposal_encoder;
 
 pub use council_elected_handler::CouncilElectedHandler;
 pub use council_origin_validator::CouncilManager;
-pub use membership_origin_validator::{MemberId, MembershipOriginValidator};
+pub use membership_origin_validator::MembershipOriginValidator;
 pub use proposal_encoder::ExtrinsicProposalEncoder;

+ 5 - 2
runtime/src/lib.rs

@@ -501,10 +501,13 @@ impl storage::data_object_storage_registry::Trait for Runtime {
     type ContentIdExists = DataDirectory;
 }
 
-impl membership::Trait for Runtime {
-    type Event = Event;
+impl common::Trait for Runtime {
     type MemberId = MemberId;
     type ActorId = ActorId;
+}
+
+impl membership::Trait for Runtime {
+    type Event = Event;
     type MembershipFee = MembershipFee;
 }
 

+ 0 - 1
runtime/src/tests/proposals_integration/mod.rs

@@ -7,7 +7,6 @@ mod working_group_proposals;
 use crate::{BlockNumber, ProposalCancellationFee, Runtime};
 use codec::Encode;
 use governance::election_params::ElectionParameters;
-use membership;
 use proposals_engine::{
     ApprovedProposalDecision, BalanceOf, Proposal, ProposalCreationParameters, ProposalParameters,
     ProposalStatus, VoteKind, VotersParameters, VotingResults,

+ 16 - 16
runtime/src/tests/proposals_integration/working_group_proposals.rs

@@ -308,7 +308,7 @@ fn run_create_add_working_group_leader_opening_proposal_execution_succeeds<
 >(
     working_group: WorkingGroup,
 ) where
-    <T as membership::Trait>::MemberId: From<u64>,
+    <T as common::Trait>::MemberId: From<u64>,
 {
     initial_test_ext().execute_with(|| {
         let member_id: MemberId = 1;
@@ -365,8 +365,8 @@ fn run_create_fill_working_group_leader_opening_proposal_execution_succeeds<
     working_group: WorkingGroup,
 ) where
     <T as frame_system::Trait>::AccountId: From<[u8; 32]>,
-    <T as membership::Trait>::MemberId: From<u64>,
-    working_group::MemberId<T>: From<u64>,
+    <T as common::Trait>::MemberId: From<u64>,
+    common::MemberId<T>: From<u64>,
 {
     initial_test_ext().execute_with(|| {
         let member_id: u64 = 1;
@@ -440,15 +440,15 @@ fn create_decrease_group_leader_stake_proposal_execution_succeeds() {
 }
 
 fn run_create_decrease_group_leader_stake_proposal_execution_succeeds<
-    T: working_group::Trait<I> + frame_system::Trait + membership::Trait + pallet_balances::Trait,
+    T: working_group::Trait<I> + frame_system::Trait + common::Trait + pallet_balances::Trait,
     I: frame_support::traits::Instance,
     SM: staking_handler::StakingHandler<T>,
 >(
     working_group: WorkingGroup,
 ) where
     <T as frame_system::Trait>::AccountId: From<[u8; 32]>,
-    <T as membership::Trait>::MemberId: From<u64>,
-    <T as membership::Trait>::ActorId: Into<u64>,
+    <T as common::Trait>::MemberId: From<u64>,
+    <T as common::Trait>::ActorId: Into<u64>,
     <T as pallet_balances::Trait>::Balance: From<u128>,
 {
     initial_test_ext().execute_with(|| {
@@ -565,8 +565,8 @@ fn run_create_slash_group_leader_stake_proposal_execution_succeeds<
     working_group: WorkingGroup,
 ) where
     <T as frame_system::Trait>::AccountId: From<[u8; 32]>,
-    <T as membership::Trait>::MemberId: From<u64>,
-    <T as membership::Trait>::ActorId: Into<u64>,
+    <T as common::Trait>::MemberId: From<u64>,
+    <T as common::Trait>::ActorId: Into<u64>,
     <T as pallet_balances::Trait>::Balance: From<u128>,
 {
     initial_test_ext().execute_with(|| {
@@ -680,7 +680,7 @@ fn run_create_set_working_group_mint_capacity_proposal_execution_succeeds<
     working_group: WorkingGroup,
 ) where
     <T as frame_system::Trait>::AccountId: From<[u8; 32]>,
-    <T as membership::Trait>::MemberId: From<u64>,
+    <T as common::Trait>::MemberId: From<u64>,
     <T as minting::Trait>::MintId: From<u64>,
     working_group::BalanceOf<T>: From<u128>,
 {
@@ -732,8 +732,8 @@ fn run_create_set_group_leader_reward_proposal_execution_succeeds<
     working_group: WorkingGroup,
 ) where
     <T as frame_system::Trait>::AccountId: From<[u8; 32]>,
-    <T as membership::Trait>::MemberId: From<u64>,
-    <T as membership::Trait>::ActorId: Into<u64>,
+    <T as common::Trait>::MemberId: From<u64>,
+    <T as common::Trait>::ActorId: Into<u64>,
     <T as minting::Trait>::MintId: From<u64>,
     working_group::BalanceOf<T>: From<u128>,
 {
@@ -834,9 +834,9 @@ fn run_create_terminate_group_leader_role_proposal_execution_succeeds<
     working_group: WorkingGroup,
 ) where
     <T as frame_system::Trait>::AccountId: From<[u8; 32]>,
-    <T as membership::Trait>::MemberId: From<u64>,
-    working_group::MemberId<T>: From<u64>,
-    <T as membership::Trait>::ActorId: Into<u64>,
+    <T as common::Trait>::MemberId: From<u64>,
+    common::MemberId<T>: From<u64>,
+    <T as common::Trait>::ActorId: Into<u64>,
     <T as minting::Trait>::MintId: From<u64>,
     <T as pallet_balances::Trait>::Balance: From<u128>,
 {
@@ -953,8 +953,8 @@ fn run_create_terminate_group_leader_role_proposal_with_slashing_execution_succe
     working_group: WorkingGroup,
 ) where
     <T as frame_system::Trait>::AccountId: From<[u8; 32]>,
-    <T as membership::Trait>::MemberId: From<u64>,
-    <T as membership::Trait>::ActorId: Into<u64>,
+    <T as common::Trait>::MemberId: From<u64>,
+    <T as common::Trait>::ActorId: Into<u64>,
     <T as pallet_balances::Trait>::Balance: From<u128>,
 {
     initial_test_ext().execute_with(|| {