Skip to content
This repository was archived by the owner on Oct 22, 2024. It is now read-only.

Commit 1978dfb

Browse files
authored
Benchmarks for incentivized channel & constant time verify (paritytech#328)
* Benchmarks for incentivized channel * Make Verifier::verify constant time * Add WeightInfo trait, generate weights * Merge and update benchmarks
1 parent a646b82 commit 1978dfb

File tree

20 files changed

+443
-80
lines changed

20 files changed

+443
-80
lines changed

parachain/Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

parachain/pallets/basic-channel/src/inbound/benchmarking.rs

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,6 @@ fn assert_last_event<T: Config>(system_event: <T as frame_system::Config>::Event
2222
assert_eq!(event, &system_event);
2323
}
2424

25-
fn make_header_chain(parent: Header, length: u32) -> Vec<Header> {
26-
let mut chain = vec![parent.clone()];
27-
(0..length).fold(parent, |ancestor, _| {
28-
let mut header: Header = Default::default();
29-
header.parent_hash = ancestor.compute_hash();
30-
header.number = ancestor.number.saturating_add(1);
31-
header.difficulty = 1.into();
32-
chain.push(header.clone());
33-
header
34-
});
35-
36-
chain
37-
}
38-
3925
// This collection of benchmarks should include a benchmark for each
4026
// call dispatched by the channel, i.e. each "app" pallet function
4127
// that can be invoked by MessageDispatch. The most expensive call
@@ -48,8 +34,6 @@ benchmarks! {
4834
// * `submit` dispatches the DotApp::unlock call
4935
// * `unlock` call successfully unlocks DOT
5036
submit {
51-
let h in 0 .. 20;
52-
5337
let caller: T::AccountId = whitelisted_caller();
5438
let (header, message) = dot_unlock_data();
5539
let envelope: envelope::Envelope = rlp::decode::<Log>(&message.data)
@@ -59,7 +43,7 @@ benchmarks! {
5943
SourceChannel::put(envelope.channel);
6044

6145
T::Verifier::initialize_storage(
62-
make_header_chain(header, h),
46+
vec![header],
6347
0.into(),
6448
0, // forces all headers to be finalized
6549
)?;
@@ -76,8 +60,6 @@ benchmarks! {
7660

7761
#[extra]
7862
submit_eth_mint {
79-
let h in 0 .. 20;
80-
8163
let caller: T::AccountId = whitelisted_caller();
8264
let (header, message) = eth_mint_data();
8365
let envelope: envelope::Envelope = rlp::decode::<Log>(&message.data)
@@ -87,7 +69,7 @@ benchmarks! {
8769
SourceChannel::put(envelope.channel);
8870

8971
T::Verifier::initialize_storage(
90-
make_header_chain(header, h),
72+
vec![header],
9173
0.into(),
9274
0, // forces all headers to be finalized
9375
)?;
@@ -104,8 +86,6 @@ benchmarks! {
10486

10587
#[extra]
10688
submit_erc20_mint {
107-
let h in 0 .. 20;
108-
10989
let caller: T::AccountId = whitelisted_caller();
11090
let (header, message) = erc20_mint_data();
11191
let envelope: envelope::Envelope = rlp::decode::<Log>(&message.data)
@@ -115,7 +95,7 @@ benchmarks! {
11595
SourceChannel::put(envelope.channel);
11696

11797
T::Verifier::initialize_storage(
118-
make_header_chain(header, h),
98+
vec![header],
11999
0.into(),
120100
0, // forces all headers to be finalized
121101
)?;

parachain/pallets/basic-channel/src/inbound/mod.rs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use frame_support::{
22
decl_error, decl_event, decl_module, decl_storage,
33
dispatch::DispatchResult,
4+
weights::Weight,
45
};
56
use frame_system::{self as system, ensure_signed};
67
use sp_core::H160;
@@ -20,6 +21,15 @@ mod test;
2021

2122
mod envelope;
2223

24+
/// Weight functions needed for this pallet.
25+
pub trait WeightInfo {
26+
fn submit() -> Weight;
27+
}
28+
29+
impl WeightInfo for () {
30+
fn submit() -> Weight { 0 }
31+
}
32+
2333
pub trait Config: system::Config {
2434
type Event: From<Event> + Into<<Self as system::Config>::Event>;
2535

@@ -28,6 +38,9 @@ pub trait Config: system::Config {
2838

2939
/// Verifier module for message verification.
3040
type MessageDispatch: MessageDispatch<Self, MessageId>;
41+
42+
/// Weight information for extrinsics in this pallet
43+
type WeightInfo: WeightInfo;
3144
}
3245

3346
decl_storage! {
@@ -61,7 +74,7 @@ decl_module! {
6174

6275
fn deposit_event() = default;
6376

64-
#[weight = 0]
77+
#[weight = T::WeightInfo::submit()]
6578
pub fn submit(origin, message: Message) -> DispatchResult {
6679
ensure_signed(origin)?;
6780
// submit message to verifier for verification

parachain/pallets/basic-channel/src/inbound/test.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ impl basic_inbound_channel::Config for Test {
9898
type Event = Event;
9999
type Verifier = MockVerifier;
100100
type MessageDispatch = MockMessageDispatch;
101+
type WeightInfo = ();
101102
}
102103

103104
pub fn new_tester(source_channel: H160) -> sp_io::TestExternalities {

parachain/pallets/incentivized-channel/Cargo.toml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@ targets = ["x86_64-unknown-linux-gnu"]
1212
[dependencies]
1313
serde = { version = "1.0.101", optional = true }
1414
codec = { version = "2.0.0", package = "parity-scale-codec", default-features = false, features = ["derive"] }
15+
hex-literal = { version = "0.3.1", optional = true }
16+
rlp = { version = "0.5", default-features = false, optional = true }
1517

18+
frame-benchmarking = { git = "https://github.com/paritytech/substrate.git", branch = "rococo-v1", default-features = false, optional = true }
1619
frame-support = { git = "https://github.com/paritytech/substrate.git", branch = "rococo-v1", default-features = false }
1720
frame-system = { git = "https://github.com/paritytech/substrate.git", branch = "rococo-v1", default-features = false }
1821
sp-core = { git = "https://github.com/paritytech/substrate.git", branch = "rococo-v1", default-features = false }
@@ -47,4 +50,9 @@ std = [
4750
]
4851
runtime-benchmarks = [
4952
"artemis-core/runtime-benchmarks",
53+
"frame-benchmarking",
54+
"frame-support/runtime-benchmarks",
55+
"frame-system/runtime-benchmarks",
56+
"hex-literal",
57+
"rlp",
5058
]
Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
//! IncentivizedInboundChannel pallet benchmarking
2+
3+
#![cfg(feature = "runtime-benchmarks")]
4+
5+
use super::*;
6+
7+
use frame_system::{RawOrigin, self, EventRecord};
8+
use frame_benchmarking::{benchmarks, whitelisted_caller, impl_benchmark_test_suite};
9+
use hex_literal::hex;
10+
use sp_std::convert::TryInto;
11+
12+
use artemis_core::{ChannelId, Message, MessageId, Proof};
13+
use artemis_ethereum::{Log, Header};
14+
15+
#[allow(unused_imports)]
16+
use crate::inbound::Module as IncentivizedInboundChannel;
17+
18+
fn assert_last_event<T: Config>(system_event: <T as frame_system::Config>::Event) {
19+
let events = frame_system::Pallet::<T>::events();
20+
// compare to the last event record
21+
let EventRecord { event, .. } = &events[events.len() - 1];
22+
assert_eq!(event, &system_event);
23+
}
24+
25+
// This collection of benchmarks should include a benchmark for each
26+
// call dispatched by the channel, i.e. each "app" pallet function
27+
// that can be invoked by MessageDispatch. The most expensive call
28+
// should be used in the `submit` benchmark.
29+
//
30+
// We rely on configuration via chain spec of the app pallets because
31+
// we don't have access to their storage here.
32+
benchmarks! {
33+
// Benchmark `submit` extrinsic under worst case conditions:
34+
// * `submit` dispatches the DotApp::unlock call
35+
// * `unlock` call successfully unlocks DOT
36+
submit {
37+
let caller: T::AccountId = whitelisted_caller();
38+
let (header, message) = dot_unlock_data();
39+
let envelope: envelope::Envelope<T> = rlp::decode::<Log>(&message.data)
40+
.map(|log| log.try_into().unwrap())
41+
.unwrap();
42+
Nonce::put(envelope.nonce - 1);
43+
SourceChannel::put(envelope.channel);
44+
45+
T::Verifier::initialize_storage(
46+
vec![header],
47+
0.into(),
48+
0, // forces all headers to be finalized
49+
)?;
50+
51+
}: _(RawOrigin::Signed(caller.clone()), message)
52+
verify {
53+
assert_eq!(envelope.nonce, Nonce::get());
54+
55+
let message_id = MessageId::new(ChannelId::Incentivized, envelope.nonce);
56+
if let Some(event) = T::MessageDispatch::successful_dispatch_event(message_id) {
57+
assert_last_event::<T>(event);
58+
}
59+
}
60+
61+
#[extra]
62+
submit_eth_mint {
63+
let caller: T::AccountId = whitelisted_caller();
64+
let (header, message) = eth_mint_data();
65+
let envelope: envelope::Envelope<T> = rlp::decode::<Log>(&message.data)
66+
.map(|log| log.try_into().unwrap())
67+
.unwrap();
68+
Nonce::put(envelope.nonce - 1);
69+
SourceChannel::put(envelope.channel);
70+
71+
T::Verifier::initialize_storage(
72+
vec![header],
73+
0.into(),
74+
0, // forces all headers to be finalized
75+
)?;
76+
77+
}: submit(RawOrigin::Signed(caller.clone()), message)
78+
verify {
79+
assert_eq!(envelope.nonce, Nonce::get());
80+
81+
let message_id = MessageId::new(ChannelId::Incentivized, envelope.nonce);
82+
if let Some(event) = T::MessageDispatch::successful_dispatch_event(message_id) {
83+
assert_last_event::<T>(event);
84+
}
85+
}
86+
87+
// TODO: add back ECR20 mint benchmark
88+
}
89+
90+
// ETH mint
91+
// Channel = 0xeda338e4dc46038493b885327842fd3e301cab39
92+
// Nonce = 2
93+
// Source = 0x774667629726ec1fabebcec0d9139bd1c8f72a23
94+
fn eth_mint_data() -> (Header, Message) {
95+
(
96+
Header {
97+
parent_hash: hex!("3f136282153539e5b4006c05d0c6ab033786d5793c7cc3b784ca3b274918181e").into(),
98+
timestamp: 1618295862u64.into(),
99+
number: 3584u64.into(),
100+
author: hex!("0000000000000000000000000000000000000000").into(),
101+
transactions_root: hex!("84ed6b4ad707994d7095eff6f5458d2c6e351fcab00669b084705229faa63840").into(),
102+
ommers_hash: hex!("1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347").into(),
103+
extra_data: hex!("").into(),
104+
state_root: hex!("ab5ce23d0914c05c74504cb797349fa8fca1b9b286f2f1ab11f0adb7f8c2d12c").into(),
105+
receipts_root: hex!("ac1dbc12173e495453bf5277fb1cc507a092218adcb795e7743308615ed62c89").into(),
106+
logs_bloom: (&hex!("00000000000040000000000000000200000000000000400010000000010080000000000000000000000000001000000010000000000000000000000000000080000000000000000400000008000000000000000000008000000000000000000000000000020000000000000000000800000001000400000000000010000000000000020000000000000000000400000000000000000000000000040000000000000000000004000000000000000000000220000000000001000000000200080000000002000000000000000000000000000000000000000000000000000020402000000000000000000000000000000000000000000000000000000000000000")).into(),
107+
gas_used: 97210u64.into(),
108+
gas_limit: 6721975u64.into(),
109+
difficulty: 0u64.into(),
110+
seal: vec![
111+
hex!("a00000000000000000000000000000000000000000000000000000000000000000").to_vec(),
112+
hex!("880000000000000000").to_vec(),
113+
],
114+
},
115+
Message {
116+
data: hex!("f9013a94eda338e4dc46038493b885327842fd3e301cab39e1a05e9ae1d7c484f74d554a503aa825e823725531d97e784dd9b1aacdb58d1f7076b90100000000000000000000000000774667629726ec1fabebcec0d9139bd1c8f72a2300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000570c0189b4ab1ef20763630df9743acf155865600daff200d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d0000c16ff2862300000000000000000000000000000000000000000000000000000000000000000000").to_vec(),
117+
proof: Proof {
118+
block_hash: hex!("fbd6740f975d184468373c65c1278051403867361c03ab8c245c5ff42e53c9e2").into(),
119+
tx_index: 0,
120+
data: (
121+
vec![hex!("ac1dbc12173e495453bf5277fb1cc507a092218adcb795e7743308615ed62c89").to_vec()],
122+
vec![hex!("f904a8822080b904a2f9049f0183017bbab9010000000000000040000000000000000200000000000000400010000000010080000000000000000000000000001000000010000000000000000000000000000080000000000000000400000008000000000000000000008000000000000000000000000000020000000000000000000800000001000400000000000010000000000000020000000000000000000400000000000000000000000000040000000000000000000004000000000000000000000220000000000001000000000200080000000002000000000000000000000000000000000000000000000000000020402000000000000000000000000000000000000000000000000000000000000000f90394f89994774667629726ec1fabebcec0d9139bd1c8f72a23e1a0caae0f5e72020d428da73a237d1f9bf162e158dda6d4908769b8b60c095b01f4b86000000000000000000000000089b4ab1ef20763630df9743acf155865600daff2d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d000000000000000000000000000000000000000000000000002386f26fc10000f9011c94672a95c8928c8450b594186cf7954ec269626a2df863a0a78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098a0000000000000000000000000b1185ede04202fe62d38f5db72f71e38ff3e8305a000000000000000000000000089b4ab1ef20763630df9743acf155865600daff2b8a00000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f89b94672a95c8928c8450b594186cf7954ec269626a2df863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa000000000000000000000000089b4ab1ef20763630df9743acf155865600daff2a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000de0b6b3a7640000f9013a94eda338e4dc46038493b885327842fd3e301cab39e1a05e9ae1d7c484f74d554a503aa825e823725531d97e784dd9b1aacdb58d1f7076b90100000000000000000000000000774667629726ec1fabebcec0d9139bd1c8f72a2300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000570c0189b4ab1ef20763630df9743acf155865600daff200d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d0000c16ff2862300000000000000000000000000000000000000000000000000000000000000000000").to_vec()],
123+
),
124+
},
125+
},
126+
)
127+
}
128+
129+
// DOT unlock
130+
// Channel = 0xeda338e4dc46038493b885327842fd3e301cab39
131+
// Nonce = 1
132+
// Source = 0xb1185ede04202fe62d38f5db72f71e38ff3e8305
133+
fn dot_unlock_data() -> (Header, Message) {
134+
(
135+
Header {
136+
parent_hash: hex!("6e54738f4e58949361383e11d06cfe5b72c87410881230fae3289f1de8487927").into(),
137+
timestamp: 1618291501u64.into(),
138+
number: 2496u64.into(),
139+
author: hex!("0000000000000000000000000000000000000000").into(),
140+
transactions_root: hex!("9c53bbde6f3dfe2afd272cfd64a8639db23588d3ec63406b5225b38fa79a0490").into(),
141+
ommers_hash: hex!("1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347").into(),
142+
extra_data: hex!("").into(),
143+
state_root: hex!("b262afa00f5d920137d59f2061cb2075a9cece1d53775ba6f1b38f88423f6ff7").into(),
144+
receipts_root: hex!("f19e53a299860306c5ad8201b28f78d505ea4a46f08739f2f58def37652cd386").into(),
145+
logs_bloom: (&hex!("00000000000040000000000000000200000000000000000010000000000080000000000000000000000000001000000010000000000000000000000000000000000000000000000400000008000000000000000000008000000000000000000000000000020000000000000000000800000001000400000000000010000000000000020000000000000000000400000000000000000000000000040000000000000000000004000000000000000000000200000000000001000000000200000000000002000000000000000000000000000000000000000000000000000020400000000000000000000000000000000000000000000000000000000000000000")).into(),
146+
gas_used: 107966u64.into(),
147+
gas_limit: 6721975u64.into(),
148+
difficulty: 0u64.into(),
149+
seal: vec![
150+
hex!("a00000000000000000000000000000000000000000000000000000000000000000").to_vec(),
151+
hex!("880000000000000000").to_vec(),
152+
],
153+
},
154+
Message {
155+
data: hex!("f9013a94eda338e4dc46038493b885327842fd3e301cab39e1a05e9ae1d7c484f74d554a503aa825e823725531d97e784dd9b1aacdb58d1f7076b90100000000000000000000000000b1185ede04202fe62d38f5db72f71e38ff3e830500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000570e0189b4ab1ef20763630df9743acf155865600daff200d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d000064a7b3b6e00d000000000000000000000000000000000000000000000000000000000000000000").to_vec(),
156+
proof: Proof {
157+
block_hash: hex!("2e2ac53ae0dcd35d23e004d105f21a07cfb841ee7f86b5edd957067684d61f85").into(),
158+
tx_index: 0,
159+
data: (
160+
vec![hex!("f19e53a299860306c5ad8201b28f78d505ea4a46f08739f2f58def37652cd386").to_vec()],
161+
vec![hex!("f905e9822080b905e3f905e0018301a5beb9010000000000000040000000000000000200000000000000000010000000000080000000000000000000000000001000000010000000000000000000000000000000000000000000000400000008000000000000000000008000000000000000000000000000020000000000000000000800000001000400000000000010000000000000020000000000000000000400000000000000000000000000040000000000000000000004000000000000000000000200000000000001000000000200000000000002000000000000000000000000000000000000000000000000000020400000000000000000000000000000000000000000000000000000000000000000f904d5f9013c94672a95c8928c8450b594186cf7954ec269626a2df863a0a78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098a0000000000000000000000000b1185ede04202fe62d38f5db72f71e38ff3e8305a000000000000000000000000089b4ab1ef20763630df9743acf155865600daff2b8c00000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000020d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d0000000000000000000000000000000000000000000000000000000000000000f89b94672a95c8928c8450b594186cf7954ec269626a2df863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa000000000000000000000000089b4ab1ef20763630df9743acf155865600daff2a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000de0b6b3a7640000f9011c94672a95c8928c8450b594186cf7954ec269626a2df863a0a78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098a0000000000000000000000000b1185ede04202fe62d38f5db72f71e38ff3e8305a000000000000000000000000089b4ab1ef20763630df9743acf155865600daff2b8a00000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f89b94672a95c8928c8450b594186cf7954ec269626a2df863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa000000000000000000000000089b4ab1ef20763630df9743acf155865600daff2a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000de0b6b3a7640000f9013a94eda338e4dc46038493b885327842fd3e301cab39e1a05e9ae1d7c484f74d554a503aa825e823725531d97e784dd9b1aacdb58d1f7076b90100000000000000000000000000b1185ede04202fe62d38f5db72f71e38ff3e830500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000570e0189b4ab1ef20763630df9743acf155865600daff200d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d000064a7b3b6e00d000000000000000000000000000000000000000000000000000000000000000000").to_vec()],
162+
),
163+
},
164+
},
165+
)
166+
}
167+
168+
impl_benchmark_test_suite!(
169+
IncentivizedInboundChannel,
170+
crate::inbound::test::new_tester(Default::default()),
171+
crate::inbound::test::Test,
172+
);

parachain/pallets/incentivized-channel/src/inbound/mod.rs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use frame_support::{
44
traits::{Currency, Get, ExistenceRequirement::KeepAlive, WithdrawReasons, Imbalance},
55
storage::StorageValue,
66
log,
7+
weights::Weight,
78
};
89
use frame_system::{self as system, ensure_signed};
910
use sp_core::{U256, H160};
@@ -18,6 +19,8 @@ use envelope::Envelope;
1819

1920
use sp_runtime::{Perbill, traits::{Zero, Convert}};
2021

22+
mod benchmarking;
23+
2124
#[cfg(test)]
2225
mod test;
2326

@@ -26,6 +29,16 @@ mod envelope;
2629
type BalanceOf<T> = <<T as Config>::Currency as Currency<<T as frame_system::Config>::AccountId>>::Balance;
2730
type PositiveImbalanceOf<T> = <<T as Config>::Currency as Currency<<T as frame_system::Config>::AccountId>>::PositiveImbalance;
2831

32+
/// Weight functions needed for this pallet.
33+
pub trait WeightInfo {
34+
fn submit() -> Weight;
35+
}
36+
37+
impl WeightInfo for () {
38+
fn submit() -> Weight { 0 }
39+
}
40+
41+
2942
pub trait Config: system::Config {
3043
type Event: From<Event> + Into<<Self as system::Config>::Event>;
3144

@@ -44,6 +57,9 @@ pub trait Config: system::Config {
4457
type TreasuryAccount: Get<Self::AccountId>;
4558

4659
type FeeConverter: Convert<U256, BalanceOf<Self>>;
60+
61+
/// Weight information for extrinsics in this pallet
62+
type WeightInfo: WeightInfo;
4763
}
4864

4965
decl_storage! {
@@ -79,7 +95,7 @@ decl_module! {
7995

8096
fn deposit_event() = default;
8197

82-
#[weight = 0]
98+
#[weight = T::WeightInfo::submit()]
8399
pub fn submit(origin, message: Message) -> DispatchResult {
84100
let relayer = ensure_signed(origin)?;
85101
// submit message to verifier for verification

parachain/pallets/incentivized-channel/src/inbound/test.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ impl incentivized_inbound_channel::Config for Test {
138138
type SourceAccount = SourceAccount;
139139
type TreasuryAccount = TreasuryAccount;
140140
type FeeConverter = FeeConverter<Self>;
141+
type WeightInfo = ();
141142
}
142143

143144
pub fn new_tester(source_channel: H160) -> sp_io::TestExternalities {

0 commit comments

Comments
 (0)