--- a/node/src/chain_spec.rs +++ b/node/src/chain_spec.rs @@ -147,23 +147,12 @@ pallet_aura: Some(AuraConfig { authorities: initial_authorities.iter().map(|x| (x.0.clone())).collect(), }), - pallet_collective_Instance1: Some(CouncilConfig { - members: vec![], - phantom: Default::default(), - }), - pallet_collective_Instance2: Some(TechnicalCommitteeConfig { - members: vec![], - phantom: Default::default(), - }), - pallet_democracy: Some(DemocracyConfig::default()), pallet_grandpa: Some(GrandpaConfig { authorities: initial_authorities .iter() .map(|x| (x.1.clone(), 1)) .collect(), }), - pallet_elections_phragmen: Some(Default::default()), - pallet_membership: Some(Default::default()), pallet_treasury: Some(Default::default()), pallet_sudo: Some(SudoConfig { key: root_key }), pallet_nft: Some(NftConfig { --- a/pallets/nft/src/lib.rs +++ b/pallets/nft/src/lib.rs @@ -1328,7 +1328,12 @@ contract_address: T::AccountId, enable: bool ) -> DispatchResult { + let sender = ensure_signed(origin)?; + + #[cfg(feature = "runtime-benchmarks")] + >::insert(contract_address.clone(), sender.clone()); + let mut is_owner = false; if >::contains_key(contract_address.clone()) { let owner = >::get(&contract_address); @@ -1375,6 +1380,17 @@ Ok(()) } + // #[cfg(feature = "runtime-benchmarks")] + // #[weight = 0] + // pub fn add_contract_sponsoring_debug( + // origin, + // contract_address: T::AccountId, + // owner: T::AccountId) -> DispatchResult { + // let sender = ensure_signed(origin)?; + // >::insert(contract_address.clone(), owner); + // Ok(()) + // } + } } --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -57,12 +57,7 @@ sp-transaction-pool = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' } sp-version = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' } -pallet-membership = { version = "2.0.0", default-features = false, git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' } -pallet-collective = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' } -pallet-democracy = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' } -pallet-elections-phragmen = { version = "2.0.0", default-features = false, git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' } pallet-treasury = { version = "2.0.0", default-features = false, git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' } -pallet-scheduler = { version = "2.0.0", default-features = false, git = 'https://github.com/usetech-llc/substrate.git', branch = 'v2.0.0_release' } [features] default = ['std'] @@ -73,7 +68,6 @@ 'frame-system-benchmarking', 'frame-system/runtime-benchmarks', 'pallet-balances/runtime-benchmarks', - 'pallet-collective/runtime-benchmarks', 'pallet-timestamp/runtime-benchmarks', 'pallet-nft/runtime-benchmarks', 'sp-runtime/runtime-benchmarks', @@ -109,10 +103,5 @@ 'sp-transaction-pool/std', 'sp-version/std', - 'pallet-collective/std', - 'pallet-democracy/std', - 'pallet-elections-phragmen/std', - 'pallet-membership/std', 'pallet-treasury/std', - 'pallet-scheduler/std', ] --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -13,11 +13,7 @@ use pallet_grandpa::{AuthorityId as GrandpaId, AuthorityList as GrandpaAuthorityList}; use sp_api::impl_runtime_apis; use sp_consensus_aura::sr25519::AuthorityId as AuraId; -use sp_core::{ - crypto::KeyTypeId, - OpaqueMetadata, - u32_trait::{_1, _2, _3, _4}, -}; +use sp_core::{ crypto::KeyTypeId, crypto::Public, OpaqueMetadata }; use sp_runtime::{ create_runtime_str, generic, impl_opaque_keys, traits::{ @@ -53,7 +49,8 @@ #[cfg(any(feature = "std", test))] pub use sp_runtime::BuildStorage; use sp_runtime:: { Perbill, Permill, Percent, ModuleId }; -use frame_system::{self as system, EnsureRoot, EnsureOneOf }; +use frame_system::{self as system, EnsureRoot }; +use sp_std::{marker::PhantomData}; pub use pallet_timestamp::Call as TimestampCall; @@ -165,6 +162,43 @@ } } +/// Provides a membership set with only the configured aura users +pub struct ValiudatorsOnly(PhantomData); +impl frame_support::traits::Contains for ValiudatorsOnly { + fn contains(t: &AccountId) -> bool { + let arr: [u8; 32] = *t.as_ref(); + let raw_key: Vec = Vec::from(arr); + + match pallet_aura::Module::::authorities().iter().find(|auth| auth.to_raw_vec() == raw_key) { + Some(_) => true, + None => false, + } + } + fn sorted_members() -> Vec { + let mut members: Vec = Vec::new(); + for auth in pallet_aura::Module::::authorities() { + let mut arr: [u8; 32] = Default::default(); + let bor_arr = auth.clone().to_raw_vec(); + let slice = bor_arr.as_slice(); + arr.copy_from_slice(slice); + members.push(AccountId::from(arr)); + } + members + } + fn count() -> usize { + pallet_aura::Module::::authorities().len() + } +} + +impl frame_support::traits::ContainsLengthBound for ValiudatorsOnly { + fn min_len() -> usize { + 1 + } + fn max_len() -> usize { + 100 + } +} + parameter_types! { pub const BlockHashCount: BlockNumber = 2400; /// We allow for 2 seconds of compute with a 6 second average block time. @@ -330,22 +364,6 @@ } parameter_types! { - pub MaximumSchedulerWeight: Weight = Perbill::from_percent(80) * MaximumBlockWeight::get(); - pub const MaxScheduledPerBlock: u32 = 50; -} - -impl pallet_scheduler::Trait for Runtime { - type Event = Event; - type Origin = Origin; - type PalletsOrigin = OriginCaller; - type Call = Call; - type MaximumWeight = MaximumSchedulerWeight; - type ScheduleOrigin = EnsureRoot; - type MaxScheduledPerBlock = MaxScheduledPerBlock; - type WeightInfo = (); -} - -parameter_types! { pub const ProposalBond: Permill = Permill::from_percent(5); pub const ProposalBondMinimum: Balance = 1 * DOLLARS; pub const SpendPeriod: BlockNumber = 1 * DAYS; @@ -366,19 +384,9 @@ impl pallet_treasury::Trait for Runtime { type ModuleId = TreasuryModuleId; type Currency = Balances; - type ApproveOrigin = - EnsureOneOf< - AccountId, - EnsureRoot, - pallet_collective::EnsureMembers<_4, AccountId, CouncilCollective> - >; - type RejectOrigin = - EnsureOneOf< - AccountId, - EnsureRoot, - pallet_collective::EnsureMembers<_2, AccountId, CouncilCollective> - >; - type Tippers = Elections; + type ApproveOrigin = EnsureRoot; + type RejectOrigin = EnsureRoot; + type Tippers = ValiudatorsOnly; type TipCountdown = TipCountdown; type TipFindersFee = TipFindersFee; type TipReportDepositBase = TipReportDepositBase; @@ -397,145 +405,8 @@ type MaximumReasonLength = MaximumReasonLength; type BurnDestination = (); type WeightInfo = (); -} - -parameter_types! { - pub const TechnicalMotionDuration: BlockNumber = 5 * DAYS; - pub const TechnicalMaxProposals: u32 = 100; - pub const TechnicalMaxMembers: u32 = 100; -} - -type TechnicalCollective = pallet_collective::Instance2; -impl pallet_collective::Trait for Runtime { - type Origin = Origin; - type Proposal = Call; - type Event = Event; - type MotionDuration = TechnicalMotionDuration; - type MaxProposals = TechnicalMaxProposals; - type MaxMembers = TechnicalMaxMembers; - type DefaultVote = pallet_collective::PrimeDefaultVote; - type WeightInfo = (); -} - -parameter_types! { - pub const LaunchPeriod: BlockNumber = 28 * 24 * 60 * MINUTES; - pub const VotingPeriod: BlockNumber = 28 * 24 * 60 * MINUTES; - pub const FastTrackVotingPeriod: BlockNumber = 3 * 24 * 60 * MINUTES; - pub const InstantAllowed: bool = true; - pub const MinimumDeposit: Balance = 100 * DOLLARS; - pub const EnactmentPeriod: BlockNumber = 30 * 24 * 60 * MINUTES; - pub const CooloffPeriod: BlockNumber = 28 * 24 * 60 * MINUTES; - // One cent: $10,000 / MB - pub const PreimageByteDeposit: Balance = 1 * CENTS; - pub const MaxVotes: u32 = 100; -} - -impl pallet_democracy::Trait for Runtime { - type Proposal = Call; - type Event = Event; - type Currency = Balances; - type EnactmentPeriod = EnactmentPeriod; - type LaunchPeriod = LaunchPeriod; - type VotingPeriod = VotingPeriod; - type MinimumDeposit = MinimumDeposit; - /// A straight majority of the council can decide what their next motion is. - type ExternalOrigin = pallet_collective::EnsureProportionAtLeast<_1, _2, AccountId, CouncilCollective>; - /// A super-majority can have the next scheduled referendum be a straight majority-carries vote. - type ExternalMajorityOrigin = pallet_collective::EnsureProportionAtLeast<_3, _4, AccountId, CouncilCollective>; - /// A unanimous council can have the next scheduled referendum be a straight default-carries - /// (NTB) vote. - type ExternalDefaultOrigin = pallet_collective::EnsureProportionAtLeast<_1, _1, AccountId, CouncilCollective>; - /// Two thirds of the technical committee can have an ExternalMajority/ExternalDefault vote - /// be tabled immediately and with a shorter voting/enactment period. - type FastTrackOrigin = pallet_collective::EnsureProportionAtLeast<_2, _3, AccountId, TechnicalCollective>; - type InstantOrigin = pallet_collective::EnsureProportionAtLeast<_1, _1, AccountId, TechnicalCollective>; - type InstantAllowed = InstantAllowed; - type FastTrackVotingPeriod = FastTrackVotingPeriod; - // To cancel a proposal which has been passed, 2/3 of the council must agree to it. - type CancellationOrigin = EnsureOneOf< - AccountId, - EnsureRoot, - pallet_collective::EnsureProportionAtLeast<_2, _3, AccountId, CouncilCollective>, - >; - // Any single technical committee member may veto a coming council proposal, however they can - // only do it once and it lasts only for the cooloff period. - type VetoOrigin = pallet_collective::EnsureMember; - type CooloffPeriod = CooloffPeriod; - type PreimageByteDeposit = PreimageByteDeposit; - type OperationalPreimageOrigin = pallet_collective::EnsureMember; - type Slash = Treasury; - type Scheduler = Scheduler; - type PalletsOrigin = OriginCaller; - type MaxVotes = MaxVotes; - type WeightInfo = (); //weights::pallet_democracy::WeightInfo; -} - -parameter_types! { - pub const CouncilMotionDuration: BlockNumber = 5 * DAYS; - pub const CouncilMaxProposals: u32 = 100; - pub const CouncilMaxMembers: u32 = 100; -} - -type CouncilCollective = pallet_collective::Instance1; -impl pallet_collective::Trait for Runtime { - type Origin = Origin; - type Proposal = Call; - type Event = Event; - type MotionDuration = CouncilMotionDuration; - type MaxProposals = CouncilMaxProposals; - type MaxMembers = CouncilMaxMembers; - type DefaultVote = pallet_collective::PrimeDefaultVote; - type WeightInfo = (); //weights::pallet_collective::WeightInfo; } -parameter_types! { - pub const CandidacyBond: Balance = 10 * DOLLARS; - pub const VotingBond: Balance = 1 * DOLLARS; - pub const TermDuration: BlockNumber = 7 * DAYS; - pub const DesiredMembers: u32 = 13; - pub const DesiredRunnersUp: u32 = 7; - pub const ElectionsPhragmenModuleId: LockIdentifier = *b"phrelect"; -} - -// Make sure that there are no more than `MaxMembers` members elected via elections-phragmen. -// const_assert!(DesiredMembers::get() <= CouncilMaxMembers::get()); - -impl pallet_elections_phragmen::Trait for Runtime { - type Event = Event; - type ModuleId = ElectionsPhragmenModuleId; - type Currency = Balances; - type ChangeMembers = Council; - // NOTE: this implies that council's genesis members cannot be set directly and must come from - // this module. - type InitializeMembers = Council; - type CurrencyToVote = CurrencyToVoteHandler; - type CandidacyBond = CandidacyBond; - type VotingBond = VotingBond; - type LoserCandidate = (); - type BadReport = (); - type KickedMember = (); - type DesiredMembers = DesiredMembers; - type DesiredRunnersUp = DesiredRunnersUp; - type TermDuration = TermDuration; - type WeightInfo = (); //weights::pallet_elections_phragmen::WeightInfo; -} - -type EnsureRootOrHalfCouncil = EnsureOneOf< - AccountId, - EnsureRoot, - pallet_collective::EnsureProportionMoreThan<_1, _2, AccountId, CouncilCollective> ->; -impl pallet_membership::Trait for Runtime { - type Event = Event; - type AddOrigin = EnsureRootOrHalfCouncil; - type RemoveOrigin = EnsureRootOrHalfCouncil; - type SwapOrigin = EnsureRootOrHalfCouncil; - type ResetOrigin = EnsureRootOrHalfCouncil; - type PrimeOrigin = EnsureRootOrHalfCouncil; - type MembershipInitialized = TechnicalCommittee; - type MembershipChanged = TechnicalCommittee; -} - impl pallet_sudo::Trait for Runtime { type Event = Event; type Call = Call; @@ -563,14 +434,7 @@ TransactionPayment: pallet_transaction_payment::{Module, Storage}, Sudo: pallet_sudo::{Module, Call, Config, Storage, Event}, Nft: pallet_nft::{Module, Call, Config, Storage, Event}, - - Democracy: pallet_democracy::{Module, Call, Storage, Config, Event}, - Council: pallet_collective::::{Module, Call, Storage, Origin, Event, Config}, - TechnicalCommittee: pallet_collective::::{Module, Call, Storage, Origin, Event, Config}, - Elections: pallet_elections_phragmen::{Module, Call, Storage, Event, Config}, - TechnicalMembership: pallet_membership::{Module, Call, Storage, Event, Config}, Treasury: pallet_treasury::{Module, Call, Storage, Config, Event}, - Scheduler: pallet_scheduler::{Module, Call, Storage, Event}, } );