Skip to content

Commit 6d9742f

Browse files
svyatonikbkontur
authored andcommitted
Make relayer_reward_per_message field an option (#2632)
* relayer_reward_per_message is now Option<RelayerRewardAtSource> * fixed benchmarks compilation
1 parent c137e46 commit 6d9742f

File tree

13 files changed

+129
-67
lines changed

13 files changed

+129
-67
lines changed

bin/millau/runtime/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,7 @@ impl pallet_bridge_messages::Config<WithRialtoMessagesInstance> for Runtime {
450450
type DeliveryConfirmationPayments = pallet_bridge_relayers::DeliveryConfirmationPaymentsAdapter<
451451
Runtime,
452452
WithRialtoMessagesInstance,
453+
frame_support::traits::ConstU64<0>,
453454
frame_support::traits::ConstU64<100_000>,
454455
>;
455456
type OnMessagesDelivered = XcmRialtoBridgeHub;
@@ -479,6 +480,7 @@ impl pallet_bridge_messages::Config<WithRialtoParachainMessagesInstance> for Run
479480
type DeliveryConfirmationPayments = pallet_bridge_relayers::DeliveryConfirmationPaymentsAdapter<
480481
Runtime,
481482
WithRialtoParachainMessagesInstance,
483+
frame_support::traits::ConstU64<0>,
482484
frame_support::traits::ConstU64<100_000>,
483485
>;
484486
type OnMessagesDelivered = XcmRialtoParachainBridgeHub;

bin/rialto-parachain/runtime/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -580,6 +580,7 @@ impl pallet_bridge_messages::Config<WithMillauMessagesInstance> for Runtime {
580580
type DeliveryConfirmationPayments = pallet_bridge_relayers::DeliveryConfirmationPaymentsAdapter<
581581
Runtime,
582582
WithMillauMessagesInstance,
583+
frame_support::traits::ConstU128<0>,
583584
frame_support::traits::ConstU128<100_000>,
584585
>;
585586
type OnMessagesDelivered = XcmMillauBridgeHub;

bin/rialto/runtime/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,7 @@ impl pallet_bridge_messages::Config<WithMillauMessagesInstance> for Runtime {
434434
type DeliveryConfirmationPayments = pallet_bridge_relayers::DeliveryConfirmationPaymentsAdapter<
435435
Runtime,
436436
WithMillauMessagesInstance,
437+
frame_support::traits::ConstU128<0>,
437438
frame_support::traits::ConstU128<100_000>,
438439
>;
439440
type OnMessagesDelivered = XcmMillauBridgeHub;

modules/messages/src/benchmarking.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ fn receive_messages<T: Config<I>, I: 'static>(nonce: MessageNonce) {
131131
state: LaneState::Opened,
132132
relayers: vec![UnrewardedRelayer {
133133
relayer: T::bridged_relayer_id(),
134-
messages: DeliveredMessages::new(nonce, 1),
134+
messages: DeliveredMessages::new(nonce, Some(1)),
135135
}]
136136
.into(),
137137
last_confirmed_nonce: 0,
@@ -368,7 +368,7 @@ mod benchmarks {
368368
state: LaneState::Opened,
369369
relayers: vec![UnrewardedRelayer {
370370
relayer: relayer_id.clone(),
371-
messages: DeliveredMessages::new(1, 1),
371+
messages: DeliveredMessages::new(1, Some(1)),
372372
}]
373373
.into_iter()
374374
.collect(),
@@ -412,7 +412,7 @@ mod benchmarks {
412412
total_messages: 2,
413413
last_delivered_nonce: 2,
414414
};
415-
let mut delivered_messages = DeliveredMessages::new(1, 1);
415+
let mut delivered_messages = DeliveredMessages::new(1, Some(1));
416416
delivered_messages.note_dispatched_message();
417417
let proof = T::prepare_message_delivery_proof(MessageDeliveryProofParams {
418418
lane: T::bench_lane_id(),
@@ -472,11 +472,11 @@ mod benchmarks {
472472
relayers: vec![
473473
UnrewardedRelayer {
474474
relayer: relayer1_id.clone(),
475-
messages: DeliveredMessages::new(1, 1),
475+
messages: DeliveredMessages::new(1, Some(1)),
476476
},
477477
UnrewardedRelayer {
478478
relayer: relayer2_id.clone(),
479-
messages: DeliveredMessages::new(2, 1),
479+
messages: DeliveredMessages::new(2, Some(1)),
480480
},
481481
]
482482
.into_iter()

modules/messages/src/call_ext.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ mod tests {
264264
messages: DeliveredMessages {
265265
begin: n + 1,
266266
end: n + 1,
267-
relayer_reward_per_message: 0,
267+
relayer_reward_per_message: None,
268268
},
269269
});
270270
}
@@ -278,7 +278,7 @@ mod tests {
278278
messages: DeliveredMessages {
279279
begin: 1,
280280
end: BridgedChain::MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX,
281-
relayer_reward_per_message: 0,
281+
relayer_reward_per_message: None,
282282
},
283283
});
284284
InboundLanes::<TestRuntime>::insert(test_lane_id(), inbound_lane_state);

modules/messages/src/inbound_lane.rs

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ impl<S: InboundLaneStorage> InboundLane<S> {
186186
relayer_at_bridged_chain: &S::Relayer,
187187
nonce: MessageNonce,
188188
message_data: DispatchMessageData<Dispatch::DispatchPayload>,
189-
relayer_reward_per_message: RelayerRewardAtSource,
189+
relayer_reward_per_message: Option<RelayerRewardAtSource>,
190190
) -> ReceivalResult<Dispatch::DispatchLevelResult> {
191191
let mut data = self.storage.data();
192192
if Some(nonce) != data.last_delivered_nonce().checked_add(1) {
@@ -251,7 +251,7 @@ mod tests {
251251
&TEST_RELAYER_A,
252252
nonce,
253253
inbound_message_data(REGULAR_PAYLOAD),
254-
RELAYER_REWARD_PER_MESSAGE,
254+
Some(RELAYER_REWARD_PER_MESSAGE),
255255
),
256256
ReceivalResult::Dispatched(dispatch_result(0))
257257
);
@@ -379,7 +379,7 @@ mod tests {
379379
&TEST_RELAYER_A,
380380
10,
381381
inbound_message_data(REGULAR_PAYLOAD),
382-
RELAYER_REWARD_PER_MESSAGE,
382+
Some(RELAYER_REWARD_PER_MESSAGE),
383383
),
384384
ReceivalResult::InvalidNonce
385385
);
@@ -398,7 +398,7 @@ mod tests {
398398
&(TEST_RELAYER_A + current_nonce),
399399
current_nonce,
400400
inbound_message_data(REGULAR_PAYLOAD),
401-
RELAYER_REWARD_PER_MESSAGE,
401+
Some(RELAYER_REWARD_PER_MESSAGE),
402402
),
403403
ReceivalResult::Dispatched(dispatch_result(0))
404404
);
@@ -409,7 +409,7 @@ mod tests {
409409
&(TEST_RELAYER_A + max_nonce + 1),
410410
max_nonce + 1,
411411
inbound_message_data(REGULAR_PAYLOAD),
412-
RELAYER_REWARD_PER_MESSAGE,
412+
Some(RELAYER_REWARD_PER_MESSAGE),
413413
),
414414
ReceivalResult::TooManyUnrewardedRelayers,
415415
);
@@ -419,7 +419,7 @@ mod tests {
419419
&(TEST_RELAYER_A + max_nonce),
420420
max_nonce + 1,
421421
inbound_message_data(REGULAR_PAYLOAD),
422-
RELAYER_REWARD_PER_MESSAGE,
422+
Some(RELAYER_REWARD_PER_MESSAGE),
423423
),
424424
ReceivalResult::TooManyUnrewardedRelayers,
425425
);
@@ -437,7 +437,7 @@ mod tests {
437437
&TEST_RELAYER_A,
438438
current_nonce,
439439
inbound_message_data(REGULAR_PAYLOAD),
440-
RELAYER_REWARD_PER_MESSAGE,
440+
Some(RELAYER_REWARD_PER_MESSAGE),
441441
),
442442
ReceivalResult::Dispatched(dispatch_result(0))
443443
);
@@ -448,7 +448,7 @@ mod tests {
448448
&TEST_RELAYER_B,
449449
max_nonce + 1,
450450
inbound_message_data(REGULAR_PAYLOAD),
451-
RELAYER_REWARD_PER_MESSAGE,
451+
Some(RELAYER_REWARD_PER_MESSAGE),
452452
),
453453
ReceivalResult::TooManyUnconfirmedMessages,
454454
);
@@ -458,7 +458,7 @@ mod tests {
458458
&TEST_RELAYER_A,
459459
max_nonce + 1,
460460
inbound_message_data(REGULAR_PAYLOAD),
461-
RELAYER_REWARD_PER_MESSAGE,
461+
Some(RELAYER_REWARD_PER_MESSAGE),
462462
),
463463
ReceivalResult::TooManyUnconfirmedMessages,
464464
);
@@ -474,7 +474,7 @@ mod tests {
474474
&TEST_RELAYER_A,
475475
1,
476476
inbound_message_data(REGULAR_PAYLOAD),
477-
RELAYER_REWARD_PER_MESSAGE,
477+
Some(RELAYER_REWARD_PER_MESSAGE),
478478
),
479479
ReceivalResult::Dispatched(dispatch_result(0))
480480
);
@@ -483,7 +483,7 @@ mod tests {
483483
&TEST_RELAYER_B,
484484
2,
485485
inbound_message_data(REGULAR_PAYLOAD),
486-
RELAYER_REWARD_PER_MESSAGE,
486+
Some(RELAYER_REWARD_PER_MESSAGE),
487487
),
488488
ReceivalResult::Dispatched(dispatch_result(0))
489489
);
@@ -492,7 +492,7 @@ mod tests {
492492
&TEST_RELAYER_A,
493493
3,
494494
inbound_message_data(REGULAR_PAYLOAD),
495-
RELAYER_REWARD_PER_MESSAGE,
495+
Some(RELAYER_REWARD_PER_MESSAGE),
496496
),
497497
ReceivalResult::Dispatched(dispatch_result(0))
498498
);
@@ -516,7 +516,7 @@ mod tests {
516516
&TEST_RELAYER_A,
517517
1,
518518
inbound_message_data(REGULAR_PAYLOAD),
519-
RELAYER_REWARD_PER_MESSAGE,
519+
Some(RELAYER_REWARD_PER_MESSAGE),
520520
),
521521
ReceivalResult::Dispatched(dispatch_result(0))
522522
);
@@ -525,7 +525,7 @@ mod tests {
525525
&TEST_RELAYER_A,
526526
2,
527527
inbound_message_data(REGULAR_PAYLOAD),
528-
RELAYER_REWARD_PER_MESSAGE + 1,
528+
Some(RELAYER_REWARD_PER_MESSAGE + 1),
529529
),
530530
ReceivalResult::Dispatched(dispatch_result(0))
531531
);
@@ -534,15 +534,15 @@ mod tests {
534534
&TEST_RELAYER_A,
535535
3,
536536
inbound_message_data(REGULAR_PAYLOAD),
537-
RELAYER_REWARD_PER_MESSAGE + 1,
537+
Some(RELAYER_REWARD_PER_MESSAGE + 1),
538538
),
539539
ReceivalResult::Dispatched(dispatch_result(0))
540540
);
541541

