--- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ 1. Install Rust: ```bash -sudo apt-get install git curl libssl-dev llvm pkg-config libclang-dev clang +sudo apt-get install git curl libssl-dev llvm pkg-config libclang-dev clang make curl https://sh.rustup.rs -sSf | sh ``` --- a/runtime/opal/src/lib.rs +++ b/runtime/opal/src/lib.rs @@ -29,13 +29,12 @@ use sp_core::{crypto::KeyTypeId, OpaqueMetadata, H256, U256, H160}; use sp_runtime::DispatchError; use fp_self_contained::*; -use sp_runtime::traits::{Member}; // #[cfg(any(feature = "std", test))] // pub use sp_runtime::BuildStorage; use sp_runtime::{ Permill, Perbill, Percent, create_runtime_str, generic, impl_opaque_keys, - traits::{AccountIdLookup, BlakeTwo256, Block as BlockT, AccountIdConversion, Zero}, + traits::{AccountIdLookup, BlakeTwo256, Block as BlockT, AccountIdConversion, Zero, Member}, transaction_validity::{TransactionSource, TransactionValidity}, ApplyExtrinsicResult, RuntimeAppPublic, }; --- a/runtime/quartz/src/lib.rs +++ b/runtime/quartz/src/lib.rs @@ -28,6 +28,7 @@ use sp_api::impl_runtime_apis; use sp_core::{crypto::KeyTypeId, OpaqueMetadata, H256, U256, H160}; use sp_runtime::DispatchError; +use fp_self_contained::*; // #[cfg(any(feature = "std", test))] // pub use sp_runtime::BuildStorage; @@ -50,6 +51,7 @@ pub use pallet_balances::Call as BalancesCall; pub use pallet_evm::{ EnsureAddressTruncated, HashedAddressMapping, Runner, account::CrossAccountId as _, + OnMethodCall, Account as EVMAccount, FeeCalculator, GasWeightMapping, }; pub use frame_support::{ construct_runtime, match_types, @@ -66,6 +68,13 @@ WeightToFeePolynomial, WeightToFeeCoefficient, WeightToFeeCoefficients, ConstantMultiplier, }, }; +use pallet_unq_scheduler::DispatchCall; +use up_data_structs::{ + CollectionId, TokenId, TokenData, Property, PropertyKeyPermission, CollectionLimits, + CollectionStats, RpcCollection, + mapping::{EvmTokenAddressMapping, CrossTokenAddressMapping} +}; + // use pallet_contracts::weights::WeightInfo; // #[cfg(any(feature = "std", test))] use frame_system::{ @@ -77,19 +86,16 @@ }; use smallvec::smallvec; use codec::{Encode, Decode}; -use pallet_evm::{Account as EVMAccount, FeeCalculator, GasWeightMapping}; use fp_rpc::TransactionStatus; use sp_runtime::{ traits::{ - Applyable, BlockNumberProvider, Dispatchable, PostDispatchInfoOf, DispatchInfoOf, Saturating, - CheckedConversion, + Applyable, BlockNumberProvider, Dispatchable, PostDispatchInfoOf, DispatchInfoOf, + Saturating, CheckedConversion, }, generic::Era, transaction_validity::TransactionValidityError, - SaturatedConversion, DispatchErrorWithPostInfo, + DispatchErrorWithPostInfo, SaturatedConversion, }; - -use fp_self_contained::{SelfContainedCall, CheckedSignature}; // pub use pallet_timestamp::Call as TimestampCall; pub use sp_consensus_aura::sr25519::AuthorityId as AuraId; @@ -97,11 +103,6 @@ // Polkadot imports use pallet_xcm::XcmPassthrough; use polkadot_parachain::primitives::Sibling; -use up_data_structs::{ - CollectionId, TokenId, TokenData, Property, PropertyKeyPermission, CollectionLimits, - CollectionStats, RpcCollection, - mapping::{EvmTokenAddressMapping, CrossTokenAddressMapping} -}; use xcm::v1::{BodyId, Junction::*, MultiLocation, NetworkId, Junctions::*}; use xcm_builder::{ AccountId32Aliases, AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom, CurrencyAdapter, @@ -112,7 +113,6 @@ }; use xcm_executor::{Config, XcmExecutor, Assets}; use sp_std::{cmp::Ordering, marker::PhantomData}; -use pallet_unq_scheduler::DispatchCall; use xcm::latest::{ // Xcm, @@ -148,6 +148,22 @@ } } +/// The type for looking up accounts. We don't expect more than 4 billion of them, but you +/// never know... +pub type AccountIndex = u32; + +/// Balance of an account. +pub type Balance = u128; + +/// Index of a transaction in the chain. +pub type Index = u32; + +/// A hash of some data used by the chain. +pub type Hash = sp_core::H256; + +/// Digest item type. +pub type DigestItem = generic::DigestItem; + /// Opaque types. These are used by the CLI to instantiate machinery that don't need to know /// the specifics of the runtime. They can then be made to be agnostic over specific formats /// of data like extrinsics, allowing for them to continue syncing the network through upgrades @@ -277,6 +293,12 @@ } } +impl pallet_evm::account::Config for Runtime { + type CrossAccountId = pallet_evm::account::BasicCrossAccountId; + type EvmAddressMapping = HashedAddressMapping; + type EvmBackwardsAddressMapping = fp_evm_mapping::MapBackwardsAddressTruncated; +} + impl pallet_evm::Config for Runtime { type BlockGasLimit = BlockGasLimit; type FeeCalculator = FixedFee; @@ -393,6 +415,7 @@ // pub const ExistentialDeposit: u128 = 500; pub const ExistentialDeposit: u128 = 0; pub const MaxLocks: u32 = 50; + pub const MaxReserves: u32 = 50; } impl pallet_balances::Config for Runtime { @@ -877,12 +900,6 @@ type Event = Event; type Call = Call; type WeightInfo = pallet_structure::weights::SubstrateWeight; -} - -impl pallet_evm::account::Config for Runtime { - type CrossAccountId = pallet_evm::account::BasicCrossAccountId; - type EvmAddressMapping = HashedAddressMapping; - type EvmBackwardsAddressMapping = fp_evm_mapping::MapBackwardsAddressTruncated; } impl pallet_fungible::Config for Runtime { @@ -925,59 +942,7 @@ pub MaximumSchedulerWeight: Weight = Perbill::from_percent(50) * RuntimeBlockWeights::get().max_block; pub const MaxScheduledPerBlock: u32 = 50; -} - -type EvmSponsorshipHandler = ( - UniqueEthSponsorshipHandler, - pallet_evm_contract_helpers::HelpersContractSponsoring, -); -type SponsorshipHandler = ( - UniqueSponsorshipHandler, - //pallet_contract_helpers::ContractSponsorshipHandler, - pallet_evm_transaction_payment::BridgeSponsorshipHandler, -); - -parameter_types! { - pub const NoPreimagePostponement: Option = Some(10); - pub const Preimage: Option = Some(10); -} - -/// Used the compare the privilege of an origin inside the scheduler. -pub struct OriginPrivilegeCmp; -impl PrivilegeCmp for OriginPrivilegeCmp { - fn cmp_privilege(_left: &OriginCaller, _right: &OriginCaller) -> Option { - Some(Ordering::Equal) - } -} - -impl pallet_unq_scheduler::Config for Runtime { - type Event = Event; - type Origin = Origin; - type Currency = Balances; - type PalletsOrigin = OriginCaller; - type Call = Call; - type MaximumWeight = MaximumSchedulerWeight; - type ScheduleOrigin = EnsureSigned; - type MaxScheduledPerBlock = MaxScheduledPerBlock; - type WeightInfo = (); - type CallExecutor = SchedulerPaymentExecutor; - type OriginPrivilegeCmp = OriginPrivilegeCmp; - type PreimageProvider = (); - type NoPreimagePostponement = NoPreimagePostponement; -} - -impl pallet_evm_transaction_payment::Config for Runtime { - type EvmSponsorshipHandler = EvmSponsorshipHandler; - type Currency = Balances; -} - -impl pallet_charge_transaction::Config for Runtime { - type SponsorshipHandler = SponsorshipHandler; } - -// impl pallet_contract_helpers::Config for Runtime { -// type DefaultSponsoringRateLimit = DefaultSponsoringRateLimit; -// } type ChargeTransactionPayment = pallet_charge_transaction::ChargeTransactionPayment; use frame_support::traits::NamedReservableCurrency; @@ -1084,6 +1049,59 @@ } parameter_types! { + pub const NoPreimagePostponement: Option = Some(10); + pub const Preimage: Option = Some(10); +} + +/// Used the compare the privilege of an origin inside the scheduler. +pub struct OriginPrivilegeCmp; + +impl PrivilegeCmp for OriginPrivilegeCmp { + fn cmp_privilege(_left: &OriginCaller, _right: &OriginCaller) -> Option { + Some(Ordering::Equal) + } +} + +impl pallet_unq_scheduler::Config for Runtime { + type Event = Event; + type Origin = Origin; + type Currency = Balances; + type PalletsOrigin = OriginCaller; + type Call = Call; + type MaximumWeight = MaximumSchedulerWeight; + type ScheduleOrigin = EnsureSigned; + type MaxScheduledPerBlock = MaxScheduledPerBlock; + type WeightInfo = (); + type CallExecutor = SchedulerPaymentExecutor; + type OriginPrivilegeCmp = OriginPrivilegeCmp; + type PreimageProvider = (); + type NoPreimagePostponement = NoPreimagePostponement; +} + +type EvmSponsorshipHandler = ( + UniqueEthSponsorshipHandler, + pallet_evm_contract_helpers::HelpersContractSponsoring, +); +type SponsorshipHandler = ( + UniqueSponsorshipHandler, + //pallet_contract_helpers::ContractSponsorshipHandler, + pallet_evm_transaction_payment::BridgeSponsorshipHandler, +); + +impl pallet_evm_transaction_payment::Config for Runtime { + type EvmSponsorshipHandler = EvmSponsorshipHandler; + type Currency = Balances; +} + +impl pallet_charge_transaction::Config for Runtime { + type SponsorshipHandler = SponsorshipHandler; +} + +// impl pallet_contract_helpers::Config for Runtime { +// type DefaultSponsoringRateLimit = DefaultSponsoringRateLimit; +// } + +parameter_types! { // 0x842899ECF380553E8a4de75bF534cdf6fBF64049 pub const HelpersContractAddress: H160 = H160([ 0x84, 0x28, 0x99, 0xec, 0xf3, 0x80, 0x55, 0x3e, 0x8a, 0x4d, 0xe7, 0x5b, 0xf5, 0x34, 0xcd, 0xf6, 0xfb, 0xf6, 0x40, 0x49, @@ -1198,7 +1216,7 @@ frame_system::CheckEra, frame_system::CheckNonce, frame_system::CheckWeight, - pallet_charge_transaction::ChargeTransactionPayment, + ChargeTransactionPayment, //pallet_contract_helpers::ContractHelpersExtension, pallet_ethereum::FakeTransactionFinalizer, );