bsv_script/interpreter/
config.rs1pub const MAX_OPS_BEFORE_GENESIS: usize = 500;
5pub const MAX_STACK_SIZE_BEFORE_GENESIS: usize = 1000;
7pub const MAX_SCRIPT_SIZE_BEFORE_GENESIS: usize = 10000;
9pub const MAX_SCRIPT_ELEMENT_SIZE_BEFORE_GENESIS: usize = 520;
11pub const MAX_SCRIPT_NUMBER_LENGTH_BEFORE_GENESIS: usize = 4;
13pub const MAX_PUB_KEYS_PER_MULTISIG_BEFORE_GENESIS: usize = 20;
15
16pub struct Config {
18 pub after_genesis: bool,
20}
21
22impl Config {
23 pub fn before_genesis() -> Self {
25 Config { after_genesis: false }
26 }
27
28 pub fn after_genesis() -> Self {
30 Config { after_genesis: true }
31 }
32
33 pub fn max_ops(&self) -> usize {
35 if self.after_genesis { i32::MAX as usize } else { MAX_OPS_BEFORE_GENESIS }
36 }
37
38 pub fn max_stack_size(&self) -> usize {
40 if self.after_genesis { i32::MAX as usize } else { MAX_STACK_SIZE_BEFORE_GENESIS }
41 }
42
43 pub fn max_script_size(&self) -> usize {
45 if self.after_genesis { i32::MAX as usize } else { MAX_SCRIPT_SIZE_BEFORE_GENESIS }
46 }
47
48 pub fn max_script_element_size(&self) -> usize {
50 if self.after_genesis { i32::MAX as usize } else { MAX_SCRIPT_ELEMENT_SIZE_BEFORE_GENESIS }
51 }
52
53 pub fn max_script_number_length(&self) -> usize {
55 if self.after_genesis { 750 * 1000 } else { MAX_SCRIPT_NUMBER_LENGTH_BEFORE_GENESIS }
56 }
57
58 pub fn max_pub_keys_per_multisig(&self) -> usize {
60 if self.after_genesis { i32::MAX as usize } else { MAX_PUB_KEYS_PER_MULTISIG_BEFORE_GENESIS }
61 }
62}