Remove SOURCE_PARACHAIN_PARA_ID (#1716)

* Remove SOURCE_PARACHAIN_PARA_ID

Remove SubstrateParachainsPipeline::SOURCE_PARACHAIN_PARA_ID

* Avoid duplicate ChainBase and ParachainBase implementations

* Replace ChainShadow with UnderlyingChainProvider
This commit is contained in:
Serban Iorga
2022-12-14 12:29:09 +02:00
committed by Bastian Köcher
parent 7d55a0ffe2
commit bde1629f86
27 changed files with 154 additions and 272 deletions
@@ -39,6 +39,7 @@ use pallet_bridge_parachains::{RelayBlockHash, RelayBlockHasher, RelayBlockNumbe
use parachains_relay::parachains_loop::{AvailableHeader, ParachainSyncParams, TargetClient};
use relay_substrate_client::{
AccountIdOf, AccountKeyPairOf, BlockNumberOf, Chain, Client, Error as SubstrateError, HashOf,
ParachainBase,
};
use relay_utils::{
metrics::MetricsParams, relay_loop::Client as RelayClient, FailedClient, HeaderId,
@@ -278,7 +279,7 @@ async fn background_task<P: SubstrateParachainsPipeline>(
parachains_source.clone(),
parachains_target.clone(),
ParachainSyncParams {
parachains: vec![P::SOURCE_PARACHAIN_PARA_ID.into()],
parachains: vec![P::SourceParachain::PARACHAIN_ID.into()],
stall_timeout: std::time::Duration::from_secs(60),
strategy: parachains_relay::parachains_loop::ParachainSyncStrategy::Any,
},
@@ -386,7 +387,10 @@ where
source.client().best_finalized_header().await.map_err(map_source_err)?;
let best_finalized_relay_block_id = best_finalized_relay_header.id();
let para_header_at_source = source
.on_chain_para_head_id(best_finalized_relay_block_id, P::SOURCE_PARACHAIN_PARA_ID.into())
.on_chain_para_head_id(
best_finalized_relay_block_id,
P::SourceParachain::PARACHAIN_ID.into(),
)
.await
.map_err(map_source_err)?;
@@ -401,7 +405,7 @@ where
.map_err(map_target_err)?;
let para_header_at_relay_header_at_target = source
.on_chain_para_head_id(relay_header_at_target, P::SOURCE_PARACHAIN_PARA_ID.into())
.on_chain_para_head_id(relay_header_at_target, P::SourceParachain::PARACHAIN_ID.into())
.await
.map_err(map_source_err)?;
@@ -24,7 +24,9 @@ use pallet_bridge_parachains::{
RelayBlockHasher, RelayBlockNumber,
};
use parachains_relay::ParachainsPipeline;
use relay_substrate_client::{CallOf, Chain, ChainWithTransactions, HeaderIdOf, RelayChain};
use relay_substrate_client::{
CallOf, Chain, ChainWithTransactions, HeaderIdOf, Parachain, RelayChain,
};
use std::{fmt::Debug, marker::PhantomData};
pub mod source;
@@ -37,7 +39,7 @@ pub mod target;
#[async_trait]
pub trait SubstrateParachainsPipeline: 'static + Clone + Debug + Send + Sync {
/// Headers of this parachain are submitted to the `Self::TargetChain`.
type SourceParachain: Chain;
type SourceParachain: Parachain;
/// Relay chain that is storing headers of `Self::SourceParachain`.
type SourceRelayChain: RelayChain;
/// Target chain where `Self::SourceParachain` headers are submitted.
@@ -45,9 +47,6 @@ pub trait SubstrateParachainsPipeline: 'static + Clone + Debug + Send + Sync {
/// How submit parachains heads call is built?
type SubmitParachainHeadsCallBuilder: SubmitParachainHeadsCallBuilder<Self>;
/// Id of the `Self::SourceParachain`, used for registration in `Self::SourceRelayChain`.
const SOURCE_PARACHAIN_PARA_ID: u32;
}
/// Adapter that allows all `SubstrateParachainsPipeline` to act as `ParachainsPipeline`.
@@ -29,7 +29,7 @@ use parachains_relay::{
parachains_loop_metrics::ParachainsLoopMetrics,
};
use relay_substrate_client::{
Chain, Client, Error as SubstrateError, HeaderIdOf, HeaderOf, RelayChain,
Chain, Client, Error as SubstrateError, HeaderIdOf, HeaderOf, ParachainBase, RelayChain,
};
use relay_utils::relay_loop::Client as RelayClient;
@@ -107,11 +107,11 @@ where
para_id: ParaId,
) -> Result<AvailableHeader<ParaHash>, Self::Error> {
// we don't need to support many parachains now
if para_id.0 != P::SOURCE_PARACHAIN_PARA_ID {
if para_id.0 != P::SourceParachain::PARACHAIN_ID {
return Err(SubstrateError::Custom(format!(
"Parachain id {} is not matching expected {}",
para_id.0,
P::SOURCE_PARACHAIN_PARA_ID,
P::SourceParachain::PARACHAIN_ID,
)))
}
@@ -144,7 +144,7 @@ where
at_block: HeaderIdOf<P::SourceRelayChain>,
parachains: &[ParaId],
) -> Result<(ParaHeadsProof, Vec<ParaHash>), Self::Error> {
let parachain = ParaId(P::SOURCE_PARACHAIN_PARA_ID);
let parachain = ParaId(P::SourceParachain::PARACHAIN_ID);
if parachains != [parachain] {
return Err(SubstrateError::Custom(format!(
"Trying to prove unexpected parachains {parachains:?}. Expected {parachain:?}",