Skip to content

Commit 5fc377a

Browse files
authored
Support for kusama-polkadot relaying (#2128)
1 parent 01f4b7f commit 5fc377a

File tree

2 files changed

+89
-0
lines changed

2 files changed

+89
-0
lines changed

relays/bin-substrate/src/cli/init_bridge.rs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ use codec::Encode;
1919

2020
use crate::{
2121
bridges::{
22+
kusama_polkadot::{
23+
kusama_headers_to_bridge_hub_polkadot::KusamaToBridgeHubPolkadotCliBridge,
24+
polkadot_headers_to_bridge_hub_kusama::PolkadotToBridgeHubKusamaCliBridge,
25+
},
2226
rialto_millau::{
2327
millau_headers_to_rialto::MillauToRialtoCliBridge,
2428
rialto_headers_to_millau::RialtoToMillauCliBridge,
@@ -66,6 +70,8 @@ pub enum InitBridgeName {
6670
MillauToRialtoParachain,
6771
RococoToBridgeHubWococo,
6872
WococoToBridgeHubRococo,
73+
KusamaToBridgeHubPolkadot,
74+
PolkadotToBridgeHubKusama,
6975
}
7076

7177
#[async_trait]
@@ -198,6 +204,34 @@ impl BridgeInitializer for WococoToBridgeHubRococoCliBridge {
198204
}
199205
}
200206

207+
impl BridgeInitializer for KusamaToBridgeHubPolkadotCliBridge {
208+
type Engine = GrandpaFinalityEngine<Self::Source>;
209+
210+
fn encode_init_bridge(
211+
init_data: <Self::Engine as Engine<Self::Source>>::InitializationData,
212+
) -> <Self::Target as Chain>::Call {
213+
relay_bridge_hub_polkadot_client::runtime::Call::BridgeKusamaGrandpa(
214+
relay_bridge_hub_polkadot_client::runtime::BridgeKusamaGrandpaCall::initialize {
215+
init_data,
216+
},
217+
)
218+
}
219+
}
220+
221+
impl BridgeInitializer for PolkadotToBridgeHubKusamaCliBridge {
222+
type Engine = GrandpaFinalityEngine<Self::Source>;
223+
224+
fn encode_init_bridge(
225+
init_data: <Self::Engine as Engine<Self::Source>>::InitializationData,
226+
) -> <Self::Target as Chain>::Call {
227+
relay_bridge_hub_kusama_client::runtime::Call::BridgePolkadotGrandpa(
228+
relay_bridge_hub_kusama_client::runtime::BridgePolkadotGrandpaCall::initialize {
229+
init_data,
230+
},
231+
)
232+
}
233+
}
234+
201235
impl InitBridge {
202236
/// Run the command.
203237
pub async fn run(self) -> anyhow::Result<()> {
@@ -211,6 +245,10 @@ impl InitBridge {
211245
RococoToBridgeHubWococoCliBridge::init_bridge(self),
212246
InitBridgeName::WococoToBridgeHubRococo =>
213247
WococoToBridgeHubRococoCliBridge::init_bridge(self),
248+
InitBridgeName::KusamaToBridgeHubPolkadot =>
249+
KusamaToBridgeHubPolkadotCliBridge::init_bridge(self),
250+
InitBridgeName::PolkadotToBridgeHubKusama =>
251+
PolkadotToBridgeHubKusamaCliBridge::init_bridge(self),
214252
}
215253
.await
216254
}

relays/bin-substrate/src/cli/relay_headers_and_messages/mod.rs

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ use relay_to_relay::*;
4040

4141
use crate::{
4242
bridges::{
43+
kusama_polkadot::{
44+
kusama_parachains_to_bridge_hub_polkadot::BridgeHubKusamaToBridgeHubPolkadotCliBridge,
45+
polkadot_parachains_to_bridge_hub_kusama::BridgeHubPolkadotToBridgeHubKusamaCliBridge,
46+
},
4347
rialto_millau::{
4448
millau_headers_to_rialto::MillauToRialtoCliBridge,
4549
rialto_headers_to_millau::RialtoToMillauCliBridge,
@@ -202,6 +206,10 @@ declare_chain_cli_schema!(Rococo, rococo);
202206
declare_chain_cli_schema!(BridgeHubRococo, bridge_hub_rococo);
203207
declare_chain_cli_schema!(Wococo, wococo);
204208
declare_chain_cli_schema!(BridgeHubWococo, bridge_hub_wococo);
209+
declare_chain_cli_schema!(Kusama, kusama);
210+
declare_chain_cli_schema!(BridgeHubKusama, bridge_hub_kusama);
211+
declare_chain_cli_schema!(Polkadot, polkadot);
212+
declare_chain_cli_schema!(BridgeHubPolkadot, bridge_hub_polkadot);
205213
// Means to override signers of different layer transactions.
206214
declare_chain_cli_schema!(MillauHeadersToRialto, millau_headers_to_rialto);
207215
declare_chain_cli_schema!(MillauHeadersToRialtoParachain, millau_headers_to_rialto_parachain);
@@ -217,10 +225,21 @@ declare_chain_cli_schema!(
217225
WococoParachainsToBridgeHubRococo,
218226
wococo_parachains_to_bridge_hub_rococo
219227
);
228+
declare_chain_cli_schema!(KusamaHeadersToBridgeHubPolkadot, kusama_headers_to_bridge_hub_polkadot);
229+
declare_chain_cli_schema!(
230+
KusamaParachainsToBridgeHubPolkadot,
231+
kusama_parachains_to_bridge_hub_polkadot
232+
);
233+
declare_chain_cli_schema!(PolkadotHeadersToBridgeHubKusama, polkadot_headers_to_bridge_hub_kusama);
234+
declare_chain_cli_schema!(
235+
PolkadotParachainsToBridgeHubKusama,
236+
polkadot_parachains_to_bridge_hub_kusama
237+
);
220238
// All supported bridges.
221239
declare_relay_to_relay_bridge_schema!(Millau, Rialto);
222240
declare_relay_to_parachain_bridge_schema!(Millau, RialtoParachain, Rialto);
223241
declare_parachain_to_parachain_bridge_schema!(BridgeHubRococo, Rococo, BridgeHubWococo, Wococo);
242+
declare_parachain_to_parachain_bridge_schema!(BridgeHubKusama, Kusama, BridgeHubPolkadot, Polkadot);
224243

225244
/// Base portion of the bidirectional complex relay.
226245
///
@@ -463,6 +482,32 @@ impl Full2WayBridge for BridgeHubRococoBridgeHubWococoFull2WayBridge {
463482
}
464483
}
465484

485+
/// BridgeHubKusama <> BridgeHubPolkadot complex relay.
486+
pub struct BridgeHubKusamaBridgeHubPolkadotFull2WayBridge {
487+
base: <Self as Full2WayBridge>::Base,
488+
}
489+
490+
#[async_trait]
491+
impl Full2WayBridge for BridgeHubKusamaBridgeHubPolkadotFull2WayBridge {
492+
type Base = ParachainToParachainBridge<Self::L2R, Self::R2L>;
493+
type Left = relay_bridge_hub_kusama_client::BridgeHubKusama;
494+
type Right = relay_bridge_hub_polkadot_client::BridgeHubPolkadot;
495+
type L2R = BridgeHubKusamaToBridgeHubPolkadotCliBridge;
496+
type R2L = BridgeHubPolkadotToBridgeHubKusamaCliBridge;
497+
498+
fn new(base: Self::Base) -> anyhow::Result<Self> {
499+
Ok(Self { base })
500+
}
501+
502+
fn base(&self) -> &Self::Base {
503+
&self.base
504+
}
505+
506+
fn mut_base(&mut self) -> &mut Self::Base {
507+
&mut self.base
508+
}
509+
}
510+
466511
/// Complex headers+messages relay.
467512
#[derive(Debug, PartialEq, StructOpt)]
468513
pub enum RelayHeadersAndMessages {
@@ -472,6 +517,8 @@ pub enum RelayHeadersAndMessages {
472517
MillauRialtoParachain(MillauRialtoParachainHeadersAndMessages),
473518
/// BridgeHubRococo <> BridgeHubWococo relay.
474519
BridgeHubRococoBridgeHubWococo(BridgeHubRococoBridgeHubWococoHeadersAndMessages),
520+
/// BridgeHubKusama <> BridgeHubPolkadot relay.
521+
BridgeHubKusamaBridgeHubPolkadot(BridgeHubKusamaBridgeHubPolkadotHeadersAndMessages),
475522
}
476523

477524
impl RelayHeadersAndMessages {
@@ -488,6 +535,10 @@ impl RelayHeadersAndMessages {
488535
BridgeHubRococoBridgeHubWococoFull2WayBridge::new(params.into_bridge().await?)?
489536
.run()
490537
.await,
538+
RelayHeadersAndMessages::BridgeHubKusamaBridgeHubPolkadot(params) =>
539+
BridgeHubKusamaBridgeHubPolkadotFull2WayBridge::new(params.into_bridge().await?)?
540+
.run()
541+
.await,
491542
}
492543
}
493544
}

0 commit comments

Comments
 (0)