Browse Source

Remove obsolete actors module.

- remove Actors module from the runtime
- remove the actors crate
Shamil Gadelshin 4 years ago
parent
commit
0a2091baeb

+ 0 - 19
Cargo.lock

@@ -1660,7 +1660,6 @@ dependencies = [
  "substrate-proposals-discussion-module",
  "substrate-proposals-engine-module",
  "substrate-recurring-reward-module",
- "substrate-roles-module",
  "substrate-service-discovery-module",
  "substrate-session",
  "substrate-stake-module",
@@ -5198,24 +5197,6 @@ dependencies = [
  "substrate-token-mint-module",
 ]
 
-[[package]]
-name = "substrate-roles-module"
-version = "1.0.1"
-dependencies = [
- "parity-scale-codec",
- "serde",
- "sr-io",
- "sr-primitives",
- "sr-std",
- "srml-balances",
- "srml-support",
- "srml-system",
- "srml-timestamp",
- "substrate-common-module",
- "substrate-membership-module",
- "substrate-primitives",
-]
-
 [[package]]
 name = "substrate-rpc"
 version = "2.0.0"

+ 0 - 1
Cargo.toml

@@ -12,7 +12,6 @@ members = [
 	"runtime-modules/membership",
 	"runtime-modules/memo",
 	"runtime-modules/recurring-reward",
-	"runtime-modules/roles",
 	"runtime-modules/service-discovery",
 	"runtime-modules/stake",
 	"runtime-modules/storage",

+ 4 - 7
node/src/chain_spec.rs

@@ -15,11 +15,12 @@
 // along with Joystream node.  If not, see <http://www.gnu.org/licenses/>.
 
 // Clippy linter warning.
-#![allow(clippy::identity_op)] // disable it because we use such syntax for a code readability
-                               // Example:  voting_period: 1 * DAY
+// Disable it because we use such syntax for a code readability.
+// Example:  voting_period: 1 * DAY
+#![allow(clippy::identity_op)]
 
 use node_runtime::{
-    versioned_store::InputValidationLengthConstraint as VsInputValidation, ActorsConfig,
+    versioned_store::InputValidationLengthConstraint as VsInputValidation,
     AuthorityDiscoveryConfig, BabeConfig, Balance, BalancesConfig, ContentWorkingGroupConfig,
     CouncilConfig, CouncilElectionConfig, DataObjectStorageRegistryConfig,
     DataObjectTypeRegistryConfig, ElectionParameters, GrandpaConfig, ImOnlineConfig, IndicesConfig,
@@ -264,10 +265,6 @@ pub fn testnet_genesis(
         data_object_storage_registry: Some(DataObjectStorageRegistryConfig {
             first_relationship_id: 1,
         }),
-        actors: Some(ActorsConfig {
-            enable_storage_role: true,
-            request_life_time: 300,
-        }),
         versioned_store: Some(VersionedStoreConfig {
             class_by_id: vec![],
             entity_by_id: vec![],

+ 0 - 88
runtime-modules/roles/Cargo.toml

@@ -1,88 +0,0 @@
-[package]
-name = 'substrate-roles-module'
-version = '1.0.1'
-authors = ['Joystream contributors']
-edition = '2018'
-
-[features]
-default = ['std']
-std = [
-	'sr-primitives/std',
-	'srml-support/std',
-	'system/std',
-	'rstd/std',
-	'codec/std',
-	'serde',
-	'common/std',
-	'membership/std',
-]
-
-
-[dependencies.sr-primitives]
-default_features = false
-git = 'https://github.com/paritytech/substrate.git'
-package = 'sr-primitives'
-rev = 'c37bb08535c49a12320af7facfd555ce05cce2e8'
-
-[dependencies.srml-support]
-default_features = false
-git = 'https://github.com/paritytech/substrate.git'
-package = 'srml-support'
-rev = 'c37bb08535c49a12320af7facfd555ce05cce2e8'
-
-[dependencies.system]
-default_features = false
-git = 'https://github.com/paritytech/substrate.git'
-package = 'srml-system'
-rev = 'c37bb08535c49a12320af7facfd555ce05cce2e8'
-
-[dependencies.rstd]
-default_features = false
-git = 'https://github.com/paritytech/substrate.git'
-package = 'sr-std'
-rev = 'c37bb08535c49a12320af7facfd555ce05cce2e8'
-
-[dependencies.codec]
-default-features = false
-features = ['derive']
-package = 'parity-scale-codec'
-version = '1.0.0'
-
-[dependencies.serde]
-features = ['derive']
-optional = true
-version = '1.0.101'
-
-[dependencies.membership]
-default_features = false
-package = 'substrate-membership-module'
-path = '../membership'
-
-[dependencies.common]
-default_features = false
-package = 'substrate-common-module'
-path = '../common'
-
-[dev-dependencies.runtime-io]
-default_features = false
-git = 'https://github.com/paritytech/substrate.git'
-package = 'sr-io'
-rev = 'c37bb08535c49a12320af7facfd555ce05cce2e8'
-
-[dev-dependencies.balances]
-default_features = false
-git = 'https://github.com/paritytech/substrate.git'
-package = 'srml-balances'
-rev = 'c37bb08535c49a12320af7facfd555ce05cce2e8'
-
-[dev-dependencies.timestamp]
-default_features = false
-git = 'https://github.com/paritytech/substrate.git'
-package = 'srml-timestamp'
-rev = 'c37bb08535c49a12320af7facfd555ce05cce2e8'
-
-[dev-dependencies.primitives]
-default_features = false
-git = 'https://github.com/paritytech/substrate.git'
-package = 'substrate-primitives'
-rev = 'c37bb08535c49a12320af7facfd555ce05cce2e8'

+ 0 - 425
runtime-modules/roles/src/actors.rs

@@ -1,425 +0,0 @@
-// Clippy linter warning
-#![allow(clippy::redundant_closure_call)] // disable it because of the substrate lib design
-                                          // example:  pub Parameters get(parameters) build(|config: &GenesisConfig| {..}
-
-use codec::{Decode, Encode};
-use common::currency::{BalanceOf, GovernanceCurrency};
-use rstd::prelude::*;
-use sr_primitives::traits::{Bounded, Zero};
-use srml_support::traits::{
-    Currency, LockIdentifier, LockableCurrency, WithdrawReason, WithdrawReasons,
-};
-use srml_support::{decl_event, decl_module, decl_storage, ensure};
-use system::{self, ensure_root, ensure_signed};
-
-#[cfg(feature = "std")]
-use serde::{Deserialize, Serialize};
-
-pub use membership::members::Role;
-
-const STAKING_ID: LockIdentifier = *b"role_stk";
-
-#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
-#[derive(Encode, Decode, Copy, Clone, Eq, PartialEq, Debug)]
-pub struct RoleParameters<Balance, BlockNumber> {
-    // minium balance required to stake to enter a role
-    pub min_stake: Balance,
-
-    // minimum actors to maintain - if role is unstaking
-    // and remaining actors would be less that this value - prevent or punish for unstaking
-    pub min_actors: u32,
-
-    // the maximum number of spots available to fill for a role
-    pub max_actors: u32,
-
-    // fixed amount of tokens paid to actors' primary account
-    pub reward: Balance,
-
-    // payouts are made at this block interval
-    pub reward_period: BlockNumber,
-
-    // minimum amount of time before being able to unstake
-    pub bonding_period: BlockNumber,
-
-    // how long tokens remain locked for after unstaking
-    pub unbonding_period: BlockNumber,
-
-    // minimum period required to be in service. unbonding before this time is highly penalized
-    pub min_service_period: BlockNumber,
-
-    // "startup" time allowed for roles that need to sync their infrastructure
-    // with other providers before they are considered in service and punishable for
-    // not delivering required level of service.
-    pub startup_grace_period: BlockNumber,
-
-    // small fee burned to make a request to enter role
-    pub entry_request_fee: Balance,
-}
-
-impl<Balance: From<u32>, BlockNumber: From<u32>> Default for RoleParameters<Balance, BlockNumber> {
-    fn default() -> Self {
-        Self {
-            min_stake: Balance::from(3000),
-            max_actors: 10,
-            reward: Balance::from(10),
-            reward_period: BlockNumber::from(600),
-            unbonding_period: BlockNumber::from(600),
-            entry_request_fee: Balance::from(50),
-
-            // not currently used
-            min_actors: 1,
-            bonding_period: BlockNumber::from(600),
-            min_service_period: BlockNumber::from(600),
-            startup_grace_period: BlockNumber::from(600),
-        }
-    }
-}
-
-#[derive(Encode, Decode, Clone)]
-pub struct Actor<T: Trait> {
-    pub member_id: MemberId<T>,
-    pub role: Role,
-    pub account: T::AccountId,
-    pub joined_at: T::BlockNumber,
-}
-
-pub trait ActorRemoved<T: Trait> {
-    fn actor_removed(actor: &T::AccountId);
-}
-
-pub trait Trait: system::Trait + GovernanceCurrency + membership::members::Trait {
-    type Event: From<Event<Self>> + Into<<Self as system::Trait>::Event>;
-
-    type OnActorRemoved: ActorRemoved<Self>;
-}
-
-pub type MemberId<T> = <T as membership::members::Trait>::MemberId;
-// actor account, memberid, role, expires
-pub type Request<T> = (
-    <T as system::Trait>::AccountId,
-    MemberId<T>,
-    Role,
-    <T as system::Trait>::BlockNumber,
-);
-pub type Requests<T> = Vec<Request<T>>;
-
-pub const DEFAULT_REQUEST_LIFETIME: u32 = 300;
-pub const REQUEST_CLEARING_INTERVAL: u32 = 100;
-
-decl_storage! {
-    trait Store for Module<T: Trait> as Actors {
-        /// requirements to enter and maintain status in roles
-        pub Parameters get(parameters) build(|config: &GenesisConfig| {
-            if config.enable_storage_role {
-                let storage_params: RoleParameters<BalanceOf<T>, T::BlockNumber> = Default::default();
-                vec![(Role::StorageProvider, storage_params)]
-            } else {
-                vec![]
-            }
-        }): map Role => Option<RoleParameters<BalanceOf<T>, T::BlockNumber>>;
-
-        /// the roles members can enter into
-        pub AvailableRoles get(available_roles) build(|config: &GenesisConfig| {
-            if config.enable_storage_role {
-                vec![(Role::StorageProvider)]
-            } else {
-                vec![]
-            }
-        }): Vec<Role>;
-
-        /// Actors list
-        pub ActorAccountIds get(actor_account_ids) : Vec<T::AccountId>;
-
-        /// actor accounts mapped to their actor
-        pub ActorByAccountId get(actor_by_account_id) : map T::AccountId => Option<Actor<T>>;
-
-        /// actor accounts associated with a role
-        pub AccountIdsByRole get(account_ids_by_role) : map Role => Vec<T::AccountId>;
-
-        /// actor accounts associated with a member id
-        pub AccountIdsByMemberId get(account_ids_by_member_id) : map MemberId<T> => Vec<T::AccountId>;
-
-        /// First step before enter a role is registering intent with a new account/key.
-        /// This is done by sending a role_entry_request() from the new account.
-        /// The member must then send a stake() transaction to approve the request and enter the desired role.
-        /// The account making the request will be bonded and must have
-        /// sufficient balance to cover the minimum stake for the role.
-        /// Bonding only occurs after successful entry into a role.
-        pub RoleEntryRequests get(role_entry_requests) : Requests<T>;
-
-        /// Entry request expires after this number of blocks
-        pub RequestLifeTime get(request_life_time) config(request_life_time) : u32 = DEFAULT_REQUEST_LIFETIME;
-    }
-    add_extra_genesis {
-        config(enable_storage_role): bool;
-    }
-}
-
-decl_event! {
-    pub enum Event<T> where
-      <T as system::Trait>::AccountId {
-        EntryRequested(AccountId, Role),
-        Staked(AccountId, Role),
-        Unstaked(AccountId, Role),
-    }
-}
-
-impl<T: Trait> Module<T> {
-    fn is_role_available(role: Role) -> bool {
-        Self::available_roles().into_iter().any(|r| role == r)
-    }
-
-    fn ensure_actor(role_key: &T::AccountId) -> Result<Actor<T>, &'static str> {
-        Self::actor_by_account_id(role_key).ok_or("not role key")
-    }
-
-    fn ensure_role_parameters(
-        role: Role,
-    ) -> Result<RoleParameters<BalanceOf<T>, T::BlockNumber>, &'static str> {
-        Self::parameters(role).ok_or("no parameters for role")
-    }
-
-    // Mutating
-
-    fn remove_actor_from_service(actor_account: T::AccountId, role: Role, member_id: MemberId<T>) {
-        let accounts: Vec<T::AccountId> = Self::account_ids_by_role(role)
-            .into_iter()
-            .filter(|account| *account != actor_account)
-            .collect();
-        <AccountIdsByRole<T>>::insert(role, accounts);
-
-        let accounts: Vec<T::AccountId> = Self::account_ids_by_member_id(&member_id)
-            .into_iter()
-            .filter(|account| *account != actor_account)
-            .collect();
-        <AccountIdsByMemberId<T>>::insert(&member_id, accounts);
-
-        let accounts: Vec<T::AccountId> = Self::actor_account_ids()
-            .into_iter()
-            .filter(|account| *account != actor_account)
-            .collect();
-        <ActorAccountIds<T>>::put(accounts);
-
-        <ActorByAccountId<T>>::remove(&actor_account);
-
-        T::OnActorRemoved::actor_removed(&actor_account);
-    }
-
-    fn apply_unstake(
-        actor_account: T::AccountId,
-        role: Role,
-        member_id: MemberId<T>,
-        unbonding_period: T::BlockNumber,
-        stake: BalanceOf<T>,
-    ) {
-        // simple unstaking ...only applying unbonding period
-        Self::update_lock(
-            &actor_account,
-            stake,
-            <system::Module<T>>::block_number() + unbonding_period,
-        );
-
-        Self::remove_actor_from_service(actor_account, role, member_id);
-    }
-
-    // Locks account and only allows paying for transaction fees. Account cannot
-    // transfer or reserve funds.
-    fn update_lock(account: &T::AccountId, stake: BalanceOf<T>, until: T::BlockNumber) {
-        T::Currency::set_lock(
-            STAKING_ID,
-            account,
-            stake,
-            until,
-            WithdrawReasons::all() & !(WithdrawReason::TransactionPayment | WithdrawReason::Fee),
-        );
-    }
-
-    pub fn is_role_account(account_id: &T::AccountId) -> bool {
-        <ActorByAccountId<T>>::exists(account_id)
-    }
-
-    pub fn account_has_role(account_id: &T::AccountId, role: Role) -> bool {
-        Self::actor_by_account_id(account_id).map_or(false, |actor| actor.role == role)
-    }
-}
-
-decl_module! {
-    pub struct Module<T: Trait> for enum Call where origin: T::Origin {
-        fn deposit_event() = default;
-
-        fn on_initialize(now: T::BlockNumber) {
-            // clear expired requests
-            if now % T::BlockNumber::from(REQUEST_CLEARING_INTERVAL) == T::BlockNumber::zero() {
-                let requests: Requests<T> = Self::role_entry_requests()
-                    .into_iter()
-                    .filter(|request| request.3 > now)
-                    .collect();
-
-                <RoleEntryRequests<T>>::put(requests);
-            }
-        }
-
-        fn on_finalize(now: T::BlockNumber) {
-
-            // payout rewards to actors
-            for role in Self::available_roles().iter() {
-                if let Some(params) = Self::parameters(role) {
-                    if !(now % params.reward_period == T::BlockNumber::zero()) { continue }
-                    let accounts = Self::account_ids_by_role(role);
-                    for actor in accounts.into_iter().map(Self::actor_by_account_id) {
-                        if let Some(actor) = actor {
-                            if now > actor.joined_at + params.reward_period {
-                                // reward can top up balance if it is below minimum stake requirement
-                                // this guarantees overtime that actor always covers the minimum stake and
-                                // has enough balance to pay for tx fees
-                                let balance = T::Currency::free_balance(&actor.account);
-                                if balance < params.min_stake {
-                                    let _ = T::Currency::deposit_into_existing(&actor.account, params.reward);
-                                } else {
-                                    // otherwise it should go the the member's root account
-                                    if let Some(profile) = <membership::members::Module<T>>::member_profile(&actor.member_id) {
-                                        let _ = T::Currency::deposit_into_existing(&profile.root_account, params.reward);
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-
-        pub fn role_entry_request(origin, role: Role, member_id: MemberId<T>) {
-            let sender = ensure_signed(origin)?;
-
-            ensure!(!Self::is_role_account(&sender), "account already used");
-
-            ensure!(Self::is_role_available(role), "inactive role");
-
-            let role_parameters = Self::ensure_role_parameters(role)?;
-
-            <membership::members::Module<T>>::ensure_profile(member_id)?;
-
-            // pay (burn) entry fee - spam filter
-            let fee = role_parameters.entry_request_fee;
-            ensure!(T::Currency::can_slash(&sender, fee), "cannot pay role entry request fee");
-            let _ = T::Currency::slash(&sender, fee);
-
-            <RoleEntryRequests<T>>::mutate(|requests| {
-                let expires = <system::Module<T>>::block_number()+ T::BlockNumber::from(Self::request_life_time());
-                requests.push((sender.clone(), member_id, role, expires));
-            });
-            Self::deposit_event(RawEvent::EntryRequested(sender, role));
-        }
-
-        /// Member activating entry request
-        pub fn stake(origin, role: Role, actor_account: T::AccountId) {
-            let sender = ensure_signed(origin)?;
-            ensure!(<membership::members::Module<T>>::is_member_account(&sender), "members only can accept storage entry request");
-
-            // get member ids from requests that are controller by origin
-            let ids = Self::role_entry_requests()
-                .iter()
-                .filter(|request| request.0 == actor_account && request.2 == role)
-                .map(|request| request.1)
-                .filter(|member_id|
-                    <membership::members::Module<T>>::ensure_profile(*member_id)
-                        .ok()
-                        .map_or(false, |profile| profile.root_account == sender || profile.controller_account == sender)
-                )
-                .collect::<Vec<_>>();
-
-            ensure!(!ids.is_empty(), "no role entry request matches");
-
-            // take first matching id
-            let member_id = ids[0];
-
-            ensure!(!Self::is_role_account(&actor_account), "account already used");
-
-            // make sure role is still available
-            ensure!(Self::is_role_available(role), "inactive role");
-            let role_parameters = Self::ensure_role_parameters(role)?;
-
-            let accounts_in_role = Self::account_ids_by_role(role);
-
-            // ensure there is an empty slot for the role
-            ensure!(accounts_in_role.len() < role_parameters.max_actors as usize, "role slots full");
-
-            // ensure the actor account has enough balance
-            ensure!(T::Currency::free_balance(&actor_account) >= role_parameters.min_stake, "not enough balance to stake");
-
-            <AccountIdsByRole<T>>::mutate(role, |accounts| accounts.push(actor_account.clone()));
-            <AccountIdsByMemberId<T>>::mutate(&member_id, |accounts| accounts.push(actor_account.clone()));
-
-            // Lock minimum stake, but allow spending for transaction fees
-            Self::update_lock(&actor_account, role_parameters.min_stake, T::BlockNumber::max_value());
-            <ActorByAccountId<T>>::insert(&actor_account, Actor {
-                member_id,
-                account: actor_account.clone(),
-                role,
-                joined_at: <system::Module<T>>::block_number()
-            });
-            <ActorAccountIds<T>>::mutate(|accounts| accounts.push(actor_account.clone()));
-
-            let requests: Requests<T> = Self::role_entry_requests()
-                .into_iter()
-                .filter(|request| request.0 != actor_account)
-                .collect();
-            <RoleEntryRequests<T>>::put(requests);
-
-            Self::deposit_event(RawEvent::Staked(actor_account, role));
-        }
-
-        pub fn unstake(origin, actor_account: T::AccountId) {
-            let sender = ensure_signed(origin)?;
-            let actor = Self::ensure_actor(&actor_account)?;
-
-            let profile = <membership::members::Module<T>>::ensure_profile(actor.member_id)?;
-            ensure!(profile.root_account == sender || profile.controller_account == sender, "only member can unstake storage provider");
-
-            let role_parameters = Self::ensure_role_parameters(actor.role)?;
-
-            Self::apply_unstake(actor.account.clone(), actor.role, actor.member_id, role_parameters.unbonding_period, role_parameters.min_stake);
-
-            Self::deposit_event(RawEvent::Unstaked(actor.account, actor.role));
-        }
-
-        pub fn set_role_parameters(origin, role: Role, params: RoleParameters<BalanceOf<T>, T::BlockNumber>) {
-            ensure_root(origin)?;
-            let new_stake = params.min_stake;
-            <Parameters<T>>::insert(role, params);
-            // Update locks for all actors in the role. The lock for each account is already until max_value
-            // It doesn't affect actors which are unbonding, they should have already been removed from AccountIdsByRole
-            let accounts = Self::account_ids_by_role(role);
-            for account in accounts.into_iter() {
-                Self::update_lock(&account, new_stake, T::BlockNumber::max_value());
-            }
-        }
-
-        pub fn set_available_roles(origin, roles: Vec<Role>) {
-            ensure_root(origin)?;
-            AvailableRoles::put(roles);
-        }
-
-        pub fn add_to_available_roles(origin, role: Role) {
-            ensure_root(origin)?;
-            if !Self::available_roles().into_iter().any(|r| r == role) {
-                AvailableRoles::mutate(|roles| roles.push(role));
-            }
-        }
-
-        pub fn remove_from_available_roles(origin, role: Role) {
-            ensure_root(origin)?;
-            // Should we eject actors in the role being removed?
-            let roles: Vec<Role> = Self::available_roles().into_iter().filter(|r| role != *r).collect();
-            AvailableRoles::put(roles);
-        }
-
-        pub fn remove_actor(origin, actor_account: T::AccountId) {
-            ensure_root(origin)?;
-            ensure!(<ActorByAccountId<T>>::exists(&actor_account), "error trying to remove non actor account");
-            let actor = Self::actor_by_account_id(&actor_account).unwrap();
-            let role_parameters = Self::ensure_role_parameters(actor.role)?;
-            Self::apply_unstake(actor_account, actor.role, actor.member_id, role_parameters.unbonding_period, role_parameters.min_stake);
-        }
-    }
-}

+ 0 - 8
runtime-modules/roles/src/lib.rs

@@ -1,8 +0,0 @@
-// Ensure we're `no_std` when compiling for Wasm.
-#![cfg_attr(not(feature = "std"), no_std)]
-
-pub mod actors;
-pub mod traits;
-
-mod mock;
-mod tests;

+ 0 - 130
runtime-modules/roles/src/mock.rs

@@ -1,130 +0,0 @@
-#![cfg(test)]
-
-pub use super::actors;
-pub use common::currency::GovernanceCurrency;
-pub use srml_support::traits::Currency;
-pub use system;
-
-pub use primitives::{Blake2Hasher, H256};
-pub use sr_primitives::{
-    testing::{Digest, DigestItem, Header, UintAuthorityId},
-    traits::{BlakeTwo256, Convert, IdentityLookup, OnFinalize},
-    weights::Weight,
-    BuildStorage, Perbill,
-};
-
-use srml_support::{impl_outer_origin, parameter_types};
-
-impl_outer_origin! {
-    pub enum Origin for Test {}
-}
-
-pub fn alice_id() -> u32 {
-    Members::member_ids_by_root_account_id(alice_account())[0]
-}
-pub fn alice_account() -> u64 {
-    1
-}
-
-// Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted.
-#[derive(Clone, PartialEq, Eq, Debug)]
-pub struct Test;
-parameter_types! {
-    pub const BlockHashCount: u64 = 250;
-    pub const MaximumBlockWeight: u32 = 1024;
-    pub const MaximumBlockLength: u32 = 2 * 1024;
-    pub const AvailableBlockRatio: Perbill = Perbill::one();
-    pub const MinimumPeriod: u64 = 5;
-}
-
-impl system::Trait for Test {
-    type Origin = Origin;
-    type Index = u64;
-    type BlockNumber = u64;
-    type Call = ();
-    type Hash = H256;
-    type Hashing = BlakeTwo256;
-    type AccountId = u64;
-    type Lookup = IdentityLookup<Self::AccountId>;
-    type Header = Header;
-    type Event = ();
-    type BlockHashCount = BlockHashCount;
-    type MaximumBlockWeight = MaximumBlockWeight;
-    type MaximumBlockLength = MaximumBlockLength;
-    type AvailableBlockRatio = AvailableBlockRatio;
-    type Version = ();
-}
-
-parameter_types! {
-    pub const ExistentialDeposit: u32 = 0;
-    pub const TransferFee: u32 = 0;
-    pub const CreationFee: u32 = 0;
-    pub const TransactionBaseFee: u32 = 1;
-    pub const TransactionByteFee: u32 = 0;
-    pub const InitialMembersBalance: u32 = 2000;
-}
-
-impl balances::Trait for Test {
-    /// The type for recording an account's balance.
-    type Balance = u64;
-    /// What to do if an account's free balance gets zeroed.
-    type OnFreeBalanceZero = ();
-    /// What to do if a new account is created.
-    type OnNewAccount = ();
-    /// The ubiquitous event type.
-    type Event = ();
-
-    type DustRemoval = ();
-    type TransferPayment = ();
-    type ExistentialDeposit = ExistentialDeposit;
-    type TransferFee = TransferFee;
-    type CreationFee = CreationFee;
-}
-
-impl GovernanceCurrency for Test {
-    type Currency = balances::Module<Self>;
-}
-
-impl timestamp::Trait for Test {
-    type Moment = u64;
-    type OnTimestampSet = ();
-    type MinimumPeriod = MinimumPeriod;
-}
-
-impl membership::members::Trait for Test {
-    type Event = ();
-    type MemberId = u32;
-    type SubscriptionId = u32;
-    type PaidTermId = u32;
-    type ActorId = u32;
-    type InitialMembersBalance = InitialMembersBalance;
-}
-
-impl actors::Trait for Test {
-    type Event = ();
-    type OnActorRemoved = ();
-}
-
-impl actors::ActorRemoved<Test> for () {
-    fn actor_removed(_: &u64) {}
-}
-
-pub fn initial_test_ext() -> runtime_io::TestExternalities {
-    let mut t = system::GenesisConfig::default()
-        .build_storage::<Test>()
-        .unwrap();
-
-    membership::members::GenesisConfig::<Test> {
-        default_paid_membership_fee: 0,
-        members: vec![(alice_account(), "alice".into(), "".into(), "".into())],
-    }
-    .assimilate_storage(&mut t)
-    .unwrap();
-
-    t.into()
-}
-
-pub type System = system::Module<Test>;
-pub type Balances = balances::Module<Test>;
-pub type Actors = actors::Module<Test>;
-pub type Members = membership::members::Module<Test>;

+ 0 - 204
runtime-modules/roles/src/tests.rs

@@ -1,204 +0,0 @@
-#![cfg(test)]
-
-use super::mock::*;
-
-use srml_support::*;
-
-fn init_storage_role() {
-    let roles: Vec<actors::Role> = vec![actors::Role::StorageProvider];
-    assert!(
-        Actors::set_available_roles(system::RawOrigin::Root.into(), roles).is_ok(),
-        ""
-    );
-}
-
-fn init_storage_parmeters() -> actors::RoleParameters<u64, u64> {
-    let params = actors::RoleParameters {
-        // minium balance required to stake to enter a role
-        min_stake: 100 as u64,
-        min_actors: 1 as u32,
-        max_actors: 2 as u32,
-        reward: 100 as u64,
-        reward_period: 100 as u64,
-        bonding_period: 100 as u64,
-        unbonding_period: 100 as u64,
-        min_service_period: 100 as u64,
-        startup_grace_period: 100 as u64,
-        entry_request_fee: 10 as u64,
-    };
-    assert!(
-        Actors::set_role_parameters(
-            system::RawOrigin::Root.into(),
-            actors::Role::StorageProvider,
-            params.clone()
-        )
-        .is_ok(),
-        ""
-    );
-    params
-}
-
-#[test]
-fn adding_roles() {
-    initial_test_ext().execute_with(|| {
-        init_storage_role();
-        assert_eq!(
-            Actors::available_roles(),
-            vec![actors::Role::StorageProvider]
-        );
-    });
-}
-
-#[test]
-fn adding_role_parameters() {
-    initial_test_ext().execute_with(|| {
-        init_storage_role();
-        let params = init_storage_parmeters();
-        assert_eq!(
-            Actors::parameters(actors::Role::StorageProvider),
-            Some(params)
-        );
-    });
-}
-
-#[test]
-fn make_entry_request() {
-    initial_test_ext().execute_with(|| {
-        init_storage_role();
-        let storage_params = init_storage_parmeters();
-
-        let actor_account = 5 as u64;
-
-        let starting_block = 1;
-        System::set_block_number(starting_block);
-
-        let requests = Actors::role_entry_requests();
-        assert_eq!(requests.len(), 0);
-
-        assert!(
-            Actors::role_entry_request(
-                Origin::signed(actor_account),
-                actors::Role::StorageProvider,
-                alice_id()
-            )
-            .is_err(),
-            ""
-        );
-
-        let surplus_balance = 100;
-        let _ = Balances::deposit_creating(
-            &actor_account,
-            storage_params.entry_request_fee + surplus_balance,
-        );
-
-        assert!(
-            Actors::role_entry_request(
-                Origin::signed(actor_account),
-                actors::Role::StorageProvider,
-                alice_id()
-            )
-            .is_ok(),
-            ""
-        );
-
-        assert_eq!(Balances::free_balance(&actor_account), surplus_balance);
-
-        let requests = Actors::role_entry_requests();
-        assert_eq!(requests.len(), 1);
-        let request = requests[0];
-        assert_eq!(request.0, actor_account);
-        assert_eq!(request.1, alice_id());
-        assert_eq!(request.2, actors::Role::StorageProvider);
-        assert_eq!(
-            request.3,
-            starting_block
-                + <Test as system::Trait>::BlockNumber::from(Actors::request_life_time())
-        );
-    });
-}
-
-#[test]
-fn staking() {
-    initial_test_ext().execute_with(|| {
-        init_storage_role();
-        let storage_params = init_storage_parmeters();
-        let actor_account = 5;
-
-        let request: actors::Request<Test> = (
-            actor_account,
-            alice_id(),
-            actors::Role::StorageProvider,
-            1000,
-        );
-
-        <actors::RoleEntryRequests<Test>>::put(vec![request]);
-
-        let _ = Balances::deposit_creating(&actor_account, storage_params.min_stake);
-
-        assert!(Actors::stake(
-            Origin::signed(alice_account()),
-            actors::Role::StorageProvider,
-            actor_account
-        )
-        .is_ok());
-
-        let ids = Actors::actor_account_ids();
-        assert_eq!(ids, vec![actor_account]);
-
-        let actor = Actors::actor_by_account_id(actor_account);
-        assert!(actor.is_some());
-
-        let accounts_in_role = Actors::account_ids_by_role(actors::Role::StorageProvider);
-        assert_eq!(accounts_in_role, vec![actor_account]);
-
-        let account_ids_for_member = Actors::account_ids_by_member_id(alice_id());
-        assert_eq!(account_ids_for_member, vec![actor_account]);
-
-        let num_of_locks = Balances::locks(&actor_account).len();
-        assert_eq!(num_of_locks, 1);
-    });
-}
-
-#[test]
-fn unstaking() {
-    initial_test_ext().execute_with(|| {
-        init_storage_role();
-        let storage_params = init_storage_parmeters();
-        let actor_account = 5;
-
-        assert!(Actors::unstake(Origin::signed(alice_account()), actor_account).is_err());
-
-        let actor: actors::Actor<Test> = actors::Actor {
-            role: actors::Role::StorageProvider,
-            member_id: alice_id(),
-            account: actor_account,
-            joined_at: 1,
-        };
-        <actors::ActorAccountIds<Test>>::put(vec![actor_account]);
-        <actors::ActorByAccountId<Test>>::insert(&actor_account, actor);
-        <actors::AccountIdsByRole<Test>>::insert(
-            actors::Role::StorageProvider,
-            vec![actor_account],
-        );
-        <actors::AccountIdsByMemberId<Test>>::insert(alice_id(), vec![actor_account]);
-        let current_block = 500;
-
-        System::set_block_number(current_block);
-        assert!(Actors::unstake(Origin::signed(alice_account()), actor_account).is_ok());
-
-        assert_eq!(Actors::actor_account_ids().len(), 0);
-
-        let actor = Actors::actor_by_account_id(actor_account);
-        assert!(actor.is_none());
-
-        let accounts_in_role = Actors::account_ids_by_role(actors::Role::StorageProvider);
-        assert_eq!(accounts_in_role.len(), 0);
-
-        let account_ids_for_member = Actors::account_ids_by_member_id(alice_id());
-        assert_eq!(account_ids_for_member.len(), 0);
-
-        let lock = Balances::locks(&actor_account)[0].clone();
-        // assuming this is our lock
-        assert_eq!(lock.until, current_block + storage_params.unbonding_period);
-    });
-}

+ 0 - 25
runtime-modules/roles/src/traits.rs

@@ -1,25 +0,0 @@
-use crate::actors;
-
-// Roles
-pub trait Roles<T: system::Trait> {
-    fn is_role_account(account_id: &T::AccountId) -> bool;
-
-    fn account_has_role(account_id: &T::AccountId, role: actors::Role) -> bool;
-
-    // If available, return a random account ID for the given role.
-    fn random_account_for_role(role: actors::Role) -> Result<T::AccountId, &'static str>;
-}
-
-impl<T: system::Trait> Roles<T> for () {
-    fn is_role_account(_who: &T::AccountId) -> bool {
-        false
-    }
-
-    fn account_has_role(_account_id: &T::AccountId, _role: actors::Role) -> bool {
-        false
-    }
-
-    fn random_account_for_role(_role: actors::Role) -> Result<T::AccountId, &'static str> {
-        Err("not implemented")
-    }
-}

+ 0 - 7
runtime/Cargo.toml

@@ -56,7 +56,6 @@ std = [
     'governance/std',
     'membership/std',
     'memo/std',
-    'roles/std',
     'service_discovery/std',
     'storage/std',
     'proposals_engine/std',
@@ -340,12 +339,6 @@ package = 'substrate-memo-module'
 path = '../runtime-modules/memo'
 version = '1.0.0'
 
-[dependencies.roles]
-default_features = false
-package = 'substrate-roles-module'
-path = '../runtime-modules/roles'
-version = '1.0.0'
-
 [dependencies.service_discovery]
 default_features = false
 package = 'substrate-service-discovery-module'

+ 0 - 12
runtime/src/lib.rs

@@ -434,7 +434,6 @@ pub use versioned_store;
 
 pub use content_working_group as content_wg;
 mod migration;
-use roles::actors;
 
 /// Alias for ContentId, used in various places.
 pub type ContentId = primitives::H256;
@@ -759,16 +758,6 @@ impl working_group::Trait<working_group::Instance2> for Runtime {
     type Event = Event;
 }
 
-impl actors::Trait for Runtime {
-    type Event = Event;
-    type OnActorRemoved = ();
-}
-
-//TODO: SWG -  remove with roles module deletion
-impl actors::ActorRemoved<Runtime> for () {
-    fn actor_removed(_: &AccountId) {}
-}
-
 impl service_discovery::Trait for Runtime {
     type Event = Event;
 }
@@ -861,7 +850,6 @@ construct_runtime!(
         Memo: memo::{Module, Call, Storage, Event<T>},
         Members: members::{Module, Call, Storage, Event<T>, Config<T>},
         Forum: forum::{Module, Call, Storage, Event<T>, Config<T>},
-        Actors: actors::{Module, Call, Storage, Event<T>, Config},
         VersionedStore: versioned_store::{Module, Call, Storage, Event<T>, Config},
         VersionedStorePermissions: versioned_store_permissions::{Module, Call, Storage},
         Stake: stake::{Module, Call, Storage},