diff --git a/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/kusama_headers_to_bridge_hub_polkadot.rs b/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/kusama_headers_to_bridge_hub_polkadot.rs index a5419a725e2e1d6c8370a9320a3afb2e5bb38836..2dc9c131305ad1969ff97df313bf37bef0e72d12 100644 --- a/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/kusama_headers_to_bridge_hub_polkadot.rs +++ b/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/kusama_headers_to_bridge_hub_polkadot.rs @@ -21,12 +21,10 @@ use crate::cli::bridge::{ }; use async_trait::async_trait; -use relay_substrate_client::{AccountKeyPairOf, Client}; use substrate_relay_helper::{ equivocation::SubstrateEquivocationDetectionPipeline, finality::SubstrateFinalitySyncPipeline, finality_base::{engine::Grandpa as GrandpaFinalityEngine, SubstrateFinalityPipeline}, - TransactionParams, }; /// Description of Kusama -> PolkadotBridgeHub finalized headers bridge. @@ -58,20 +56,6 @@ impl SubstrateFinalityPipeline for KusamaFinalityToBridgeHubPolkadot { #[async_trait] impl SubstrateFinalitySyncPipeline for KusamaFinalityToBridgeHubPolkadot { type SubmitFinalityProofCallBuilder = SubmitFinalityProofCallBuilder; - - async fn start_relay_guards( - target_client: &Client<Self::TargetChain>, - _transaction_params: &TransactionParams<AccountKeyPairOf<Self::TargetChain>>, - enable_version_guard: bool, - ) -> relay_substrate_client::Result<()> { - if enable_version_guard { - relay_substrate_client::guard::abort_on_spec_version_change( - target_client.clone(), - target_client.simple_runtime_version().await?.spec_version, - ); - } - Ok(()) - } } #[async_trait] diff --git a/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/polkadot_headers_to_bridge_hub_kusama.rs b/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/polkadot_headers_to_bridge_hub_kusama.rs index 5899b8c25f6e0bc4c500e3dfe4b0847f665c264b..589bf2546e8c1823a80c217de37fba284b892720 100644 --- a/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/polkadot_headers_to_bridge_hub_kusama.rs +++ b/bridges/relays/bin-substrate/src/bridges/kusama_polkadot/polkadot_headers_to_bridge_hub_kusama.rs @@ -21,12 +21,10 @@ use crate::cli::bridge::{ }; use async_trait::async_trait; -use relay_substrate_client::{AccountKeyPairOf, Client}; use substrate_relay_helper::{ equivocation::SubstrateEquivocationDetectionPipeline, finality::SubstrateFinalitySyncPipeline, finality_base::{engine::Grandpa as GrandpaFinalityEngine, SubstrateFinalityPipeline}, - TransactionParams, }; /// Description of Polkadot -> KusamaBridgeHub finalized headers bridge. @@ -58,20 +56,6 @@ impl SubstrateFinalityPipeline for PolkadotFinalityToBridgeHubKusama { #[async_trait] impl SubstrateFinalitySyncPipeline for PolkadotFinalityToBridgeHubKusama { type SubmitFinalityProofCallBuilder = SubmitFinalityProofCallBuilder; - - async fn start_relay_guards( - target_client: &Client<Self::TargetChain>, - _transaction_params: &TransactionParams<AccountKeyPairOf<Self::TargetChain>>, - enable_version_guard: bool, - ) -> relay_substrate_client::Result<()> { - if enable_version_guard { - relay_substrate_client::guard::abort_on_spec_version_change( - target_client.clone(), - target_client.simple_runtime_version().await?.spec_version, - ); - } - Ok(()) - } } #[async_trait] diff --git a/bridges/relays/bin-substrate/src/bridges/polkadot_bulletin/polkadot_bulletin_headers_to_bridge_hub_polkadot.rs b/bridges/relays/bin-substrate/src/bridges/polkadot_bulletin/polkadot_bulletin_headers_to_bridge_hub_polkadot.rs index 33f59feda3bae45f142b73fd5abfec20e980844e..dbf89ddeec39877cbc3c35ffc5c4fd65229ffc21 100644 --- a/bridges/relays/bin-substrate/src/bridges/polkadot_bulletin/polkadot_bulletin_headers_to_bridge_hub_polkadot.rs +++ b/bridges/relays/bin-substrate/src/bridges/polkadot_bulletin/polkadot_bulletin_headers_to_bridge_hub_polkadot.rs @@ -22,12 +22,10 @@ use crate::cli::bridge::{ }; use async_trait::async_trait; -use relay_substrate_client::{AccountKeyPairOf, Client}; use substrate_relay_helper::{ equivocation::SubstrateEquivocationDetectionPipeline, finality::SubstrateFinalitySyncPipeline, finality_base::{engine::Grandpa as GrandpaFinalityEngine, SubstrateFinalityPipeline}, - TransactionParams, }; /// Description of `PolkadotBulletin` -> `PolkadotBridgeHub` finalized headers bridge. @@ -59,20 +57,6 @@ impl SubstrateFinalityPipeline for PolkadotBulletinFinalityToBridgeHubPolkadot { #[async_trait] impl SubstrateFinalitySyncPipeline for PolkadotBulletinFinalityToBridgeHubPolkadot { type SubmitFinalityProofCallBuilder = SubmitFinalityProofCallBuilder; - - async fn start_relay_guards( - target_client: &Client<Self::TargetChain>, - _transaction_params: &TransactionParams<AccountKeyPairOf<Self::TargetChain>>, - enable_version_guard: bool, - ) -> relay_substrate_client::Result<()> { - if enable_version_guard { - relay_substrate_client::guard::abort_on_spec_version_change( - target_client.clone(), - target_client.simple_runtime_version().await?.spec_version, - ); - } - Ok(()) - } } #[async_trait] diff --git a/bridges/relays/bin-substrate/src/bridges/polkadot_bulletin/polkadot_headers_to_polkadot_bulletin.rs b/bridges/relays/bin-substrate/src/bridges/polkadot_bulletin/polkadot_headers_to_polkadot_bulletin.rs index 7770fd1559444cef9de4ac3b3327b586e4617aab..897c2ac884f91c4e9166901d7db6b825fb4e5e55 100644 --- a/bridges/relays/bin-substrate/src/bridges/polkadot_bulletin/polkadot_headers_to_polkadot_bulletin.rs +++ b/bridges/relays/bin-substrate/src/bridges/polkadot_bulletin/polkadot_headers_to_polkadot_bulletin.rs @@ -21,12 +21,10 @@ use crate::cli::bridge::{ }; use async_trait::async_trait; -use relay_substrate_client::{AccountKeyPairOf, Client}; use substrate_relay_helper::{ equivocation::SubstrateEquivocationDetectionPipeline, finality::SubstrateFinalitySyncPipeline, finality_base::{engine::Grandpa as GrandpaFinalityEngine, SubstrateFinalityPipeline}, - TransactionParams, }; /// Description of Polkadot -> `PolkadotBulletin` finalized headers bridge. @@ -58,20 +56,6 @@ impl SubstrateFinalityPipeline for PolkadotFinalityToPolkadotBulletin { #[async_trait] impl SubstrateFinalitySyncPipeline for PolkadotFinalityToPolkadotBulletin { type SubmitFinalityProofCallBuilder = SubmitFinalityProofCallBuilder; - - async fn start_relay_guards( - target_client: &Client<Self::TargetChain>, - _transaction_params: &TransactionParams<AccountKeyPairOf<Self::TargetChain>>, - enable_version_guard: bool, - ) -> relay_substrate_client::Result<()> { - if enable_version_guard { - relay_substrate_client::guard::abort_on_spec_version_change( - target_client.clone(), - target_client.simple_runtime_version().await?.spec_version, - ); - } - Ok(()) - } } #[async_trait] diff --git a/bridges/relays/bin-substrate/src/bridges/rococo_westend/rococo_headers_to_bridge_hub_westend.rs b/bridges/relays/bin-substrate/src/bridges/rococo_westend/rococo_headers_to_bridge_hub_westend.rs index 75f6ff6f25c206bab9dfa64efa8e0f6e7d03d284..24d0b6603157a1bf550d6bad1164a70dedee9c9f 100644 --- a/bridges/relays/bin-substrate/src/bridges/rococo_westend/rococo_headers_to_bridge_hub_westend.rs +++ b/bridges/relays/bin-substrate/src/bridges/rococo_westend/rococo_headers_to_bridge_hub_westend.rs @@ -21,12 +21,10 @@ use crate::cli::bridge::{ }; use async_trait::async_trait; -use relay_substrate_client::{AccountKeyPairOf, Client}; use substrate_relay_helper::{ equivocation::SubstrateEquivocationDetectionPipeline, finality::SubstrateFinalitySyncPipeline, finality_base::{engine::Grandpa as GrandpaFinalityEngine, SubstrateFinalityPipeline}, - TransactionParams, }; /// Description of Rococo -> Westend finalized headers bridge. @@ -58,20 +56,6 @@ impl SubstrateFinalityPipeline for RococoFinalityToBridgeHubWestend { #[async_trait] impl SubstrateFinalitySyncPipeline for RococoFinalityToBridgeHubWestend { type SubmitFinalityProofCallBuilder = SubmitFinalityProofCallBuilder; - - async fn start_relay_guards( - target_client: &Client<Self::TargetChain>, - _transaction_params: &TransactionParams<AccountKeyPairOf<Self::TargetChain>>, - enable_version_guard: bool, - ) -> relay_substrate_client::Result<()> { - if enable_version_guard { - relay_substrate_client::guard::abort_on_spec_version_change( - target_client.clone(), - target_client.simple_runtime_version().await?.spec_version, - ); - } - Ok(()) - } } #[async_trait] diff --git a/bridges/relays/bin-substrate/src/bridges/rococo_westend/westend_headers_to_bridge_hub_rococo.rs b/bridges/relays/bin-substrate/src/bridges/rococo_westend/westend_headers_to_bridge_hub_rococo.rs index 1532e06b9538657f828963eeb1ab5b826326b252..451089b2ce009e379f89846710da060e50b3b94d 100644 --- a/bridges/relays/bin-substrate/src/bridges/rococo_westend/westend_headers_to_bridge_hub_rococo.rs +++ b/bridges/relays/bin-substrate/src/bridges/rococo_westend/westend_headers_to_bridge_hub_rococo.rs @@ -21,12 +21,10 @@ use crate::cli::bridge::{ }; use async_trait::async_trait; -use relay_substrate_client::{AccountKeyPairOf, Client}; use substrate_relay_helper::{ equivocation::SubstrateEquivocationDetectionPipeline, finality::SubstrateFinalitySyncPipeline, finality_base::{engine::Grandpa as GrandpaFinalityEngine, SubstrateFinalityPipeline}, - TransactionParams, }; /// Description of Westend -> Rococo finalized headers bridge. @@ -58,20 +56,6 @@ impl SubstrateFinalityPipeline for WestendFinalityToBridgeHubRococo { #[async_trait] impl SubstrateFinalitySyncPipeline for WestendFinalityToBridgeHubRococo { type SubmitFinalityProofCallBuilder = SubmitFinalityProofCallBuilder; - - async fn start_relay_guards( - target_client: &Client<Self::TargetChain>, - _transaction_params: &TransactionParams<AccountKeyPairOf<Self::TargetChain>>, - enable_version_guard: bool, - ) -> relay_substrate_client::Result<()> { - if enable_version_guard { - relay_substrate_client::guard::abort_on_spec_version_change( - target_client.clone(), - target_client.simple_runtime_version().await?.spec_version, - ); - } - Ok(()) - } } #[async_trait] diff --git a/bridges/relays/bin-substrate/src/bridges/rococo_wococo/rococo_headers_to_bridge_hub_wococo.rs b/bridges/relays/bin-substrate/src/bridges/rococo_wococo/rococo_headers_to_bridge_hub_wococo.rs index d89ba35849c69e5e300a9a76349461953272e80e..b9b9a89ba0f5260d6658d96f644044fdea4060c0 100644 --- a/bridges/relays/bin-substrate/src/bridges/rococo_wococo/rococo_headers_to_bridge_hub_wococo.rs +++ b/bridges/relays/bin-substrate/src/bridges/rococo_wococo/rococo_headers_to_bridge_hub_wococo.rs @@ -21,12 +21,10 @@ use crate::cli::bridge::{ }; use async_trait::async_trait; -use relay_substrate_client::{AccountKeyPairOf, Client}; use substrate_relay_helper::{ equivocation::SubstrateEquivocationDetectionPipeline, finality::SubstrateFinalitySyncPipeline, finality_base::{engine::Grandpa as GrandpaFinalityEngine, SubstrateFinalityPipeline}, - TransactionParams, }; /// Description of Rococo -> Wococo finalized headers bridge. @@ -58,20 +56,6 @@ impl SubstrateFinalityPipeline for RococoFinalityToBridgeHubWococo { #[async_trait] impl SubstrateFinalitySyncPipeline for RococoFinalityToBridgeHubWococo { type SubmitFinalityProofCallBuilder = SubmitFinalityProofCallBuilder; - - async fn start_relay_guards( - target_client: &Client<Self::TargetChain>, - _transaction_params: &TransactionParams<AccountKeyPairOf<Self::TargetChain>>, - enable_version_guard: bool, - ) -> relay_substrate_client::Result<()> { - if enable_version_guard { - relay_substrate_client::guard::abort_on_spec_version_change( - target_client.clone(), - target_client.simple_runtime_version().await?.spec_version, - ); - } - Ok(()) - } } #[async_trait] diff --git a/bridges/relays/bin-substrate/src/bridges/rococo_wococo/wococo_headers_to_bridge_hub_rococo.rs b/bridges/relays/bin-substrate/src/bridges/rococo_wococo/wococo_headers_to_bridge_hub_rococo.rs index 44d91f06e3e781f3170d73ec42e5a7a4bca16aa9..c000a2764e26eae00ffd4b97fd4d3556f6c1d95f 100644 --- a/bridges/relays/bin-substrate/src/bridges/rococo_wococo/wococo_headers_to_bridge_hub_rococo.rs +++ b/bridges/relays/bin-substrate/src/bridges/rococo_wococo/wococo_headers_to_bridge_hub_rococo.rs @@ -21,12 +21,10 @@ use crate::cli::bridge::{ }; use async_trait::async_trait; -use relay_substrate_client::{AccountKeyPairOf, Client}; use substrate_relay_helper::{ equivocation::SubstrateEquivocationDetectionPipeline, finality::SubstrateFinalitySyncPipeline, finality_base::{engine::Grandpa as GrandpaFinalityEngine, SubstrateFinalityPipeline}, - TransactionParams, }; /// Description of Wococo -> Rococo finalized headers bridge. @@ -58,20 +56,6 @@ impl SubstrateFinalityPipeline for WococoFinalityToBridgeHubRococo { #[async_trait] impl SubstrateFinalitySyncPipeline for WococoFinalityToBridgeHubRococo { type SubmitFinalityProofCallBuilder = SubmitFinalityProofCallBuilder; - - async fn start_relay_guards( - target_client: &Client<Self::TargetChain>, - _transaction_params: &TransactionParams<AccountKeyPairOf<Self::TargetChain>>, - enable_version_guard: bool, - ) -> relay_substrate_client::Result<()> { - if enable_version_guard { - relay_substrate_client::guard::abort_on_spec_version_change( - target_client.clone(), - target_client.simple_runtime_version().await?.spec_version, - ); - } - Ok(()) - } } #[async_trait] diff --git a/bridges/relays/bin-substrate/src/cli/detect_equivocations.rs b/bridges/relays/bin-substrate/src/cli/detect_equivocations.rs index 142a3f8e69a8803ac6b7e46844221d1f66764f99..bc456e025499e0de53556b6ec90fdda50c773369 100644 --- a/bridges/relays/bin-substrate/src/cli/detect_equivocations.rs +++ b/bridges/relays/bin-substrate/src/cli/detect_equivocations.rs @@ -37,7 +37,7 @@ use async_trait::async_trait; use relay_substrate_client::ChainWithTransactions; use structopt::StructOpt; use strum::{EnumString, EnumVariantNames, VariantNames}; -use substrate_relay_helper::equivocation; +use substrate_relay_helper::{equivocation, equivocation::SubstrateEquivocationDetectionPipeline}; /// Start equivocation detection loop. #[derive(StructOpt)] @@ -73,8 +73,15 @@ where Self::Source: ChainWithTransactions, { async fn start(data: DetectEquivocations) -> anyhow::Result<()> { + let source_client = data.source.into_client::<Self::Source>().await?; + Self::Equivocation::start_relay_guards( + &source_client, + source_client.can_start_version_guard(), + ) + .await?; + equivocation::run::<Self::Equivocation>( - data.source.into_client::<Self::Source>().await?, + source_client, data.target.into_client::<Self::Target>().await?, data.source_sign.transaction_params::<Self::Source>()?, data.prometheus_params.into_metrics_params()?, diff --git a/bridges/relays/bin-substrate/src/cli/relay_headers.rs b/bridges/relays/bin-substrate/src/cli/relay_headers.rs index 800e8587d8b25d707839cd8024551306f6583f09..d3a7fa09367dfb594762b760f46c2135516478b2 100644 --- a/bridges/relays/bin-substrate/src/cli/relay_headers.rs +++ b/bridges/relays/bin-substrate/src/cli/relay_headers.rs @@ -96,12 +96,8 @@ trait HeadersRelayer: RelayToRelayHeadersCliBridge { signer: target_sign, mortality: target_transactions_mortality, }; - Self::Finality::start_relay_guards( - &target_client, - &target_transactions_params, - target_client.can_start_version_guard(), - ) - .await?; + Self::Finality::start_relay_guards(&target_client, target_client.can_start_version_guard()) + .await?; substrate_relay_helper::finality::run::<Self::Finality>( source_client, diff --git a/bridges/relays/bin-substrate/src/cli/relay_headers_and_messages/parachain_to_parachain.rs b/bridges/relays/bin-substrate/src/cli/relay_headers_and_messages/parachain_to_parachain.rs index 24d6f00861d00619a5f0d81c7d5517b73a8a6799..1610f648bdcddfdfb7b942526cdd7461a3ace7a9 100644 --- a/bridges/relays/bin-substrate/src/cli/relay_headers_and_messages/parachain_to_parachain.rs +++ b/bridges/relays/bin-substrate/src/cli/relay_headers_and_messages/parachain_to_parachain.rs @@ -218,13 +218,11 @@ where <L2R as ParachainToRelayHeadersCliBridge>::RelayFinality::start_relay_guards( &self.common.right.client, - &self.left_headers_to_right_transaction_params, self.common.right.client.can_start_version_guard(), ) .await?; <R2L as ParachainToRelayHeadersCliBridge>::RelayFinality::start_relay_guards( &self.common.left.client, - &self.right_headers_to_left_transaction_params, self.common.left.client.can_start_version_guard(), ) .await?; diff --git a/bridges/relays/bin-substrate/src/cli/relay_headers_and_messages/relay_to_parachain.rs b/bridges/relays/bin-substrate/src/cli/relay_headers_and_messages/relay_to_parachain.rs index ef47e44dc1837f865df87fbcd764694153fc6ce1..98b313cc0960d2077bf12ad7ff675efdf43fab74 100644 --- a/bridges/relays/bin-substrate/src/cli/relay_headers_and_messages/relay_to_parachain.rs +++ b/bridges/relays/bin-substrate/src/cli/relay_headers_and_messages/relay_to_parachain.rs @@ -200,13 +200,11 @@ where <L2R as RelayToRelayHeadersCliBridge>::Finality::start_relay_guards( &self.common.right.client, - &self.left_headers_to_right_transaction_params, self.common.right.client.can_start_version_guard(), ) .await?; <R2L as ParachainToRelayHeadersCliBridge>::RelayFinality::start_relay_guards( &self.common.left.client, - &self.right_headers_to_left_transaction_params, self.common.left.client.can_start_version_guard(), ) .await?; diff --git a/bridges/relays/bin-substrate/src/cli/relay_headers_and_messages/relay_to_relay.rs b/bridges/relays/bin-substrate/src/cli/relay_headers_and_messages/relay_to_relay.rs index a313628933ba68c5042bca4d9466f066206a780a..a75263540a55f7dde64768cb9286b63f1d116b8b 100644 --- a/bridges/relays/bin-substrate/src/cli/relay_headers_and_messages/relay_to_relay.rs +++ b/bridges/relays/bin-substrate/src/cli/relay_headers_and_messages/relay_to_relay.rs @@ -156,13 +156,11 @@ where <L2R as RelayToRelayHeadersCliBridge>::Finality::start_relay_guards( &self.common.right.client, - &self.left_to_right_transaction_params, self.common.right.client.can_start_version_guard(), ) .await?; <R2L as RelayToRelayHeadersCliBridge>::Finality::start_relay_guards( &self.common.left.client, - &self.right_to_left_transaction_params, self.common.left.client.can_start_version_guard(), ) .await?; diff --git a/bridges/relays/lib-substrate-relay/src/equivocation/mod.rs b/bridges/relays/lib-substrate-relay/src/equivocation/mod.rs index ee0928c2af1370ce45220fe3e6f7e5cfbb550514..f6d58cbaa4ab4c4d7f489de5a80ab226b3b475b4 100644 --- a/bridges/relays/lib-substrate-relay/src/equivocation/mod.rs +++ b/bridges/relays/lib-substrate-relay/src/equivocation/mod.rs @@ -66,6 +66,20 @@ pub trait SubstrateEquivocationDetectionPipeline: { /// How the `report_equivocation` call is built ? type ReportEquivocationCallBuilder: ReportEquivocationCallBuilder<Self>; + + /// Add relay guards if required. + async fn start_relay_guards( + source_client: &Client<Self::SourceChain>, + enable_version_guard: bool, + ) -> relay_substrate_client::Result<()> { + if enable_version_guard { + relay_substrate_client::guard::abort_on_spec_version_change( + source_client.clone(), + source_client.simple_runtime_version().await?.spec_version, + ); + } + Ok(()) + } } type FinalityProoffOf<P> = <<P as SubstrateFinalityPipeline>::FinalityEngine as Engine< diff --git a/bridges/relays/lib-substrate-relay/src/finality/mod.rs b/bridges/relays/lib-substrate-relay/src/finality/mod.rs index 98aec1d52b908dc5b272050f5f15ad11f645ff42..b8cf27ea78fde9704820a30373dc80e6d4e317d5 100644 --- a/bridges/relays/lib-substrate-relay/src/finality/mod.rs +++ b/bridges/relays/lib-substrate-relay/src/finality/mod.rs @@ -75,10 +75,15 @@ pub trait SubstrateFinalitySyncPipeline: BaseSubstrateFinalitySyncPipeline { /// Add relay guards if required. async fn start_relay_guards( - _target_client: &Client<Self::TargetChain>, - _transaction_params: &TransactionParams<AccountKeyPairOf<Self::TargetChain>>, - _enable_version_guard: bool, + target_client: &Client<Self::TargetChain>, + enable_version_guard: bool, ) -> relay_substrate_client::Result<()> { + if enable_version_guard { + relay_substrate_client::guard::abort_on_spec_version_change( + target_client.clone(), + target_client.simple_runtime_version().await?.spec_version, + ); + } Ok(()) } }