Skip to content
Snippets Groups Projects
Unverified Commit 5778b455 authored by Branislav Kontur's avatar Branislav Kontur Committed by GitHub
Browse files

Bridges - add version guarding for standalone relaying of parachains and messages (#5952)

This PR adds the ability to start version guarding when performing
standalone relaying of messages and parachains.

## Follow-up
- decouple and simplify `fn start_relay_guards`:
https://github.com/paritytech/polkadot-sdk/issues/5923

---------

Co-authored-by: command-bot <>
parent 215252e7
No related merge requests found
Pipeline #500240 waiting for manual action with stages
in 12 minutes and 20 seconds
......@@ -20,7 +20,6 @@ use rbtag::BuildInfo;
use sp_runtime::traits::TryConvert;
use std::str::FromStr;
use structopt::StructOpt;
use strum::{EnumString, VariantNames};
pub mod bridge;
pub mod chain_schema;
......@@ -139,17 +138,6 @@ where
}
}
#[doc = "Runtime version params."]
#[derive(StructOpt, Debug, PartialEq, Eq, Clone, Copy, EnumString, VariantNames)]
pub enum RuntimeVersionType {
/// Auto query version from chain
Auto,
/// Custom `spec_version` and `transaction_version`
Custom,
/// Read version from bundle dependencies directly.
Bundle,
}
#[cfg(test)]
mod tests {
use super::*;
......
......@@ -96,6 +96,7 @@ pub trait HeadersRelayer: RelayToRelayHeadersCliBridge {
signer: target_sign,
mortality: target_transactions_mortality,
};
Self::Finality::start_relay_guards(&target_client, target_client.can_start_version_guard())
.await?;
......
......@@ -121,6 +121,8 @@ where
anyhow::format_err!("Invalid laneId: {:?}!", invalid_lane_id)
})?;
Self::start_relay_guards(&target_client, target_client.can_start_version_guard()).await?;
crate::messages::run::<Self::MessagesLane, _, _>(MessagesRelayParams {
source_client,
source_transaction_params: TransactionParams {
......@@ -216,4 +218,18 @@ where
)
.await
}
/// Add relay guards if required.
async fn start_relay_guards(
target_client: &impl Client<Self::Target>,
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(())
}
}
......@@ -32,6 +32,7 @@ use crate::{
chain_schema::*,
DefaultClient, PrometheusParams,
},
finality::SubstrateFinalitySyncPipeline,
parachains::{source::ParachainsSource, target::ParachainsTarget, ParachainsPipelineAdapter},
TransactionParams,
};
......@@ -104,6 +105,12 @@ where
data.prometheus_params.into_metrics_params()?;
GlobalMetrics::new()?.register_and_spawn(&metrics_params.registry)?;
Self::RelayFinality::start_relay_guards(
target_client.target_client(),
target_client.target_client().can_start_version_guard(),
)
.await?;
parachains_relay::parachains_loop::run(
source_client,
target_client,
......
......@@ -177,6 +177,14 @@ pub async fn run<P: ParachainsPipeline>(
where
P::SourceRelayChain: Chain<BlockNumber = RelayBlockNumber>,
{
log::info!(
target: "bridge",
"Starting {} -> {} finality proof relay: relaying (only_free_headers: {:?}) headers",
P::SourceParachain::NAME,
P::TargetChain::NAME,
only_free_headers,
);
let exit_signal = exit_signal.shared();
relay_utils::relay_loop(source_client, target_client)
.with_metrics(metrics_params)
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment