1234567891011121314151617pub mod config;18pub mod construct_runtime;19pub mod dispatch;20pub mod ethereum;21pub mod instance;22pub mod runtime_apis;2324#[cfg(feature = "scheduler")]25pub mod scheduler;2627pub mod sponsoring;28pub mod weights;2930#[cfg(test)]31pub mod tests;3233use sp_core::H160;34use frame_support::traits::{Currency, OnUnbalanced, Imbalance};35use sp_runtime::{36 generic,37 traits::{BlakeTwo256, BlockNumberProvider},38 impl_opaque_keys,39};40use sp_std::vec::Vec;4142#[cfg(feature = "std")]43use sp_version::NativeVersion;4445use crate::{46 Runtime, RuntimeCall, Balances, Treasury, Aura, Signature, AllPalletsWithSystem,47 InherentDataExt,48};49use up_common::types::{AccountId, BlockNumber};5051#[macro_export]52macro_rules! unsupported {53 () => {54 pallet_common::unsupported!($crate::Runtime)55 };56}575859pub type Address = sp_runtime::MultiAddress<AccountId, ()>;6061pub type Header = generic::Header<BlockNumber, BlakeTwo256>;6263pub type Block = generic::Block<Header, UncheckedExtrinsic>;6465pub type SignedBlock = generic::SignedBlock<Block>;6667pub type BlockId = generic::BlockId<Block>;6869impl_opaque_keys! {70 pub struct SessionKeys {71 pub aura: Aura,72 }73}747576#[cfg(feature = "std")]77pub fn native_version() -> NativeVersion {78 NativeVersion {79 runtime_version: crate::VERSION,80 can_author_with: Default::default(),81 }82}8384pub type ChargeTransactionPayment = pallet_charge_transaction::ChargeTransactionPayment<Runtime>;8586pub type SignedExtra = (87 frame_system::CheckSpecVersion<Runtime>,88 frame_system::CheckTxVersion<Runtime>,89 frame_system::CheckGenesis<Runtime>,90 frame_system::CheckEra<Runtime>,91 frame_system::CheckNonce<Runtime>,92 frame_system::CheckWeight<Runtime>,93 ChargeTransactionPayment,94 95 pallet_ethereum::FakeTransactionFinalizer<Runtime>,96);979899pub type UncheckedExtrinsic =100 fp_self_contained::UncheckedExtrinsic<Address, RuntimeCall, Signature, SignedExtra>;101102103pub type CheckedExtrinsic =104 fp_self_contained::CheckedExtrinsic<AccountId, RuntimeCall, SignedExtra, H160>;105106107pub type Executive = frame_executive::Executive<108 Runtime,109 Block,110 frame_system::ChainContext<Runtime>,111 Runtime,112 AllPalletsWithSystem,113>;114115type NegativeImbalance = <Balances as Currency<AccountId>>::NegativeImbalance;116117pub struct DealWithFees;118impl OnUnbalanced<NegativeImbalance> for DealWithFees {119 fn on_unbalanceds<B>(mut fees_then_tips: impl Iterator<Item = NegativeImbalance>) {120 if let Some(fees) = fees_then_tips.next() {121 122 let mut split = fees.ration(100, 0);123 if let Some(tips) = fees_then_tips.next() {124 125 tips.ration_merge_into(100, 0, &mut split);126 }127 Treasury::on_unbalanced(split.0);128 129 }130 }131}132133pub struct RelayChainBlockNumberProvider<T>(sp_std::marker::PhantomData<T>);134135impl<T: cumulus_pallet_parachain_system::Config> BlockNumberProvider136 for RelayChainBlockNumberProvider<T>137{138 type BlockNumber = BlockNumber;139140 fn current_block_number() -> Self::BlockNumber {141 cumulus_pallet_parachain_system::Pallet::<T>::validation_data()142 .map(|d| d.relay_parent_number)143 .unwrap_or_default()144 }145}146147pub(crate) struct CheckInherents;148149impl cumulus_pallet_parachain_system::CheckInherents<Block> for CheckInherents {150 fn check_inherents(151 block: &Block,152 relay_state_proof: &cumulus_pallet_parachain_system::RelayChainStateProof,153 ) -> sp_inherents::CheckInherentsResult {154 let relay_chain_slot = relay_state_proof155 .read_slot()156 .expect("Could not read the relay chain slot from the proof");157158 let inherent_data =159 cumulus_primitives_timestamp::InherentDataProvider::from_relay_chain_slot_and_duration(160 relay_chain_slot,161 sp_std::time::Duration::from_secs(6),162 )163 .create_inherent_data()164 .expect("Could not create the timestamp inherent data");165166 inherent_data.check_extrinsics(block)167 }168}169170#[derive(codec::Encode, codec::Decode)]171pub enum XCMPMessage<XAccountId, XBalance> {172 173 TransferToken(XAccountId, XBalance),174}