1234567891011121314151617pub mod constants;18pub mod construct_runtime;19pub mod dispatch;20pub mod runtime_apis;21pub mod sponsoring;22pub mod weights;23pub mod config;24pub mod instance;25pub mod ethereum;26pub mod scheduler;2728use sp_core::H160;29use frame_support::traits::{Currency, OnUnbalanced, Imbalance};30use sp_runtime::{31 generic,32 traits::{BlakeTwo256, BlockNumberProvider},33 impl_opaque_keys,34};35use sp_std::vec::Vec;3637#[cfg(feature = "std")]38use sp_version::NativeVersion;3940use crate::{41 Runtime, Call, Balances, Treasury, Aura, Signature, AllPalletsReversedWithSystemFirst,42 InherentDataExt,43};44use common_types::{AccountId, BlockNumber};454647pub type Address = sp_runtime::MultiAddress<AccountId, ()>;4849pub type Header = generic::Header<BlockNumber, BlakeTwo256>;5051pub type Block = generic::Block<Header, UncheckedExtrinsic>;5253pub type SignedBlock = generic::SignedBlock<Block>;5455pub type BlockId = generic::BlockId<Block>;5657impl_opaque_keys! {58 pub struct SessionKeys {59 pub aura: Aura,60 }61}626364#[cfg(feature = "std")]65pub fn native_version() -> NativeVersion {66 NativeVersion {67 runtime_version: crate::VERSION,68 can_author_with: Default::default(),69 }70}7172pub type ChargeTransactionPayment = pallet_charge_transaction::ChargeTransactionPayment<Runtime>;7374pub type SignedExtra = (75 frame_system::CheckSpecVersion<Runtime>,76 77 frame_system::CheckGenesis<Runtime>,78 frame_system::CheckEra<Runtime>,79 frame_system::CheckNonce<Runtime>,80 frame_system::CheckWeight<Runtime>,81 ChargeTransactionPayment,82 83 pallet_ethereum::FakeTransactionFinalizer<Runtime>,84);858687pub type UncheckedExtrinsic =88 fp_self_contained::UncheckedExtrinsic<Address, Call, Signature, SignedExtra>;899091pub type CheckedExtrinsic = fp_self_contained::CheckedExtrinsic<AccountId, Call, SignedExtra, H160>;929394pub type Executive = frame_executive::Executive<95 Runtime,96 Block,97 frame_system::ChainContext<Runtime>,98 Runtime,99 AllPalletsReversedWithSystemFirst,100>;101102type NegativeImbalance = <Balances as Currency<AccountId>>::NegativeImbalance;103104pub struct DealWithFees;105impl OnUnbalanced<NegativeImbalance> for DealWithFees {106 fn on_unbalanceds<B>(mut fees_then_tips: impl Iterator<Item = NegativeImbalance>) {107 if let Some(fees) = fees_then_tips.next() {108 109 let mut split = fees.ration(100, 0);110 if let Some(tips) = fees_then_tips.next() {111 112 tips.ration_merge_into(100, 0, &mut split);113 }114 Treasury::on_unbalanced(split.0);115 116 }117 }118}119120pub struct RelayChainBlockNumberProvider<T>(sp_std::marker::PhantomData<T>);121122impl<T: cumulus_pallet_parachain_system::Config> BlockNumberProvider123 for RelayChainBlockNumberProvider<T>124{125 type BlockNumber = BlockNumber;126127 fn current_block_number() -> Self::BlockNumber {128 cumulus_pallet_parachain_system::Pallet::<T>::validation_data()129 .map(|d| d.relay_parent_number)130 .unwrap_or_default()131 }132}133134pub(crate) struct CheckInherents;135136impl cumulus_pallet_parachain_system::CheckInherents<Block> for CheckInherents {137 fn check_inherents(138 block: &Block,139 relay_state_proof: &cumulus_pallet_parachain_system::RelayChainStateProof,140 ) -> sp_inherents::CheckInherentsResult {141 let relay_chain_slot = relay_state_proof142 .read_slot()143 .expect("Could not read the relay chain slot from the proof");144145 let inherent_data =146 cumulus_primitives_timestamp::InherentDataProvider::from_relay_chain_slot_and_duration(147 relay_chain_slot,148 sp_std::time::Duration::from_secs(6),149 )150 .create_inherent_data()151 .expect("Could not create the timestamp inherent data");152153 inherent_data.check_extrinsics(block)154 }155}156157#[derive(codec::Encode, codec::Decode)]158pub enum XCMPMessage<XAccountId, XBalance> {159 160 TransferToken(XAccountId, XBalance),161}