542542
let mut unrewarded_relayer_with_larger_reward =
543543
unrewarded_relayer(2, 3, TEST_RELAYER_A);
544544
unrewarded_relayer_with_larger_reward.messages.relayer_reward_per_message =
545-
RELAYER_REWARD_PER_MESSAGE + 1;
545+
Some(RELAYER_REWARD_PER_MESSAGE + 1);
546546
assert_eq!(
547547
lane.storage.data().relayers,
548548
vec![
@@ -562,7 +562,7 @@ mod tests {
562562
&TEST_RELAYER_A,
563563
1,
564564
inbound_message_data(REGULAR_PAYLOAD),
565-
RELAYER_REWARD_PER_MESSAGE,
565+
Some(RELAYER_REWARD_PER_MESSAGE),
566566
),
567567
ReceivalResult::Dispatched(dispatch_result(0))
568568
);
@@ -571,7 +571,7 @@ mod tests {
571571
&TEST_RELAYER_B,
572572
1,
573573
inbound_message_data(REGULAR_PAYLOAD),
574-
RELAYER_REWARD_PER_MESSAGE,
574+
Some(RELAYER_REWARD_PER_MESSAGE),
575575
),
576576
ReceivalResult::InvalidNonce,
577577
);
@@ -598,7 +598,7 @@ mod tests {
598598
&TEST_RELAYER_A,
599599
1,
600600
inbound_message_data(payload),
601-
RELAYER_REWARD_PER_MESSAGE,
601+
Some(RELAYER_REWARD_PER_MESSAGE),
602602
),
603603
ReceivalResult::Dispatched(dispatch_result(1))
604604
);

