Start finality relay spec-version guards for Rococo <> Wococo finality relays (#965)

* start finality relay guards

* comment
This commit is contained in:
Svyatoslav Nikolsky
2021-05-13 14:00:09 +03:00
committed by Bastian Köcher
parent ff7f8ad098
commit bfaa6a4309
4 changed files with 24 additions and 2 deletions
@@ -21,7 +21,7 @@ use crate::finality_pipeline::{SubstrateFinalitySyncPipeline, SubstrateFinalityT
use bp_header_chain::justification::GrandpaJustification; use bp_header_chain::justification::GrandpaJustification;
use codec::Encode; use codec::Encode;
use relay_rococo_client::{Rococo, SyncHeader as RococoSyncHeader}; use relay_rococo_client::{Rococo, SyncHeader as RococoSyncHeader};
use relay_substrate_client::{Chain, TransactionSignScheme}; use relay_substrate_client::{Chain, Client, TransactionSignScheme};
use relay_utils::metrics::MetricsParams; use relay_utils::metrics::MetricsParams;
use relay_wococo_client::{SigningParams as WococoSigningParams, Wococo}; use relay_wococo_client::{SigningParams as WococoSigningParams, Wococo};
use sp_core::{Bytes, Pair}; use sp_core::{Bytes, Pair};
@@ -38,6 +38,13 @@ impl SubstrateFinalitySyncPipeline for RococoFinalityToWococo {
crate::chains::add_polkadot_kusama_price_metrics::<Self>(params) crate::chains::add_polkadot_kusama_price_metrics::<Self>(params)
} }
fn start_relay_guards(target_client: &Client<Self::TargetChain>) {
relay_substrate_client::guard::abort_on_spec_version_change(
target_client.clone(),
bp_wococo::VERSION.spec_version,
)
}
fn transactions_author(&self) -> bp_wococo::AccountId { fn transactions_author(&self) -> bp_wococo::AccountId {
(*self.target_sign.public().as_array_ref()).into() (*self.target_sign.public().as_array_ref()).into()
} }
@@ -21,7 +21,7 @@ use crate::finality_pipeline::{SubstrateFinalitySyncPipeline, SubstrateFinalityT
use bp_header_chain::justification::GrandpaJustification; use bp_header_chain::justification::GrandpaJustification;
use codec::Encode; use codec::Encode;
use relay_rococo_client::{Rococo, SigningParams as RococoSigningParams}; use relay_rococo_client::{Rococo, SigningParams as RococoSigningParams};
use relay_substrate_client::{Chain, TransactionSignScheme}; use relay_substrate_client::{Chain, Client, TransactionSignScheme};
use relay_utils::metrics::MetricsParams; use relay_utils::metrics::MetricsParams;
use relay_wococo_client::{SyncHeader as WococoSyncHeader, Wococo}; use relay_wococo_client::{SyncHeader as WococoSyncHeader, Wococo};
use sp_core::{Bytes, Pair}; use sp_core::{Bytes, Pair};
@@ -38,6 +38,13 @@ impl SubstrateFinalitySyncPipeline for WococoFinalityToRococo {
crate::chains::add_polkadot_kusama_price_metrics::<Self>(params) crate::chains::add_polkadot_kusama_price_metrics::<Self>(params)
} }
fn start_relay_guards(target_client: &Client<Self::TargetChain>) {
relay_substrate_client::guard::abort_on_spec_version_change(
target_client.clone(),
bp_rococo::VERSION.spec_version,
)
}
fn transactions_author(&self) -> bp_rococo::AccountId { fn transactions_author(&self) -> bp_rococo::AccountId {
(*self.target_sign.public().as_array_ref()).into() (*self.target_sign.public().as_array_ref()).into()
} }
@@ -97,6 +97,7 @@ impl RelayHeaders {
let target_client = self.target.to_client::<Target>().await?; let target_client = self.target.to_client::<Target>().await?;
let target_sign = self.target_sign.to_keypair::<Target>()?; let target_sign = self.target_sign.to_keypair::<Target>()?;
let metrics_params = Finality::customize_metrics(self.prometheus_params.into())?; let metrics_params = Finality::customize_metrics(self.prometheus_params.into())?;
Finality::start_relay_guards(&target_client);
crate::finality_pipeline::run( crate::finality_pipeline::run(
Finality::new(target_client.clone(), target_sign), Finality::new(target_client.clone(), target_sign),
@@ -46,6 +46,13 @@ pub trait SubstrateFinalitySyncPipeline: FinalitySyncPipeline {
Ok(params) Ok(params)
} }
/// Start finality relay guards.
///
/// Different finality bridges may have different set of guards - e.g. on ephemeral chains we
/// don't need version guards, on test chains we don't care that much about relayer account
/// balance, ... So the implementation is left to the specific bridges.
fn start_relay_guards(_target_client: &Client<Self::TargetChain>) {}
/// Returns id of account that we're using to sign transactions at target chain. /// Returns id of account that we're using to sign transactions at target chain.
fn transactions_author(&self) -> <Self::TargetChain as Chain>::AccountId; fn transactions_author(&self) -> <Self::TargetChain as Chain>::AccountId;