Skip to content

Commit e0db00f

Browse files
committed
client-legacy: non-comapact proofs macros: generate_receive_message_delivery_proof_call_builder/generate_receive_message_proof_call_builder
1 parent a486dd3 commit e0db00f

11 files changed

+161
-16
lines changed

relay-clients/client-legacy/src/lib.rs

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,28 @@ pub mod non_compact_proofs {
4848
/// Lane id of which messages were delivered and the proof is for.
4949
pub lane: LaneId,
5050
}
51+
52+
impl<BridgedHeaderHash>
53+
From<
54+
bp_messages::source_chain::FromBridgedChainMessagesDeliveryProof<
55+
BridgedHeaderHash,
56+
>,
57+
> for FromBridgedChainMessagesDeliveryProof<BridgedHeaderHash>
58+
{
59+
fn from(
60+
value: bp_messages::source_chain::FromBridgedChainMessagesDeliveryProof<
61+
BridgedHeaderHash,
62+
>,
63+
) -> Self {
64+
FromBridgedChainMessagesDeliveryProof {
65+
bridged_header_hash: value.bridged_header_hash,
66+
// this is legacy change, we need to get `RawStorageProof` from
67+
// `UnverifiedStorageProof.proof`
68+
storage_proof: value.storage_proof.proof().clone(),
69+
lane: value.lane,
70+
}
71+
}
72+
}
5173
}
5274
pub mod target {
5375
use super::*;
@@ -71,7 +93,102 @@ pub mod non_compact_proofs {
7193
/// Nonce of the last message being delivered.
7294
pub nonces_end: MessageNonce,
7395
}
96+
97+
impl<BridgedHeaderHash>
98+
From<
99+
bp_messages::target_chain::FromBridgedChainMessagesProof<BridgedHeaderHash>,
100+
> for FromBridgedChainMessagesProof<BridgedHeaderHash>
101+
{
102+
fn from(
103+
value: bp_messages::target_chain::FromBridgedChainMessagesProof<
104+
BridgedHeaderHash,
105+
>,
106+
) -> Self {
107+
FromBridgedChainMessagesProof {
108+
bridged_header_hash: value.bridged_header_hash,
109+
// this is legacy change, we need to get `RawStorageProof` from
110+
// `UnverifiedStorageProof.proof`
111+
storage_proof: value.storage.proof().clone(),
112+
lane: value.lane,
113+
nonces_start: value.nonces_start,
114+
nonces_end: value.nonces_end,
115+
}
116+
}
117+
}
74118
}
75119
}
76120
}
121+
122+
/// Macro that generates `ReceiveMessagesProofCallBuilder` implementation for the case when
123+
/// you only have an access to the mocked version of target chain runtime. In this case you
124+
/// should provide "name" of the call variant for the bridge messages calls and the "name" of
125+
/// the variant for the `receive_messages_proof` call within that first option.
126+
#[rustfmt::skip]
127+
#[macro_export]
128+
macro_rules! generate_receive_message_proof_call_builder {
129+
($pipeline:ident, $mocked_builder:ident, $bridge_messages:path, $receive_messages_proof:path) => {
130+
pub struct $mocked_builder;
131+
132+
impl substrate_relay_helper::messages::ReceiveMessagesProofCallBuilder<$pipeline>
133+
for $mocked_builder
134+
{
135+
fn build_receive_messages_proof_call(
136+
relayer_id_at_source: relay_substrate_client::AccountIdOf<
137+
<$pipeline as substrate_relay_helper::messages::SubstrateMessageLane>::SourceChain
138+
>,
139+
proof: substrate_relay_helper::messages::source::SubstrateMessagesProof<
140+
<$pipeline as substrate_relay_helper::messages::SubstrateMessageLane>::SourceChain
141+
>,
142+
messages_count: u32,
143+
dispatch_weight: bp_messages::Weight,
144+
_trace_call: bool,
145+
) -> relay_substrate_client::CallOf<
146+
<$pipeline as substrate_relay_helper::messages::SubstrateMessageLane>::TargetChain
147+
> {
148+
bp_runtime::paste::item! {
149+
$bridge_messages($receive_messages_proof {
150+
relayer_id_at_bridged_chain: relayer_id_at_source,
151+
// a legacy change - convert between `bp_messages::target_chain::FromBridgedChainMessagesDeliveryProof` and `FromBridgedChainMessagesDeliveryProof` - see `From` impl above
152+
proof: proof.1.into(),
153+
messages_count: messages_count,
154+
dispatch_weight: dispatch_weight,
155+
})
156+
}
157+
}
158+
}
159+
};
160+
}
161+
162+
/// Macro that generates `ReceiveMessagesDeliveryProofCallBuilder` implementation for the case when
163+
/// you only have an access to the mocked version of source chain runtime. In this case you
164+
/// should provide "name" of the call variant for the bridge messages calls and the "name" of
165+
/// the variant for the `receive_messages_delivery_proof` call within that first option.
166+
#[rustfmt::skip]
167+
#[macro_export]
168+
macro_rules! generate_receive_message_delivery_proof_call_builder {
169+
($pipeline:ident, $mocked_builder:ident, $bridge_messages:path, $receive_messages_delivery_proof:path) => {
170+
pub struct $mocked_builder;
171+
172+
impl substrate_relay_helper::messages::ReceiveMessagesDeliveryProofCallBuilder<$pipeline>
173+
for $mocked_builder
174+
{
175+
fn build_receive_messages_delivery_proof_call(
176+
proof: substrate_relay_helper::messages::target::SubstrateMessagesDeliveryProof<
177+
<$pipeline as substrate_relay_helper::messages::SubstrateMessageLane>::TargetChain
178+
>,
179+
_trace_call: bool,
180+
) -> relay_substrate_client::CallOf<
181+
<$pipeline as substrate_relay_helper::messages::SubstrateMessageLane>::SourceChain
182+
> {
183+
bp_runtime::paste::item! {
184+
$bridge_messages($receive_messages_delivery_proof {
185+
// a legacy change - convert between `bp_messages::source_chain::FromBridgedChainMessagesProof` and `FromBridgedChainMessagesProof` - see `From` impl above
186+
proof: proof.1.into(),
187+
relayers_state: proof.0
188+
})
189+
}
190+
}
191+
}
192+
};
193+
}
77194
}

