mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-18 06:01:02 +00:00
Name changes for GrandPa and Beefy notifications protocols (#10463)
* grandpa: update notif protocol name * grandpa: add chain id prefix to protocol name * grandpa: beautify protocol name handling * grandpa: prepend genesis hash to protocol name * chain-spec: add optional 'fork_id' 'fork_id' is used to uniquely identify forks of the same chain/network 'ChainSpec' trait provides default 'None' implementation, meaning this chain hasn't been forked. * grandpa: protocol_name mod instead of struct * beefy: add genesis hash prefix to protocol name * chainspec: add fork_id * grandpa: simplify protocol name * grandpa: contain protocol name building logic * beefy: contain protocol name building logic * grandpa: fix tests * fix merge damage * fix docs reference visibility Signed-off-by: acatangiu <adrian@parity.io> * Update client/finality-grandpa/src/lib.rs Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com> * Update client/finality-grandpa/src/communication/mod.rs Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com> * Update client/beefy/src/lib.rs Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com> * Update client/beefy/src/lib.rs Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com> * avoid using hash default, even for protocol names Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
This commit is contained in:
@@ -39,15 +39,40 @@ mod round;
|
||||
mod worker;
|
||||
|
||||
pub mod notification;
|
||||
pub use beefy_protocol_name::standard_name as protocol_standard_name;
|
||||
|
||||
pub const BEEFY_PROTOCOL_NAME: &str = "/paritytech/beefy/1";
|
||||
pub(crate) mod beefy_protocol_name {
|
||||
use sc_chain_spec::ChainSpec;
|
||||
|
||||
const NAME: &'static str = "/beefy/1";
|
||||
/// Old names for the notifications protocol, used for backward compatibility.
|
||||
pub(crate) const LEGACY_NAMES: [&'static str; 1] = ["/paritytech/beefy/1"];
|
||||
|
||||
/// Name of the notifications protocol used by BEEFY.
|
||||
///
|
||||
/// Must be registered towards the networking in order for BEEFY to properly function.
|
||||
pub fn standard_name<Hash: std::fmt::Display>(
|
||||
genesis_hash: &Hash,
|
||||
chain_spec: &Box<dyn ChainSpec>,
|
||||
) -> std::borrow::Cow<'static, str> {
|
||||
let chain_prefix = match chain_spec.fork_id() {
|
||||
Some(fork_id) => format!("/{}/{}", genesis_hash, fork_id),
|
||||
None => format!("/{}", genesis_hash),
|
||||
};
|
||||
format!("{}{}", chain_prefix, NAME).into()
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns the configuration value to put in
|
||||
/// [`sc_network::config::NetworkConfiguration::extra_sets`].
|
||||
pub fn beefy_peers_set_config() -> sc_network::config::NonDefaultSetConfig {
|
||||
let mut cfg =
|
||||
sc_network::config::NonDefaultSetConfig::new(BEEFY_PROTOCOL_NAME.into(), 1024 * 1024);
|
||||
/// For standard protocol name see [`beefy_protocol_name::standard_name`].
|
||||
pub fn beefy_peers_set_config(
|
||||
protocol_name: std::borrow::Cow<'static, str>,
|
||||
) -> sc_network::config::NonDefaultSetConfig {
|
||||
let mut cfg = sc_network::config::NonDefaultSetConfig::new(protocol_name, 1024 * 1024);
|
||||
|
||||
cfg.allow_non_reserved(25, 25);
|
||||
cfg.add_fallback_names(beefy_protocol_name::LEGACY_NAMES.iter().map(|&n| n.into()).collect());
|
||||
cfg
|
||||
}
|
||||
|
||||
@@ -101,6 +126,8 @@ where
|
||||
pub min_block_delta: u32,
|
||||
/// Prometheus metric registry
|
||||
pub prometheus_registry: Option<Registry>,
|
||||
/// Chain specific GRANDPA protocol name. See [`beefy_protocol_name::standard_name`].
|
||||
pub protocol_name: std::borrow::Cow<'static, str>,
|
||||
}
|
||||
|
||||
/// Start the BEEFY gadget.
|
||||
@@ -122,11 +149,11 @@ where
|
||||
signed_commitment_sender,
|
||||
min_block_delta,
|
||||
prometheus_registry,
|
||||
protocol_name,
|
||||
} = beefy_params;
|
||||
|
||||
let gossip_validator = Arc::new(gossip::GossipValidator::new());
|
||||
let gossip_engine =
|
||||
GossipEngine::new(network, BEEFY_PROTOCOL_NAME, gossip_validator.clone(), None);
|
||||
let gossip_engine = GossipEngine::new(network, protocol_name, gossip_validator.clone(), None);
|
||||
|
||||
let metrics =
|
||||
prometheus_registry.as_ref().map(metrics::Metrics::register).and_then(
|
||||
|
||||
Reference in New Issue
Block a user