Browse Source

substrate v2: small refactoring

Mokhtar Naamani 5 years ago
parent
commit
9f879e2490

+ 4 - 3
Cargo.toml

@@ -20,7 +20,7 @@ std = [
     'indices/std',
     'grandpa/std',
     'primitives/std',
-    'sr-primitives/std',
+    'runtime-primitives/std',
     'system/std',
     'timestamp/std',
     'sudo/std',
@@ -86,7 +86,6 @@ git = 'https://github.com/paritytech/substrate.git'
 package = 'substrate-offchain-primitives'
 branch = 'master'
 
-#renamed from runtime-primitives
 [dependencies.primitives]
 default_features = false
 git = 'https://github.com/paritytech/substrate.git'
@@ -114,9 +113,11 @@ features = ['derive']
 optional = true
 version = '1.0'
 
-[dependencies.sr-primitives]
+#renamed from runtime_primitives
+[dependencies.runtime-primitives]
 default_features = false
 git = 'https://github.com/paritytech/substrate.git'
+package = 'sr-primitives'
 branch = 'master'
 
 [dependencies.substrate-session]

+ 12 - 8
src/governance/council.rs

@@ -1,7 +1,7 @@
 use rstd::prelude::*;
-use runtime_primitives::traits::{As, Zero};
+use runtime_primitives::traits::{Zero};
 use srml_support::{decl_event, decl_module, decl_storage, ensure, StorageValue};
-use system;
+use system::{self, ensure_root};
 
 pub use super::election::{self, CouncilElected, Seat, Seats};
 pub use crate::currency::{BalanceOf, GovernanceCurrency};
@@ -30,7 +30,7 @@ pub trait Trait: system::Trait + GovernanceCurrency {
 decl_storage! {
     trait Store for Module<T: Trait> as Council {
         ActiveCouncil get(active_council) config(): Seats<T::AccountId, BalanceOf<T>>;
-        TermEndsAt get(term_ends_at) config() : T::BlockNumber = T::BlockNumber::sa(1);
+        TermEndsAt get(term_ends_at) config() : T::BlockNumber = T::BlockNumber::one();
     }
 }
 
@@ -73,10 +73,11 @@ decl_module! {
             }
         }
 
-        // Sudo methods...
+        // Privileged methods
 
         /// Force set a zero staked council. Stakes in existing council will vanish into thin air!
-        fn set_council(accounts: Vec<T::AccountId>) {
+        fn set_council(origin, accounts: Vec<T::AccountId>) {
+            ensure_root(origin)?;
             let new_council: Seats<T::AccountId, BalanceOf<T>> = accounts.into_iter().map(|account| {
                 Seat {
                     member: account,
@@ -88,7 +89,8 @@ decl_module! {
         }
 
         /// Adds a zero staked council member
-        fn add_council_member(account: T::AccountId) {
+        fn add_council_member(origin, account: T::AccountId) {
+            ensure_root(origin)?;
             ensure!(!Self::is_councilor(&account), "cannot add same account multiple times");
             let seat = Seat {
                 member: account,
@@ -100,7 +102,8 @@ decl_module! {
             <ActiveCouncil<T>>::mutate(|council| council.push(seat));
         }
 
-        fn remove_council_member(account_to_remove: T::AccountId) {
+        fn remove_council_member(origin, account_to_remove: T::AccountId) {
+            ensure_root(origin)?;
             ensure!(Self::is_councilor(&account_to_remove), "account is not a councilor");
             let filtered_council: Seats<T::AccountId, BalanceOf<T>> = Self::active_council()
                 .into_iter()
@@ -110,7 +113,8 @@ decl_module! {
         }
 
         /// Set blocknumber when council term will end
-        fn set_term_ends_at(ends_at: T::BlockNumber) {
+        fn set_term_ends_at(origin, ends_at: T::BlockNumber) {
+            ensure_root(origin)?;
             ensure!(ends_at > <system::Module<T>>::block_number(), "must set future block number");
             <TermEndsAt<T>>::put(ends_at);
         }

+ 38 - 24
src/governance/election.rs

@@ -3,10 +3,10 @@ use srml_support::traits::{Currency, ReservableCurrency};
 use srml_support::{
     decl_event, decl_module, decl_storage, dispatch::Result, ensure, StorageMap, StorageValue,
 };
-use system::{self, ensure_signed};
-
-use runtime_primitives::traits::{As, Hash, Zero};
+use system::{self, ensure_signed, ensure_root};
 
+use runtime_primitives::traits::{Hash, Zero};
+use codec::{Encode, Decode};
 use rstd::collections::btree_map::BTreeMap;
 use rstd::ops::Add;
 
@@ -107,14 +107,14 @@ decl_storage! {
 
         // Current Election Parameters - default "zero" values are not meaningful. Running an election without
         // settings reasonable values is a bad idea. Parameters can be set in the TriggerElection hook.
-        AnnouncingPeriod get(announcing_period) config(): T::BlockNumber = T::BlockNumber::sa(100);
-        VotingPeriod get(voting_period) config(): T::BlockNumber = T::BlockNumber::sa(100);
-        RevealingPeriod get(revealing_period) config(): T::BlockNumber = T::BlockNumber::sa(100);
+        AnnouncingPeriod get(announcing_period) config(): T::BlockNumber = T::BlockNumber::from(100);
+        VotingPeriod get(voting_period) config(): T::BlockNumber = T::BlockNumber::from(100);
+        RevealingPeriod get(revealing_period) config(): T::BlockNumber = T::BlockNumber::from(100);
         CouncilSize get(council_size) config(): u32 = 10;
         CandidacyLimit get (candidacy_limit) config(): u32 = 20;
-        MinCouncilStake get(min_council_stake) config(): BalanceOf<T> = BalanceOf::<T>::sa(100);
-        NewTermDuration get(new_term_duration) config(): T::BlockNumber = T::BlockNumber::sa(1000);
-        MinVotingStake get(min_voting_stake) config(): BalanceOf<T> = BalanceOf::<T>::sa(10);
+        MinCouncilStake get(min_council_stake) config(): BalanceOf<T> = BalanceOf::<T>::from(100);
+        NewTermDuration get(new_term_duration) config(): T::BlockNumber = T::BlockNumber::from(1000);
+        MinVotingStake get(min_voting_stake) config(): BalanceOf<T> = BalanceOf::<T>::from(10);
     }
 }
 
@@ -783,62 +783,74 @@ decl_module! {
             Self::deposit_event(RawEvent::Revealed(sender, commitment, vote));
         }
 
-        fn set_stage_announcing(ends_at: T::BlockNumber) {
+        fn set_stage_announcing(origin, ends_at: T::BlockNumber) {
+            ensure_root(origin)?;
             ensure!(ends_at > <system::Module<T>>::block_number(), "must end at future block number");
             <Stage<T>>::put(ElectionStage::Announcing(ends_at));
         }
 
-        fn set_stage_revealing(ends_at: T::BlockNumber) {
+        fn set_stage_revealing(origin, ends_at: T::BlockNumber) {
+            ensure_root(origin)?;
             ensure!(ends_at > <system::Module<T>>::block_number(), "must end at future block number");
             <Stage<T>>::put(ElectionStage::Revealing(ends_at));
         }
 
-        fn set_stage_voting(ends_at: T::BlockNumber) {
+        fn set_stage_voting(origin, ends_at: T::BlockNumber) {
+            ensure_root(origin)?;
             ensure!(ends_at > <system::Module<T>>::block_number(), "must end at future block number");
             <Stage<T>>::put(ElectionStage::Voting(ends_at));
         }
 
-        fn set_param_announcing_period(period: T::BlockNumber) {
+        fn set_param_announcing_period(origin, period: T::BlockNumber) {
+            ensure_root(origin)?;
             ensure!(!Self::is_election_running(), "cannot change params during election");
             ensure!(!period.is_zero(), "period cannot be zero");
             <AnnouncingPeriod<T>>::put(period);
         }
-        fn set_param_voting_period(period: T::BlockNumber) {
+        fn set_param_voting_period(origin,  period: T::BlockNumber) {
+            ensure_root(origin)?;
             ensure!(!Self::is_election_running(), "cannot change params during election");
             ensure!(!period.is_zero(), "period cannot be zero");
             <VotingPeriod<T>>::put(period);
         }
-        fn set_param_revealing_period(period: T::BlockNumber) {
+        fn set_param_revealing_period(origin, period: T::BlockNumber) {
+            ensure_root(origin)?;
             ensure!(!Self::is_election_running(), "cannot change params during election");
             ensure!(!period.is_zero(), "period cannot be zero");
             <RevealingPeriod<T>>::put(period);
         }
-        fn set_param_min_council_stake(amount: BalanceOf<T>) {
+        fn set_param_min_council_stake(origin, amount: BalanceOf<T>) {
+            ensure_root(origin)?;
             ensure!(!Self::is_election_running(), "cannot change params during election");
             <MinCouncilStake<T>>::put(amount);
         }
-        fn set_param_new_term_duration(duration: T::BlockNumber) {
+        fn set_param_new_term_duration(origin, duration: T::BlockNumber) {
+            ensure_root(origin)?;
             ensure!(!Self::is_election_running(), "cannot change params during election");
             ensure!(!duration.is_zero(), "new term duration cannot be zero");
             <NewTermDuration<T>>::put(duration);
         }
-        fn set_param_council_size(council_size: u32) {
+        fn set_param_council_size(origin, council_size: u32) {
+            ensure_root(origin)?;
             ensure!(!Self::is_election_running(), "cannot change params during election");
             ensure!(council_size > 0, "council size cannot be zero");
             ensure!(council_size <= Self::candidacy_limit(), "council size cannot greater than candidacy limit");
             <CouncilSize<T>>::put(council_size);
         }
-        fn set_param_candidacy_limit(limit: u32) {
+        fn set_param_candidacy_limit(origin, limit: u32) {
+            ensure_root(origin)?;
             ensure!(!Self::is_election_running(), "cannot change params during election");
             ensure!(limit >= Self::council_size(), "candidacy limit cannot be less than council size");
             <CandidacyLimit<T>>::put(limit);
         }
-        fn set_param_min_voting_stake(amount: BalanceOf<T>) {
+        fn set_param_min_voting_stake(origin, amount: BalanceOf<T>) {
+            ensure_root(origin)?;
             ensure!(!Self::is_election_running(), "cannot change params during election");
             <MinVotingStake<T>>::put(amount);
         }
 
-        fn force_stop_election() {
+        fn force_stop_election(origin) {
+            ensure_root(origin)?;
             ensure!(Self::is_election_running(), "only running election can be stopped");
 
             let mut votes = Vec::new();
@@ -856,11 +868,13 @@ decl_module! {
             );
         }
 
-        fn force_start_election() {
+        fn force_start_election(origin) {
+            ensure_root(origin)?;
             Self::start_election(<council::Module<T>>::active_council())?;
         }
 
-        fn set_auto_start (flag: bool) {
+        fn set_auto_start (origin, flag: bool) {
+            ensure_root(origin)?;
             <AutoStart<T>>::put(flag);
         }
 
@@ -883,7 +897,7 @@ impl<T: Trait> council::CouncilTermEnded for Module<T> {
 mod tests {
     use super::*;
     use crate::governance::mock::*;
-    use parity_codec::Encode;
+    use codec::Encode;
     use runtime_io::with_externalities;
     use srml_support::*;
 

+ 11 - 8
src/governance/proposals.rs

@@ -1,14 +1,15 @@
 use rstd::prelude::*;
 use runtime_io::print;
-use runtime_primitives::traits::{As, Hash, Zero};
+use runtime_primitives::traits::{Hash, Zero};
 use srml_support::traits::{Currency, ReservableCurrency};
 use srml_support::{
     decl_event, decl_module, decl_storage, dispatch, ensure, StorageMap, StorageValue,
 };
 use {
     consensus,
-    system::{self, ensure_signed},
+    system::{self, ensure_signed, ensure_root},
 };
+use codec::{Encode, Decode};
 
 #[cfg(test)]
 use primitives::storage::well_known_keys;
@@ -171,19 +172,19 @@ decl_storage! {
 
         /// Minimum amount of a balance to be staked in order to make a proposal.
         MinStake get(min_stake) config(): BalanceOf<T> =
-            BalanceOf::<T>::sa(DEFAULT_MIN_STAKE);
+            BalanceOf::<T>::from(DEFAULT_MIN_STAKE);
 
         /// A fee to be slashed (burn) in case a proposer decides to cancel a proposal.
         CancellationFee get(cancellation_fee) config(): BalanceOf<T> =
-            BalanceOf::<T>::sa(DEFAULT_CANCELLATION_FEE);
+            BalanceOf::<T>::from(DEFAULT_CANCELLATION_FEE);
 
         /// A fee to be slashed (burn) in case a proposal was rejected.
         RejectionFee get(rejection_fee) config(): BalanceOf<T> =
-            BalanceOf::<T>::sa(DEFAULT_REJECTION_FEE);
+            BalanceOf::<T>::from(DEFAULT_REJECTION_FEE);
 
         /// Max duration of proposal in blocks until it will be expired if not enough votes.
         VotingPeriod get(voting_period) config(): T::BlockNumber =
-            T::BlockNumber::sa(DEFAULT_VOTING_PERIOD_IN_SECS /
+            T::BlockNumber::from(DEFAULT_VOTING_PERIOD_IN_SECS /
             (<timestamp::Module<T>>::minimum_period().as_() * 2));
 
         NameMaxLen get(name_max_len) config(): u32 = DEFAULT_NAME_MAX_LEN;
@@ -330,7 +331,8 @@ decl_module! {
         }
 
         /// Cancel a proposal and return stake without slashing
-        fn veto_proposal(proposal_id: u32) {
+        fn veto_proposal(origin, proposal_id: u32) {
+            ensure_root(origin)?;
             ensure!(<Proposals<T>>::exists(proposal_id), MSG_PROPOSAL_NOT_FOUND);
             let proposal = Self::proposals(proposal_id);
             ensure!(proposal.status == Active, MSG_PROPOSAL_FINALIZED);
@@ -342,7 +344,8 @@ decl_module! {
             Self::deposit_event(RawEvent::ProposalVetoed(proposal_id));
         }
 
-        fn set_approval_quorum(new_value: u32) {
+        fn set_approval_quorum(origin, new_value: u32) {
+            ensure_root(origin)?;
             ensure!(new_value > 0, "approval quorom must be greater than zero");
             <ApprovalQuorum<T>>::put(new_value);
         }

+ 1 - 1
src/governance/sealed_vote.rs

@@ -1,6 +1,6 @@
-use parity_codec::Encode;
 use rstd::vec::Vec;
 use srml_support::ensure;
+use codec::{Encode, Decode};
 
 #[derive(Clone, Copy, Encode, Decode, Default)]
 pub struct SealedVote<AccountId, Stake, Hash, Vote>

+ 1 - 0
src/governance/stake.rs

@@ -1,5 +1,6 @@
 use rstd::cmp::Ordering;
 use runtime_primitives::traits::SimpleArithmetic;
+use codec::{Encode, Decode};
 
 #[derive(Encode, Decode, Clone, Copy, Default, Debug)]
 pub struct Stake<Balance>

+ 7 - 16
src/lib.rs

@@ -17,11 +17,11 @@ use grandpa::fg_primitives::{self, ScheduledChange};
 use grandpa::{AuthorityId as GrandpaId, AuthorityWeight as GrandpaWeight};
 use primitives::{crypto::key_types, OpaqueMetadata};
 use rstd::prelude::*;
-use sr_primitives::traits::{
+use runtime_primitives::traits::{
     BlakeTwo256, Block as BlockT, ConvertInto, DigestFor, NumberFor, StaticLookup, Verify,
 };
-use sr_primitives::weights::Weight;
-use sr_primitives::{
+use runtime_primitives::weights::Weight;
+use runtime_primitives::{
     create_runtime_str, generic, impl_opaque_keys, transaction_validity::TransactionValidity,
     AnySignature, ApplyResult,
 };
@@ -32,8 +32,8 @@ use version::RuntimeVersion;
 // A few exports that help ease life for downstream crates.
 pub use balances::Call as BalancesCall;
 #[cfg(any(feature = "std", test))]
-pub use sr_primitives::BuildStorage;
-pub use sr_primitives::{Perbill, Permill};
+pub use runtime_primitives::BuildStorage;
+pub use runtime_primitives::{Perbill, Permill};
 pub use srml_support::{construct_runtime, parameter_types, StorageValue};
 pub use timestamp::Call as TimestampCall;
 
@@ -70,7 +70,7 @@ pub type DigestItem = generic::DigestItem<Hash>;
 pub mod opaque {
     use super::*;
 
-    pub use sr_primitives::OpaqueExtrinsic as UncheckedExtrinsic;
+    pub use runtime_primitives::OpaqueExtrinsic as UncheckedExtrinsic;
 
     /// Opaque block header type.
     pub type Header = generic::Header<BlockNumber, BlakeTwo256>;
@@ -266,6 +266,7 @@ mod migration;
 mod roles;
 mod service_discovery;
 use service_discovery::discovery;
+use roles::actors;
 
 /// Alias for ContentId, used in various places.
 pub type ContentId = primitives::H256;
@@ -429,16 +430,6 @@ impl discovery::Trait for Runtime {
     type Roles = LookupRoles;
 }
 
-impl grandpa::Trait for Runtime {
-    type SessionKey = AuthorityId;
-    type Log = Log;
-    type Event = Event;
-}
-
-impl finality_tracker::Trait for Runtime {
-    type OnFinalizationStalled = grandpa::SyncedAuthorities<Runtime>;
-}
-
 construct_runtime!(
 	pub enum Runtime where
 		Block = Block,

+ 5 - 11
src/membership/members.rs

@@ -1,14 +1,13 @@
 use crate::currency::{BalanceOf, GovernanceCurrency};
 use crate::traits::{Members, Roles};
-use parity_codec::Codec;
-use parity_codec_derive::{Decode, Encode};
+use codec::{Codec, Decode, Encode};
 use rstd::prelude::*;
-use runtime_primitives::traits::{As, MaybeSerializeDebug, Member, SimpleArithmetic};
+use runtime_primitives::traits::{MaybeSerializeDebug, Member, SimpleArithmetic};
 use srml_support::traits::Currency;
 use srml_support::{
     decl_event, decl_module, decl_storage, dispatch, ensure, Parameter, StorageMap, StorageValue,
 };
-use system::{self, ensure_signed};
+use system::{self, ensure_signed, ensure_root};
 use timestamp;
 
 pub trait Trait: system::Trait + GovernanceCurrency + timestamp::Trait {
@@ -20,8 +19,6 @@ pub trait Trait: system::Trait + GovernanceCurrency + timestamp::Trait {
         + Codec
         + Default
         + Copy
-        + As<usize>
-        + As<u64>
         + MaybeSerializeDebug
         + PartialEq;
 
@@ -31,8 +28,6 @@ pub trait Trait: system::Trait + GovernanceCurrency + timestamp::Trait {
         + Codec
         + Default
         + Copy
-        + As<usize>
-        + As<u64>
         + MaybeSerializeDebug
         + PartialEq;
 
@@ -42,8 +37,6 @@ pub trait Trait: system::Trait + GovernanceCurrency + timestamp::Trait {
         + Codec
         + Default
         + Copy
-        + As<usize>
-        + As<u64>
         + MaybeSerializeDebug
         + PartialEq;
 
@@ -324,7 +317,8 @@ decl_module! {
             Self::deposit_event(RawEvent::MemberRegistered(member_id, new_member.clone()));
         }
 
-        pub fn set_screening_authority(authority: T::AccountId) {
+        pub fn set_screening_authority(origin, authority: T::AccountId) {
+            ensure_root(origin)?;
             <ScreeningAuthority<T>>::put(authority);
         }
     }

+ 23 - 18
src/roles/actors.rs

@@ -1,13 +1,13 @@
 use crate::currency::{BalanceOf, GovernanceCurrency};
-use parity_codec_derive::{Decode, Encode};
+use codec::{Decode, Encode};
 use rstd::prelude::*;
 use runtime_io::print;
-use runtime_primitives::traits::{As, Bounded, MaybeDebug, Zero};
+use runtime_primitives::traits::{Bounded, MaybeDebug, Zero};
 use srml_support::traits::{
     Currency, LockIdentifier, LockableCurrency, WithdrawReason, WithdrawReasons,
 };
 use srml_support::{decl_event, decl_module, decl_storage, ensure, StorageMap, StorageValue};
-use system::{self, ensure_signed};
+use system::{self, ensure_signed, ensure_root};
 
 use crate::traits::Members;
 
@@ -58,18 +58,18 @@ pub struct RoleParameters<T: Trait> {
 impl<T: Trait> Default for RoleParameters<T> {
     fn default() -> Self {
         Self {
-            min_stake: BalanceOf::<T>::sa(3000),
+            min_stake: BalanceOf::<T>::from(3000),
             max_actors: 10,
-            reward: BalanceOf::<T>::sa(10),
-            reward_period: T::BlockNumber::sa(600),
-            unbonding_period: T::BlockNumber::sa(600),
-            entry_request_fee: BalanceOf::<T>::sa(50),
+            reward: BalanceOf::<T>::from(10),
+            reward_period: T::BlockNumber::from(600),
+            unbonding_period: T::BlockNumber::from(600),
+            entry_request_fee: BalanceOf::<T>::from(50),
 
             // not currently used
             min_actors: 5,
-            bonding_period: T::BlockNumber::sa(600),
-            min_service_period: T::BlockNumber::sa(600),
-            startup_grace_period: T::BlockNumber::sa(600),
+            bonding_period: T::BlockNumber::from(600),
+            min_service_period: T::BlockNumber::from(600),
+            startup_grace_period: T::BlockNumber::from(600),
         }
     }
 }
@@ -260,7 +260,7 @@ decl_module! {
 
         fn on_initialize(now: T::BlockNumber) {
             // clear expired requests
-            if now % T::BlockNumber::sa(REQUEST_CLEARING_INTERVAL) == T::BlockNumber::zero() {
+            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)
@@ -315,7 +315,7 @@ decl_module! {
             let _ = T::Currency::slash(&sender, fee);
 
             <RoleEntryRequests<T>>::mutate(|requests| {
-                let expires = <system::Module<T>>::block_number()+ T::BlockNumber::sa(Self::request_life_time());
+                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));
@@ -383,7 +383,8 @@ decl_module! {
             Self::deposit_event(RawEvent::Unstaked(actor.account, actor.role));
         }
 
-        pub fn set_role_parameters(role: Role, params: RoleParameters<T>) {
+        pub fn set_role_parameters(origin, role: Role, params: RoleParameters<T>) {
+            ensure_root(origin)?;
             let new_stake = params.min_stake.clone();
             <Parameters<T>>::insert(role, params);
             // Update locks for all actors in the role. The lock for each account is already until max_value
@@ -394,23 +395,27 @@ decl_module! {
             }
         }
 
-        pub fn set_available_roles(roles: Vec<Role>) {
+        pub fn set_available_roles(origin, roles: Vec<Role>) {
+            ensure_root(origin)?;
             <AvailableRoles<T>>::put(roles);
         }
 
-        pub fn add_to_available_roles(role: Role) {
+        pub fn add_to_available_roles(origin, role: Role) {
+            ensure_root(origin)?;
             if !Self::available_roles().into_iter().any(|r| r == role) {
                 <AvailableRoles<T>>::mutate(|roles| roles.push(role));
             }
         }
 
-        pub fn remove_from_available_roles(role: 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<T>>::put(roles);
         }
 
-        pub fn remove_actor(actor_account: T::AccountId) {
+        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)?;

+ 1 - 1
src/service_discovery/discovery.rs

@@ -1,6 +1,6 @@
 use crate::traits::Roles;
 use rstd::prelude::*;
-use runtime_primitives::traits::As;
+use codec::{Encode, Decode};
 
 use srml_support::{decl_event, decl_module, decl_storage, ensure, StorageMap, StorageValue};
 use system::{self, ensure_root, ensure_signed};

+ 11 - 10
src/storage/data_directory.rs

@@ -1,16 +1,15 @@
 use crate::roles::actors;
 use crate::storage::data_object_type_registry::Trait as DOTRTrait;
 use crate::traits::{ContentIdExists, IsActiveDataObjectType, Members, Roles};
-use parity_codec::Codec;
-use parity_codec_derive::{Decode, Encode};
+use codec::{Codec, Decode, Encode};
 use rstd::prelude::*;
 use runtime_primitives::traits::{
-    As, MaybeDebug, MaybeDisplay, MaybeSerializeDebug, Member, SimpleArithmetic,
+    MaybeDebug, MaybeDisplay, MaybeSerializeDebug, Member, SimpleArithmetic,
 };
 use srml_support::{
     decl_event, decl_module, decl_storage, dispatch, ensure, Parameter, StorageMap, StorageValue,
 };
-use system::{self, ensure_signed};
+use system::{self, ensure_signed, ensure_root};
 
 pub trait Trait: timestamp::Trait + system::Trait + DOTRTrait + MaybeDebug {
     type Event: From<Event<Self>> + Into<<Self as system::Trait>::Event>;
@@ -23,8 +22,6 @@ pub trait Trait: timestamp::Trait + system::Trait + DOTRTrait + MaybeDebug {
         + Codec
         + Default
         + Copy
-        + As<usize>
-        + As<u64>
         + MaybeSerializeDebug
         + PartialEq;
 
@@ -278,15 +275,18 @@ decl_module! {
 
         // Sudo methods
 
-        fn set_primary_liaison_account_id(account: T::AccountId) {
+        fn set_primary_liaison_account_id(origin, account: T::AccountId) {
+            ensure_root(origin)?;
             <PrimaryLiaisonAccountId<T>>::put(account);
         }
 
-        fn unset_primary_liaison_account_id() {
+        fn unset_primary_liaison_account_id(origin) {
+            ensure_root(origin)?;
             <PrimaryLiaisonAccountId<T>>::take();
         }
 
-        fn remove_known_content_id(content_id: T::ContentId) {
+        fn remove_known_content_id(origin, content_id: T::ContentId) {
+            ensure_root(origin)?;
             let upd_content_ids: Vec<T::ContentId> = Self::known_content_ids()
                 .into_iter()
                 .filter(|&id| id != content_id)
@@ -294,7 +294,8 @@ decl_module! {
             <KnownContentIds<T>>::put(upd_content_ids);
         }
 
-        fn set_known_content_id(content_ids: Vec<T::ContentId>) {
+        fn set_known_content_id(origin, content_ids: Vec<T::ContentId>) {
+            ensure_root(origin)?;
             <KnownContentIds<T>>::put(content_ids);
         }
     }

+ 5 - 8
src/storage/data_object_storage_registry.rs

@@ -1,10 +1,9 @@
 use crate::roles::actors;
 use crate::storage::data_directory::Trait as DDTrait;
 use crate::traits::{ContentHasStorage, ContentIdExists, Members, Roles};
-use parity_codec::Codec;
-use parity_codec_derive::{Decode, Encode};
+use codec::{Codec, Decode, Encode};
 use rstd::prelude::*;
-use runtime_primitives::traits::{As, MaybeDebug, MaybeSerializeDebug, Member, SimpleArithmetic};
+use runtime_primitives::traits::{MaybeDebug, MaybeSerializeDebug, Member, SimpleArithmetic};
 use srml_support::{
     decl_event, decl_module, decl_storage, ensure, Parameter, StorageMap, StorageValue,
 };
@@ -20,8 +19,6 @@ pub trait Trait: timestamp::Trait + system::Trait + DDTrait + MaybeDebug {
         + Codec
         + Default
         + Copy
-        + As<usize>
-        + As<u64>
         + MaybeSerializeDebug
         + PartialEq;
 
@@ -54,11 +51,11 @@ decl_storage! {
 
         // TODO deprecated
         // Start at this value
-        pub FirstRelationshipId get(first_relationship_id) config(first_relationship_id): T::DataObjectStorageRelationshipId = T::DataObjectStorageRelationshipId::sa(DEFAULT_FIRST_RELATIONSHIP_ID);
+        pub FirstRelationshipId get(first_relationship_id) config(first_relationship_id): T::DataObjectStorageRelationshipId = T::DataObjectStorageRelationshipId::from(DEFAULT_FIRST_RELATIONSHIP_ID);
 
         // TODO deprecated
         // Increment
-        pub NextRelationshipId get(next_relationship_id) build(|config: &GenesisConfig<T>| config.first_relationship_id): T::DataObjectStorageRelationshipId = T::DataObjectStorageRelationshipId::sa(DEFAULT_FIRST_RELATIONSHIP_ID);
+        pub NextRelationshipId get(next_relationship_id) build(|config: &GenesisConfig<T>| config.first_relationship_id): T::DataObjectStorageRelationshipId = T::DataObjectStorageRelationshipId::from(DEFAULT_FIRST_RELATIONSHIP_ID);
 
         // TODO deprecated
         // Mapping of Data object types
@@ -150,7 +147,7 @@ decl_module! {
             };
 
             <Relationships<T>>::insert(new_id, dosr);
-            <NextRelationshipId<T>>::mutate(|n| { *n += T::DataObjectStorageRelationshipId::sa(1); });
+            <NextRelationshipId<T>>::mutate(|n| { *n += T::DataObjectStorageRelationshipId::from(1); });
 
             // Also add the DOSR to the list of DOSRs for the CID. Uniqueness is guaranteed
             // by the map, so we can just append the new_id to the list.

+ 15 - 13
src/storage/data_object_type_registry.rs

@@ -1,9 +1,9 @@
 use crate::traits;
-use parity_codec::Codec;
-use parity_codec_derive::{Decode, Encode};
+use codec::{Codec, Decode, Encode};
 use rstd::prelude::*;
-use runtime_primitives::traits::{As, MaybeDebug, MaybeSerializeDebug, Member, SimpleArithmetic};
+use runtime_primitives::traits::{MaybeDebug, MaybeSerializeDebug, Member, SimpleArithmetic};
 use srml_support::{decl_event, decl_module, decl_storage, Parameter, StorageMap, StorageValue};
+use system::{ensure_root};
 
 pub trait Trait: system::Trait + MaybeDebug {
     type Event: From<Event<Self>> + Into<<Self as system::Trait>::Event>;
@@ -14,8 +14,6 @@ pub trait Trait: system::Trait + MaybeDebug {
         + Codec
         + Default
         + Copy
-        + As<usize>
-        + As<u64>
         + MaybeSerializeDebug
         + PartialEq;
 }
@@ -54,10 +52,10 @@ decl_storage! {
         // TODO hardcode data object type for ID 1
 
         // Start at this value
-        pub FirstDataObjectTypeId get(first_data_object_type_id) config(first_data_object_type_id): T::DataObjectTypeId = T::DataObjectTypeId::sa(DEFAULT_FIRST_DATA_OBJECT_TYPE_ID);
+        pub FirstDataObjectTypeId get(first_data_object_type_id) config(first_data_object_type_id): T::DataObjectTypeId = T::DataObjectTypeId::from(DEFAULT_FIRST_DATA_OBJECT_TYPE_ID);
 
         // Increment
-        pub NextDataObjectTypeId get(next_data_object_type_id) build(|config: &GenesisConfig<T>| config.first_data_object_type_id): T::DataObjectTypeId = T::DataObjectTypeId::sa(DEFAULT_FIRST_DATA_OBJECT_TYPE_ID);
+        pub NextDataObjectTypeId get(next_data_object_type_id) build(|config: &GenesisConfig<T>| config.first_data_object_type_id): T::DataObjectTypeId = T::DataObjectTypeId::from(DEFAULT_FIRST_DATA_OBJECT_TYPE_ID);
 
         // Mapping of Data object types
         pub DataObjectTypes get(data_object_types): map T::DataObjectTypeId => Option<DataObjectType>;
@@ -92,11 +90,12 @@ decl_module! {
                 let new_type_id = Self::next_data_object_type_id();
 
                 <DataObjectTypes<T>>::insert(new_type_id, do_type);
-                <NextDataObjectTypeId<T>>::mutate(|n| { *n += T::DataObjectTypeId::sa(1); });
+                <NextDataObjectTypeId<T>>::mutate(|n| { *n += T::DataObjectTypeId::from(1); });
             }
         }
 
-        pub fn register_data_object_type(data_object_type: DataObjectType) {
+        pub fn register_data_object_type(origin, data_object_type: DataObjectType) {
+            ensure_root(origin)?;
             let new_do_type_id = Self::next_data_object_type_id();
             let do_type: DataObjectType = DataObjectType {
                 description: data_object_type.description.clone(),
@@ -104,13 +103,14 @@ decl_module! {
             };
 
             <DataObjectTypes<T>>::insert(new_do_type_id, do_type);
-            <NextDataObjectTypeId<T>>::mutate(|n| { *n += T::DataObjectTypeId::sa(1); });
+            <NextDataObjectTypeId<T>>::mutate(|n| { *n += T::DataObjectTypeId::from(1); });
 
             Self::deposit_event(RawEvent::DataObjectTypeRegistered(new_do_type_id));
         }
 
         // TODO use DataObjectTypeUpdate
-        pub fn update_data_object_type(id: T::DataObjectTypeId, data_object_type: DataObjectType) {
+        pub fn update_data_object_type(origin, id: T::DataObjectTypeId, data_object_type: DataObjectType) {
+            ensure_root(origin)?;
             let mut do_type = Self::ensure_data_object_type(id)?;
 
             do_type.description = data_object_type.description.clone();
@@ -125,7 +125,8 @@ decl_module! {
         // toggling DO types is likely a more common operation than updating
         // other aspects.
         // TODO deprecate or express via update_data_type
-        pub fn activate_data_object_type(id: T::DataObjectTypeId) {
+        pub fn activate_data_object_type(origin, id: T::DataObjectTypeId) {
+            ensure_root(origin)?;
             let mut do_type = Self::ensure_data_object_type(id)?;
 
             do_type.active = true;
@@ -135,7 +136,8 @@ decl_module! {
             Self::deposit_event(RawEvent::DataObjectTypeUpdated(id));
         }
 
-        pub fn deactivate_data_object_type(id: T::DataObjectTypeId) {
+        pub fn deactivate_data_object_type(origin, id: T::DataObjectTypeId) {
+            ensure_root(origin)?;
             let mut do_type = Self::ensure_data_object_type(id)?;
 
             do_type.active = false;

+ 5 - 8
src/storage/downloads.rs

@@ -8,10 +8,9 @@
 use crate::storage::data_directory::Trait as DDTrait;
 use crate::storage::data_object_storage_registry::Trait as DOSRTrait;
 use crate::traits::{ContentHasStorage, ContentIdExists};
-use parity_codec::Codec;
-use parity_codec_derive::{Decode, Encode};
+use codec::{Codec, Decode, Encode};
 use rstd::prelude::*;
-use runtime_primitives::traits::{As, MaybeSerializeDebug, Member, SimpleArithmetic};
+use runtime_primitives::traits::{MaybeSerializeDebug, Member, SimpleArithmetic};
 use srml_support::{
     decl_event, decl_module, decl_storage, ensure, Parameter, StorageMap, StorageValue,
 };
@@ -26,8 +25,6 @@ pub trait Trait: timestamp::Trait + system::Trait + DOSRTrait + DDTrait {
         + Codec
         + Default
         + Copy
-        + As<usize>
-        + As<u64>
         + MaybeSerializeDebug
         + PartialEq;
 
@@ -72,10 +69,10 @@ pub struct DownloadSession<T: Trait> {
 decl_storage! {
     trait Store for Module<T: Trait> as DownloadSessions {
         // Start at this value
-        pub FirstDownloadSessionId get(first_download_session_id) config(first_download_session_id): T::DownloadSessionId = T::DownloadSessionId::sa(DEFAULT_FIRST_DOWNLOAD_SESSION_ID);
+        pub FirstDownloadSessionId get(first_download_session_id) config(first_download_session_id): T::DownloadSessionId = T::DownloadSessionId::from(DEFAULT_FIRST_DOWNLOAD_SESSION_ID);
 
         // Increment
-        pub NextDownloadSessionId get(next_download_session_id) build(|config: &GenesisConfig<T>| config.first_download_session_id): T::DownloadSessionId = T::DownloadSessionId::sa(DEFAULT_FIRST_DOWNLOAD_SESSION_ID);
+        pub NextDownloadSessionId get(next_download_session_id) build(|config: &GenesisConfig<T>| config.first_download_session_id): T::DownloadSessionId = T::DownloadSessionId::from(DEFAULT_FIRST_DOWNLOAD_SESSION_ID);
 
         // Mapping of Data object types
         pub DownloadSessions get(download_sessions): map T::DownloadSessionId => Option<DownloadSession<T>>;
@@ -122,7 +119,7 @@ decl_module! {
             };
 
             <DownloadSessions<T>>::insert(new_id, session);
-            <NextDownloadSessionId<T>>::mutate(|n| { *n += T::DownloadSessionId::sa(1); });
+            <NextDownloadSessionId<T>>::mutate(|n| { *n += T::DownloadSessionId::from(1); });
 
             // Fire off event
             Self::deposit_event(RawEvent::DownloadStarted(content_id));

+ 2 - 4
src/traits.rs

@@ -1,7 +1,7 @@
 use crate::roles::actors;
 use crate::storage::{data_directory, data_object_storage_registry, data_object_type_registry};
-use parity_codec::Codec;
-use runtime_primitives::traits::{As, MaybeSerializeDebug, Member, SimpleArithmetic};
+use codec::Codec;
+use runtime_primitives::traits::{MaybeSerializeDebug, Member, SimpleArithmetic};
 use srml_support::Parameter;
 use system;
 
@@ -13,8 +13,6 @@ pub trait Members<T: system::Trait> {
         + Codec
         + Default
         + Copy
-        + As<usize>
-        + As<u64>
         + MaybeSerializeDebug
         + PartialEq;