diff --git a/Cargo.lock b/Cargo.lock index fd4b72ce36c90..61b99291074a1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4341,7 +4341,6 @@ dependencies = [ "ip_network", "log", "num-traits", - "parachains-common", "parity-scale-codec", "prost 0.12.6", "prost-build", @@ -14304,6 +14303,7 @@ dependencies = [ "jsonrpsee", "log", "parachain-template-runtime", + "parity-scale-codec", "polkadot-sdk", "serde", "substrate-prometheus-endpoint", diff --git a/cumulus/client/bootnodes/Cargo.toml b/cumulus/client/bootnodes/Cargo.toml index 25821ff7b2e6f..300a0075f38a2 100644 --- a/cumulus/client/bootnodes/Cargo.toml +++ b/cumulus/client/bootnodes/Cargo.toml @@ -33,9 +33,6 @@ sc-service = { workspace = true, default-features = true } sp-consensus-babe = { workspace = true, default-features = true } sp-runtime = { workspace = true, default-features = true } -# Polkadot - # Cumulus cumulus-primitives-core = { workspace = true, default-features = true } cumulus-relay-chain-interface = { workspace = true, default-features = true } -parachains-common = { workspace = true, default-features = true } diff --git a/cumulus/client/bootnodes/src/advertisement.rs b/cumulus/client/bootnodes/src/advertisement.rs index 09c583586378c..790d93a9d4d6a 100644 --- a/cumulus/client/bootnodes/src/advertisement.rs +++ b/cumulus/client/bootnodes/src/advertisement.rs @@ -27,7 +27,6 @@ use cumulus_relay_chain_interface::{RelayChainInterface, RelayChainResult}; use futures::{future::Fuse, pin_mut, FutureExt, StreamExt}; use ip_network::IpNetwork; use log::{debug, error, trace, warn}; -use parachains_common::Hash as ParaHash; use prost::Message; use sc_network::{ config::OutgoingResponse, @@ -63,7 +62,7 @@ pub struct BootnodeAdvertisementParams { /// Whether to advertise non-global IPs. pub advertise_non_global_ips: bool, /// Parachain genesis hash. - pub parachain_genesis_hash: ParaHash, + pub parachain_genesis_hash: Vec, /// Parachain fork ID. pub parachain_fork_id: Option, /// Parachain side public addresses. @@ -83,7 +82,7 @@ pub struct BootnodeAdvertisement { request_receiver: async_channel::Receiver, parachain_network: Arc, advertise_non_global_ips: bool, - parachain_genesis_hash: ParaHash, + parachain_genesis_hash: Vec, parachain_fork_id: Option, public_addresses: Vec, } @@ -408,7 +407,7 @@ impl BootnodeAdvertisement { let response = crate::schema::Response { peer_id: self.parachain_network.local_peer_id().to_bytes(), addrs: self.paranode_addresses().iter().map(|a| a.to_vec()).collect(), - genesis_hash: self.parachain_genesis_hash.clone().as_bytes().to_vec(), + genesis_hash: self.parachain_genesis_hash.clone(), fork_id: self.parachain_fork_id.clone(), }; diff --git a/cumulus/client/bootnodes/src/discovery.rs b/cumulus/client/bootnodes/src/discovery.rs index 73b6890ff9bc8..6a563c408fb0a 100644 --- a/cumulus/client/bootnodes/src/discovery.rs +++ b/cumulus/client/bootnodes/src/discovery.rs @@ -44,7 +44,6 @@ use futures::{ FutureExt, StreamExt, }; use log::{debug, error, info, trace, warn}; -use parachains_common::Hash as ParaHash; use prost::Message; use sc_network::{ event::{DhtEvent, Event}, @@ -70,7 +69,7 @@ pub struct BootnodeDiscoveryParams { /// Parachain node network service. pub parachain_network: Arc, /// Parachain genesis hash. - pub parachain_genesis_hash: ParaHash, + pub parachain_genesis_hash: Vec, /// Parachain fork ID. pub parachain_fork_id: Option, /// Relay chain interface. @@ -85,7 +84,7 @@ pub struct BootnodeDiscoveryParams { pub struct BootnodeDiscovery { para_id_scale_compact: Vec, parachain_network: Arc, - parachain_genesis_hash: ParaHash, + parachain_genesis_hash: Vec, parachain_fork_id: Option, relay_chain_interface: Arc, relay_chain_network: Arc, @@ -311,7 +310,7 @@ impl BootnodeDiscovery { match (response.genesis_hash, response.fork_id) { (genesis_hash, fork_id) - if genesis_hash == self.parachain_genesis_hash.as_ref() && + if genesis_hash == self.parachain_genesis_hash && fork_id == self.parachain_fork_id => {}, (genesis_hash, fork_id) => { warn!( @@ -320,7 +319,7 @@ impl BootnodeDiscovery { genesis hash {}, fork ID {:?} don't match expected genesis hash {}, fork ID {:?}", hex::encode(genesis_hash), fork_id, - hex::encode(self.parachain_genesis_hash), + hex::encode(&self.parachain_genesis_hash), self.parachain_fork_id, ); return; diff --git a/cumulus/client/bootnodes/src/task.rs b/cumulus/client/bootnodes/src/task.rs index c77cfa81faa76..135c4415ba01d 100644 --- a/cumulus/client/bootnodes/src/task.rs +++ b/cumulus/client/bootnodes/src/task.rs @@ -26,7 +26,6 @@ use cumulus_primitives_core::{relay_chain::BlockId, ParaId}; use cumulus_relay_chain_interface::RelayChainInterface; use log::{debug, error}; use num_traits::Zero; -use parachains_common::Hash as ParaHash; use sc_network::{request_responses::IncomingRequest, service::traits::NetworkService, Multiaddr}; use sc_service::TaskManager; use std::sync::Arc; @@ -57,7 +56,7 @@ pub struct StartBootnodeTasksParams<'a> { /// Whether to advertise non-global IP addresses. pub advertise_non_global_ips: bool, /// Parachain genesis hash. - pub parachain_genesis_hash: ParaHash, + pub parachain_genesis_hash: Vec, /// Parachain fork ID. pub parachain_fork_id: Option, /// Parachain public addresses provided by the operator. @@ -71,7 +70,7 @@ async fn bootnode_advertisement( request_receiver: async_channel::Receiver, parachain_network: Arc, advertise_non_global_ips: bool, - parachain_genesis_hash: ParaHash, + parachain_genesis_hash: Vec, parachain_fork_id: Option, public_addresses: Vec, ) { @@ -95,7 +94,7 @@ async fn bootnode_advertisement( async fn bootnode_discovery( para_id: ParaId, parachain_network: Arc, - parachain_genesis_hash: ParaHash, + parachain_genesis_hash: Vec, parachain_fork_id: Option, relay_chain_interface: Arc, relay_chain_fork_id: Option, @@ -177,7 +176,7 @@ pub fn start_bootnode_tasks( request_receiver, parachain_network.clone(), advertise_non_global_ips, - parachain_genesis_hash, + parachain_genesis_hash.clone(), parachain_fork_id.clone(), parachain_public_addresses, ), diff --git a/cumulus/polkadot-omni-node/lib/src/common/spec.rs b/cumulus/polkadot-omni-node/lib/src/common/spec.rs index 686e2cc4e1669..3170bb09f0b36 100644 --- a/cumulus/polkadot-omni-node/lib/src/common/spec.rs +++ b/cumulus/polkadot-omni-node/lib/src/common/spec.rs @@ -27,6 +27,7 @@ use crate::{ ConstructNodeRuntimeApi, NodeBlock, NodeExtraArgs, }, }; +use codec::Encode; use cumulus_client_bootnodes::{start_bootnode_tasks, StartBootnodeTasksParams}; use cumulus_client_cli::CollatorOptions; use cumulus_client_service::{ @@ -517,7 +518,7 @@ pub(crate) trait NodeSpec: BaseNodeSpec { request_receiver: paranode_rx, parachain_network: network, advertise_non_global_ips, - parachain_genesis_hash: client.chain_info().genesis_hash, + parachain_genesis_hash: client.chain_info().genesis_hash.encode(), parachain_fork_id, parachain_public_addresses, }); diff --git a/prdoc/pr_10048.prdoc b/prdoc/pr_10048.prdoc new file mode 100644 index 0000000000000..b0324cfa82209 --- /dev/null +++ b/prdoc/pr_10048.prdoc @@ -0,0 +1,10 @@ +title: 'cumulus-bootnodes: Do not require a specific hash' +doc: +- audience: Node Dev + description: "On the wire the hash is represented as `Vec` any way. So, there\ + \ is no need to take this as an extra type.\r\n" +crates: +- name: cumulus-client-bootnodes + bump: major +- name: polkadot-omni-node-lib + bump: major diff --git a/templates/parachain/node/Cargo.toml b/templates/parachain/node/Cargo.toml index b622f2dc14cb0..2b97708d3d22a 100644 --- a/templates/parachain/node/Cargo.toml +++ b/templates/parachain/node/Cargo.toml @@ -14,6 +14,7 @@ build = "build.rs" workspace = true [dependencies] +codec = { workspace = true, default-features = true } clap = { features = ["derive"], workspace = true } color-print = { workspace = true } docify = { workspace = true } diff --git a/templates/parachain/node/src/service.rs b/templates/parachain/node/src/service.rs index 7d95673eafdc9..b965a93f39af7 100644 --- a/templates/parachain/node/src/service.rs +++ b/templates/parachain/node/src/service.rs @@ -9,6 +9,7 @@ use parachain_template_runtime::{ opaque::{Block, Hash}, }; +use codec::Encode; use polkadot_sdk::{cumulus_client_service::ParachainTracingExecuteBlock, *}; // Cumulus Imports @@ -415,7 +416,7 @@ pub async fn start_parachain_node( request_receiver: paranode_rx, parachain_network: network, advertise_non_global_ips, - parachain_genesis_hash: client.chain_info().genesis_hash, + parachain_genesis_hash: client.chain_info().genesis_hash.encode(), parachain_fork_id, parachain_public_addresses, });