git.delta.rocks / unique-network / refs/commits / 07fe7b5a5c87

difftreelog

refactor optimize common runtime imports

Daniel Shiposha2022-08-08parent: #8a2ef94.patch.diff
in: master

7 files changed

modifiedruntime/common/config/ethereum.rsdiffbeforeafterboth
before · runtime/common/config/ethereum.rs
1use sp_core::{U256, H160};2use frame_support::{3    weights::{Weight, constants::WEIGHT_PER_SECOND},4    traits::{FindAuthor},5    parameter_types, ConsensusEngineId,6};7use sp_runtime::{RuntimeAppPublic, Perbill};8use crate::{9    runtime_common::{10		constants::*,11        dispatch::CollectionDispatchT,12        ethereum::{EvmSponsorshipHandler},13		config::sponsoring::DefaultSponsoringRateLimit,14        DealWithFees,15    },16    Runtime,17    Aura,18    Balances,19    Event,20    ChainId,21};22use pallet_evm::{23    EnsureAddressTruncated,24    HashedAddressMapping,25};2627pub type CrossAccountId = pallet_evm::account::BasicCrossAccountId<Runtime>;2829impl pallet_evm::account::Config for Runtime {30	type CrossAccountId = CrossAccountId;31	type EvmAddressMapping = pallet_evm::HashedAddressMapping<Self::Hashing>;32	type EvmBackwardsAddressMapping = fp_evm_mapping::MapBackwardsAddressTruncated;33}3435// Assuming slowest ethereum opcode is SSTORE, with gas price of 20000 as our worst case36// (contract, which only writes a lot of data),37// approximating on top of our real store write weight38parameter_types! {39	pub const WritesPerSecond: u64 = WEIGHT_PER_SECOND / <Runtime as frame_system::Config>::DbWeight::get().write;40	pub const GasPerSecond: u64 = WritesPerSecond::get() * 20000;41	pub const WeightPerGas: u64 = WEIGHT_PER_SECOND / GasPerSecond::get();42}4344/// Limiting EVM execution to 50% of block for substrate users and management tasks45/// EVM transaction consumes more weight than substrate's, so we can't rely on them being46/// scheduled fairly47const EVM_DISPATCH_RATIO: Perbill = Perbill::from_percent(50);48parameter_types! {49	pub BlockGasLimit: U256 = U256::from(NORMAL_DISPATCH_RATIO * EVM_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT / WeightPerGas::get());50}5152pub enum FixedGasWeightMapping {}53impl pallet_evm::GasWeightMapping for FixedGasWeightMapping {54	fn gas_to_weight(gas: u64) -> Weight {55		gas.saturating_mul(WeightPerGas::get())56	}57	fn weight_to_gas(weight: Weight) -> u64 {58		weight / WeightPerGas::get()59	}60}6162pub struct FixedFee;63impl pallet_evm::FeeCalculator for FixedFee {64	fn min_gas_price() -> (U256, u64) {65		(MIN_GAS_PRICE.into(), 0)66	}67}6869pub struct EthereumFindAuthor<F>(core::marker::PhantomData<F>);70impl<F: FindAuthor<u32>> FindAuthor<H160> for EthereumFindAuthor<F> {71	fn find_author<'a, I>(digests: I) -> Option<H160>72	where73		I: 'a + IntoIterator<Item = (ConsensusEngineId, &'a [u8])>,74	{75		if let Some(author_index) = F::find_author(digests) {76			let authority_id = Aura::authorities()[author_index as usize].clone();77			return Some(H160::from_slice(&authority_id.to_raw_vec()[4..24]));78		}79		None80	}81}8283impl pallet_evm::Config for Runtime {84	type BlockGasLimit = BlockGasLimit;85	type FeeCalculator = FixedFee;86	type GasWeightMapping = FixedGasWeightMapping;87	type BlockHashMapping = pallet_ethereum::EthereumBlockHashMapping<Self>;88	type CallOrigin = EnsureAddressTruncated<Self>;89	type WithdrawOrigin = EnsureAddressTruncated<Self>;90	type AddressMapping = HashedAddressMapping<Self::Hashing>;91	type PrecompilesType = ();92	type PrecompilesValue = ();93	type Currency = Balances;94	type Event = Event;95	type OnMethodCall = (96		pallet_evm_migration::OnMethodCall<Self>,97		pallet_evm_contract_helpers::HelpersOnMethodCall<Self>,98		CollectionDispatchT<Self>,99		pallet_unique::eth::CollectionHelpersOnMethodCall<Self>,100	);101	type OnCreate = pallet_evm_contract_helpers::HelpersOnCreate<Self>;102	type ChainId = ChainId;103	type Runner = pallet_evm::runner::stack::Runner<Self>;104	type OnChargeTransaction = pallet_evm::EVMCurrencyAdapter<Balances, DealWithFees>;105	type TransactionValidityHack = pallet_evm_transaction_payment::TransactionValidityHack<Self>;106	type FindAuthor = EthereumFindAuthor<Aura>;107}108109impl pallet_evm_migration::Config for Runtime {110	type WeightInfo = pallet_evm_migration::weights::SubstrateWeight<Self>;111}112113impl pallet_ethereum::Config for Runtime {114	type Event = Event;115	type StateRoot = pallet_ethereum::IntermediateStateRoot<Self>;116}117118parameter_types! {119    // 0x842899ECF380553E8a4de75bF534cdf6fBF64049120	pub const HelpersContractAddress: H160 = H160([121		0x84, 0x28, 0x99, 0xec, 0xf3, 0x80, 0x55, 0x3e, 0x8a, 0x4d, 0xe7, 0x5b, 0xf5, 0x34, 0xcd, 0xf6, 0xfb, 0xf6, 0x40, 0x49,122	]);123124	// 0x6c4e9fe1ae37a41e93cee429e8e1881abdcbb54f125	pub const EvmCollectionHelpersAddress: H160 = H160([126		0x6c, 0x4e, 0x9f, 0xe1, 0xae, 0x37, 0xa4, 0x1e, 0x93, 0xce, 0xe4, 0x29, 0xe8, 0xe1, 0x88, 0x1a, 0xbd, 0xcb, 0xb5, 0x4f,127	]);128}129130impl pallet_evm_contract_helpers::Config for Runtime {131	type ContractAddress = HelpersContractAddress;132	type DefaultSponsoringRateLimit = DefaultSponsoringRateLimit;133}134135impl pallet_evm_coder_substrate::Config for Runtime {}136137impl pallet_evm_transaction_payment::Config for Runtime {138	type EvmSponsorshipHandler = EvmSponsorshipHandler;139	type Currency = Balances;140}
after · runtime/common/config/ethereum.rs
1use sp_core::{U256, H160};2use frame_support::{3    weights::{Weight, constants::WEIGHT_PER_SECOND},4    traits::{FindAuthor},5    parameter_types, ConsensusEngineId,6};7use sp_runtime::{RuntimeAppPublic, Perbill};8use crate::{9    runtime_common::{10		constants::*,11        dispatch::CollectionDispatchT,12        ethereum::sponsoring::EvmSponsorshipHandler,13		config::sponsoring::DefaultSponsoringRateLimit,14        DealWithFees,15    },16    Runtime,17    Aura,18    Balances,19    Event,20    ChainId,21};22use pallet_evm::{23    EnsureAddressTruncated,24    HashedAddressMapping,25};2627pub type CrossAccountId = pallet_evm::account::BasicCrossAccountId<Runtime>;2829impl pallet_evm::account::Config for Runtime {30	type CrossAccountId = CrossAccountId;31	type EvmAddressMapping = pallet_evm::HashedAddressMapping<Self::Hashing>;32	type EvmBackwardsAddressMapping = fp_evm_mapping::MapBackwardsAddressTruncated;33}3435// Assuming slowest ethereum opcode is SSTORE, with gas price of 20000 as our worst case36// (contract, which only writes a lot of data),37// approximating on top of our real store write weight38parameter_types! {39	pub const WritesPerSecond: u64 = WEIGHT_PER_SECOND / <Runtime as frame_system::Config>::DbWeight::get().write;40	pub const GasPerSecond: u64 = WritesPerSecond::get() * 20000;41	pub const WeightPerGas: u64 = WEIGHT_PER_SECOND / GasPerSecond::get();42}4344/// Limiting EVM execution to 50% of block for substrate users and management tasks45/// EVM transaction consumes more weight than substrate's, so we can't rely on them being46/// scheduled fairly47const EVM_DISPATCH_RATIO: Perbill = Perbill::from_percent(50);48parameter_types! {49	pub BlockGasLimit: U256 = U256::from(NORMAL_DISPATCH_RATIO * EVM_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT / WeightPerGas::get());50}5152pub enum FixedGasWeightMapping {}53impl pallet_evm::GasWeightMapping for FixedGasWeightMapping {54	fn gas_to_weight(gas: u64) -> Weight {55		gas.saturating_mul(WeightPerGas::get())56	}57	fn weight_to_gas(weight: Weight) -> u64 {58		weight / WeightPerGas::get()59	}60}6162pub struct FixedFee;63impl pallet_evm::FeeCalculator for FixedFee {64	fn min_gas_price() -> (U256, u64) {65		(MIN_GAS_PRICE.into(), 0)66	}67}6869pub struct EthereumFindAuthor<F>(core::marker::PhantomData<F>);70impl<F: FindAuthor<u32>> FindAuthor<H160> for EthereumFindAuthor<F> {71	fn find_author<'a, I>(digests: I) -> Option<H160>72	where73		I: 'a + IntoIterator<Item = (ConsensusEngineId, &'a [u8])>,74	{75		if let Some(author_index) = F::find_author(digests) {76			let authority_id = Aura::authorities()[author_index as usize].clone();77			return Some(H160::from_slice(&authority_id.to_raw_vec()[4..24]));78		}79		None80	}81}8283impl pallet_evm::Config for Runtime {84	type BlockGasLimit = BlockGasLimit;85	type FeeCalculator = FixedFee;86	type GasWeightMapping = FixedGasWeightMapping;87	type BlockHashMapping = pallet_ethereum::EthereumBlockHashMapping<Self>;88	type CallOrigin = EnsureAddressTruncated<Self>;89	type WithdrawOrigin = EnsureAddressTruncated<Self>;90	type AddressMapping = HashedAddressMapping<Self::Hashing>;91	type PrecompilesType = ();92	type PrecompilesValue = ();93	type Currency = Balances;94	type Event = Event;95	type OnMethodCall = (96		pallet_evm_migration::OnMethodCall<Self>,97		pallet_evm_contract_helpers::HelpersOnMethodCall<Self>,98		CollectionDispatchT<Self>,99		pallet_unique::eth::CollectionHelpersOnMethodCall<Self>,100	);101	type OnCreate = pallet_evm_contract_helpers::HelpersOnCreate<Self>;102	type ChainId = ChainId;103	type Runner = pallet_evm::runner::stack::Runner<Self>;104	type OnChargeTransaction = pallet_evm::EVMCurrencyAdapter<Balances, DealWithFees>;105	type TransactionValidityHack = pallet_evm_transaction_payment::TransactionValidityHack<Self>;106	type FindAuthor = EthereumFindAuthor<Aura>;107}108109impl pallet_evm_migration::Config for Runtime {110	type WeightInfo = pallet_evm_migration::weights::SubstrateWeight<Self>;111}112113impl pallet_ethereum::Config for Runtime {114	type Event = Event;115	type StateRoot = pallet_ethereum::IntermediateStateRoot<Self>;116}117118parameter_types! {119    // 0x842899ECF380553E8a4de75bF534cdf6fBF64049120	pub const HelpersContractAddress: H160 = H160([121		0x84, 0x28, 0x99, 0xec, 0xf3, 0x80, 0x55, 0x3e, 0x8a, 0x4d, 0xe7, 0x5b, 0xf5, 0x34, 0xcd, 0xf6, 0xfb, 0xf6, 0x40, 0x49,122	]);123124	// 0x6c4e9fe1ae37a41e93cee429e8e1881abdcbb54f125	pub const EvmCollectionHelpersAddress: H160 = H160([126		0x6c, 0x4e, 0x9f, 0xe1, 0xae, 0x37, 0xa4, 0x1e, 0x93, 0xce, 0xe4, 0x29, 0xe8, 0xe1, 0x88, 0x1a, 0xbd, 0xcb, 0xb5, 0x4f,127	]);128}129130impl pallet_evm_contract_helpers::Config for Runtime {131	type ContractAddress = HelpersContractAddress;132	type DefaultSponsoringRateLimit = DefaultSponsoringRateLimit;133}134135impl pallet_evm_coder_substrate::Config for Runtime {}136137impl pallet_evm_transaction_payment::Config for Runtime {138	type EvmSponsorshipHandler = EvmSponsorshipHandler;139	type Currency = Balances;140}
modifiedruntime/common/config/mod.rsdiffbeforeafterboth
--- a/runtime/common/config/mod.rs
+++ b/runtime/common/config/mod.rs
@@ -21,13 +21,3 @@
 pub mod parachain;
 pub mod xcm;
 pub mod orml;
