Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

25 changes: 9 additions & 16 deletions node/src/parachain/dev_chain_spec.rs
Original file line number Diff line number Diff line change
@@ -1,19 +1,17 @@
use crate::parachain::Extensions;
use cumulus_primitives_core::ParaId;
use peaq_dev_runtime::{
staking, BalancesConfig, BlockRewardConfig, CouncilConfig, EVMConfig, EthereumConfig,
GenesisAccount, MorConfig, ParachainInfoConfig, ParachainStakingConfig, PeaqMorConfig,
PeaqPrecompiles, Runtime, RuntimeGenesisConfig, SudoConfig, WASM_BINARY,
staking, BalancesConfig, BlockRewardConfig, BlockRewardMigrationSinks, CouncilConfig,
EVMConfig, EthereumConfig, GenesisAccount, MorConfig, ParachainInfoConfig,
ParachainStakingConfig, PeaqMorConfig, PeaqPrecompiles, Runtime, RuntimeGenesisConfig,
SudoConfig, WASM_BINARY,
};
use peaq_primitives_xcm::{AccountId, Balance, Signature};
use runtime_common::{CENTS, DOLLARS, MILLICENTS, TOKEN_DECIMALS};
use sc_service::{ChainType, Properties};
use sp_consensus_aura::sr25519::AuthorityId as AuraId;
use sp_core::{sr25519, Pair, Public};
use sp_runtime::{
traits::{IdentifyAccount, Verify},
Perbill,
};
use sp_runtime::traits::{IdentifyAccount, Verify};

/// Specialized `ChainSpec`. This is a specialization of the general Substrate ChainSpec type.
pub type ChainSpec = sc_service::GenericChainSpec<Extensions>;
Expand Down Expand Up @@ -125,15 +123,10 @@ fn configure_genesis(
},
inflation_manager: Default::default(),
block_reward: BlockRewardConfig {
// Make sure sum is 100
reward_config: pallet_block_reward::RewardDistributionConfig {
treasury_percent: Perbill::from_percent(25),
collators_delegators_percent: Perbill::from_percent(40),
coretime_percent: Perbill::from_percent(10),
subsidization_pool_percent: Perbill::from_percent(5),
depin_staking_percent: Perbill::from_percent(5),
depin_incentivization_percent: Perbill::from_percent(15),
},
// Same sinks the live chain's `MigrateToV3x` migration adopts -- see
// `BlockRewardMigrationSinks` in runtime/peaq-dev/src/lib.rs, the single
// place that decides this runtime's post-migration distribution.
sinks: BlockRewardMigrationSinks::get(),
_phantom: Default::default(),
},
vesting: Default::default(),
Expand Down
20 changes: 7 additions & 13 deletions node/src/parachain/krest_chain_spec.rs
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
use crate::parachain::Extensions;
use cumulus_primitives_core::ParaId;
use peaq_krest_runtime::{
staking, BalancesConfig, BlockRewardConfig, CouncilConfig, EVMConfig, EthereumConfig,
GenesisAccount, ParachainInfoConfig, ParachainStakingConfig, PeaqPrecompiles, Runtime,
RuntimeGenesisConfig, SudoConfig, WASM_BINARY,
staking, BalancesConfig, BlockRewardConfig, BlockRewardMigrationSinks, CouncilConfig,
EVMConfig, EthereumConfig, GenesisAccount, ParachainInfoConfig, ParachainStakingConfig,
PeaqPrecompiles, Runtime, RuntimeGenesisConfig, SudoConfig, WASM_BINARY,
};
use peaq_primitives_xcm::{AccountId, Balance};
use runtime_common::TOKEN_DECIMALS;
use sc_service::{ChainType, Properties};
use sp_consensus_aura::sr25519::AuthorityId as AuraId;
use sp_runtime::Perbill;

use crate::parachain::dev_chain_spec::{authority_keys_from_seed, get_account_id_from_seed};

Expand Down Expand Up @@ -110,15 +109,10 @@ fn configure_genesis(
},
inflation_manager: Default::default(),
block_reward: BlockRewardConfig {
// Make sure sum is 100
reward_config: pallet_block_reward::RewardDistributionConfig {
treasury_percent: Perbill::from_percent(25),
collators_delegators_percent: Perbill::from_percent(40),
coretime_percent: Perbill::from_percent(10),
subsidization_pool_percent: Perbill::from_percent(5),
depin_staking_percent: Perbill::from_percent(5),
depin_incentivization_percent: Perbill::from_percent(15),
},
// Same sinks the live chain's `MigrateToV3x` migration adopts -- see
// `BlockRewardMigrationSinks` in runtime/krest/src/lib.rs, the single
// place that decides this runtime's post-migration distribution.
sinks: BlockRewardMigrationSinks::get(),
_phantom: Default::default(),
},
vesting: Default::default(),
Expand Down
20 changes: 7 additions & 13 deletions node/src/parachain/peaq_chain_spec.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,13 @@ use crate::parachain::Extensions;
use cumulus_primitives_core::ParaId;
use peaq_primitives_xcm::{AccountId, Balance};
use peaq_runtime::{
staking, BalancesConfig, BlockRewardConfig, CouncilConfig, EVMConfig, EthereumConfig,
GenesisAccount, ParachainInfoConfig, ParachainStakingConfig, PeaqPrecompiles, Runtime,
RuntimeGenesisConfig, SudoConfig, WASM_BINARY,
staking, BalancesConfig, BlockRewardConfig, BlockRewardMigrationSinks, CouncilConfig,
EVMConfig, EthereumConfig, GenesisAccount, ParachainInfoConfig, ParachainStakingConfig,
PeaqPrecompiles, Runtime, RuntimeGenesisConfig, SudoConfig, WASM_BINARY,
};
use runtime_common::TOKEN_DECIMALS;
use sc_service::{ChainType, Properties};
use sp_consensus_aura::sr25519::AuthorityId as AuraId;
use sp_runtime::Perbill;