modules/messages/src/tests/mock.rs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -332,8 +332,11 @@ impl TestDeliveryPayments {
332332
impl DeliveryPayments<AccountId> for TestDeliveryPayments {
333333
type Error = &'static str;
334334

335-
fn relayer_reward_per_message(_lane_id: LaneId, _relayer: &AccountId) -> RelayerRewardAtSource {
336-
RELAYER_REWARD_PER_MESSAGE
335+
fn relayer_reward_per_message(
336+
_lane_id: LaneId,
337+
_relayer: &AccountId,
338+
) -> Option<RelayerRewardAtSource> {
339+
Some(RELAYER_REWARD_PER_MESSAGE)
337340
}
338341

339342
fn pay_reward(
@@ -373,7 +376,9 @@ impl DeliveryConfirmationPayments<AccountId> for TestDeliveryConfirmationPayment
373376
let relayers_rewards = calc_relayers_rewards_at_source::<AccountId, Balance>(
374377
messages_relayers,
375378
received_range,
376-
|messages, relayer_reward_per_message| messages * relayer_reward_per_message,
379+
|messages, relayer_reward_per_message| {
380+
messages * relayer_reward_per_message.unwrap_or(0)
381+
},
377382
);
378383
let rewarded_relayers = relayers_rewards.len();
379384
for (relayer, reward) in &relayers_rewards {
@@ -481,7 +486,7 @@ pub fn unrewarded_relayer(
481486
messages: DeliveredMessages {
482487
begin,
483488
end,
484-
relayer_reward_per_message: RELAYER_REWARD_PER_MESSAGE,
489+
relayer_reward_per_message: Some(RELAYER_REWARD_PER_MESSAGE),
485490
},
486491
}
487492
}

modules/messages/src/tests/pallet_tests.rs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ fn receive_messages_delivery_proof() {
8787
last_confirmed_nonce: 1,
8888
relayers: vec![UnrewardedRelayer {
8989
relayer: 0,
90-
messages: DeliveredMessages::new(1, 0),
90+
messages: DeliveredMessages::new(1, None),
9191
}]
9292
.into(),
9393
},
@@ -263,7 +263,7 @@ fn receive_messages_proof_works() {
263263
.0
264264
.relayers
265265
.front()
266-
.map(|r| r.messages.relayer_reward_per_message),
266+
.and_then(|r| r.messages.relayer_reward_per_message),
267267
Some(RELAYER_REWARD_PER_MESSAGE),
268268
);
269269

@@ -855,7 +855,7 @@ fn proof_size_refund_from_receive_messages_proof_works() {
855855
messages: DeliveredMessages {
856856
begin: 0,
857857
end: 100,
858-
relayer_reward_per_message: 0
858+
relayer_reward_per_message: None,
859859
}
860860
};
861861
max_entries
@@ -888,7 +888,7 @@ fn proof_size_refund_from_receive_messages_proof_works() {
888888
messages: DeliveredMessages {
889889
begin: 0,
890890
end: 100,
891-
relayer_reward_per_message: 0
891+
relayer_reward_per_message: None,
892892
}
893893
};
894894
max_entries - 1
@@ -1002,7 +1002,7 @@ fn test_bridge_messages_call_is_correctly_defined() {
10021002
last_confirmed_nonce: 1,
10031003
relayers: vec![UnrewardedRelayer {
10041004
relayer: 0,
1005-
messages: DeliveredMessages::new(1, 0),
1005+
messages: DeliveredMessages::new(1, None),
10061006
}]
10071007
.into(),
10081008
},
@@ -1065,7 +1065,11 @@ fn inbound_storage_extra_proof_size_bytes_works() {
10651065
fn relayer_entry() -> UnrewardedRelayer<TestRelayer> {
10661066
UnrewardedRelayer {
10671067
relayer: 42u64,
1068-
messages: DeliveredMessages { begin: 0, end: 100, relayer_reward_per_message: 0 },
1068+
messages: DeliveredMessages {
1069+
begin: 0,
1070+
end: 100,
1071+
relayer_reward_per_message: Some(42),
1072+
},
10691073
}
10701074
}
10711075

@@ -1161,7 +1165,7 @@ fn receive_messages_delivery_proof_fails_if_outbound_lane_is_unknown() {
11611165
last_confirmed_nonce: 1,
11621166
relayers: vec![UnrewardedRelayer {
11631167
relayer: 0,
1164-
messages: DeliveredMessages::new(1, 0),
1168+
messages: DeliveredMessages::new(1, None),
11651169
}]
11661170
.into(),
11671171
},

modules/relayers/src/extension/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1900,7 +1900,7 @@ mod tests {
19001900
messages: DeliveredMessages {
19011901
begin: 1,
19021902
end: best_delivered_message,
1903-
relayer_reward_per_message: 0,
1903+
relayer_reward_per_message: None,
19041904
},
19051905
}]
19061906
.into(),

modules/relayers/src/mock.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ pub const TEST_BRIDGED_CHAIN_ID: ChainId = *b"brdg";
7979
/// Maximal extrinsic size at the `BridgedChain`.
8080
pub const BRIDGED_CHAIN_MAX_EXTRINSIC_SIZE: u32 = 1024;
8181

82+
/// Default reward that is paid to relayer for delivering a single message.
83+
pub const DEFAULT_REWARD_PER_MESSAGE: ThisChainBalance = 100_000;
8284
/// Maximal reward that may be paid to relayer for delivering a single message.
8385
pub const MAX_REWARD_PER_MESSAGE: ThisChainBalance = 100_000;
8486

@@ -284,6 +286,7 @@ pub type TestDeliveryConfirmationPaymentsAdapter =
284286
pallet_bridge_relayers::DeliveryConfirmationPaymentsAdapter<
285287
TestRuntime,
286288
(),
289+
ConstU64<DEFAULT_REWARD_PER_MESSAGE>,
287290
ConstU64<MAX_REWARD_PER_MESSAGE>,
288291
>;
289292

0 commit comments

Comments
 (0)