difftreelog
feature(runtime): app promoi rate is changed
in: master
4 files changed
js-packages/tests/sub/appPromotion/appPromotion.test.tsdiffbeforeafterboth--- a/js-packages/tests/sub/appPromotion/appPromotion.test.ts
+++ b/js-packages/tests/sub/appPromotion/appPromotion.test.ts
@@ -984,7 +984,7 @@
const DAY = 7200n;
const ACCURACY = 1_000_000_000n;
// 5n / 10_000n = 0.05% p/day
- const income = base + base * (ACCURACY * (calcPeriod * 5n) / (10_000n * DAY)) / ACCURACY ;
+ const income = base + base * (ACCURACY * (calcPeriod * 453_256n) / (1_000_000_000n * DAY)) / ACCURACY ;
if(iter > 1) {
return calculateIncome(income, iter - 1, calcPeriod);
pallets/collator-selection/src/mock.rsdiffbeforeafterboth--- a/pallets/collator-selection/src/mock.rs
+++ b/pallets/collator-selection/src/mock.rs
@@ -208,7 +208,7 @@
pub const DefaultWeightToFeeCoefficient: u64 = 100_000;
pub const DefaultMinGasPrice: u64 = 100_000;
pub const MaxXcmAllowedLocations: u32 = 16;
- pub AppPromotionDailyRate: Perbill = Perbill::from_rational(5u32, 10_000);
+ pub AppPromotionDailyRate: Perbill = Perbill::from_rational(453_256u64, 1_000_000_000u64);
pub const DayRelayBlocks: u32 = 1;
pub const LicenceBondIdentifier: [u8; 16] = *b"licenceidentifie";
}
runtime/common/config/pallets/app_promotion.rsdiffbeforeafterboth--- a/runtime/common/config/pallets/app_promotion.rs
+++ b/runtime/common/config/pallets/app_promotion.rs
@@ -15,12 +15,12 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
use frame_support::{parameter_types, PalletId};
-use sp_arithmetic::Perbill;
use up_common::{
constants::{DAYS, RELAY_DAYS, UNIQUE},
types::Balance,
};
+use super::AppPromotionDailyRate;
use crate::{
runtime_common::config::pallets::{RelayChainBlockNumberProvider, TreasuryAccountId},
Balances, BlockNumber, EvmContractHelpers, Maintenance, Runtime, RuntimeEvent, Unique,
@@ -32,7 +32,6 @@
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);
pub MaintenanceMode: bool = Maintenance::is_enabled();
}
@@ -47,7 +46,7 @@
type RecalculationInterval = RecalculationInterval;
type PendingInterval = PendingInterval;
type Nominal = Nominal;
- type IntervalIncome = IntervalIncome;
+ type IntervalIncome = AppPromotionDailyRate;
type RuntimeEvent = RuntimeEvent;
type FreezeIdentifier = HoldAndFreezeIdentifier;
type IsMaintenanceModeEnabled = MaintenanceMode;
runtime/common/config/pallets/mod.rsdiffbeforeafterboth1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617use alloc::string::{String, ToString};1819use frame_support::{20 parameter_types,21 traits::{ConstU32, ConstU64, Currency},22};23use sp_arithmetic::Perbill;24use sp_runtime::traits::{AccountIdConversion, BlockNumberProvider};25use up_common::{26 constants::*,27 types::{AccountId, Balance, BlockNumber},28};29use up_data_structs::mapping::{CrossTokenAddressMapping, EvmTokenAddressMapping};3031#[cfg(feature = "governance")]32use crate::runtime_common::config::governance;33use crate::{34 runtime_common::{35 config::{ethereum::EvmCollectionHelpersAddress, substrate::TreasuryModuleId},36 dispatch::CollectionDispatchT,37 weights::CommonWeights,38 RelayChainBlockNumberProvider,39 },40 Balances, Runtime, RuntimeCall, RuntimeEvent, DECIMALS, TOKEN_SYMBOL, VERSION,41};4243#[cfg(feature = "foreign-assets")]44pub mod foreign_asset;4546#[cfg(feature = "app-promotion")]47pub mod app_promotion;4849#[cfg(feature = "collator-selection")]50pub mod collator_selection;5152#[cfg(feature = "preimage")]53pub mod preimage;5455parameter_types! {56 pub const CollectionCreationPrice: Balance = 2 * UNIQUE;57 pub TreasuryAccountId: AccountId = TreasuryModuleId::get().into_account_truncating();58}5960impl pallet_common::Config for Runtime {61 type WeightInfo = pallet_common::weights::SubstrateWeight<Self>;62 type RuntimeEvent = RuntimeEvent;63 type Currency = Balances;64 type CollectionCreationPrice = CollectionCreationPrice;65 type TreasuryAccountId = TreasuryAccountId;66 type CollectionDispatch = CollectionDispatchT<Self>;6768 type EvmTokenAddressMapping = EvmTokenAddressMapping;69 type CrossTokenAddressMapping = CrossTokenAddressMapping<Self::AccountId>;70 type ContractAddress = EvmCollectionHelpersAddress;71}7273impl pallet_structure::Config for Runtime {74 type RuntimeEvent = RuntimeEvent;75 type RuntimeCall = RuntimeCall;76 type WeightInfo = pallet_structure::weights::SubstrateWeight<Self>;77}7879impl pallet_fungible::Config for Runtime {80 type WeightInfo = pallet_fungible::weights::SubstrateWeight<Self>;81}82impl pallet_refungible::Config for Runtime {83 type WeightInfo = pallet_refungible::weights::SubstrateWeight<Self>;84}85impl pallet_nonfungible::Config for Runtime {86 type WeightInfo = pallet_nonfungible::weights::SubstrateWeight<Self>;87}8889parameter_types! {90 pub const Decimals: u8 = DECIMALS;91 pub Name: String = String::from_utf8_lossy(VERSION.impl_name.as_ref()).to_string();92 pub Symbol: String = TOKEN_SYMBOL.to_string();93}94impl pallet_balances_adapter::Config for Runtime {95 type Inspect = Balances;96 type Mutate = Balances;97 type CurrencyBalance = <Balances as Currency<Self::AccountId>>::Balance;98 type Decimals = Decimals;99 type Name = Name;100 type Symbol = Symbol;101 type WeightInfo = pallet_balances::weights::SubstrateWeight<Self>;102}103104// every time per how many blocks inflation is applied105#[cfg(feature = "fast-inflation")]106parameter_types! {107 pub const InflationBlockInterval: BlockNumber = 10;108}109#[cfg(not(feature = "fast-inflation"))]110parameter_types! {111 pub const InflationBlockInterval: BlockNumber = 100;112}113114/// Pallet-inflation needs block number in on_initialize, where there is no `validation_data` exists yet115pub struct OnInitializeBlockNumberProvider;116impl BlockNumberProvider for OnInitializeBlockNumberProvider {117 type BlockNumber = BlockNumber;118119 fn current_block_number() -> Self::BlockNumber {120 // This code was broken previously, but after fixing, we decided it would be better to leave it broken for now.121 0122 // use hex_literal::hex;123 // use parity_scale_codec::Decode;124 // use sp_io::storage;125 // // TODO: Replace with the following code after https://github.com/paritytech/polkadot-sdk/commit/3ea497b5a0fdda252f9c5a3c257cfaf8685f02fd lands126 // // <cumulus_pallet_parachain_system::Pallet<Runtime>>::last_relay_block_number()127 //128 // // ParachainSystem.LastRelayChainBlockNumber129 // let Some(encoded) = storage::get(&hex!("45323df7cc47150b3930e2666b0aa313a2bca190d36bd834cc73a38fc213ecbd")) else {130 // // First parachain block131 // return Default::default()132 // };133 // BlockNumber::decode(&mut encoded.as_ref())134 // .expect("typeof(RelayBlockNumber) == typeof(BlockNumber) == u32; qed")135 }136}137138/// Used for the pallet inflation139impl pallet_inflation::Config for Runtime {140 type Currency = Balances;141 type TreasuryAccountId = TreasuryAccountId;142 type InflationBlockInterval = InflationBlockInterval;143 type OnInitializeBlockNumberProvider = OnInitializeBlockNumberProvider;144}145146impl pallet_unique::Config for Runtime {147 type WeightInfo = pallet_unique::weights::SubstrateWeight<Self>;148 type CommonWeightInfo = CommonWeights<Self>;149 type StructureWeightInfo = pallet_structure::weights::SubstrateWeight<Self>;150 type RefungibleExtensionsWeightInfo = CommonWeights<Self>;151}152153parameter_types! {154 pub AppPromotionDailyRate: Perbill = Perbill::from_rational(5u32, 10_000);155 pub const MaxCollators: u32 = MAX_COLLATORS;156 pub const LicenseBond: Balance = GENESIS_LICENSE_BOND;157158 pub const DayRelayBlocks: BlockNumber = RELAY_DAYS;159}160161#[cfg(not(feature = "session-test-timings"))]162parameter_types! {163 pub const SessionPeriod: BlockNumber = SESSION_LENGTH;164}165166#[cfg(feature = "session-test-timings")]167parameter_types! {168 pub const SessionPeriod: BlockNumber = 5 * MINUTES;169}170171impl pallet_configuration::Config for Runtime {172 type RuntimeEvent = RuntimeEvent;173 type Balance = Balance;174 type DefaultWeightToFeeCoefficient = ConstU64<{ up_common::constants::WEIGHT_TO_FEE_COEFF }>;175 type DefaultMinGasPrice = ConstU64<{ up_common::constants::MIN_GAS_PRICE }>;176 type DefaultCollatorSelectionMaxCollators = MaxCollators;177 type DefaultCollatorSelectionKickThreshold = SessionPeriod;178 type DefaultCollatorSelectionLicenseBond = LicenseBond;179 type MaxXcmAllowedLocations = ConstU32<16>;180 type AppPromotionDailyRate = AppPromotionDailyRate;181 type DayRelayBlocks = DayRelayBlocks;182 type WeightInfo = pallet_configuration::weights::SubstrateWeight<Self>;183}184185impl pallet_maintenance::Config for Runtime {186 type RuntimeEvent = RuntimeEvent;187188 type RuntimeCall = RuntimeCall;189190 #[cfg(feature = "governance")]191 type ManagerOrigin = governance::RootOrTechnicalCommitteeMember;192193 #[cfg(not(feature = "governance"))]194 type ManagerOrigin = frame_system::EnsureRoot<AccountId>;195196 type PreimageOrigin = frame_system::EnsureRoot<AccountId>;197198 #[cfg(feature = "preimage")]199 type Preimages = crate::Preimage;200 #[cfg(not(feature = "preimage"))]201 type Preimages = ();202 type WeightInfo = pallet_maintenance::weights::SubstrateWeight<Self>;203}1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617use alloc::string::{String, ToString};1819use frame_support::{20 parameter_types,21 traits::{ConstU32, ConstU64, Currency},22};23use sp_arithmetic::Perbill;24use sp_runtime::traits::{AccountIdConversion, BlockNumberProvider};25use up_common::{26 constants::*,27 types::{AccountId, Balance, BlockNumber},28};29use up_data_structs::mapping::{CrossTokenAddressMapping, EvmTokenAddressMapping};3031#[cfg(feature = "governance")]32use crate::runtime_common::config::governance;33use crate::{34 runtime_common::{35 config::{ethereum::EvmCollectionHelpersAddress, substrate::TreasuryModuleId},36 dispatch::CollectionDispatchT,37 weights::CommonWeights,38 RelayChainBlockNumberProvider,39 },40 Balances, Runtime, RuntimeCall, RuntimeEvent, DECIMALS, TOKEN_SYMBOL, VERSION,41};4243#[cfg(feature = "foreign-assets")]44pub mod foreign_asset;4546#[cfg(feature = "app-promotion")]47pub mod app_promotion;4849#[cfg(feature = "collator-selection")]50pub mod collator_selection;5152#[cfg(feature = "preimage")]53pub mod preimage;5455parameter_types! {56 pub const CollectionCreationPrice: Balance = 2 * UNIQUE;57 pub TreasuryAccountId: AccountId = TreasuryModuleId::get().into_account_truncating();58}5960impl pallet_common::Config for Runtime {61 type WeightInfo = pallet_common::weights::SubstrateWeight<Self>;62 type RuntimeEvent = RuntimeEvent;63 type Currency = Balances;64 type CollectionCreationPrice = CollectionCreationPrice;65 type TreasuryAccountId = TreasuryAccountId;66 type CollectionDispatch = CollectionDispatchT<Self>;6768 type EvmTokenAddressMapping = EvmTokenAddressMapping;69 type CrossTokenAddressMapping = CrossTokenAddressMapping<Self::AccountId>;70 type ContractAddress = EvmCollectionHelpersAddress;71}7273impl pallet_structure::Config for Runtime {74 type RuntimeEvent = RuntimeEvent;75 type RuntimeCall = RuntimeCall;76 type WeightInfo = pallet_structure::weights::SubstrateWeight<Self>;77}7879impl pallet_fungible::Config for Runtime {80 type WeightInfo = pallet_fungible::weights::SubstrateWeight<Self>;81}82impl pallet_refungible::Config for Runtime {83 type WeightInfo = pallet_refungible::weights::SubstrateWeight<Self>;84}85impl pallet_nonfungible::Config for Runtime {86 type WeightInfo = pallet_nonfungible::weights::SubstrateWeight<Self>;87}8889parameter_types! {90 pub const Decimals: u8 = DECIMALS;91 pub Name: String = String::from_utf8_lossy(VERSION.impl_name.as_ref()).to_string();92 pub Symbol: String = TOKEN_SYMBOL.to_string();93}94impl pallet_balances_adapter::Config for Runtime {95 type Inspect = Balances;96 type Mutate = Balances;97 type CurrencyBalance = <Balances as Currency<Self::AccountId>>::Balance;98 type Decimals = Decimals;99 type Name = Name;100 type Symbol = Symbol;101 type WeightInfo = pallet_balances::weights::SubstrateWeight<Self>;102}103104// every time per how many blocks inflation is applied105#[cfg(feature = "fast-inflation")]106parameter_types! {107 pub const InflationBlockInterval: BlockNumber = 10;108}109#[cfg(not(feature = "fast-inflation"))]110parameter_types! {111 pub const InflationBlockInterval: BlockNumber = 100;112}113114/// Pallet-inflation needs block number in on_initialize, where there is no `validation_data` exists yet115pub struct OnInitializeBlockNumberProvider;116impl BlockNumberProvider for OnInitializeBlockNumberProvider {117 type BlockNumber = BlockNumber;118119 fn current_block_number() -> Self::BlockNumber {120 // This code was broken previously, but after fixing, we decided it would be better to leave it broken for now.121 0122 // use hex_literal::hex;123 // use parity_scale_codec::Decode;124 // use sp_io::storage;125 // // TODO: Replace with the following code after https://github.com/paritytech/polkadot-sdk/commit/3ea497b5a0fdda252f9c5a3c257cfaf8685f02fd lands126 // // <cumulus_pallet_parachain_system::Pallet<Runtime>>::last_relay_block_number()127 //128 // // ParachainSystem.LastRelayChainBlockNumber129 // let Some(encoded) = storage::get(&hex!("45323df7cc47150b3930e2666b0aa313a2bca190d36bd834cc73a38fc213ecbd")) else {130 // // First parachain block131 // return Default::default()132 // };133 // BlockNumber::decode(&mut encoded.as_ref())134 // .expect("typeof(RelayBlockNumber) == typeof(BlockNumber) == u32; qed")135 }136}137138/// Used for the pallet inflation139impl pallet_inflation::Config for Runtime {140 type Currency = Balances;141 type TreasuryAccountId = TreasuryAccountId;142 type InflationBlockInterval = InflationBlockInterval;143 type OnInitializeBlockNumberProvider = OnInitializeBlockNumberProvider;144}145146impl pallet_unique::Config for Runtime {147 type WeightInfo = pallet_unique::weights::SubstrateWeight<Self>;148 type CommonWeightInfo = CommonWeights<Self>;149 type StructureWeightInfo = pallet_structure::weights::SubstrateWeight<Self>;150 type RefungibleExtensionsWeightInfo = CommonWeights<Self>;151}152153parameter_types! {154 pub AppPromotionDailyRate: Perbill = Perbill::from_rational(453_256u64, 1_000_000_000u64);155 pub const MaxCollators: u32 = MAX_COLLATORS;156 pub const LicenseBond: Balance = GENESIS_LICENSE_BOND;157158 pub const DayRelayBlocks: BlockNumber = RELAY_DAYS;159}160161#[cfg(not(feature = "session-test-timings"))]162parameter_types! {163 pub const SessionPeriod: BlockNumber = SESSION_LENGTH;164}165166#[cfg(feature = "session-test-timings")]167parameter_types! {168 pub const SessionPeriod: BlockNumber = 5 * MINUTES;169}170171impl pallet_configuration::Config for Runtime {172 type RuntimeEvent = RuntimeEvent;173 type Balance = Balance;174 type DefaultWeightToFeeCoefficient = ConstU64<{ up_common::constants::WEIGHT_TO_FEE_COEFF }>;175 type DefaultMinGasPrice = ConstU64<{ up_common::constants::MIN_GAS_PRICE }>;176 type DefaultCollatorSelectionMaxCollators = MaxCollators;177 type DefaultCollatorSelectionKickThreshold = SessionPeriod;178 type DefaultCollatorSelectionLicenseBond = LicenseBond;179 type MaxXcmAllowedLocations = ConstU32<16>;180 type AppPromotionDailyRate = AppPromotionDailyRate;181 type DayRelayBlocks = DayRelayBlocks;182 type WeightInfo = pallet_configuration::weights::SubstrateWeight<Self>;183}184185impl pallet_maintenance::Config for Runtime {186 type RuntimeEvent = RuntimeEvent;187188 type RuntimeCall = RuntimeCall;189190 #[cfg(feature = "governance")]191 type ManagerOrigin = governance::RootOrTechnicalCommitteeMember;192193 #[cfg(not(feature = "governance"))]194 type ManagerOrigin = frame_system::EnsureRoot<AccountId>;195196 type PreimageOrigin = frame_system::EnsureRoot<AccountId>;197198 #[cfg(feature = "preimage")]199 type Preimages = crate::Preimage;200 #[cfg(not(feature = "preimage"))]201 type Preimages = ();202 type WeightInfo = pallet_maintenance::weights::SubstrateWeight<Self>;203}