--- a/pallets/app-promotion/src/lib.rs +++ b/pallets/app-promotion/src/lib.rs @@ -826,7 +826,11 @@ /// Migrates lock state into freeze one /// - /// # Arguments + /// # Permissions + /// + /// * Sudo + /// + /// # Arguments /// /// * `origin`: Must be `Signed`. /// * `stakers`: Accounts to be upgraded. @@ -836,7 +840,7 @@ origin: OriginFor, stakers: Vec, ) -> DispatchResult { - ensure_signed(origin)?; + ensure_root(origin)?; stakers .into_iter() --- a/runtime/common/config/pallets/app_promotion.rs +++ b/runtime/common/config/pallets/app_promotion.rs @@ -31,6 +31,7 @@ pub const RecalculationInterval: BlockNumber = RELAY_DAYS; pub const PendingInterval: BlockNumber = 7 * DAYS; pub const Nominal: Balance = UNIQUE; + pub const HoldAndFreezeIdentifier: [u8; 16] = *b"appstakeappstake"; pub IntervalIncome: Perbill = Perbill::from_rational(5u32, 10_000); } @@ -47,4 +48,5 @@ type Nominal = Nominal; type IntervalIncome = IntervalIncome; type RuntimeEvent = RuntimeEvent; + type FreezeIdentifier = HoldAndFreezeIdentifier; } --- a/runtime/common/config/substrate.rs +++ b/runtime/common/config/substrate.rs @@ -132,6 +132,7 @@ pub const ExistentialDeposit: u128 = EXISTENTIAL_DEPOSIT; pub const MaxLocks: u32 = 50; pub const MaxReserves: u32 = 50; + pub const MaxFreezes: u32 = 20; } impl pallet_balances::Config for Runtime { @@ -150,7 +151,7 @@ type HoldIdentifier = [u8; 16]; type FreezeIdentifier = [u8; 16]; type MaxHolds = (); - type MaxFreezes = (); + type MaxFreezes = MaxFreezes; } parameter_types! {