mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-31 02:51:01 +00:00
Add Rococo<>Westend bridge support/relay (#2647)
* Added Rococo<>Westend primitives * Latest fashion * WIP * Temporary hack for AssetHubWestend to Millau * typo * tool/runtime-codegen tweaks * Rococo<>Westend relay part * zepter * Unify `Parachain` vs `Parachains`
This commit is contained in:
committed by
Bastian Köcher
parent
d4a742a6d9
commit
a3e6ce4f94
@@ -41,6 +41,7 @@ relay-rialto-parachain-client = { path = "../client-rialto-parachain" }
|
||||
relay-bridge-hub-kusama-client = { path = "../client-bridge-hub-kusama" }
|
||||
relay-bridge-hub-polkadot-client = { path = "../client-bridge-hub-polkadot" }
|
||||
relay-bridge-hub-rococo-client = { path = "../client-bridge-hub-rococo" }
|
||||
relay-bridge-hub-westend-client = { path = "../client-bridge-hub-westend" }
|
||||
relay-bridge-hub-wococo-client = { path = "../client-bridge-hub-wococo" }
|
||||
relay-kusama-client = { path = "../client-kusama" }
|
||||
relay-polkadot-client = { path = "../client-polkadot" }
|
||||
|
||||
@@ -20,5 +20,6 @@ pub mod kusama_polkadot;
|
||||
pub mod polkadot_bulletin;
|
||||
pub mod rialto_millau;
|
||||
pub mod rialto_parachain_millau;
|
||||
pub mod rococo_westend;
|
||||
pub mod rococo_wococo;
|
||||
pub mod westend_millau;
|
||||
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
// Copyright 2022 Parity Technologies (UK) Ltd.
|
||||
// This file is part of Parity Bridges Common.
|
||||
|
||||
// Parity Bridges Common is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
|
||||
// Parity Bridges Common is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity Bridges Common. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! BridgeHubRococo-to-BridgeHubWestend messages sync entrypoint.
|
||||
|
||||
use crate::cli::bridge::{CliBridgeBase, MessagesCliBridge};
|
||||
use relay_bridge_hub_rococo_client::BridgeHubRococo;
|
||||
use relay_bridge_hub_westend_client::BridgeHubWestend;
|
||||
use substrate_relay_helper::{messages_lane::SubstrateMessageLane, UtilityPalletBatchCallBuilder};
|
||||
|
||||
pub struct BridgeHubRococoToBridgeHubWestendMessagesCliBridge {}
|
||||
|
||||
impl CliBridgeBase for BridgeHubRococoToBridgeHubWestendMessagesCliBridge {
|
||||
type Source = BridgeHubRococo;
|
||||
type Target = BridgeHubWestend;
|
||||
}
|
||||
|
||||
impl MessagesCliBridge for BridgeHubRococoToBridgeHubWestendMessagesCliBridge {
|
||||
type MessagesLane = BridgeHubRococoMessagesToBridgeHubWestendMessageLane;
|
||||
}
|
||||
|
||||
substrate_relay_helper::generate_receive_message_proof_call_builder!(
|
||||
BridgeHubRococoMessagesToBridgeHubWestendMessageLane,
|
||||
BridgeHubRococoMessagesToBridgeHubWestendMessageLaneReceiveMessagesProofCallBuilder,
|
||||
relay_bridge_hub_westend_client::runtime::Call::BridgeRococoMessages,
|
||||
relay_bridge_hub_westend_client::runtime::BridgeRococoMessagesCall::receive_messages_proof
|
||||
);
|
||||
|
||||
substrate_relay_helper::generate_receive_message_delivery_proof_call_builder!(
|
||||
BridgeHubRococoMessagesToBridgeHubWestendMessageLane,
|
||||
BridgeHubRococoMessagesToBridgeHubWestendMessageLaneReceiveMessagesDeliveryProofCallBuilder,
|
||||
relay_bridge_hub_rococo_client::RuntimeCall::BridgeWestendMessages,
|
||||
relay_bridge_hub_rococo_client::BridgeMessagesCall::receive_messages_delivery_proof
|
||||
);
|
||||
|
||||
/// Description of BridgeHubRococo -> BridgeHubWestendWestend messages bridge.
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct BridgeHubRococoMessagesToBridgeHubWestendMessageLane;
|
||||
|
||||
impl SubstrateMessageLane for BridgeHubRococoMessagesToBridgeHubWestendMessageLane {
|
||||
type SourceChain = BridgeHubRococo;
|
||||
type TargetChain = BridgeHubWestend;
|
||||
|
||||
type ReceiveMessagesProofCallBuilder =
|
||||
BridgeHubRococoMessagesToBridgeHubWestendMessageLaneReceiveMessagesProofCallBuilder;
|
||||
type ReceiveMessagesDeliveryProofCallBuilder =
|
||||
BridgeHubRococoMessagesToBridgeHubWestendMessageLaneReceiveMessagesDeliveryProofCallBuilder;
|
||||
|
||||
type SourceBatchCallBuilder = UtilityPalletBatchCallBuilder<BridgeHubRococo>;
|
||||
type TargetBatchCallBuilder = UtilityPalletBatchCallBuilder<BridgeHubWestend>;
|
||||
}
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
// Copyright 2022 Parity Technologies (UK) Ltd.
|
||||
// This file is part of Parity Bridges Common.
|
||||
|
||||
// Parity Bridges Common is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
|
||||
// Parity Bridges Common is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity Bridges Common. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! BridgeHubWestend-to-BridgeHubRococo messages sync entrypoint.
|
||||
|
||||
use crate::cli::bridge::{CliBridgeBase, MessagesCliBridge};
|
||||
use relay_bridge_hub_rococo_client::BridgeHubRococo;
|
||||
use relay_bridge_hub_westend_client::BridgeHubWestend;
|
||||
use substrate_relay_helper::{messages_lane::SubstrateMessageLane, UtilityPalletBatchCallBuilder};
|
||||
|
||||
pub struct BridgeHubWestendToBridgeHubRococoMessagesCliBridge {}
|
||||
|
||||
impl CliBridgeBase for BridgeHubWestendToBridgeHubRococoMessagesCliBridge {
|
||||
type Source = BridgeHubWestend;
|
||||
type Target = BridgeHubRococo;
|
||||
}
|
||||
|
||||
impl MessagesCliBridge for BridgeHubWestendToBridgeHubRococoMessagesCliBridge {
|
||||
type MessagesLane = BridgeHubWestendMessagesToBridgeHubRococoMessageLane;
|
||||
}
|
||||
|
||||
substrate_relay_helper::generate_receive_message_proof_call_builder!(
|
||||
BridgeHubWestendMessagesToBridgeHubRococoMessageLane,
|
||||
BridgeHubWestendMessagesToBridgeHubRococoMessageLaneReceiveMessagesProofCallBuilder,
|
||||
relay_bridge_hub_rococo_client::RuntimeCall::BridgeWestendMessages,
|
||||
relay_bridge_hub_rococo_client::BridgeMessagesCall::receive_messages_proof
|
||||
);
|
||||
|
||||
substrate_relay_helper::generate_receive_message_delivery_proof_call_builder!(
|
||||
BridgeHubWestendMessagesToBridgeHubRococoMessageLane,
|
||||
BridgeHubWestendMessagesToBridgeHubRococoMessageLaneReceiveMessagesDeliveryProofCallBuilder,
|
||||
relay_bridge_hub_westend_client::runtime::Call::BridgeRococoMessages,
|
||||
relay_bridge_hub_westend_client::runtime::BridgeRococoMessagesCall::receive_messages_delivery_proof
|
||||
);
|
||||
|
||||
/// Description of BridgeHubWestend -> BridgeHubRococo messages bridge.
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct BridgeHubWestendMessagesToBridgeHubRococoMessageLane;
|
||||
|
||||
impl SubstrateMessageLane for BridgeHubWestendMessagesToBridgeHubRococoMessageLane {
|
||||
type SourceChain = BridgeHubWestend;
|
||||
type TargetChain = BridgeHubRococo;
|
||||
|
||||
type ReceiveMessagesProofCallBuilder =
|
||||
BridgeHubWestendMessagesToBridgeHubRococoMessageLaneReceiveMessagesProofCallBuilder;
|
||||
type ReceiveMessagesDeliveryProofCallBuilder =
|
||||
BridgeHubWestendMessagesToBridgeHubRococoMessageLaneReceiveMessagesDeliveryProofCallBuilder;
|
||||
|
||||
type SourceBatchCallBuilder = UtilityPalletBatchCallBuilder<BridgeHubWestend>;
|
||||
type TargetBatchCallBuilder = UtilityPalletBatchCallBuilder<BridgeHubRococo>;
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
// Copyright 2019-2021 Parity Technologies (UK) Ltd.
|
||||
// This file is part of Parity Bridges Common.
|
||||
|
||||
// Parity Bridges Common is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
|
||||
// Parity Bridges Common is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity Bridges Common. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! Declaration of all bridges between Rococo Bridge Hub and Westend Bridge Hub.
|
||||
|
||||
pub mod bridge_hub_rococo_messages_to_bridge_hub_westend;
|
||||
pub mod bridge_hub_westend_messages_to_bridge_hub_rococo;
|
||||
pub mod rococo_headers_to_bridge_hub_westend;
|
||||
pub mod rococo_parachains_to_bridge_hub_westend;
|
||||
pub mod westend_headers_to_bridge_hub_rococo;
|
||||
pub mod westend_parachains_to_bridge_hub_rococo;
|
||||
+96
@@ -0,0 +1,96 @@
|
||||
// Copyright 2022 Parity Technologies (UK) Ltd.
|
||||
// This file is part of Parity Bridges Common.
|
||||
|
||||
// Parity Bridges Common is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
|
||||
// Parity Bridges Common is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity Bridges Common. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! Rococo-to-Westend bridge hubs headers sync entrypoint.
|
||||
|
||||
use crate::cli::bridge::{
|
||||
CliBridgeBase, RelayToRelayEquivocationDetectionCliBridge, RelayToRelayHeadersCliBridge,
|
||||
};
|
||||
|
||||
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.
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct RococoFinalityToBridgeHubWestend;
|
||||
|
||||
substrate_relay_helper::generate_submit_finality_proof_call_builder!(
|
||||
RococoFinalityToBridgeHubWestend,
|
||||
SubmitFinalityProofCallBuilder,
|
||||
relay_bridge_hub_westend_client::runtime::Call::BridgeRococoGrandpa,
|
||||
relay_bridge_hub_westend_client::runtime::BridgeRococoGrandpaCall::submit_finality_proof
|
||||
);
|
||||
|
||||
substrate_relay_helper::generate_report_equivocation_call_builder!(
|
||||
RococoFinalityToBridgeHubWestend,
|
||||
ReportEquivocationCallBuilder,
|
||||
relay_rococo_client::RuntimeCall::Grandpa,
|
||||
relay_rococo_client::GrandpaCall::report_equivocation
|
||||
);
|
||||
|
||||
#[async_trait]
|
||||
impl SubstrateFinalityPipeline for RococoFinalityToBridgeHubWestend {
|
||||
type SourceChain = relay_rococo_client::Rococo;
|
||||
type TargetChain = relay_bridge_hub_westend_client::BridgeHubWestend;
|
||||
|
||||
type FinalityEngine = GrandpaFinalityEngine<Self::SourceChain>;
|
||||
}
|
||||
|
||||
#[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]
|
||||
impl SubstrateEquivocationDetectionPipeline for RococoFinalityToBridgeHubWestend {
|
||||
type ReportEquivocationCallBuilder = ReportEquivocationCallBuilder;
|
||||
}
|
||||
|
||||
/// `Rococo` to BridgeHub `Westend` bridge definition.
|
||||
pub struct RococoToBridgeHubWestendCliBridge {}
|
||||
|
||||
impl CliBridgeBase for RococoToBridgeHubWestendCliBridge {
|
||||
type Source = relay_rococo_client::Rococo;
|
||||
type Target = relay_bridge_hub_westend_client::BridgeHubWestend;
|
||||
}
|
||||
|
||||
impl RelayToRelayHeadersCliBridge for RococoToBridgeHubWestendCliBridge {
|
||||
type Finality = RococoFinalityToBridgeHubWestend;
|
||||
}
|
||||
|
||||
impl RelayToRelayEquivocationDetectionCliBridge for RococoToBridgeHubWestendCliBridge {
|
||||
type Equivocation = RococoFinalityToBridgeHubWestend;
|
||||
}
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
// Copyright 2019-2021 Parity Technologies (UK) Ltd.
|
||||
// This file is part of Parity Bridges Common.
|
||||
|
||||
// Parity Bridges Common is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
|
||||
// Parity Bridges Common is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity Bridges Common. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! Westend-to-Rococo parachains sync entrypoint.
|
||||
|
||||
use crate::cli::bridge::{CliBridgeBase, MessagesCliBridge, ParachainToRelayHeadersCliBridge};
|
||||
use bp_polkadot_core::parachains::{ParaHash, ParaHeadsProof, ParaId};
|
||||
use relay_substrate_client::{CallOf, HeaderIdOf};
|
||||
use substrate_relay_helper::parachains::{
|
||||
SubmitParachainHeadsCallBuilder, SubstrateParachainsPipeline,
|
||||
};
|
||||
|
||||
/// BridgeHub-to-BridgeHub parachain sync description.
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct BridgeHubRococoToBridgeHubWestend;
|
||||
|
||||
impl SubstrateParachainsPipeline for BridgeHubRococoToBridgeHubWestend {
|
||||
type SourceParachain = relay_bridge_hub_rococo_client::BridgeHubRococo;
|
||||
type SourceRelayChain = relay_rococo_client::Rococo;
|
||||
type TargetChain = relay_bridge_hub_westend_client::BridgeHubWestend;
|
||||
|
||||
type SubmitParachainHeadsCallBuilder = BridgeHubRococoToBridgeHubWestendCallBuilder;
|
||||
}
|
||||
|
||||
pub struct BridgeHubRococoToBridgeHubWestendCallBuilder;
|
||||
impl SubmitParachainHeadsCallBuilder<BridgeHubRococoToBridgeHubWestend>
|
||||
for BridgeHubRococoToBridgeHubWestendCallBuilder
|
||||
{
|
||||
fn build_submit_parachain_heads_call(
|
||||
at_relay_block: HeaderIdOf<relay_rococo_client::Rococo>,
|
||||
parachains: Vec<(ParaId, ParaHash)>,
|
||||
parachain_heads_proof: ParaHeadsProof,
|
||||
) -> CallOf<relay_bridge_hub_westend_client::BridgeHubWestend> {
|
||||
relay_bridge_hub_westend_client::runtime::Call::BridgeRococoParachains(
|
||||
relay_bridge_hub_westend_client::runtime::BridgeParachainCall::submit_parachain_heads {
|
||||
at_relay_block: (at_relay_block.0, at_relay_block.1),
|
||||
parachains,
|
||||
parachain_heads_proof,
|
||||
},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/// `BridgeHubParachain` to `BridgeHubParachain` bridge definition.
|
||||
pub struct BridgeHubRococoToBridgeHubWestendCliBridge {}
|
||||
|
||||
impl ParachainToRelayHeadersCliBridge for BridgeHubRococoToBridgeHubWestendCliBridge {
|
||||
type SourceRelay = relay_rococo_client::Rococo;
|
||||
type ParachainFinality = BridgeHubRococoToBridgeHubWestend;
|
||||
type RelayFinality =
|
||||
crate::bridges::rococo_westend::rococo_headers_to_bridge_hub_westend::RococoFinalityToBridgeHubWestend;
|
||||
}
|
||||
|
||||
impl CliBridgeBase for BridgeHubRococoToBridgeHubWestendCliBridge {
|
||||
type Source = relay_bridge_hub_rococo_client::BridgeHubRococo;
|
||||
type Target = relay_bridge_hub_westend_client::BridgeHubWestend;
|
||||
}
|
||||
|
||||
impl MessagesCliBridge for BridgeHubRococoToBridgeHubWestendCliBridge {
|
||||
type MessagesLane =
|
||||
crate::bridges::rococo_westend::bridge_hub_rococo_messages_to_bridge_hub_westend::BridgeHubRococoMessagesToBridgeHubWestendMessageLane;
|
||||
}
|
||||
+96
@@ -0,0 +1,96 @@
|
||||
// Copyright 2022 Parity Technologies (UK) Ltd.
|
||||
// This file is part of Parity Bridges Common.
|
||||
|
||||
// Parity Bridges Common is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
|
||||
// Parity Bridges Common is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity Bridges Common. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! Westend-to-Rococo bridge hubs headers sync entrypoint.
|
||||
|
||||
use crate::cli::bridge::{
|
||||
CliBridgeBase, RelayToRelayEquivocationDetectionCliBridge, RelayToRelayHeadersCliBridge,
|
||||
};
|
||||
|
||||
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.
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct WestendFinalityToBridgeHubRococo;
|
||||
|
||||
substrate_relay_helper::generate_submit_finality_proof_call_builder!(
|
||||
WestendFinalityToBridgeHubRococo,
|
||||
SubmitFinalityProofCallBuilder,
|
||||
relay_bridge_hub_rococo_client::RuntimeCall::BridgeWestendGrandpa,
|
||||
relay_bridge_hub_rococo_client::BridgeGrandpaCall::submit_finality_proof
|
||||
);
|
||||
|
||||
substrate_relay_helper::generate_report_equivocation_call_builder!(
|
||||
WestendFinalityToBridgeHubRococo,
|
||||
ReportEquivocationCallBuilder,
|
||||
relay_westend_client::RuntimeCall::Grandpa,
|
||||
relay_westend_client::GrandpaCall::report_equivocation
|
||||
);
|
||||
|
||||
#[async_trait]
|
||||
impl SubstrateFinalityPipeline for WestendFinalityToBridgeHubRococo {
|
||||
type SourceChain = relay_westend_client::Westend;
|
||||
type TargetChain = relay_bridge_hub_rococo_client::BridgeHubRococo;
|
||||
|
||||
type FinalityEngine = GrandpaFinalityEngine<Self::SourceChain>;
|
||||
}
|
||||
|
||||
#[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]
|
||||
impl SubstrateEquivocationDetectionPipeline for WestendFinalityToBridgeHubRococo {
|
||||
type ReportEquivocationCallBuilder = ReportEquivocationCallBuilder;
|
||||
}
|
||||
|
||||
/// `Westend` to BridgeHub `Rococo` bridge definition.
|
||||
pub struct WestendToBridgeHubRococoCliBridge {}
|
||||
|
||||
impl CliBridgeBase for WestendToBridgeHubRococoCliBridge {
|
||||
type Source = relay_westend_client::Westend;
|
||||
type Target = relay_bridge_hub_rococo_client::BridgeHubRococo;
|
||||
}
|
||||
|
||||
impl RelayToRelayHeadersCliBridge for WestendToBridgeHubRococoCliBridge {
|
||||
type Finality = WestendFinalityToBridgeHubRococo;
|
||||
}
|
||||
|
||||
impl RelayToRelayEquivocationDetectionCliBridge for WestendToBridgeHubRococoCliBridge {
|
||||
type Equivocation = WestendFinalityToBridgeHubRococo;
|
||||
}
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
// Copyright 2019-2021 Parity Technologies (UK) Ltd.
|
||||
// This file is part of Parity Bridges Common.
|
||||
|
||||
// Parity Bridges Common is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
|
||||
// Parity Bridges Common is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity Bridges Common. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! Rococo-to-Westend parachains sync entrypoint.
|
||||
|
||||
use crate::cli::bridge::{CliBridgeBase, MessagesCliBridge, ParachainToRelayHeadersCliBridge};
|
||||
use bp_polkadot_core::parachains::{ParaHash, ParaHeadsProof, ParaId};
|
||||
use relay_substrate_client::{CallOf, HeaderIdOf};
|
||||
use substrate_relay_helper::parachains::{
|
||||
SubmitParachainHeadsCallBuilder, SubstrateParachainsPipeline,
|
||||
};
|
||||
|
||||
/// BridgeHub-to-BridgeHub parachain sync description.
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct BridgeHubWestendToBridgeHubRococo;
|
||||
|
||||
impl SubstrateParachainsPipeline for BridgeHubWestendToBridgeHubRococo {
|
||||
type SourceParachain = relay_bridge_hub_westend_client::BridgeHubWestend;
|
||||
type SourceRelayChain = relay_westend_client::Westend;
|
||||
type TargetChain = relay_bridge_hub_rococo_client::BridgeHubRococo;
|
||||
|
||||
type SubmitParachainHeadsCallBuilder = BridgeHubWestendToBridgeHubRococoCallBuilder;
|
||||
}
|
||||
|
||||
pub struct BridgeHubWestendToBridgeHubRococoCallBuilder;
|
||||
impl SubmitParachainHeadsCallBuilder<BridgeHubWestendToBridgeHubRococo>
|
||||
for BridgeHubWestendToBridgeHubRococoCallBuilder
|
||||
{
|
||||
fn build_submit_parachain_heads_call(
|
||||
at_relay_block: HeaderIdOf<relay_westend_client::Westend>,
|
||||
parachains: Vec<(ParaId, ParaHash)>,
|
||||
parachain_heads_proof: ParaHeadsProof,
|
||||
) -> CallOf<relay_bridge_hub_rococo_client::BridgeHubRococo> {
|
||||
relay_bridge_hub_rococo_client::RuntimeCall::BridgeWestendParachains(
|
||||
relay_bridge_hub_rococo_client::BridgeParachainCall::submit_parachain_heads {
|
||||
at_relay_block: (at_relay_block.0, at_relay_block.1),
|
||||
parachains,
|
||||
parachain_heads_proof,
|
||||
},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/// `BridgeHubParachain` to `BridgeHubParachain` bridge definition.
|
||||
pub struct BridgeHubWestendToBridgeHubRococoCliBridge {}
|
||||
|
||||
impl ParachainToRelayHeadersCliBridge for BridgeHubWestendToBridgeHubRococoCliBridge {
|
||||
type SourceRelay = relay_westend_client::Westend;
|
||||
type ParachainFinality = BridgeHubWestendToBridgeHubRococo;
|
||||
type RelayFinality =
|
||||
crate::bridges::rococo_westend::westend_headers_to_bridge_hub_rococo::WestendFinalityToBridgeHubRococo;
|
||||
}
|
||||
|
||||
impl CliBridgeBase for BridgeHubWestendToBridgeHubRococoCliBridge {
|
||||
type Source = relay_bridge_hub_westend_client::BridgeHubWestend;
|
||||
type Target = relay_bridge_hub_rococo_client::BridgeHubRococo;
|
||||
}
|
||||
|
||||
impl MessagesCliBridge for BridgeHubWestendToBridgeHubRococoCliBridge {
|
||||
type MessagesLane =
|
||||
crate::bridges::rococo_westend::bridge_hub_westend_messages_to_bridge_hub_rococo::BridgeHubWestendMessagesToBridgeHubRococoMessageLane;
|
||||
}
|
||||
+1
-1
@@ -44,7 +44,7 @@ impl SubmitParachainHeadsCallBuilder<BridgeHubRococoToBridgeHubWococo>
|
||||
parachains: Vec<(ParaId, ParaHash)>,
|
||||
parachain_heads_proof: ParaHeadsProof,
|
||||
) -> CallOf<relay_bridge_hub_wococo_client::BridgeHubWococo> {
|
||||
relay_bridge_hub_wococo_client::RuntimeCall::BridgeRococoParachain(
|
||||
relay_bridge_hub_wococo_client::RuntimeCall::BridgeRococoParachains(
|
||||
relay_bridge_hub_wococo_client::BridgeParachainCall::submit_parachain_heads {
|
||||
at_relay_block: (at_relay_block.0, at_relay_block.1),
|
||||
parachains,
|
||||
|
||||
+1
-1
@@ -44,7 +44,7 @@ impl SubmitParachainHeadsCallBuilder<BridgeHubWococoToBridgeHubRococo>
|
||||
parachains: Vec<(ParaId, ParaHash)>,
|
||||
parachain_heads_proof: ParaHeadsProof,
|
||||
) -> CallOf<relay_bridge_hub_rococo_client::BridgeHubRococo> {
|
||||
relay_bridge_hub_rococo_client::RuntimeCall::BridgeWococoParachain(
|
||||
relay_bridge_hub_rococo_client::RuntimeCall::BridgeWococoParachains(
|
||||
relay_bridge_hub_rococo_client::BridgeParachainCall::submit_parachain_heads {
|
||||
at_relay_block: (at_relay_block.0, at_relay_block.1),
|
||||
parachains,
|
||||
|
||||
+34
-3
@@ -18,7 +18,7 @@
|
||||
|
||||
use crate::cli::bridge::{CliBridgeBase, ParachainToRelayHeadersCliBridge};
|
||||
use relay_millau_client::Millau;
|
||||
use relay_westend_client::{AssetHubWestend, Westend};
|
||||
use relay_westend_client::Westend;
|
||||
use substrate_relay_helper::parachains::{
|
||||
DirectSubmitParachainHeadsCallBuilder, SubstrateParachainsPipeline,
|
||||
};
|
||||
@@ -28,7 +28,7 @@ use substrate_relay_helper::parachains::{
|
||||
pub struct WestendParachainsToMillau;
|
||||
|
||||
impl SubstrateParachainsPipeline for WestendParachainsToMillau {
|
||||
type SourceParachain = AssetHubWestend;
|
||||
type SourceParachain = relay_asset_hub_westend_client::AssetHubWestend;
|
||||
type SourceRelayChain = Westend;
|
||||
type TargetChain = Millau;
|
||||
|
||||
@@ -54,6 +54,37 @@ impl ParachainToRelayHeadersCliBridge for AssetHubWestendToMillauCliBridge {
|
||||
}
|
||||
|
||||
impl CliBridgeBase for AssetHubWestendToMillauCliBridge {
|
||||
type Source = AssetHubWestend;
|
||||
type Source = relay_asset_hub_westend_client::AssetHubWestend;
|
||||
type Target = Millau;
|
||||
}
|
||||
|
||||
/// TODO: Note: I know this does not belong here, but I don't want to add it to the
|
||||
/// `chain-asset-hub-westend` or `chain-westend`, because we wont use it for production and I don't
|
||||
/// want to bring this to the bridges subtree now. Anyway, we plan to retire millau/rialto, so this
|
||||
/// hack will disappear with that.
|
||||
pub mod relay_asset_hub_westend_client {
|
||||
use bp_runtime::{ChainId, UnderlyingChainProvider};
|
||||
use relay_substrate_client::Chain;
|
||||
use std::time::Duration;
|
||||
|
||||
/// `AssetHubWestend` parachain definition
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
pub struct AssetHubWestend;
|
||||
|
||||
impl UnderlyingChainProvider for AssetHubWestend {
|
||||
type Chain = millau_runtime::bp_bridged_chain::AssetHubWestend;
|
||||
}
|
||||
|
||||
// Westmint seems to use the same configuration as all Polkadot-like chains, so we'll use
|
||||
// Westend primitives here.
|
||||
impl Chain for AssetHubWestend {
|
||||
const ID: ChainId = bp_runtime::ASSET_HUB_WESTEND_CHAIN_ID;
|
||||
const NAME: &'static str = "Westmint";
|
||||
const BEST_FINALIZED_HEADER_ID_METHOD: &'static str =
|
||||
millau_runtime::bp_bridged_chain::BEST_FINALIZED_ASSETHUBWESTEND_HEADER_METHOD;
|
||||
const AVERAGE_BLOCK_INTERVAL: Duration = Duration::from_secs(6);
|
||||
|
||||
type SignedBlock = bp_polkadot_core::SignedBlock;
|
||||
type Call = ();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,3 +65,11 @@ impl CliChain for Millau {
|
||||
const RUNTIME_VERSION: Option<SimpleRuntimeVersion> =
|
||||
Some(SimpleRuntimeVersion::from_runtime_version(&millau_runtime::VERSION));
|
||||
}
|
||||
|
||||
/// TODO: Note: I know this does not belong here, but I don't want to add it to the
|
||||
/// `chain-asset-hub-westend` or `chain-westend`, because we wont use it for production and I don't
|
||||
/// want to bring this to the bridges subtree now. Anyway, we plan to retire millau/rialto, so this
|
||||
/// hack will disappear with that.
|
||||
impl CliChain for crate::bridges::westend_millau::westend_parachains_to_millau::relay_asset_hub_westend_client::AssetHubWestend {
|
||||
const RUNTIME_VERSION: Option<SimpleRuntimeVersion> = None;
|
||||
}
|
||||
|
||||
@@ -17,13 +17,15 @@
|
||||
//! Westend chain specification for CLI.
|
||||
|
||||
use crate::cli::CliChain;
|
||||
use relay_bridge_hub_westend_client::BridgeHubWestend;
|
||||
use relay_substrate_client::SimpleRuntimeVersion;
|
||||
use relay_westend_client::{AssetHubWestend, Westend};
|
||||
use relay_westend_client::Westend;
|
||||
|
||||
impl CliChain for Westend {
|
||||
const RUNTIME_VERSION: Option<SimpleRuntimeVersion> = None;
|
||||
}
|
||||
|
||||
impl CliChain for AssetHubWestend {
|
||||
const RUNTIME_VERSION: Option<SimpleRuntimeVersion> = None;
|
||||
impl CliChain for BridgeHubWestend {
|
||||
const RUNTIME_VERSION: Option<SimpleRuntimeVersion> =
|
||||
Some(SimpleRuntimeVersion { spec_version: 10000, transaction_version: 3 });
|
||||
}
|
||||
|
||||
@@ -35,6 +35,8 @@ pub enum FullBridge {
|
||||
RialtoParachainToMillau,
|
||||
BridgeHubRococoToBridgeHubWococo,
|
||||
BridgeHubWococoToBridgeHubRococo,
|
||||
BridgeHubRococoToBridgeHubWestend,
|
||||
BridgeHubWestendToBridgeHubRococo,
|
||||
BridgeHubKusamaToBridgeHubPolkadot,
|
||||
BridgeHubPolkadotToBridgeHubKusama,
|
||||
PolkadotBulletinToBridgeHubPolkadot,
|
||||
|
||||
@@ -32,6 +32,10 @@ use crate::{
|
||||
rialto_headers_to_millau::RialtoToMillauCliBridge,
|
||||
},
|
||||
rialto_parachain_millau::millau_headers_to_rialto_parachain::MillauToRialtoParachainCliBridge,
|
||||
rococo_westend::{
|
||||
rococo_headers_to_bridge_hub_westend::RococoToBridgeHubWestendCliBridge,
|
||||
westend_headers_to_bridge_hub_rococo::WestendToBridgeHubRococoCliBridge,
|
||||
},
|
||||
rococo_wococo::{
|
||||
rococo_headers_to_bridge_hub_wococo::RococoToBridgeHubWococoCliBridge,
|
||||
wococo_headers_to_bridge_hub_rococo::WococoToBridgeHubRococoCliBridge,
|
||||
@@ -78,6 +82,8 @@ pub enum InitBridgeName {
|
||||
PolkadotToBridgeHubKusama,
|
||||
PolkadotToPolkadotBulletin,
|
||||
PolkadotBulletinToBridgeHubPolkadot,
|
||||
RococoToBridgeHubWestend,
|
||||
WestendToBridgeHubRococo,
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
@@ -210,6 +216,32 @@ impl BridgeInitializer for WococoToBridgeHubRococoCliBridge {
|
||||
}
|
||||
}
|
||||
|
||||
impl BridgeInitializer for RococoToBridgeHubWestendCliBridge {
|
||||
type Engine = GrandpaFinalityEngine<Self::Source>;
|
||||
|
||||
fn encode_init_bridge(
|
||||
init_data: <Self::Engine as Engine<Self::Source>>::InitializationData,
|
||||
) -> <Self::Target as Chain>::Call {
|
||||
relay_bridge_hub_westend_client::runtime::Call::BridgeRococoGrandpa(
|
||||
relay_bridge_hub_westend_client::runtime::BridgeRococoGrandpaCall::initialize {
|
||||
init_data,
|
||||
},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
impl BridgeInitializer for WestendToBridgeHubRococoCliBridge {
|
||||
type Engine = GrandpaFinalityEngine<Self::Source>;
|
||||
|
||||
fn encode_init_bridge(
|
||||
init_data: <Self::Engine as Engine<Self::Source>>::InitializationData,
|
||||
) -> <Self::Target as Chain>::Call {
|
||||
relay_bridge_hub_rococo_client::RuntimeCall::BridgeWestendGrandpa(
|
||||
relay_bridge_hub_rococo_client::BridgeGrandpaCall::initialize { init_data },
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
impl BridgeInitializer for KusamaToBridgeHubPolkadotCliBridge {
|
||||
type Engine = GrandpaFinalityEngine<Self::Source>;
|
||||
|
||||
@@ -290,6 +322,10 @@ impl InitBridge {
|
||||
PolkadotToPolkadotBulletinCliBridge::init_bridge(self),
|
||||
InitBridgeName::PolkadotBulletinToBridgeHubPolkadot =>
|
||||
PolkadotBulletinToBridgeHubPolkadotCliBridge::init_bridge(self),
|
||||
InitBridgeName::RococoToBridgeHubWestend =>
|
||||
RococoToBridgeHubWestendCliBridge::init_bridge(self),
|
||||
InitBridgeName::WestendToBridgeHubRococo =>
|
||||
WestendToBridgeHubRococoCliBridge::init_bridge(self),
|
||||
}
|
||||
.await
|
||||
}
|
||||
|
||||
@@ -56,6 +56,10 @@ use crate::{
|
||||
millau_headers_to_rialto_parachain::MillauToRialtoParachainCliBridge,
|
||||
rialto_parachains_to_millau::RialtoParachainToMillauCliBridge,
|
||||
},
|
||||
rococo_westend::{
|
||||
rococo_parachains_to_bridge_hub_westend::BridgeHubRococoToBridgeHubWestendCliBridge,
|
||||
westend_parachains_to_bridge_hub_rococo::BridgeHubWestendToBridgeHubRococoCliBridge,
|
||||
},
|
||||
rococo_wococo::{
|
||||
rococo_parachains_to_bridge_hub_wococo::BridgeHubRococoToBridgeHubWococoCliBridge,
|
||||
wococo_parachains_to_bridge_hub_rococo::BridgeHubWococoToBridgeHubRococoCliBridge,
|
||||
@@ -206,6 +210,8 @@ declare_chain_cli_schema!(Rococo, rococo);
|
||||
declare_chain_cli_schema!(BridgeHubRococo, bridge_hub_rococo);
|
||||
declare_chain_cli_schema!(Wococo, wococo);
|
||||
declare_chain_cli_schema!(BridgeHubWococo, bridge_hub_wococo);
|
||||
declare_chain_cli_schema!(Westend, westend);
|
||||
declare_chain_cli_schema!(BridgeHubWestend, bridge_hub_westend);
|
||||
declare_chain_cli_schema!(Kusama, kusama);
|
||||
declare_chain_cli_schema!(BridgeHubKusama, bridge_hub_kusama);
|
||||
declare_chain_cli_schema!(Polkadot, polkadot);
|
||||
@@ -226,6 +232,16 @@ declare_chain_cli_schema!(
|
||||
WococoParachainsToBridgeHubRococo,
|
||||
wococo_parachains_to_bridge_hub_rococo
|
||||
);
|
||||
declare_chain_cli_schema!(RococoHeadersToBridgeHubWestend, rococo_headers_to_bridge_hub_westend);
|
||||
declare_chain_cli_schema!(
|
||||
RococoParachainsToBridgeHubWestend,
|
||||
rococo_parachains_to_bridge_hub_westend
|
||||
);
|
||||
declare_chain_cli_schema!(WestendHeadersToBridgeHubRococo, westend_headers_to_bridge_hub_rococo);
|
||||
declare_chain_cli_schema!(
|
||||
WestendParachainsToBridgeHubRococo,
|
||||
westend_parachains_to_bridge_hub_rococo
|
||||
);
|
||||
declare_chain_cli_schema!(KusamaHeadersToBridgeHubPolkadot, kusama_headers_to_bridge_hub_polkadot);
|
||||
declare_chain_cli_schema!(
|
||||
KusamaParachainsToBridgeHubPolkadot,
|
||||
@@ -249,6 +265,7 @@ declare_chain_cli_schema!(
|
||||
declare_relay_to_relay_bridge_schema!(Millau, Rialto);
|
||||
declare_relay_to_parachain_bridge_schema!(Millau, RialtoParachain, Rialto);
|
||||
declare_parachain_to_parachain_bridge_schema!(BridgeHubRococo, Rococo, BridgeHubWococo, Wococo);
|
||||
declare_parachain_to_parachain_bridge_schema!(BridgeHubRococo, Rococo, BridgeHubWestend, Westend);
|
||||
declare_parachain_to_parachain_bridge_schema!(BridgeHubKusama, Kusama, BridgeHubPolkadot, Polkadot);
|
||||
declare_relay_to_parachain_bridge_schema!(PolkadotBulletin, BridgeHubPolkadot, Polkadot);
|
||||
|
||||
@@ -495,6 +512,32 @@ impl Full2WayBridge for BridgeHubRococoBridgeHubWococoFull2WayBridge {
|
||||
}
|
||||
}
|
||||
|
||||
/// BridgeHubRococo <> BridgeHubWestend complex relay.
|
||||
pub struct BridgeHubRococoBridgeHubWestendFull2WayBridge {
|
||||
base: <Self as Full2WayBridge>::Base,
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl Full2WayBridge for BridgeHubRococoBridgeHubWestendFull2WayBridge {
|
||||
type Base = ParachainToParachainBridge<Self::L2R, Self::R2L>;
|
||||
type Left = relay_bridge_hub_rococo_client::BridgeHubRococo;
|
||||
type Right = relay_bridge_hub_westend_client::BridgeHubWestend;
|
||||
type L2R = BridgeHubRococoToBridgeHubWestendCliBridge;
|
||||
type R2L = BridgeHubWestendToBridgeHubRococoCliBridge;
|
||||
|
||||
fn new(base: Self::Base) -> anyhow::Result<Self> {
|
||||
Ok(Self { base })
|
||||
}
|
||||
|
||||
fn base(&self) -> &Self::Base {
|
||||
&self.base
|
||||
}
|
||||
|
||||
fn mut_base(&mut self) -> &mut Self::Base {
|
||||
&mut self.base
|
||||
}
|
||||
}
|
||||
|
||||
/// BridgeHubKusama <> BridgeHubPolkadot complex relay.
|
||||
pub struct BridgeHubKusamaBridgeHubPolkadotFull2WayBridge {
|
||||
base: <Self as Full2WayBridge>::Base,
|
||||
@@ -560,6 +603,8 @@ pub enum RelayHeadersAndMessages {
|
||||
BridgeHubKusamaBridgeHubPolkadot(BridgeHubKusamaBridgeHubPolkadotHeadersAndMessages),
|
||||
/// `PolkadotBulletin` <> `BridgeHubPolkadot` relay.
|
||||
PolkadotBulletinBridgeHubPolkadot(PolkadotBulletinBridgeHubPolkadotHeadersAndMessages),
|
||||
/// BridgeHubRococo <> BridgeHubWestend relay.
|
||||
BridgeHubRococoBridgeHubWestend(BridgeHubRococoBridgeHubWestendHeadersAndMessages),
|
||||
}
|
||||
|
||||
impl RelayHeadersAndMessages {
|
||||
@@ -576,6 +621,10 @@ impl RelayHeadersAndMessages {
|
||||
BridgeHubRococoBridgeHubWococoFull2WayBridge::new(params.into_bridge().await?)?
|
||||
.run()
|
||||
.await,
|
||||
RelayHeadersAndMessages::BridgeHubRococoBridgeHubWestend(params) =>
|
||||
BridgeHubRococoBridgeHubWestendFull2WayBridge::new(params.into_bridge().await?)?
|
||||
.run()
|
||||
.await,
|
||||
RelayHeadersAndMessages::BridgeHubKusamaBridgeHubPolkadot(params) =>
|
||||
BridgeHubKusamaBridgeHubPolkadotFull2WayBridge::new(params.into_bridge().await?)?
|
||||
.run()
|
||||
|
||||
@@ -36,6 +36,10 @@ use crate::bridges::{
|
||||
millau_headers_to_rialto_parachain::MillauToRialtoParachainCliBridge,
|
||||
rialto_parachains_to_millau::RialtoParachainToMillauCliBridge,
|
||||
},
|
||||
rococo_westend::{
|
||||
bridge_hub_rococo_messages_to_bridge_hub_westend::BridgeHubRococoToBridgeHubWestendMessagesCliBridge,
|
||||
bridge_hub_westend_messages_to_bridge_hub_rococo::BridgeHubWestendToBridgeHubRococoMessagesCliBridge,
|
||||
},
|
||||
rococo_wococo::{
|
||||
bridge_hub_rococo_messages_to_bridge_hub_wococo::BridgeHubRococoToBridgeHubWococoMessagesCliBridge,
|
||||
bridge_hub_wococo_messages_to_bridge_hub_rococo::BridgeHubWococoToBridgeHubRococoMessagesCliBridge,
|
||||
@@ -111,6 +115,8 @@ impl MessagesRelayer for MillauToRialtoParachainCliBridge {}
|
||||
impl MessagesRelayer for RialtoParachainToMillauCliBridge {}
|
||||
impl MessagesRelayer for BridgeHubRococoToBridgeHubWococoMessagesCliBridge {}
|
||||
impl MessagesRelayer for BridgeHubWococoToBridgeHubRococoMessagesCliBridge {}
|
||||
impl MessagesRelayer for BridgeHubRococoToBridgeHubWestendMessagesCliBridge {}
|
||||
impl MessagesRelayer for BridgeHubWestendToBridgeHubRococoMessagesCliBridge {}
|
||||
impl MessagesRelayer for BridgeHubKusamaToBridgeHubPolkadotMessagesCliBridge {}
|
||||
impl MessagesRelayer for BridgeHubPolkadotToBridgeHubKusamaMessagesCliBridge {}
|
||||
impl MessagesRelayer for PolkadotBulletinToBridgeHubPolkadotMessagesCliBridge {}
|
||||
@@ -130,6 +136,10 @@ impl RelayMessages {
|
||||
BridgeHubRococoToBridgeHubWococoMessagesCliBridge::relay_messages(self),
|
||||
FullBridge::BridgeHubWococoToBridgeHubRococo =>
|
||||
BridgeHubWococoToBridgeHubRococoMessagesCliBridge::relay_messages(self),
|
||||
FullBridge::BridgeHubRococoToBridgeHubWestend =>
|
||||
BridgeHubRococoToBridgeHubWestendMessagesCliBridge::relay_messages(self),
|
||||
FullBridge::BridgeHubWestendToBridgeHubRococo =>
|
||||
BridgeHubWestendToBridgeHubRococoMessagesCliBridge::relay_messages(self),
|
||||
FullBridge::BridgeHubKusamaToBridgeHubPolkadot =>
|
||||
BridgeHubKusamaToBridgeHubPolkadotMessagesCliBridge::relay_messages(self),
|
||||
FullBridge::BridgeHubPolkadotToBridgeHubKusama =>
|
||||
|
||||
@@ -21,6 +21,10 @@ use crate::bridges::{
|
||||
},
|
||||
polkadot_bulletin::polkadot_parachains_to_polkadot_bulletin::PolkadotToPolkadotBulletinCliBridge,
|
||||
rialto_parachain_millau::rialto_parachains_to_millau::RialtoParachainToMillauCliBridge,
|
||||
rococo_westend::{
|
||||
rococo_parachains_to_bridge_hub_westend::BridgeHubRococoToBridgeHubWestendCliBridge,
|
||||
westend_parachains_to_bridge_hub_rococo::BridgeHubWestendToBridgeHubRococoCliBridge,
|
||||
},
|
||||
rococo_wococo::{
|
||||
rococo_parachains_to_bridge_hub_wococo::BridgeHubRococoToBridgeHubWococoCliBridge,
|
||||
wococo_parachains_to_bridge_hub_rococo::BridgeHubWococoToBridgeHubRococoCliBridge,
|
||||
@@ -73,6 +77,8 @@ pub enum RelayParachainsBridge {
|
||||
KusamaToBridgeHubPolkadot,
|
||||
PolkadotToBridgeHubKusama,
|
||||
PolkadotToPolkadotBulletin,
|
||||
RococoToBridgeHubWestend,
|
||||
WestendToBridgeHubRococo,
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
@@ -120,6 +126,8 @@ impl ParachainsRelayer for RialtoParachainToMillauCliBridge {}
|
||||
impl ParachainsRelayer for AssetHubWestendToMillauCliBridge {}
|
||||
impl ParachainsRelayer for BridgeHubRococoToBridgeHubWococoCliBridge {}
|
||||
impl ParachainsRelayer for BridgeHubWococoToBridgeHubRococoCliBridge {}
|
||||
impl ParachainsRelayer for BridgeHubRococoToBridgeHubWestendCliBridge {}
|
||||
impl ParachainsRelayer for BridgeHubWestendToBridgeHubRococoCliBridge {}
|
||||
impl ParachainsRelayer for BridgeHubKusamaToBridgeHubPolkadotCliBridge {}
|
||||
impl ParachainsRelayer for BridgeHubPolkadotToBridgeHubKusamaCliBridge {}
|
||||
impl ParachainsRelayer for PolkadotToPolkadotBulletinCliBridge {}
|
||||
@@ -136,6 +144,10 @@ impl RelayParachains {
|
||||
BridgeHubRococoToBridgeHubWococoCliBridge::relay_parachains(self),
|
||||
RelayParachainsBridge::WococoToBridgeHubRococo =>
|
||||
BridgeHubWococoToBridgeHubRococoCliBridge::relay_parachains(self),
|
||||
RelayParachainsBridge::RococoToBridgeHubWestend =>
|
||||
BridgeHubRococoToBridgeHubWestendCliBridge::relay_parachains(self),
|
||||
RelayParachainsBridge::WestendToBridgeHubRococo =>
|
||||
BridgeHubWestendToBridgeHubRococoCliBridge::relay_parachains(self),
|
||||
RelayParachainsBridge::KusamaToBridgeHubPolkadot =>
|
||||
BridgeHubKusamaToBridgeHubPolkadotCliBridge::relay_parachains(self),
|
||||
RelayParachainsBridge::PolkadotToBridgeHubKusama =>
|
||||
|
||||
Reference in New Issue
Block a user