iota_config/
verifier_signing_config.rs1use move_vm_config::verifier::MeterConfig;
6use serde::{Deserialize, Serialize};
7
8pub const DEFAULT_MAX_PER_FUN_METER_UNITS: usize = 2_200_000;
10pub const DEFAULT_MAX_PER_MOD_METER_UNITS: usize = 2_200_000;
11pub const DEFAULT_MAX_PER_PKG_METER_UNITS: usize = 2_200_000;
12
13pub const DEFAULT_MAX_BACK_EDGES_PER_FUNCTION: usize = 10_000;
14pub const DEFAULT_MAX_BACK_EDGES_PER_MODULE: usize = 10_000;
15
16#[derive(Clone, Debug, Default, Deserialize, Serialize)]
21#[serde(rename_all = "kebab-case")]
22pub struct VerifierSigningConfig {
23 #[serde(default)]
24 max_per_fun_meter_units: Option<usize>,
25 #[serde(default)]
26 max_per_mod_meter_units: Option<usize>,
27 #[serde(default)]
28 max_per_pkg_meter_units: Option<usize>,
29
30 #[serde(default)]
31 max_back_edges_per_function: Option<usize>,
32 #[serde(default)]
33 max_back_edges_per_module: Option<usize>,
34}
35
36impl VerifierSigningConfig {
37 pub fn max_per_fun_meter_units(&self) -> usize {
38 self.max_per_fun_meter_units
39 .unwrap_or(DEFAULT_MAX_PER_FUN_METER_UNITS)
40 }
41
42 pub fn max_per_mod_meter_units(&self) -> usize {
43 self.max_per_mod_meter_units
44 .unwrap_or(DEFAULT_MAX_PER_MOD_METER_UNITS)
45 }
46
47 pub fn max_per_pkg_meter_units(&self) -> usize {
48 self.max_per_pkg_meter_units
49 .unwrap_or(DEFAULT_MAX_PER_PKG_METER_UNITS)
50 }
51
52 pub fn max_back_edges_per_function(&self) -> usize {
53 self.max_back_edges_per_function
54 .unwrap_or(DEFAULT_MAX_BACK_EDGES_PER_FUNCTION)
55 }
56
57 pub fn max_back_edges_per_module(&self) -> usize {
58 self.max_back_edges_per_module
59 .unwrap_or(DEFAULT_MAX_BACK_EDGES_PER_MODULE)
60 }
61
62 pub fn limits_for_signing(&self) -> (usize, usize) {
64 (
65 self.max_back_edges_per_function(),
66 self.max_back_edges_per_module(),
67 )
68 }
69
70 pub fn meter_config_for_signing(&self) -> MeterConfig {
73 MeterConfig {
74 max_per_fun_meter_units: Some(self.max_per_fun_meter_units() as u128),
75 max_per_mod_meter_units: Some(self.max_per_mod_meter_units() as u128),
76 max_per_pkg_meter_units: Some(self.max_per_pkg_meter_units() as u128),
77 }
78 }
79}