From 39570163cfa8a29507d80db8f618a57947b83d84 Mon Sep 17 00:00:00 2001 From: kaiserkarel Date: Tue, 1 Feb 2022 11:55:31 +0100 Subject: [PATCH 1/2] Introduce ControlOrigin --- frame/mosaic/src/lib.rs | 10 +++++++--- frame/mosaic/src/mock.rs | 1 + runtime/dali/src/lib.rs | 3 ++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/frame/mosaic/src/lib.rs b/frame/mosaic/src/lib.rs index 08c204aea65..e46c110d2d7 100644 --- a/frame/mosaic/src/lib.rs +++ b/frame/mosaic/src/lib.rs @@ -70,6 +70,10 @@ pub mod pallet { + PartialEq; type NetworkId: FullCodec + TypeInfo + Clone + Debug + PartialEq; + + /// Origin capable of setting the relayer. Inteded to be RootOrHalfCouncil, as it is also + /// used as the origin capable of stopping attackers. + type ControlOrigin: EnsureOrigin; } #[pallet::pallet] @@ -254,7 +258,7 @@ pub mod pallet { origin: OriginFor, relayer: T::AccountId, ) -> DispatchResultWithPostInfo { - ensure_root(origin)?; + T::ControlOrigin::ensure_origin(origin)?; Relayer::::set(Some(StaleRelayer::new(relayer.clone()))); Self::deposit_event(Event::RelayerSet { relayer }); Ok(().into()) @@ -308,7 +312,7 @@ pub mod pallet { ) -> DispatchResultWithPostInfo { // Can also be token governance associated I reckon, as Angular holders should be able // to grant mosaic permission to mint. We'll save that for phase 3. - ensure_root(origin)?; + T::ControlOrigin::ensure_origin(origin)?; let current_block = >::block_number(); AssetsInfo::::mutate(asset_id, |item| { @@ -549,7 +553,7 @@ pub mod pallet { origin: OriginFor, period: BlockNumberOf, ) -> DispatchResultWithPostInfo { - ensure_root(origin)?; + T::ControlOrigin::ensure_origin(origin)?; ensure!(period > T::MinimumTimeLockPeriod::get(), Error::::BadTimelockPeriod); TimeLockPeriod::::set(period); Ok(().into()) diff --git a/frame/mosaic/src/mock.rs b/frame/mosaic/src/mock.rs index 8afd741ab3d..04b259c4e6d 100644 --- a/frame/mosaic/src/mock.rs +++ b/frame/mosaic/src/mock.rs @@ -105,6 +105,7 @@ impl pallet_mosaic::Config for Test { type BudgetPenaltyDecayer = pallet_mosaic::BudgetPenaltyDecayer; type NetworkId = NetworkId; + type ControlOrigin = EnsureRoot; } // Build genesis storage according to the mock runtime. diff --git a/runtime/dali/src/lib.rs b/runtime/dali/src/lib.rs index 837c454f05f..6f12b1ea939 100644 --- a/runtime/dali/src/lib.rs +++ b/runtime/dali/src/lib.rs @@ -860,7 +860,7 @@ impl dutch_auction::Config for Runtime { } parameter_types! { - pub const MosaicId: PalletId = PalletId(*b"plmosaic"); + pub const MosaicId: PalletId = PalletId(*b"plmosaic"); pub const MinimumTTL: BlockNumber = 10; pub const MinimumTimeLockPeriod: BlockNumber = 20; } @@ -873,6 +873,7 @@ impl mosaic::Config for Runtime { type MinimumTimeLockPeriod = MinimumTimeLockPeriod; type BudgetPenaltyDecayer = mosaic::BudgetPenaltyDecayer; type NetworkId = u32; + type ControlOrigin = EnsureRootOrHalfCouncil; } construct_runtime!( From 0695e25cf78a36dc8aa64f3cd57fd71baa4e378d Mon Sep 17 00:00:00 2001 From: kaiserkarel Date: Tue, 1 Feb 2022 12:44:40 +0100 Subject: [PATCH 2/2] import EnsureRoot --- frame/mosaic/src/mock.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/frame/mosaic/src/mock.rs b/frame/mosaic/src/mock.rs index 04b259c4e6d..171fae146cf 100644 --- a/frame/mosaic/src/mock.rs +++ b/frame/mosaic/src/mock.rs @@ -13,6 +13,7 @@ use sp_runtime::{ testing::Header, traits::{BlakeTwo256, IdentityLookup}, }; +use system::EnsureRoot; pub type AccountId = u128; pub type BlockNumber = u64;