Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Commit

Permalink
service: use deny-list instead of allow-list for BEEFY (#5331)
Browse files Browse the repository at this point in the history
* use deny-list instead of allow-list for BEEFY

Instead of allowing BEEFY to run on specific test nets,
inverse the condition to explicitly disallow BEEFY on
production chains that we don't want it to run on yet.

This allows other test chains (other than Rococo/Wococo)
that use the polkadot service file to enable and test BEEFY.

Signed-off-by: Adrian Catangiu <[email protected]>

* address review comments

* throw error if BEEFY enabled on production networks

Signed-off-by: acatangiu <[email protected]>
  • Loading branch information
acatangiu committed Apr 28, 2022
1 parent ae53f58 commit 6e00638
Showing 2 changed files with 24 additions and 3 deletions.
7 changes: 7 additions & 0 deletions cli/src/command.rs
Original file line number Diff line number Diff line change
@@ -273,6 +273,13 @@ where
.map_err(Error::from)?;
let chain_spec = &runner.config().chain_spec;

// Disallow BEEFY on production networks.
if cli.run.beefy &&
(chain_spec.is_polkadot() || chain_spec.is_kusama() || chain_spec.is_westend())
{
return Err(Error::Other("BEEFY disallowed on production networks".to_string()))
}

set_default_ss58_version(chain_spec);

let grandpa_pause = if cli.run.grandpa_pause.is_empty() {
20 changes: 17 additions & 3 deletions node/service/src/lib.rs
Original file line number Diff line number Diff line change
@@ -239,6 +239,9 @@ pub enum Error {

/// Can be called for a `Configuration` to identify which network the configuration targets.
pub trait IdentifyVariant {
/// Returns if this is a configuration for the `Polkadot` network.
fn is_polkadot(&self) -> bool;

/// Returns if this is a configuration for the `Kusama` network.
fn is_kusama(&self) -> bool;

@@ -259,6 +262,9 @@ pub trait IdentifyVariant {
}

impl IdentifyVariant for Box<dyn ChainSpec> {
fn is_polkadot(&self) -> bool {
self.id().starts_with("polkadot") || self.id().starts_with("dot")
}
fn is_kusama(&self) -> bool {
self.id().starts_with("kusama") || self.id().starts_with("ksm")
}
@@ -712,6 +718,15 @@ where
Some(backoff)
};

// If not on a known test network, warn the user that BEEFY is still experimental.
if enable_beefy &&
!config.chain_spec.is_rococo() &&
!config.chain_spec.is_wococo() &&
!config.chain_spec.is_versi()
{
gum::warn!("BEEFY is still experimental, usage on a production network is discouraged.");
}

let disable_grandpa = config.disable_grandpa;
let name = config.network.node_name.clone();

@@ -781,7 +796,7 @@ where
&client.block_hash(0).ok().flatten().expect("Genesis block exists; qed"),
&config.chain_spec,
);
if chain_spec.is_rococo() || chain_spec.is_wococo() || chain_spec.is_versi() {
if enable_beefy {
config
.network
.extra_sets
@@ -1111,8 +1126,7 @@ where
let keystore_opt =
if role.is_authority() { Some(keystore_container.sync_keystore()) } else { None };

// We currently only run the BEEFY gadget on the Rococo and Wococo testnets.
if enable_beefy && (chain_spec.is_rococo() || chain_spec.is_wococo() || chain_spec.is_versi()) {
if enable_beefy {
let beefy_params = beefy_gadget::BeefyParams {
client: client.clone(),
backend: backend.clone(),

0 comments on commit 6e00638

Please sign in to comment.