messages bridge between RialtoParachain and Millau (#1218)

This commit is contained in:
Svyatoslav Nikolsky
2022-05-20 12:03:45 +03:00
committed by Bastian Köcher
parent 03c2f06a27
commit 5f2f61ced5
33 changed files with 1658 additions and 75 deletions
@@ -26,6 +26,8 @@ pub enum FullBridge {
WococoToRococo,
KusamaToPolkadot,
PolkadotToKusama,
MillauToRialtoParachain,
RialtoParachainToMillau,
}
impl FullBridge {
@@ -38,6 +40,8 @@ impl FullBridge {
Self::WococoToRococo => WOCOCO_TO_ROCOCO_INDEX,
Self::KusamaToPolkadot => KUSAMA_TO_POLKADOT_INDEX,
Self::PolkadotToKusama => POLKADOT_TO_KUSAMA_INDEX,
Self::MillauToRialtoParachain => MILLAU_TO_RIALTO_PARACHAIN_INDEX,
Self::RialtoParachainToMillau => RIALTO_PARACHAIN_TO_MILLAU_INDEX,
}
}
}
@@ -48,6 +52,8 @@ pub const ROCOCO_TO_WOCOCO_INDEX: u8 = 0;
pub const WOCOCO_TO_ROCOCO_INDEX: u8 = 0;
pub const KUSAMA_TO_POLKADOT_INDEX: u8 = 0;
pub const POLKADOT_TO_KUSAMA_INDEX: u8 = 0;
pub const MILLAU_TO_RIALTO_PARACHAIN_INDEX: u8 = 1;
pub const RIALTO_PARACHAIN_TO_MILLAU_INDEX: u8 = 0;
/// The macro allows executing bridge-specific code without going fully generic.
///
@@ -171,6 +177,44 @@ macro_rules! select_full_bridge {
$generic
},
FullBridge::MillauToRialtoParachain => {
type Source = relay_millau_client::Millau;
#[allow(dead_code)]
type Target = relay_rialto_parachain_client::RialtoParachain;
// Derive-account
#[allow(unused_imports)]
use bp_rialto_parachain::derive_account_from_millau_id as derive_account;
// Relay-messages
#[allow(unused_imports)]
use crate::chains::millau_messages_to_rialto_parachain::MillauMessagesToRialtoParachain as MessagesLane;
// Send-message / Estimate-fee
#[allow(unused_imports)]
use bp_rialto_parachain::TO_RIALTO_PARACHAIN_ESTIMATE_MESSAGE_FEE_METHOD as ESTIMATE_MESSAGE_FEE_METHOD;
$generic
}
FullBridge::RialtoParachainToMillau => {
type Source = relay_rialto_parachain_client::RialtoParachain;
#[allow(dead_code)]
type Target = relay_millau_client::Millau;
// Derive-account
#[allow(unused_imports)]
use bp_millau::derive_account_from_rialto_parachain_id as derive_account;
// Relay-messages
#[allow(unused_imports)]
use crate::chains::rialto_parachain_messages_to_millau::RialtoParachainMessagesToMillau as MessagesLane;
// Send-message / Estimate-fee
#[allow(unused_imports)]
use bp_millau::TO_MILLAU_ESTIMATE_MESSAGE_FEE_METHOD as ESTIMATE_MESSAGE_FEE_METHOD;
$generic
}
}
};
}
@@ -49,6 +49,7 @@ pub enum InitBridgeName {
WococoToRococo,
KusamaToPolkadot,
PolkadotToKusama,
MillauToRialtoParachain,
}
macro_rules! select_bridge {
@@ -181,6 +182,28 @@ macro_rules! select_bridge {
)
}
$generic
},
InitBridgeName::MillauToRialtoParachain => {
type Source = relay_millau_client::Millau;
type Target = relay_rialto_parachain_client::RialtoParachain;
type Engine = GrandpaFinalityEngine<Source>;
fn encode_init_bridge(
init_data: InitializationData<<Source as ChainBase>::Header>,
) -> <Target as Chain>::Call {
let initialize_call = rialto_parachain_runtime::BridgeGrandpaCall::<
rialto_parachain_runtime::Runtime,
rialto_parachain_runtime::MillauGrandpaInstance,
>::initialize {
init_data,
};
rialto_parachain_runtime::SudoCall::sudo {
call: Box::new(initialize_call.into()),
}
.into()
}
$generic
},
}
@@ -55,6 +55,7 @@ pub enum RelayHeadersBridge {
WococoToRococo,
KusamaToPolkadot,
PolkadotToKusama,
MillauToRialtoParachain,
}
macro_rules! select_bridge {
@@ -109,6 +110,14 @@ macro_rules! select_bridge {
$generic
},
RelayHeadersBridge::MillauToRialtoParachain => {
type Source = relay_millau_client::Millau;
type Target = relay_rialto_parachain_client::RialtoParachain;
type Finality = crate::chains::millau_headers_to_rialto_parachain::MillauFinalityToRialtoParachain;
$generic
},
}
};
}
@@ -480,7 +480,6 @@ impl RelayHeadersAndMessages {
right_to_left_transaction_params,
params.shared.only_mandatory_headers,
);
// Need 2x capacity since we consider both directions for each lane
let mut message_relays = Vec::with_capacity(lanes.len() * 2);
for lane in lanes {
@@ -55,8 +55,8 @@ macro_rules! select_bridge {
match $bridge {
RelayParachainsBridge::RialtoToMillau => {
use crate::chains::rialto_parachains_to_millau::{
RialtoToMillauParachains as Pipeline,
RialtoToMillauParachainsSubmitParachainHeadsCallBuilder as SubmitParachainHeadsCallBuilder,
RialtoParachainsToMillau as Pipeline,
RialtoParachainsToMillauSubmitParachainHeadsCallBuilder as SubmitParachainHeadsCallBuilder,
};
use bp_millau::BRIDGE_PARAS_PALLET_NAME as BRIDGE_PARAS_PALLET_NAME_AT_TARGET;