sp_domains_fraud_proof/
weights.rs1use crate::fraud_proof::{FraudProof, FraudProofVariant};
2use sp_domains::InvalidBundleType;
3use sp_runtime::traits::Header as HeaderT;
4use sp_weights::Weight;
5
6pub fn fraud_proof_verification_weights<Number, Hash, DomainHeader: HeaderT, MmrHash>(
7 fp: &FraudProof<Number, Hash, DomainHeader, MmrHash>,
8) -> Weight {
9 let mut weight = match &fp.proof {
10 FraudProofVariant::InvalidStateTransition(_) => {
11 invalid_state_transition_proof_verification()
12 }
13 FraudProofVariant::ValidBundle(_) => valid_bundle_proof_verification(),
14 FraudProofVariant::InvalidExtrinsicsRoot(_) => invalid_domain_extrinsics_root_fraud_proof(),
15 FraudProofVariant::InvalidDomainBlockHash(_) => {
16 invalid_domain_block_hash_fraud_proof_verification()
17 }
18 FraudProofVariant::InvalidBlockFees(_) => invalid_block_fees_fraud_proof_verification(),
19 FraudProofVariant::InvalidTransfers(_) => invalid_transfers_fraud_proof_verification(),
20 FraudProofVariant::InvalidBundles(p) => match p.invalid_bundle_type {
21 InvalidBundleType::UndecodableTx(_) => {
22 invalid_bundle_undecodable_tx_fraud_proof_verification()
23 }
24 InvalidBundleType::OutOfRangeTx(_) => {
25 invalid_bundle_out_of_range_tx_fraud_proof_verification()
26 }
27 InvalidBundleType::IllegalTx(_) => invalid_bundle_illegal_tx_fraud_proof_verification(),
28 InvalidBundleType::InvalidXDM(_) => {
29 invalid_bundle_invalid_xdm_fraud_proof_verification()
30 }
31 InvalidBundleType::InherentExtrinsic(_) => {
32 invalid_bundle_inherent_extrinsic_fraud_proof_verification()
33 }
34 InvalidBundleType::InvalidBundleWeight => {
35 invalid_bundle_weight_fraud_proof_verification()
36 }
37 },
38 #[cfg(any(feature = "std", feature = "runtime-benchmarks"))]
39 FraudProofVariant::Dummy => Weight::zero(),
40 };
41 if fp.maybe_mmr_proof.is_some() {
42 weight = weight.saturating_add(consensus_state_root_mmr_proof_verification());
43 }
44 if fp.maybe_domain_runtime_code_proof.is_some() {
45 weight = weight.saturating_add(domain_runtime_code_proof_verification());
46 }
47 weight
48}
49
50fn consensus_state_root_mmr_proof_verification() -> Weight {
51 Weight::from_parts(2_022_700, 0)
54}
55
56fn domain_runtime_code_proof_verification() -> Weight {
57 Weight::from_parts(925_650_000, 0)
60}
61
62fn invalid_state_transition_proof_verification() -> Weight {
63 Weight::from_parts(359_040_000, 0)
66}
67
68fn valid_bundle_proof_verification() -> Weight {
69 Weight::from_parts(754_330_000, 0)
72}
73
74fn invalid_domain_extrinsics_root_fraud_proof() -> Weight {
75 Weight::from_parts(1_495_800_000, 0)
78}
79
80fn invalid_domain_block_hash_fraud_proof_verification() -> Weight {
81 Weight::from_parts(5_929_100, 0)
84}
85
86fn invalid_block_fees_fraud_proof_verification() -> Weight {
87 Weight::from_parts(746_860_000, 0)
90}
91
92fn invalid_transfers_fraud_proof_verification() -> Weight {
93 Weight::from_parts(744_740_000, 0)
96}
97
98fn invalid_bundle_undecodable_tx_fraud_proof_verification() -> Weight {
99 Weight::from_parts(751_320_000, 0)
102}
103
104fn invalid_bundle_out_of_range_tx_fraud_proof_verification() -> Weight {
105 Weight::from_parts(745_380_000, 0)
108}
109
110fn invalid_bundle_illegal_tx_fraud_proof_verification() -> Weight {
111 Weight::from_parts(198_720_000, 0)
114}
115
116fn invalid_bundle_invalid_xdm_fraud_proof_verification() -> Weight {
117 Weight::from_parts(750_950_000, 0)
120}
121
122fn invalid_bundle_inherent_extrinsic_fraud_proof_verification() -> Weight {
123 Weight::from_parts(746_340_000, 0)
126}
127
128fn invalid_bundle_weight_fraud_proof_verification() -> Weight {
129 Weight::from_parts(761_690_000, 0)
132}