1234567891011121314151617mod constants;18mod construct_runtime;19mod dispatch;20mod runtime_apis;21mod sponsoring;22mod weights;23mod config;24mod instance;25mod ethereum;26mod scheduler;2728pub use {29 constants::*,30 dispatch::*,31 sponsoring::*,32 weights::*,33 config::*,34 instance::*,35 ethereum::*,36};3738use sp_core::H160;39use frame_support::traits::{Currency, OnUnbalanced, Imbalance};40use sp_runtime::{41 generic,42 traits::{BlakeTwo256, BlockNumberProvider},43 impl_opaque_keys,44};45use sp_std::vec::Vec;4647#[cfg(feature = "std")]48use sp_version::NativeVersion;4950use crate::{51 Runtime, Call, Balances, Treasury, Aura, Signature, AllPalletsReversedWithSystemFirst,52 InherentDataExt,53};54use common_types::{AccountId, BlockNumber};555657pub type Address = sp_runtime::MultiAddress<AccountId, ()>;5859pub type Header = generic::Header<BlockNumber, BlakeTwo256>;6061pub type Block = generic::Block<Header, UncheckedExtrinsic>;6263pub type SignedBlock = generic::SignedBlock<Block>;6465pub type BlockId = generic::BlockId<Block>;6667impl_opaque_keys! {68 pub struct SessionKeys {69 pub aura: Aura,70 }71}727374#[cfg(feature = "std")]75pub fn native_version() -> NativeVersion {76 NativeVersion {77 runtime_version: crate::VERSION,78 can_author_with: Default::default(),79 }80}8182pub type ChargeTransactionPayment = pallet_charge_transaction::ChargeTransactionPayment<Runtime>;8384pub type SignedExtra = (85 frame_system::CheckSpecVersion<Runtime>,86 87 frame_system::CheckGenesis<Runtime>,88 frame_system::CheckEra<Runtime>,89 frame_system::CheckNonce<Runtime>,90 frame_system::CheckWeight<Runtime>,91 ChargeTransactionPayment,92 93 pallet_ethereum::FakeTransactionFinalizer<Runtime>,94);959697pub type UncheckedExtrinsic =98 fp_self_contained::UncheckedExtrinsic<Address, Call, Signature, SignedExtra>;99100101pub type CheckedExtrinsic = fp_self_contained::CheckedExtrinsic<AccountId, Call, SignedExtra, H160>;102103104pub type Executive = frame_executive::Executive<105 Runtime,106 Block,107 frame_system::ChainContext<Runtime>,108 Runtime,109 AllPalletsReversedWithSystemFirst,110>;111112type NegativeImbalance = <Balances as Currency<AccountId>>::NegativeImbalance;113114pub struct DealWithFees;115impl OnUnbalanced<NegativeImbalance> for DealWithFees {116 fn on_unbalanceds<B>(mut fees_then_tips: impl Iterator<Item = NegativeImbalance>) {117 if let Some(fees) = fees_then_tips.next() {118 119 let mut split = fees.ration(100, 0);120 if let Some(tips) = fees_then_tips.next() {121 122 tips.ration_merge_into(100, 0, &mut split);123 }124 Treasury::on_unbalanced(split.0);125 126 }127 }128}129130pub struct RelayChainBlockNumberProvider<T>(sp_std::marker::PhantomData<T>);131132impl<T: cumulus_pallet_parachain_system::Config> BlockNumberProvider133 for RelayChainBlockNumberProvider<T>134{135 type BlockNumber = BlockNumber;136137 fn current_block_number() -> Self::BlockNumber {138 cumulus_pallet_parachain_system::Pallet::<T>::validation_data()139 .map(|d| d.relay_parent_number)140 .unwrap_or_default()141 }142}143144pub(crate) struct CheckInherents;145146impl cumulus_pallet_parachain_system::CheckInherents<Block> for CheckInherents {147 fn check_inherents(148 block: &Block,149 relay_state_proof: &cumulus_pallet_parachain_system::RelayChainStateProof,150 ) -> sp_inherents::CheckInherentsResult {151 let relay_chain_slot = relay_state_proof152 .read_slot()153 .expect("Could not read the relay chain slot from the proof");154155 let inherent_data =156 cumulus_primitives_timestamp::InherentDataProvider::from_relay_chain_slot_and_duration(157 relay_chain_slot,158 sp_std::time::Duration::from_secs(6),159 )160 .create_inherent_data()161 .expect("Could not create the timestamp inherent data");162163 inherent_data.check_extrinsics(block)164 }165}166167#[derive(codec::Encode, codec::Decode)]168pub enum XCMPMessage<XAccountId, XBalance> {169 170 TransferToken(XAccountId, XBalance),171}