Skip to content

Commit 5840197

Browse files
authored
Define method for checking message lane weights (#1766)
* Define method for checking message lane weights * Docs for public function * Renamings
1 parent 881af02 commit 5840197

File tree

3 files changed

+42
-57
lines changed

3 files changed

+42
-57
lines changed

bin/millau/runtime/src/rialto_messages.rs

Lines changed: 5 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -163,42 +163,19 @@ mod tests {
163163
use super::*;
164164
use crate::{Runtime, WithRialtoMessagesInstance};
165165

166-
use bp_runtime::Chain;
167166
use bridge_runtime_common::{
168167
assert_complete_bridge_types,
169168
integrity::{
170-
assert_complete_bridge_constants, AssertBridgeMessagesPalletConstants,
171-
AssertBridgePalletNames, AssertChainConstants, AssertCompleteBridgeConstants,
169+
assert_complete_bridge_constants, check_message_lane_weights,
170+
AssertBridgeMessagesPalletConstants, AssertBridgePalletNames, AssertChainConstants,
171+
AssertCompleteBridgeConstants,
172172
},
173-
messages,
174173
};
175174

176175
#[test]
177176
fn ensure_millau_message_lane_weights_are_correct() {
178-
type Weights = pallet_bridge_messages::weights::BridgeWeight<Runtime>;
179-
180-
pallet_bridge_messages::ensure_weights_are_correct::<Weights>();
181-
182-
let max_incoming_message_proof_size = bp_rialto::EXTRA_STORAGE_PROOF_SIZE.saturating_add(
183-
messages::target::maximal_incoming_message_size(bp_millau::Millau::max_extrinsic_size()),
184-
);
185-
pallet_bridge_messages::ensure_able_to_receive_message::<Weights>(
186-
bp_millau::Millau::max_extrinsic_size(),
187-
bp_millau::Millau::max_extrinsic_weight(),
188-
max_incoming_message_proof_size,
189-
messages::target::maximal_incoming_message_dispatch_weight(
190-
bp_millau::Millau::max_extrinsic_weight(),
191-
),
192-
);
193-
194-
let max_incoming_inbound_lane_data_proof_size =
195-
bp_messages::InboundLaneData::<()>::encoded_size_hint_u32(
196-
bp_millau::MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX as _,
197-
);
198-
pallet_bridge_messages::ensure_able_to_receive_confirmation::<Weights>(
199-
bp_millau::Millau::max_extrinsic_size(),
200-
bp_millau::Millau::max_extrinsic_weight(),
201-
max_incoming_inbound_lane_data_proof_size,
177+
check_message_lane_weights::<bp_millau::Millau, Runtime>(
178+
bp_rialto::EXTRA_STORAGE_PROOF_SIZE,
202179
bp_millau::MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX,
203180
bp_millau::MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX,
204181
);

bin/rialto/runtime/src/millau_messages.rs

Lines changed: 5 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -162,41 +162,19 @@ impl SourceHeaderChain for Millau {
162162
mod tests {
163163
use super::*;
164164
use crate::{MillauGrandpaInstance, Runtime, WithMillauMessagesInstance};
165-
use bp_runtime::Chain;
166165
use bridge_runtime_common::{
167166
assert_complete_bridge_types,
168167
integrity::{
169-
assert_complete_bridge_constants, AssertBridgeMessagesPalletConstants,
170-
AssertBridgePalletNames, AssertChainConstants, AssertCompleteBridgeConstants,
168+
assert_complete_bridge_constants, check_message_lane_weights,
169+
AssertBridgeMessagesPalletConstants, AssertBridgePalletNames, AssertChainConstants,
170+
AssertCompleteBridgeConstants,
171171
},
172172
};
173173

174174
#[test]
175175
fn ensure_rialto_message_lane_weights_are_correct() {
176-
type Weights = pallet_bridge_messages::weights::BridgeWeight<Runtime>;
177-
178-
pallet_bridge_messages::ensure_weights_are_correct::<Weights>();
179-
180-
let max_incoming_message_proof_size = bp_millau::EXTRA_STORAGE_PROOF_SIZE.saturating_add(
181-
messages::target::maximal_incoming_message_size(bp_rialto::Rialto::max_extrinsic_size()),
182-
);
183-
pallet_bridge_messages::ensure_able_to_receive_message::<Weights>(
184-
bp_rialto::Rialto::max_extrinsic_size(),
185-
bp_rialto::Rialto::max_extrinsic_weight(),
186-
max_incoming_message_proof_size,
187-
messages::target::maximal_incoming_message_dispatch_weight(
188-
bp_rialto::Rialto::max_extrinsic_weight(),
189-
),
190-
);
191-
192-
let max_incoming_inbound_lane_data_proof_size =
193-
bp_messages::InboundLaneData::<()>::encoded_size_hint_u32(
194-
bp_rialto::MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX as _,
195-
);
196-
pallet_bridge_messages::ensure_able_to_receive_confirmation::<Weights>(
197-
bp_rialto::Rialto::max_extrinsic_size(),
198-
bp_rialto::Rialto::max_extrinsic_weight(),
199-
max_incoming_inbound_lane_data_proof_size,
176+
check_message_lane_weights::<bp_rialto::Rialto, Runtime>(
177+
bp_millau::EXTRA_STORAGE_PROOF_SIZE,
200178
bp_rialto::MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX,
201179
bp_rialto::MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX,
202180
);

bin/runtime-common/src/integrity.rs

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
//! Most of the tests in this module assume that the bridge is using standard (see `crate::messages`
2020
//! module for details) configuration.
2121
22-
use crate::messages::MessageBridge;
22+
use crate::{messages, messages::MessageBridge};
2323

24-
use bp_messages::MessageNonce;
24+
use bp_messages::{InboundLaneData, MessageNonce};
2525
use bp_runtime::{Chain, ChainId};
2626
use codec::Encode;
2727
use frame_support::{storage::generator::StorageValue, traits::Get};
@@ -289,3 +289,33 @@ where
289289
assert_bridge_messages_pallet_constants::<R, MI>(params.messages_pallet_constants);
290290
assert_bridge_pallet_names::<B, R, GI, MI>(params.pallet_names);
291291
}
292+
293+
/// Check that the message lane weights are correct.
294+
pub fn check_message_lane_weights<C: Chain, T: frame_system::Config>(
295+
bridged_chain_extra_storage_proof_size: u32,
296+
this_chain_max_unrewarded_relayers: MessageNonce,
297+
this_chain_max_unconfirmed_messages: MessageNonce,
298+
) {
299+
type Weights<T> = pallet_bridge_messages::weights::BridgeWeight<T>;
300+
301+
pallet_bridge_messages::ensure_weights_are_correct::<Weights<T>>();
302+
303+
let max_incoming_message_proof_size = bridged_chain_extra_storage_proof_size
304+
.saturating_add(messages::target::maximal_incoming_message_size(C::max_extrinsic_size()));
305+
pallet_bridge_messages::ensure_able_to_receive_message::<Weights<T>>(
306+
C::max_extrinsic_size(),
307+
C::max_extrinsic_weight(),
308+
max_incoming_message_proof_size,
309+
messages::target::maximal_incoming_message_dispatch_weight(C::max_extrinsic_weight()),
310+
);
311+
312+
let max_incoming_inbound_lane_data_proof_size =
313+
InboundLaneData::<()>::encoded_size_hint_u32(this_chain_max_unrewarded_relayers as _);
314+
pallet_bridge_messages::ensure_able_to_receive_confirmation::<Weights<T>>(
315+
C::max_extrinsic_size(),
316+
C::max_extrinsic_weight(),
317+
max_incoming_inbound_lane_data_proof_size,
318+
this_chain_max_unrewarded_relayers,
319+
this_chain_max_unconfirmed_messages,
320+
);
321+
}

0 commit comments

Comments
 (0)