--- a/Cargo.lock +++ b/Cargo.lock @@ -6304,7 +6304,7 @@ [[package]] name = "opal-runtime" -version = "1.3.0" +version = "1.9.0" dependencies = [ "app-promotion-rpc", "cumulus-pallet-aura-ext", @@ -10188,7 +10188,7 @@ [[package]] name = "quartz-runtime" -version = "1.3.0" +version = "1.9.0" dependencies = [ "app-promotion-rpc", "cumulus-pallet-aura-ext", @@ -14976,7 +14976,7 @@ [[package]] name = "unique-node" -version = "1.3.0" +version = "1.9.0" dependencies = [ "app-promotion-rpc", "clap", @@ -15063,7 +15063,7 @@ [[package]] name = "unique-runtime" -version = "1.3.0" +version = "1.9.0" dependencies = [ "app-promotion-rpc", "cumulus-pallet-aura-ext", @@ -15210,7 +15210,7 @@ [[package]] name = "up-common" -version = "1.3.0" +version = "1.9.0" dependencies = [ "cumulus-primitives-core", "fp-rpc", --- a/node/cli/src/chain_spec.rs +++ b/node/cli/src/chain_spec.rs @@ -185,20 +185,24 @@ .collect::>(), }, - "session": { - "keys": invulnerables.into_iter() - .map(|name| { - let account = get_account_id_from_seed::(name); - let aura = get_from_seed::(name); - - ( - /* account id: */ account.clone(), - /* validator id: */ account, - /* session keys: */ SessionKeys { aura }, - ) - }) - .collect::>() - }, + // We don't have Session pallet in production anywhere, + // Adding this config makes baedeker think we have pallet-session, and it tries to + // reconfigure chain using it, which makes no sense, because then aura knows no + // authority, as baedeker expects them to be configured by session pallet. + // "session": { + // "keys": invulnerables.into_iter() + // .map(|name| { + // let account = get_account_id_from_seed::(name); + // let aura = get_from_seed::(name); + // + // ( + // /* account id: */ account.clone(), + // /* validator id: */ account, + // /* session keys: */ SessionKeys { aura }, + // ) + // }) + // .collect::>() + // }, "sudo": { "key": get_account_id_from_seed::("Alice"), --- a/node/cli/src/rpc.rs +++ b/node/cli/src/rpc.rs @@ -43,18 +43,13 @@ type FullBackend = sc_service::TFullBackend; /// Full client dependencies. -pub struct FullDeps { +pub struct FullDeps { /// The client instance to use. pub client: Arc, /// Transaction pool instance. pub pool: Arc

, - /// The SelectChain Strategy - pub select_chain: SC, /// Whether to deny unsafe calls pub deny_unsafe: DenyUnsafe, - - /// Runtime identification (read from the chain spec) - pub runtime_id: RuntimeId, /// Executor params for PoV estimating #[cfg(feature = "pov-estimate")] pub exec_params: uc_rpc::pov_estimate::ExecutorParams, @@ -64,9 +59,9 @@ } /// Instantiate all Full RPC extensions. -pub fn create_full( +pub fn create_full( io: &mut RpcModule<()>, - deps: FullDeps, + deps: FullDeps, ) -> Result<(), Box> where C: ProvideRuntimeApi + StorageProvider + AuxStore, @@ -93,10 +88,7 @@ let FullDeps { client, pool, - select_chain: _, deny_unsafe, - - runtime_id: _, #[cfg(feature = "pov-estimate")] exec_params, --- a/node/cli/src/service.rs +++ b/node/cli/src/service.rs @@ -36,8 +36,8 @@ use cumulus_client_consensus_common::ParachainBlockImport as TParachainBlockImport; use cumulus_client_consensus_proposer::Proposer; use cumulus_client_service::{ - build_relay_chain_interface, prepare_node_config, start_relay_chain_tasks, DARecoveryProfile, - StartRelayChainTasksParams, + build_relay_chain_interface, prepare_node_config, start_relay_chain_tasks, + CollatorSybilResistance, DARecoveryProfile, StartRelayChainTasksParams, }; use cumulus_primitives_core::ParaId; use cumulus_primitives_parachain_inherent::ParachainInherentData; @@ -85,10 +85,7 @@ use cumulus_primitives_core::PersistedValidationData; use cumulus_test_relay_sproof_builder::RelayStateSproofBuilder; -use crate::{ - chain_spec::RuntimeIdentification, - rpc::{create_eth, create_full, EthDeps, FullDeps}, -}; +use crate::rpc::{create_eth, create_full, EthDeps, FullDeps}; /// Unique native executor instance. #[cfg(feature = "unique-runtime")] @@ -238,7 +235,7 @@ pub trait LookaheadApiDep: cumulus_primitives_aura::AuraUnincludedSegmentApi {} ); -fn ethereum_parachain_inherent() -> ParachainInherentData { +fn ethereum_parachain_inherent() -> (sp_timestamp::InherentDataProvider, ParachainInherentData) { let (relay_parent_storage_root, relay_chain_state) = RelayStateSproofBuilder::default().into_state_root_and_proof(); let vfp = PersistedValidationData { @@ -249,12 +246,15 @@ ..Default::default() }; - ParachainInherentData { - validation_data: vfp, - relay_chain_state, - downward_messages: Default::default(), - horizontal_messages: Default::default(), - } + ( + sp_timestamp::InherentDataProvider::from_system_time(), + ParachainInherentData { + validation_data: vfp, + relay_chain_state, + downward_messages: Default::default(), + horizontal_messages: Default::default(), + }, + ) } /// Starts a `ServiceBuilder` for a full service. @@ -426,34 +426,26 @@ .await .map_err(|e| sc_service::Error::Application(Box::new(e) as Box<_>))?; - // Aura is sybil-resistant, collator-selection is generally too. - let block_announce_validator = - cumulus_client_network::AssumeSybilResistance::allow_seconded_messages(); - let validator = parachain_config.role.is_authority(); let prometheus_registry = parachain_config.prometheus_registry().cloned(); let transaction_pool = params.transaction_pool.clone(); let import_queue_service = params.import_queue.service(); let (network, system_rpc_tx, tx_handler_controller, start_network, sync_service) = - sc_service::build_network(sc_service::BuildNetworkParams { - config: ¶chain_config, + cumulus_client_service::build_network(cumulus_client_service::BuildNetworkParams { + parachain_config: ¶chain_config, net_config, client: client.clone(), transaction_pool: transaction_pool.clone(), + para_id, spawn_handle: task_manager.spawn_handle(), + relay_chain_interface: relay_chain_interface.clone(), import_queue: params.import_queue, - block_announce_validator_builder: Some(Box::new(|_| { - Box::new(block_announce_validator) - })), - warp_sync_params: None, - block_relay: None, - })?; - - let select_chain = params.select_chain.clone(); + // Aura is sybil-resistant, collator-selection is generally too. + sybil_resistance_level: CollatorSybilResistance::Resistant, + }) + .await?; - let runtime_id = parachain_config.chain_spec.runtime_id(); - // Frontier let fee_history_cache: FeeHistoryCache = Arc::new(Mutex::new(BTreeMap::new())); let fee_history_limit = 2048; @@ -505,9 +497,7 @@ fee_history_cache, eth_block_data_cache, network, - runtime_id, transaction_pool, - select_chain, overrides, ); @@ -518,7 +508,6 @@ let full_deps = FullDeps { client: client.clone(), - runtime_id, #[cfg(feature = "pov-estimate")] exec_params: uc_rpc::pov_estimate::ExecutorParams { @@ -533,10 +522,9 @@ deny_unsafe, pool: transaction_pool.clone(), - select_chain, }; - create_full::<_, _, _, Runtime, _>(&mut rpc_handle, full_deps)?; + create_full::<_, _, Runtime, _>(&mut rpc_handle, full_deps)?; let eth_deps = EthDeps { client, @@ -557,7 +545,7 @@ overrides, sync: sync_service.clone(), pending_create_inherent_data_providers: |_, ()| async move { - Ok((ethereum_parachain_inherent(),)) + Ok(ethereum_parachain_inherent()) }, }; @@ -1040,8 +1028,6 @@ #[cfg(feature = "pov-estimate")] let rpc_backend = backend.clone(); - - let runtime_id = config.chain_spec.runtime_id(); // Frontier let fee_history_cache: FeeHistoryCache = Arc::new(Mutex::new(BTreeMap::new())); @@ -1094,9 +1080,7 @@ fee_history_cache, eth_block_data_cache, network, - runtime_id, transaction_pool, - select_chain, overrides, ); @@ -1106,8 +1090,6 @@ let mut rpc_module = RpcModule::new(()); let full_deps = FullDeps { - runtime_id, - #[cfg(feature = "pov-estimate")] exec_params: uc_rpc::pov_estimate::ExecutorParams { wasm_method: config.wasm_method, @@ -1122,10 +1104,9 @@ deny_unsafe, client: client.clone(), pool: transaction_pool.clone(), - select_chain, }; - create_full::<_, _, _, Runtime, _>(&mut rpc_module, full_deps)?; + create_full::<_, _, Runtime, _>(&mut rpc_module, full_deps)?; let eth_deps = EthDeps { client, @@ -1147,7 +1128,7 @@ sync: sync_service.clone(), // We don't have any inherents except parachain built-ins, which we can't even extract from inside `run_aura`. pending_create_inherent_data_providers: |_, ()| async move { - Ok((ethereum_parachain_inherent(),)) + Ok(ethereum_parachain_inherent()) }, }; --- a/runtime/common/config/substrate.rs +++ b/runtime/common/config/substrate.rs @@ -15,6 +15,7 @@ // along with Unique Network. If not, see . use frame_support::{ + derive_impl, dispatch::DispatchClass, ord_parameter_types, parameter_types, traits::{ @@ -42,8 +43,8 @@ use crate::{ runtime_common::DealWithFees, Balances, Block, OriginCaller, PalletInfo, Runtime, RuntimeCall, - RuntimeEvent, RuntimeFreezeReason, RuntimeHoldReason, RuntimeOrigin, SS58Prefix, System, - Treasury, Version, + RuntimeEvent, RuntimeFreezeReason, RuntimeHoldReason, RuntimeOrigin, RuntimeTask, SS58Prefix, + System, Treasury, Version, }; parameter_types! { @@ -72,13 +73,12 @@ .build_or_panic(); } +#[derive_impl(frame_system::config_preludes::ParaChainDefaultConfig as frame_system::DefaultConfig)] impl frame_system::Config for Runtime { /// The data to be stored in an account. type AccountData = pallet_balances::AccountData; /// The identifier used to distinguish between accounts. type AccountId = AccountId; - /// The basic call filter to use in dispatchable. - type BaseCallFilter = Everything; /// Maximum number of block number to block hash mappings to keep (oldest pruned first). type BlockHashCount = BlockHashCount; /// The block type. @@ -87,12 +87,8 @@ type BlockLength = RuntimeBlockLength; /// The weight of the overhead invoked on the block import process, independent of the extrinsics included in that block. type BlockWeights = RuntimeBlockWeights; - /// The aggregated dispatch type that is available for extrinsics. - type RuntimeCall = RuntimeCall; /// The weight of database operations that the runtime can invoke. type DbWeight = RocksDbWeight; - /// The ubiquitous event type. - type RuntimeEvent = RuntimeEvent; /// The type for hashing blocks and tries. type Hash = Hash; /// The hashing algorithm used. @@ -101,10 +97,6 @@ type Nonce = Nonce; /// The lookup mechanism to get account ID from whatever is passed in dispatchers. type Lookup = AccountIdLookup; - /// What to do if an account is fully reaped from the system. - type OnKilledAccount = (); - /// What to do if a new account is created. - type OnNewAccount = (); type OnSetCode = cumulus_pallet_parachain_system::ParachainSetCode; /// The ubiquitous origin type. type RuntimeOrigin = RuntimeOrigin; @@ -117,14 +109,6 @@ /// Version of the runtime. type Version = Version; type MaxConsumers = ConstU32<16>; - - type RuntimeTask = (); - - type SingleBlockMigrations = (); - type MultiBlockMigrator = (); - type PreInherents = (); - type PostInherents = (); - type PostTransactions = (); } parameter_types! {