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 {
26 after_genesis: false,
27 }
28 }
29
30 pub fn after_genesis() -> Self {
32 Config {
33 after_genesis: true,
34 }
35 }
36
37 pub fn max_ops(&self) -> usize {
39 if self.after_genesis {
40 i32::MAX as usize
41 } else {
42 MAX_OPS_BEFORE_GENESIS
43 }
44 }
45
46 pub fn max_stack_size(&self) -> usize {
48 if self.after_genesis {
49 i32::MAX as usize
50 } else {
51 MAX_STACK_SIZE_BEFORE_GENESIS
52 }
53 }
54
55 pub fn max_script_size(&self) -> usize {
57 if self.after_genesis {
58 i32::MAX as usize
59 } else {
60 MAX_SCRIPT_SIZE_BEFORE_GENESIS
61 }
62 }
63
64 pub fn max_script_element_size(&self) -> usize {
66 if self.after_genesis {
67 i32::MAX as usize
68 } else {
69 MAX_SCRIPT_ELEMENT_SIZE_BEFORE_GENESIS
70 }
71 }
72
73 pub fn max_script_number_length(&self) -> usize {
75 if self.after_genesis {
76 750 * 1000
77 } else {
78 MAX_SCRIPT_NUMBER_LENGTH_BEFORE_GENESIS
79 }
80 }
81
82 pub fn max_pub_keys_per_multisig(&self) -> usize {
84 if self.after_genesis {
85 i32::MAX as usize
86 } else {
87 MAX_PUB_KEYS_PER_MULTISIG_BEFORE_GENESIS
88 }
89 }
90}