substrate-relay/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ relay-bridge-hub-polkadot-client = { path = "../relay-clients/client-bridge-hub-
4545
relay-bridge-hub-rococo-client = { path = "../relay-clients/client-bridge-hub-rococo" }
4646
relay-bridge-hub-westend-client = { path = "../relay-clients/client-bridge-hub-westend" }
4747
relay-kusama-client = { path = "../relay-clients/client-kusama" }
48+
relay-legacy-client = { path = "../relay-clients/client-legacy" }
4849
relay-polkadot-client = { path = "../relay-clients/client-polkadot" }
4950
relay-polkadot-bulletin-client = { path = "../relay-clients/client-polkadot-bulletin" }
5051
relay-rococo-client = { path = "../relay-clients/client-rococo" }
@@ -54,7 +55,6 @@ relay-westend-client = { path = "../relay-clients/client-westend" }
5455
substrate-relay-helper = { git = "https://github.com/paritytech/polkadot-sdk", branch = "bko-bridges-v2-compact-proofs" }
5556

5657
# Substrate Dependencies
57-
5858
frame-support = { git = "https://github.com/paritytech/polkadot-sdk", branch = "bko-bridges-v2-compact-proofs" }
5959
sp-core = { git = "https://github.com/paritytech/polkadot-sdk", branch = "bko-bridges-v2-compact-proofs" }
6060
sp-runtime = { git = "https://github.com/paritytech/polkadot-sdk", branch = "bko-bridges-v2-compact-proofs" }

substrate-relay/src/bridges/kusama_polkadot/bridge_hub_kusama_messages_to_bridge_hub_polkadot.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,18 @@ impl MessagesCliBridge for BridgeHubKusamaToBridgeHubPolkadotMessagesCliBridge {
3636
type MessagesLane = BridgeHubKusamaMessagesToBridgeHubPolkadotMessageLane;
3737
}
3838

39-
substrate_relay_helper::generate_receive_message_proof_call_builder!(
39+
// TODO: uncomment when BridgeHubPolkadot supports the compact proofs
40+
// substrate_relay_helper::generate_receive_message_proof_call_builder!(
41+
relay_legacy_client::generate_receive_message_proof_call_builder!(
4042
BridgeHubKusamaMessagesToBridgeHubPolkadotMessageLane,
4143
BridgeHubKusamaMessagesToBridgeHubPolkadotMessageLaneReceiveMessagesProofCallBuilder,
4244
relay_bridge_hub_polkadot_client::RuntimeCall::BridgeKusamaMessages,
4345
relay_bridge_hub_polkadot_client::BridgeKusamaMessagesCall::receive_messages_proof
4446
);
4547

46-
substrate_relay_helper::generate_receive_message_delivery_proof_call_builder!(
48+
// TODO: uncomment when BridgeHubKusama supports the compact proofs
49+
// substrate_relay_helper::generate_receive_message_delivery_proof_call_builder!(
50+
relay_legacy_client::generate_receive_message_delivery_proof_call_builder!(
4751
BridgeHubKusamaMessagesToBridgeHubPolkadotMessageLane,
4852
BridgeHubKusamaMessagesToBridgeHubPolkadotMessageLaneReceiveMessagesDeliveryProofCallBuilder,
4953
relay_bridge_hub_kusama_client::RuntimeCall::BridgePolkadotMessages,

substrate-relay/src/bridges/kusama_polkadot/bridge_hub_polkadot_messages_to_bridge_hub_kusama.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,18 @@ impl MessagesCliBridge for BridgeHubPolkadotToBridgeHubKusamaMessagesCliBridge {
3636
type MessagesLane = BridgeHubPolkadotMessagesToBridgeHubKusamaMessageLane;
3737
}
3838

39-
substrate_relay_helper::generate_receive_message_proof_call_builder!(
39+
// TODO: uncomment when BridgeHubKusama supports the compact proofs
40+
// substrate_relay_helper::generate_receive_message_proof_call_builder!(
41+
relay_legacy_client::generate_receive_message_proof_call_builder!(
4042
BridgeHubPolkadotMessagesToBridgeHubKusamaMessageLane,
4143
BridgeHubPolkadotMessagesToBridgeHubKusamaMessageLaneReceiveMessagesProofCallBuilder,
4244
relay_bridge_hub_kusama_client::RuntimeCall::BridgePolkadotMessages,
4345
relay_bridge_hub_kusama_client::BridgeMessagesCall::receive_messages_proof
4446
);
4547

46-
substrate_relay_helper::generate_receive_message_delivery_proof_call_builder!(
48+
// TODO: uncomment when BridgeHubPolkadot supports the compact proofs
49+
// substrate_relay_helper::generate_receive_message_delivery_proof_call_builder!(
50+
relay_legacy_client::generate_receive_message_delivery_proof_call_builder!(
4751
BridgeHubPolkadotMessagesToBridgeHubKusamaMessageLane,
4852
BridgeHubPolkadotMessagesToBridgeHubKusamaMessageLaneReceiveMessagesDeliveryProofCallBuilder,
4953
relay_bridge_hub_polkadot_client::RuntimeCall::BridgeKusamaMessages,

substrate-relay/src/bridges/polkadot_bulletin/bridge_hub_polkadot_messages_to_polkadot_bulletin.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,18 @@ impl MessagesCliBridge for BridgeHubPolkadotToPolkadotBulletinMessagesCliBridge
3636
type MessagesLane = BridgeHubPolkadotMessagesToPolkadotBulletinMessageLane;
3737
}
3838

39-
substrate_relay_helper::generate_receive_message_proof_call_builder!(
39+
// TODO: uncomment when PolkadotBulletin supports the compact proofs
40+
// substrate_relay_helper::generate_receive_message_proof_call_builder!(
41+
relay_legacy_client::generate_receive_message_proof_call_builder!(
4042
BridgeHubPolkadotMessagesToPolkadotBulletinMessageLane,
4143
BridgeHubPolkadotMessagesToPolkadotBulletinMessageLaneReceiveMessagesProofCallBuilder,
4244
relay_polkadot_bulletin_client::RuntimeCall::BridgePolkadotMessages,
4345
relay_polkadot_bulletin_client::BridgePolkadotMessagesCall::receive_messages_proof
4446
);
4547

46-
substrate_relay_helper::generate_receive_message_delivery_proof_call_builder!(
48+
// TODO: uncomment when BridgeHubPolkadot supports the compact proofs
49+
// substrate_relay_helper::generate_receive_message_delivery_proof_call_builder!(
50+
relay_legacy_client::generate_receive_message_delivery_proof_call_builder!(
4751
BridgeHubPolkadotMessagesToPolkadotBulletinMessageLane,
4852
BridgeHubPolkadotMessagesToPolkadotBulletinMessageLaneReceiveMessagesDeliveryProofCallBuilder,
4953
// TODO: https://github.com/paritytech/parity-bridges-common/issues/2547 - use BridgePolkadotBulletinMessages

substrate-relay/src/bridges/polkadot_bulletin/polkadot_bulletin_messages_to_bridge_hub_polkadot.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,19 @@ impl MessagesCliBridge for PolkadotBulletinToBridgeHubPolkadotMessagesCliBridge
3636
type MessagesLane = PolkadotBulletinMessagesToBridgeHubPolkadotMessageLane;
3737
}
3838

39-
substrate_relay_helper::generate_receive_message_proof_call_builder!(
39+
// TODO: uncomment when BridgeHubPolkadot supports the compact proofs
40+
// substrate_relay_helper::generate_receive_message_proof_call_builder!(
41+
relay_legacy_client::generate_receive_message_proof_call_builder!(
4042
PolkadotBulletinMessagesToBridgeHubPolkadotMessageLane,
4143
PolkadotBulletinMessagesToBridgeHubPolkadotMessageLaneReceiveMessagesProofCallBuilder,
4244
// TODO: https://github.com/paritytech/parity-bridges-common/issues/2547 - use BridgePolkadotBulletinMessages
4345
relay_bridge_hub_polkadot_client::RuntimeCall::BridgeKusamaMessages,
4446
relay_bridge_hub_polkadot_client::BridgePolkadotBulletinMessagesCall::receive_messages_proof
4547
);
4648

47-
substrate_relay_helper::generate_receive_message_delivery_proof_call_builder!(
49+
// TODO: uncomment when PolkadotBulletin supports the compact proofs
50+
// substrate_relay_helper::generate_receive_message_delivery_proof_call_builder!(
51+
relay_legacy_client::generate_receive_message_delivery_proof_call_builder!(
4852
PolkadotBulletinMessagesToBridgeHubPolkadotMessageLane,
4953
PolkadotBulletinMessagesToBridgeHubPolkadotMessageLaneReceiveMessagesDeliveryProofCallBuilder,
5054
relay_polkadot_bulletin_client::RuntimeCall::BridgePolkadotMessages,

substrate-relay/src/bridges/rococo_bulletin/bridge_hub_rococo_messages_to_rococo_bulletin.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@ impl MessagesCliBridge for BridgeHubRococoToRococoBulletinMessagesCliBridge {
3636
type MessagesLane = BridgeHubRococoMessagesToRococoBulletinMessageLane;
3737
}
3838

39-
substrate_relay_helper::generate_receive_message_proof_call_builder!(
39+
// TODO: uncomment when PolkadotBulletin supports the compact proofs
40+
// substrate_relay_helper::generate_receive_message_proof_call_builder!(
41+
relay_legacy_client::generate_receive_message_proof_call_builder!(
4042
BridgeHubRococoMessagesToRococoBulletinMessageLane,
4143
BridgeHubRococoMessagesToRococoBulletinMessageLaneReceiveMessagesProofCallBuilder,
4244
relay_polkadot_bulletin_client::RuntimeCall::BridgePolkadotMessages,

substrate-relay/src/bridges/rococo_bulletin/rococo_bulletin_messages_to_bridge_hub_rococo.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,18 @@ impl MessagesCliBridge for RococoBulletinToBridgeHubRococoMessagesCliBridge {
3636
type MessagesLane = RococoBulletinMessagesToBridgeHubRococoMessageLane;
3737
}
3838

39-
substrate_relay_helper::generate_receive_message_proof_call_builder!(
39+
// TODO: uncomment when PolkadotBulletin supports the compact proofs
40+
// substrate_relay_helper::generate_receive_message_proof_call_builder!(
41+
relay_legacy_client::generate_receive_message_proof_call_builder!(
4042
RococoBulletinMessagesToBridgeHubRococoMessageLane,
4143
RococoBulletinMessagesToBridgeHubRococoMessageLaneReceiveMessagesProofCallBuilder,
4244
relay_bridge_hub_rococo_client::RuntimeCall::BridgePolkadotBulletinMessages,
4345
relay_bridge_hub_rococo_client::BridgeBulletinMessagesCall::receive_messages_proof
4446
);
4547

46-
substrate_relay_helper::generate_receive_message_delivery_proof_call_builder!(
48+
// TODO: uncomment when PolkadotBulletin supports the compact proofs
49+
// substrate_relay_helper::generate_receive_message_delivery_proof_call_builder!(
50+
relay_legacy_client::generate_receive_message_delivery_proof_call_builder!(
4751
RococoBulletinMessagesToBridgeHubRococoMessageLane,
4852
RococoBulletinMessagesToBridgeHubRococoMessageLaneReceiveMessagesDeliveryProofCallBuilder,
4953
relay_polkadot_bulletin_client::RuntimeCall::BridgePolkadotMessages,

substrate-relay/src/bridges/rococo_westend/bridge_hub_rococo_messages_to_bridge_hub_westend.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ impl MessagesCliBridge for BridgeHubRococoToBridgeHubWestendMessagesCliBridge {
3535
type MessagesLane = BridgeHubRococoMessagesToBridgeHubWestendMessageLane;
3636
}
3737

38-
substrate_relay_helper::generate_receive_message_proof_call_builder!(
38+
// TODO: uncomment when BridgeHubWestend supports the compact proofs
39+
// substrate_relay_helper::generate_receive_message_proof_call_builder!(
40+
relay_legacy_client::generate_receive_message_proof_call_builder!(
3941
BridgeHubRococoMessagesToBridgeHubWestendMessageLane,
4042
BridgeHubRococoMessagesToBridgeHubWestendMessageLaneReceiveMessagesProofCallBuilder,
4143
relay_bridge_hub_westend_client::RuntimeCall::BridgeRococoMessages,

substrate-relay/src/bridges/rococo_westend/bridge_hub_westend_messages_to_bridge_hub_rococo.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,18 @@ impl MessagesCliBridge for BridgeHubWestendToBridgeHubRococoMessagesCliBridge {
3535
type MessagesLane = BridgeHubWestendMessagesToBridgeHubRococoMessageLane;
3636
}
3737

38-
substrate_relay_helper::generate_receive_message_proof_call_builder!(
38+
// TODO: uncomment when BridgeHubWestend supports the compact proofs
39+
// substrate_relay_helper::generate_receive_message_proof_call_builder!(
40+
relay_legacy_client::generate_receive_message_proof_call_builder!(
3941
BridgeHubWestendMessagesToBridgeHubRococoMessageLane,
4042
BridgeHubWestendMessagesToBridgeHubRococoMessageLaneReceiveMessagesProofCallBuilder,
4143
relay_bridge_hub_rococo_client::RuntimeCall::BridgeWestendMessages,
4244
relay_bridge_hub_rococo_client::BridgeMessagesCall::receive_messages_proof
4345
);
4446

45-
substrate_relay_helper::generate_receive_message_delivery_proof_call_builder!(
47+
// TODO: uncomment when BridgeHubWestend supports the compact proofs
48+
// substrate_relay_helper::generate_receive_message_delivery_proof_call_builder!(
49+
relay_legacy_client::generate_receive_message_delivery_proof_call_builder!(
4650
BridgeHubWestendMessagesToBridgeHubRococoMessageLane,
4751
BridgeHubWestendMessagesToBridgeHubRococoMessageLaneReceiveMessagesDeliveryProofCallBuilder,
4852
relay_bridge_hub_westend_client::RuntimeCall::BridgeRococoMessages,

0 commit comments

Comments
 (0)