use crate::parachain::dev_chain_spec::{authority_keys_from_seed, get_account_id_from_seed};

Expand Down Expand Up @@ -114,15 +113,10 @@ fn configure_genesis(
},
inflation_manager: Default::default(),
block_reward: BlockRewardConfig {
// Make sure sum is 100
reward_config: pallet_block_reward::RewardDistributionConfig {
treasury_percent: Perbill::from_percent(25),
collators_delegators_percent: Perbill::from_percent(40),
coretime_percent: Perbill::from_percent(10),
subsidization_pool_percent: Perbill::from_percent(5),
depin_staking_percent: Perbill::from_percent(5),
depin_incentivization_percent: Perbill::from_percent(15),
},
// Same sinks the live chain's `MigrateToV3x` migration adopts -- see
// `BlockRewardMigrationSinks` in runtime/peaq/src/lib.rs, the single
// place that decides this runtime's post-migration distribution.
sinks: BlockRewardMigrationSinks::get(),
_phantom: Default::default(),
},
vesting: Default::default(),
Expand Down
2 changes: 1 addition & 1 deletion pallets/address-unification/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ use sp_runtime::{
};
use sp_std::{marker::PhantomData, vec::Vec};

mod convert_impl;
pub mod convert_impl;

#[cfg(feature = "runtime-benchmarks")]
pub mod benchmarking;
Expand Down
5 changes: 3 additions & 2 deletions pallets/block-reward/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,15 @@ pallet-balances = { workspace = true, default-features = false, features = ["ins
pallet-timestamp = { workspace = true, default-features = false, optional = true }
scale-info = { workspace = true, default-features = false, features = ["derive"] }
serde = { workspace = true, default-features = false }
sp-core = { workspace = true, default-features = false, optional = true }
sp-core = { workspace = true, default-features = false }
sp-runtime = { workspace = true, default-features = false }
sp-std = { workspace = true, default-features = false }
inflation-manager ={ path = "../inflation-manager", default-features = false}
inflation-manager = { path = "../inflation-manager", default-features = false}
peaq-primitives-xcm = { path = "../../primitives/xcm", default-features = false }

[dev-dependencies]
sp-io = { workspace = true, default-features = false }
hex-literal = { workspace = true, default-features = false }

[features]
default = ["std"]
Expand Down
48 changes: 43 additions & 5 deletions pallets/block-reward/src/benchmarking.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,59 @@
use super::*;

use frame_benchmarking::v1::{benchmarks, impl_benchmark_test_suite};
use frame_support::traits::{Currency, Imbalance};
use frame_system::{Pallet as System, RawOrigin};
use sp_core::H160;
use sp_runtime::Perbill;
use sp_std::vec::Vec;

/// Assert that the last event equals the provided one.
fn assert_last_event<T: Config>(generic_event: <T as Config>::RuntimeEvent) {
System::<T>::assert_last_event(generic_event.into());
}

/// Builds `n` sinks whose shares sum to exactly 100%, each pointing at a distinct
/// EVM address so `T::AddressMapping` resolves them to `n` distinct accounts.
fn make_sinks(n: u32) -> Vec<Sink> {
const ACCURACY: u32 = 1_000_000_000; // Perbill::ACCURACY
let base = ACCURACY / n;
let remainder = ACCURACY % n;
(0..n)
.map(|i| Sink {
target: RewardTarget::Evm(H160::from_low_u64_be(u64::from(i) + 1)),
share: Perbill::from_parts(base + u32::from(i < remainder)),
})
.collect()
}

benchmarks! {

set_configuration {
let reward_config = RewardDistributionConfig::default();
assert!(reward_config.is_consistent());
}: _(RawOrigin::Root, reward_config.clone())
set_sinks {
let n in 1 .. T::MaxSinks::get();
let sinks = make_sinks(n);
let bounded: SinksOf<T> = SinksOf::<T>::try_from(sinks.clone()).unwrap();
}: _(RawOrigin::Root, bounded)
verify {
assert_last_event::<T>(Event::<T>::TokenSinksUpdated { sinks }.into());
}

distribute_imbalances {
let n in 1 .. T::MaxSinks::get();
let sinks = make_sinks(n);
let bounded: SinksOf<T> = SinksOf::<T>::try_from(sinks).unwrap();
for sink in bounded.iter() {
frame_system::Pallet::<T>::inc_providers(&Pallet::<T>::resolve(&sink.target));
}
Sinks::<T>::put(&bounded);

let amount = BalanceOf::<T>::from(1_000_000_000u32);
let imbalance = T::Currency::issue(amount);
let value = imbalance.peek();
}: {
Pallet::<T>::distribute_imbalances(imbalance, Event::<T>::BlockRewardsDistributed(value));
}
verify {
assert_last_event::<T>(Event::<T>::DistributionConfigurationChanged(reward_config).into());
assert_last_event::<T>(Event::<T>::BlockRewardsDistributed(value).into());
}

}
Expand Down
Loading
Loading