Skip to content

Commit a4bc726

Browse files
authored
Merge pull request #2533 from opentensor/mev-shield-v2-on-initialize
MEV V2 infrastructure
2 parents 1ce8574 + d269bbe commit a4bc726

File tree

13 files changed

+1837
-582
lines changed

13 files changed

+1837
-582
lines changed

eco-tests/src/mock.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@ impl pallet_balances::Config for Test {
8888
impl pallet_shield::Config for Test {
8989
type AuthorityId = sp_core::sr25519::Public;
9090
type FindAuthors = ();
91+
type RuntimeCall = RuntimeCall;
92+
type ExtrinsicDecryptor = ();
9193
type WeightInfo = ();
9294
}
9395

pallets/proxy/src/weights.rs

Lines changed: 111 additions & 111 deletions
Large diffs are not rendered by default.

pallets/shield/src/benchmarking.rs

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,5 +188,78 @@ mod benches {
188188
}
189189
}
190190

191+
/// Worst-case `store_encrypted`: queue is nearly full (count = limit - 1),
192+
/// max-size encrypted call data (8192 bytes).
193+
#[benchmark(extra)]
194+
fn store_encrypted() {
195+
let who: T::AccountId = whitelisted_caller();
196+
197+
// Fill queue to just under the limit for worst-case read path.
198+
let limit = MaxPendingExtrinsicsLimit::<T>::get();
199+
let dummy = PendingExtrinsic::<T> {
200+
who: who.clone(),
201+
encrypted_call: BoundedVec::truncate_from(vec![0x00; 1]),
202+
submitted_at: 0u32.into(),
203+
};
204+
for i in 0..limit.saturating_sub(1) {
205+
PendingExtrinsics::<T>::insert(i, dummy.clone());
206+
}
207+
NextPendingExtrinsicIndex::<T>::put(limit.saturating_sub(1));
208+
209+
let encrypted_call: BoundedVec<u8, MaxEncryptedCallSize> =
210+
BoundedVec::truncate_from(vec![0xAB; 8192]);
211+
212+
#[extrinsic_call]
213+
store_encrypted(RawOrigin::Signed(who.clone()), encrypted_call);
214+
215+
assert_eq!(PendingExtrinsics::<T>::count(), limit);
216+
}
217+
218+
/// Benchmark `set_max_pending_extrinsics_number`: root origin, single storage write.
219+
#[benchmark]
220+
fn set_max_pending_extrinsics_number() {
221+
let value: u32 = 500;
222+
223+
#[extrinsic_call]
224+
set_max_pending_extrinsics_number(RawOrigin::Root, value);
225+
226+
assert_eq!(MaxPendingExtrinsicsLimit::<T>::get(), value);
227+
}
228+
229+
/// Benchmark `set_on_initialize_weight`: root origin, single storage write.
230+
/// Uses the maximum allowed value for worst-case.
231+
#[benchmark]
232+
fn set_on_initialize_weight() {
233+
let value: u64 = MAX_ON_INITIALIZE_WEIGHT;
234+
235+
#[extrinsic_call]
236+
set_on_initialize_weight(RawOrigin::Root, value);
237+
238+
assert_eq!(OnInitializeWeight::<T>::get(), value);
239+
}
240+
241+
/// Benchmark `set_stored_extrinsic_lifetime`: root origin, single storage write.
242+
#[benchmark]
243+
fn set_stored_extrinsic_lifetime() {
244+
let value: u32 = 100;
245+
246+
#[extrinsic_call]
247+
set_stored_extrinsic_lifetime(RawOrigin::Root, value);
248+
249+
assert_eq!(ExtrinsicLifetime::<T>::get(), value);
250+
}
251+
252+
/// Benchmark `set_max_extrinsic_weight`: root origin, single storage write.
253+
/// Uses the maximum allowed value for worst-case.
254+
#[benchmark]
255+
fn set_max_extrinsic_weight() {
256+
let value: u64 = MAX_ON_INITIALIZE_WEIGHT;
257+
258+
#[extrinsic_call]
259+
set_max_extrinsic_weight(RawOrigin::Root, value);
260+
261+
assert_eq!(MaxExtrinsicWeight::<T>::get(), value);
262+
}
263+
191264
impl_benchmark_test_suite!(Pallet, crate::mock::new_test_ext(), crate::mock::Test);
192265
}

0 commit comments

Comments
 (0)