-
-pub use {
-    substrate::*,
-    ethereum::*,
-    sponsoring::*,
-    pallets::*,
-    parachain::*,
-    self::xcm::*,
-    orml::*,
-};
modifiedruntime/common/config/pallets/mod.rsdiffbeforeafterboth
--- a/runtime/common/config/pallets/mod.rs
+++ b/runtime/common/config/pallets/mod.rs
@@ -14,10 +14,7 @@
 // You should have received a copy of the GNU General Public License
 // along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
 
-use frame_support::{
-    // weights::{Weight, constants::WEIGHT_PER_SECOND},
-    parameter_types,
-};
+use frame_support::parameter_types;
 use sp_runtime::traits::AccountIdConversion;
 use crate::{
     runtime_common::{
modifiedruntime/common/ethereum/mod.rsdiffbeforeafterboth
--- a/runtime/common/ethereum/mod.rs
+++ b/runtime/common/ethereum/mod.rs
@@ -17,9 +17,3 @@
 pub mod sponsoring;
 pub mod transaction_converter;
 pub mod self_contained_call;
-
-pub use {
-    sponsoring::*,
-    transaction_converter::*,
-    self_contained_call::*,
-};
modifiedruntime/common/instance.rsdiffbeforeafterboth
--- a/runtime/common/instance.rs
+++ b/runtime/common/instance.rs
@@ -1,7 +1,7 @@
 use crate::{
     runtime_common::{
         config::ethereum::CrossAccountId,
-        ethereum::TransactionConverter
+        ethereum::transaction_converter::TransactionConverter
     },
     Runtime,
 };
modifiedruntime/common/mod.rsdiffbeforeafterboth
--- a/runtime/common/mod.rs
+++ b/runtime/common/mod.rs
@@ -14,26 +14,16 @@
 // You should have received a copy of the GNU General Public License
 // along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
 
-mod constants;
-mod construct_runtime;
-mod dispatch;
-mod runtime_apis;
-mod sponsoring;
-mod weights;
-mod config;
-mod instance;
-mod ethereum;
-mod scheduler;
-
-pub use {
-    constants::*,
-    dispatch::*,
-    sponsoring::*,
-    weights::*,
-    config::*,
-    instance::*,
-    ethereum::*,
-};
+pub mod constants;
+pub mod construct_runtime;
+pub mod dispatch;
+pub mod runtime_apis;
+pub mod sponsoring;
+pub mod weights;
+pub mod config;
+pub mod instance;
+pub mod ethereum;
+pub mod scheduler;
 
 use sp_core::H160;
 use frame_support::traits::{Currency, OnUnbalanced, Imbalance};
modifiedruntime/common/runtime_apis.rsdiffbeforeafterboth
--- a/runtime/common/runtime_apis.rs
+++ b/runtime/common/runtime_apis.rs
@@ -50,6 +50,11 @@
             Runner, account::CrossAccountId as _,
             Account as EVMAccount, FeeCalculator,
         };
+        use runtime_common::{
+            sponsoring::{SponsorshipPredict, UniqueSponsorshipPredict},
+            dispatch::CollectionDispatch,
+            config::ethereum::CrossAccountId,
+        };
         use up_data_structs::*;