git.delta.rocks / unique-network / refs/commits / 2fc4ab68b72c

difftreelog

source

runtime/common/mod.rs5.1 KiBsourcehistory
1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617pub 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::{Runtime, Call, Balances, Treasury, Aura, Signature, AllPalletsWithSystem, InherentDataExt};46use up_common::types::{AccountId, BlockNumber};4748#[macro_export]49macro_rules! unsupported {50	() => {51		pallet_common::unsupported!($crate::Runtime)52	};53}5455/// The address format for describing accounts.56pub type Address = sp_runtime::MultiAddress<AccountId, ()>;57/// Block header type as expected by this runtime.58pub type Header = generic::Header<BlockNumber, BlakeTwo256>;59/// Block type as expected by this runtime.60pub type Block = generic::Block<Header, UncheckedExtrinsic>;61/// A Block signed with a Justification62pub type SignedBlock = generic::SignedBlock<Block>;63/// BlockId type as expected by this runtime.64pub type BlockId = generic::BlockId<Block>;6566impl_opaque_keys! {67	pub struct SessionKeys {68		pub aura: Aura,69	}70}7172/// The version information used to identify this runtime when compiled natively.73#[cfg(feature = "std")]74pub fn native_version() -> NativeVersion {75	NativeVersion {76		runtime_version: crate::VERSION,77		can_author_with: Default::default(),78	}79}8081pub type ChargeTransactionPayment = pallet_charge_transaction::ChargeTransactionPayment<Runtime>;8283pub type SignedExtra = (84	frame_system::CheckSpecVersion<Runtime>,85	frame_system::CheckTxVersion<Runtime>,86	frame_system::CheckGenesis<Runtime>,87	frame_system::CheckEra<Runtime>,88	frame_system::CheckNonce<Runtime>,89	frame_system::CheckWeight<Runtime>,90	ChargeTransactionPayment,91	//pallet_contract_helpers::ContractHelpersExtension<Runtime>,92	pallet_ethereum::FakeTransactionFinalizer<Runtime>,93);9495/// Unchecked extrinsic type as expected by this runtime.96pub type UncheckedExtrinsic =97	fp_self_contained::UncheckedExtrinsic<Address, Call, Signature, SignedExtra>;9899/// Extrinsic type that has already been checked.100pub type CheckedExtrinsic = fp_self_contained::CheckedExtrinsic<AccountId, Call, SignedExtra, H160>;101102/// Executive: handles dispatch to the various modules.103pub type Executive = frame_executive::Executive<104	Runtime,105	Block,106	frame_system::ChainContext<Runtime>,107	Runtime,108	AllPalletsWithSystem,109>;110111type NegativeImbalance = <Balances as Currency<AccountId>>::NegativeImbalance;112113pub struct DealWithFees;114impl OnUnbalanced<NegativeImbalance> for DealWithFees {115	fn on_unbalanceds<B>(mut fees_then_tips: impl Iterator<Item = NegativeImbalance>) {116		if let Some(fees) = fees_then_tips.next() {117			// for fees, 100% to treasury118			let mut split = fees.ration(100, 0);119			if let Some(tips) = fees_then_tips.next() {120				// for tips, if any, 100% to treasury121				tips.ration_merge_into(100, 0, &mut split);122			}123			Treasury::on_unbalanced(split.0);124			// Author::on_unbalanced(split.1);125		}126	}127}128129pub struct RelayChainBlockNumberProvider<T>(sp_std::marker::PhantomData<T>);130131impl<T: cumulus_pallet_parachain_system::Config> BlockNumberProvider132	for RelayChainBlockNumberProvider<T>133{134	type BlockNumber = BlockNumber;135136	fn current_block_number() -> Self::BlockNumber {137		cumulus_pallet_parachain_system::Pallet::<T>::validation_data()138			.map(|d| d.relay_parent_number)139			.unwrap_or_default()140	}141}142143pub(crate) struct CheckInherents;144145impl cumulus_pallet_parachain_system::CheckInherents<Block> for CheckInherents {146	fn check_inherents(147		block: &Block,148		relay_state_proof: &cumulus_pallet_parachain_system::RelayChainStateProof,149	) -> sp_inherents::CheckInherentsResult {150		let relay_chain_slot = relay_state_proof151			.read_slot()152			.expect("Could not read the relay chain slot from the proof");153154		let inherent_data =155			cumulus_primitives_timestamp::InherentDataProvider::from_relay_chain_slot_and_duration(156				relay_chain_slot,157				sp_std::time::Duration::from_secs(6),158			)159			.create_inherent_data()160			.expect("Could not create the timestamp inherent data");161162		inherent_data.check_extrinsics(block)163	}164}165166#[derive(codec::Encode, codec::Decode)]167pub enum XCMPMessage<XAccountId, XBalance> {168	/// Transfer tokens to the given account from the Parachain account.169	TransferToken(XAccountId, XBalance),170}