@aztec/simulator 0.32.0 → 0.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/README.md +5 -3
  2. package/dest/acvm/acvm.d.ts +5 -5
  3. package/dest/acvm/acvm.d.ts.map +1 -1
  4. package/dest/acvm/acvm_types.d.ts +1 -1
  5. package/dest/acvm/acvm_types.d.ts.map +1 -1
  6. package/dest/acvm/deserialize.d.ts +1 -1
  7. package/dest/acvm/deserialize.d.ts.map +1 -1
  8. package/dest/acvm/oracle/index.d.ts +1 -2
  9. package/dest/acvm/oracle/index.d.ts.map +1 -1
  10. package/dest/acvm/oracle/index.js +1 -2
  11. package/dest/acvm/oracle/oracle.d.ts +2 -2
  12. package/dest/acvm/oracle/oracle.d.ts.map +1 -1
  13. package/dest/acvm/oracle/oracle.js +2 -3
  14. package/dest/acvm/oracle/typed_oracle.d.ts +6 -6
  15. package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
  16. package/dest/acvm/serialize.d.ts +4 -4
  17. package/dest/acvm/serialize.d.ts.map +1 -1
  18. package/dest/acvm/serialize.js +1 -1
  19. package/dest/avm/avm_context.d.ts +8 -18
  20. package/dest/avm/avm_context.d.ts.map +1 -1
  21. package/dest/avm/avm_context.js +10 -22
  22. package/dest/avm/avm_execution_environment.d.ts +4 -4
  23. package/dest/avm/avm_execution_environment.d.ts.map +1 -1
  24. package/dest/avm/avm_execution_environment.js +1 -1
  25. package/dest/avm/avm_gas.d.ts +71 -0
  26. package/dest/avm/avm_gas.d.ts.map +1 -0
  27. package/dest/avm/avm_gas.js +161 -0
  28. package/dest/avm/avm_machine_state.d.ts +5 -3
  29. package/dest/avm/avm_machine_state.d.ts.map +1 -1
  30. package/dest/avm/avm_machine_state.js +8 -2
  31. package/dest/avm/avm_memory_types.d.ts +54 -2
  32. package/dest/avm/avm_memory_types.d.ts.map +1 -1
  33. package/dest/avm/avm_memory_types.js +95 -2
  34. package/dest/avm/avm_message_call_result.d.ts +1 -1
  35. package/dest/avm/avm_message_call_result.d.ts.map +1 -1
  36. package/dest/avm/avm_simulator.d.ts.map +1 -1
  37. package/dest/avm/avm_simulator.js +10 -8
  38. package/dest/avm/errors.d.ts +1 -1
  39. package/dest/avm/errors.d.ts.map +1 -1
  40. package/dest/avm/fixtures/index.d.ts +1 -1
  41. package/dest/avm/fixtures/index.d.ts.map +1 -1
  42. package/dest/avm/fixtures/index.js +2 -2
  43. package/dest/avm/journal/host_storage.d.ts +1 -1
  44. package/dest/avm/journal/host_storage.d.ts.map +1 -1
  45. package/dest/avm/journal/journal.d.ts +2 -2
  46. package/dest/avm/journal/journal.d.ts.map +1 -1
  47. package/dest/avm/journal/trace.d.ts +1 -1
  48. package/dest/avm/journal/trace.d.ts.map +1 -1
  49. package/dest/avm/journal/trace_types.d.ts +1 -1
  50. package/dest/avm/journal/trace_types.d.ts.map +1 -1
  51. package/dest/avm/opcodes/accrued_substate.d.ts.map +1 -1
  52. package/dest/avm/opcodes/accrued_substate.js +44 -16
  53. package/dest/avm/opcodes/addressing_mode.d.ts +5 -3
  54. package/dest/avm/opcodes/addressing_mode.d.ts.map +1 -1
  55. package/dest/avm/opcodes/addressing_mode.js +5 -1
  56. package/dest/avm/opcodes/arithmetic.d.ts +7 -3
  57. package/dest/avm/opcodes/arithmetic.d.ts.map +1 -1
  58. package/dest/avm/opcodes/arithmetic.js +27 -16
  59. package/dest/avm/opcodes/bitwise.d.ts +21 -20
  60. package/dest/avm/opcodes/bitwise.d.ts.map +1 -1
  61. package/dest/avm/opcodes/bitwise.js +43 -65
  62. package/dest/avm/opcodes/comparators.d.ts +12 -9
  63. package/dest/avm/opcodes/comparators.d.ts.map +1 -1
  64. package/dest/avm/opcodes/comparators.js +22 -32
  65. package/dest/avm/opcodes/context_getters.d.ts +20 -0
  66. package/dest/avm/opcodes/context_getters.d.ts.map +1 -0
  67. package/dest/avm/opcodes/context_getters.js +26 -0
  68. package/dest/avm/opcodes/contract.d.ts +14 -0
  69. package/dest/avm/opcodes/contract.d.ts.map +1 -0
  70. package/dest/avm/opcodes/contract.js +49 -0
  71. package/dest/avm/opcodes/control_flow.d.ts.map +1 -1
  72. package/dest/avm/opcodes/control_flow.js +12 -2
  73. package/dest/avm/opcodes/environment_getters.d.ts +31 -34
  74. package/dest/avm/opcodes/environment_getters.d.ts.map +1 -1
  75. package/dest/avm/opcodes/environment_getters.js +34 -43
  76. package/dest/avm/opcodes/external_calls.d.ts +13 -19
  77. package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
  78. package/dest/avm/opcodes/external_calls.js +50 -68
  79. package/dest/avm/opcodes/hashing.d.ts +3 -2
  80. package/dest/avm/opcodes/hashing.d.ts.map +1 -1
  81. package/dest/avm/opcodes/hashing.js +37 -18
  82. package/dest/avm/opcodes/index.d.ts +1 -0
  83. package/dest/avm/opcodes/index.d.ts.map +1 -1
  84. package/dest/avm/opcodes/index.js +2 -1
  85. package/dest/avm/opcodes/instruction.d.ts +12 -17
  86. package/dest/avm/opcodes/instruction.d.ts.map +1 -1
  87. package/dest/avm/opcodes/instruction.js +12 -22
  88. package/dest/avm/opcodes/instruction_impl.d.ts +14 -0
  89. package/dest/avm/opcodes/instruction_impl.d.ts.map +1 -1
  90. package/dest/avm/opcodes/instruction_impl.js +37 -16
  91. package/dest/avm/opcodes/memory.d.ts +4 -3
  92. package/dest/avm/opcodes/memory.d.ts.map +1 -1
  93. package/dest/avm/opcodes/memory.js +38 -19
  94. package/dest/avm/opcodes/storage.d.ts +5 -0
  95. package/dest/avm/opcodes/storage.d.ts.map +1 -1
  96. package/dest/avm/opcodes/storage.js +21 -7
  97. package/dest/avm/serialization/bytecode_serialization.d.ts.map +1 -1
  98. package/dest/avm/serialization/bytecode_serialization.js +7 -5
  99. package/dest/avm/serialization/instruction_serialization.d.ts +12 -11
  100. package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -1
  101. package/dest/avm/serialization/instruction_serialization.js +13 -12
  102. package/dest/avm/temporary_executor_migration.d.ts +6 -4
  103. package/dest/avm/temporary_executor_migration.d.ts.map +1 -1
  104. package/dest/avm/temporary_executor_migration.js +14 -3
  105. package/dest/client/client_execution_context.d.ts +11 -11
  106. package/dest/client/client_execution_context.d.ts.map +1 -1
  107. package/dest/client/client_execution_context.js +1 -1
  108. package/dest/client/db_oracle.d.ts +9 -9
  109. package/dest/client/db_oracle.d.ts.map +1 -1
  110. package/dest/client/db_oracle.js +1 -1
  111. package/dest/client/execution_note_cache.d.ts +2 -2
  112. package/dest/client/execution_note_cache.d.ts.map +1 -1
  113. package/dest/client/execution_result.d.ts +5 -5
  114. package/dest/client/execution_result.d.ts.map +1 -1
  115. package/dest/client/execution_result.js +1 -1
  116. package/dest/client/pick_notes.d.ts +1 -1
  117. package/dest/client/pick_notes.d.ts.map +1 -1
  118. package/dest/client/pick_notes.js +1 -1
  119. package/dest/client/private_execution.d.ts +5 -5
  120. package/dest/client/private_execution.d.ts.map +1 -1
  121. package/dest/client/private_execution.js +6 -2
  122. package/dest/client/simulator.d.ts +6 -6
  123. package/dest/client/simulator.d.ts.map +1 -1
  124. package/dest/client/simulator.js +1 -1
  125. package/dest/client/unconstrained_execution.d.ts +5 -5
  126. package/dest/client/unconstrained_execution.d.ts.map +1 -1
  127. package/dest/client/unconstrained_execution.js +1 -1
  128. package/dest/client/view_data_oracle.d.ts +6 -6
  129. package/dest/client/view_data_oracle.d.ts.map +1 -1
  130. package/dest/client/view_data_oracle.js +1 -1
  131. package/dest/common/errors.d.ts +1 -1
  132. package/dest/common/errors.d.ts.map +1 -1
  133. package/dest/common/errors.js +1 -1
  134. package/dest/public/db.d.ts +6 -6
  135. package/dest/public/db.d.ts.map +1 -1
  136. package/dest/public/execution.d.ts +2 -2
  137. package/dest/public/execution.d.ts.map +1 -1
  138. package/dest/public/executor.d.ts +13 -5
  139. package/dest/public/executor.d.ts.map +1 -1
  140. package/dest/public/executor.js +59 -20
  141. package/dest/public/index.d.ts +1 -1
  142. package/dest/public/index.d.ts.map +1 -1
  143. package/dest/public/public_execution_context.d.ts +7 -7
  144. package/dest/public/public_execution_context.d.ts.map +1 -1
  145. package/dest/public/public_execution_context.js +3 -3
  146. package/dest/public/state_actions.d.ts +2 -2
  147. package/dest/public/state_actions.d.ts.map +1 -1
  148. package/dest/simulator/acvm_native.d.ts +3 -3
  149. package/dest/simulator/acvm_native.d.ts.map +1 -1
  150. package/dest/simulator/acvm_wasm.d.ts +3 -3
  151. package/dest/simulator/acvm_wasm.d.ts.map +1 -1
  152. package/dest/simulator/acvm_wasm.js +2 -2
  153. package/dest/simulator/simulation_provider.d.ts +2 -2
  154. package/dest/simulator/simulation_provider.d.ts.map +1 -1
  155. package/dest/test/utils.d.ts +1 -1
  156. package/dest/test/utils.d.ts.map +1 -1
  157. package/dest/test/utils.js +1 -1
  158. package/dest/utils.d.ts +1 -1
  159. package/dest/utils.d.ts.map +1 -1
  160. package/package.json +15 -9
  161. package/src/acvm/acvm.ts +8 -8
  162. package/src/acvm/acvm_types.ts +1 -1
  163. package/src/acvm/deserialize.ts +1 -1
  164. package/src/acvm/oracle/index.ts +1 -2
  165. package/src/acvm/oracle/oracle.ts +3 -4
  166. package/src/acvm/oracle/typed_oracle.ts +18 -18
  167. package/src/acvm/serialize.ts +4 -4
  168. package/src/avm/avm_context.ts +15 -37
  169. package/src/avm/avm_execution_environment.ts +4 -4
  170. package/src/avm/{avm_gas_cost.ts → avm_gas.ts} +75 -21
  171. package/src/avm/avm_machine_state.ts +10 -3
  172. package/src/avm/avm_memory_types.ts +131 -3
  173. package/src/avm/avm_message_call_result.ts +1 -1
  174. package/src/avm/avm_simulator.ts +10 -8
  175. package/src/avm/errors.ts +1 -1
  176. package/src/avm/fixtures/index.ts +6 -1
  177. package/src/avm/journal/host_storage.ts +1 -1
  178. package/src/avm/journal/journal.ts +2 -2
  179. package/src/avm/journal/trace.ts +1 -1
  180. package/src/avm/journal/trace_types.ts +1 -1
  181. package/src/avm/opcodes/accrued_substate.ts +57 -22
  182. package/src/avm/opcodes/addressing_mode.ts +8 -3
  183. package/src/avm/opcodes/arithmetic.ts +32 -22
  184. package/src/avm/opcodes/bitwise.ts +50 -84
  185. package/src/avm/opcodes/comparators.ts +28 -43
  186. package/src/avm/opcodes/context_getters.ts +32 -0
  187. package/src/avm/opcodes/contract.ts +58 -0
  188. package/src/avm/opcodes/control_flow.ts +24 -6
  189. package/src/avm/opcodes/environment_getters.ts +36 -45
  190. package/src/avm/opcodes/external_calls.ts +65 -84
  191. package/src/avm/opcodes/hashing.ts +46 -23
  192. package/src/avm/opcodes/index.ts +1 -0
  193. package/src/avm/opcodes/instruction.ts +16 -28
  194. package/src/avm/opcodes/instruction_impl.ts +45 -15
  195. package/src/avm/opcodes/memory.ts +48 -28
  196. package/src/avm/opcodes/storage.ts +26 -12
  197. package/src/avm/serialization/bytecode_serialization.ts +6 -3
  198. package/src/avm/serialization/instruction_serialization.ts +1 -0
  199. package/src/avm/temporary_executor_migration.ts +20 -6
  200. package/src/client/client_execution_context.ts +15 -15
  201. package/src/client/db_oracle.ts +16 -10
  202. package/src/client/execution_note_cache.ts +2 -2
  203. package/src/client/execution_result.ts +9 -5
  204. package/src/client/pick_notes.ts +1 -1
  205. package/src/client/private_execution.ts +12 -6
  206. package/src/client/simulator.ts +8 -8
  207. package/src/client/unconstrained_execution.ts +5 -5
  208. package/src/client/view_data_oracle.ts +11 -11
  209. package/src/common/errors.ts +1 -1
  210. package/src/public/db.ts +6 -6
  211. package/src/public/execution.ts +10 -10
  212. package/src/public/executor.ts +78 -25
  213. package/src/public/index.ts +2 -2
  214. package/src/public/public_execution_context.ts +17 -7
  215. package/src/public/state_actions.ts +2 -2
  216. package/src/simulator/acvm_native.ts +3 -3
  217. package/src/simulator/acvm_wasm.ts +8 -4
  218. package/src/simulator/simulation_provider.ts +2 -2
  219. package/src/test/utils.ts +1 -1
  220. package/src/utils.ts +1 -1
  221. package/dest/acvm/oracle/debug.d.ts +0 -19
  222. package/dest/acvm/oracle/debug.d.ts.map +0 -1
  223. package/dest/acvm/oracle/debug.js +0 -95
  224. package/dest/avm/avm_gas_cost.d.ts +0 -322
  225. package/dest/avm/avm_gas_cost.d.ts.map +0 -1
  226. package/dest/avm/avm_gas_cost.js +0 -118
  227. package/src/acvm/oracle/debug.ts +0 -109
@@ -1,322 +0,0 @@
1
- import { TypeTag } from './avm_memory_types.js';
2
- /** Gas cost in L1, L2, and DA for a given instruction. */
3
- export type GasCost = {
4
- l1Gas: number;
5
- l2Gas: number;
6
- daGas: number;
7
- };
8
- /** Creates a new instance with all values set to zero except the ones set. */
9
- export declare function makeGasCost(gasCost: Partial<GasCost>): {
10
- l1Gas: number;
11
- l2Gas: number;
12
- daGas: number;
13
- };
14
- /** Gas cost of zero across all gas dimensions. */
15
- export declare const EmptyGasCost: {
16
- l1Gas: number;
17
- l2Gas: number;
18
- daGas: number;
19
- };
20
- /** Dimensions of gas usage: L1, L2, and DA. */
21
- export declare const GasDimensions: readonly ["l1Gas", "l2Gas", "daGas"];
22
- /** Null object to represent a gas cost that's dynamic instead of fixed for a given instruction. */
23
- export declare const DynamicGasCost: unique symbol;
24
- /** Gas costs for each instruction. */
25
- export declare const GasCosts: {
26
- readonly 0: typeof DynamicGasCost;
27
- readonly 1: typeof DynamicGasCost;
28
- readonly 2: typeof DynamicGasCost;
29
- readonly 3: typeof DynamicGasCost;
30
- readonly 4: {
31
- l1Gas: number;
32
- l2Gas: number;
33
- daGas: number;
34
- };
35
- readonly 5: {
36
- l1Gas: number;
37
- l2Gas: number;
38
- daGas: number;
39
- };
40
- readonly 6: {
41
- l1Gas: number;
42
- l2Gas: number;
43
- daGas: number;
44
- };
45
- readonly 7: {
46
- l1Gas: number;
47
- l2Gas: number;
48
- daGas: number;
49
- };
50
- readonly 8: {
51
- l1Gas: number;
52
- l2Gas: number;
53
- daGas: number;
54
- };
55
- readonly 9: {
56
- l1Gas: number;
57
- l2Gas: number;
58
- daGas: number;
59
- };
60
- readonly 10: {
61
- l1Gas: number;
62
- l2Gas: number;
63
- daGas: number;
64
- };
65
- readonly 11: {
66
- l1Gas: number;
67
- l2Gas: number;
68
- daGas: number;
69
- };
70
- readonly 12: {
71
- l1Gas: number;
72
- l2Gas: number;
73
- daGas: number;
74
- };
75
- readonly 13: {
76
- l1Gas: number;
77
- l2Gas: number;
78
- daGas: number;
79
- };
80
- readonly 14: {
81
- l1Gas: number;
82
- l2Gas: number;
83
- daGas: number;
84
- };
85
- readonly 15: {
86
- l1Gas: number;
87
- l2Gas: number;
88
- daGas: number;
89
- };
90
- readonly 16: {
91
- l1Gas: number;
92
- l2Gas: number;
93
- daGas: number;
94
- };
95
- readonly 17: {
96
- l1Gas: number;
97
- l2Gas: number;
98
- daGas: number;
99
- };
100
- readonly 18: {
101
- l1Gas: number;
102
- l2Gas: number;
103
- daGas: number;
104
- };
105
- readonly 19: {
106
- l1Gas: number;
107
- l2Gas: number;
108
- daGas: number;
109
- };
110
- readonly 20: {
111
- l1Gas: number;
112
- l2Gas: number;
113
- daGas: number;
114
- };
115
- readonly 21: {
116
- l1Gas: number;
117
- l2Gas: number;
118
- daGas: number;
119
- };
120
- readonly 22: {
121
- l1Gas: number;
122
- l2Gas: number;
123
- daGas: number;
124
- };
125
- readonly 23: {
126
- l1Gas: number;
127
- l2Gas: number;
128
- daGas: number;
129
- };
130
- readonly 24: {
131
- l1Gas: number;
132
- l2Gas: number;
133
- daGas: number;
134
- };
135
- readonly 25: {
136
- l1Gas: number;
137
- l2Gas: number;
138
- daGas: number;
139
- };
140
- readonly 26: {
141
- l1Gas: number;
142
- l2Gas: number;
143
- daGas: number;
144
- };
145
- readonly 27: {
146
- l1Gas: number;
147
- l2Gas: number;
148
- daGas: number;
149
- };
150
- readonly 28: {
151
- l1Gas: number;
152
- l2Gas: number;
153
- daGas: number;
154
- };
155
- readonly 29: {
156
- l1Gas: number;
157
- l2Gas: number;
158
- daGas: number;
159
- };
160
- readonly 30: {
161
- l1Gas: number;
162
- l2Gas: number;
163
- daGas: number;
164
- };
165
- readonly 31: {
166
- l1Gas: number;
167
- l2Gas: number;
168
- daGas: number;
169
- };
170
- readonly 32: typeof DynamicGasCost;
171
- readonly 33: {
172
- l1Gas: number;
173
- l2Gas: number;
174
- daGas: number;
175
- };
176
- readonly 34: {
177
- l1Gas: number;
178
- l2Gas: number;
179
- daGas: number;
180
- };
181
- readonly 35: {
182
- l1Gas: number;
183
- l2Gas: number;
184
- daGas: number;
185
- };
186
- readonly 36: {
187
- l1Gas: number;
188
- l2Gas: number;
189
- daGas: number;
190
- };
191
- readonly 37: {
192
- l1Gas: number;
193
- l2Gas: number;
194
- daGas: number;
195
- };
196
- readonly 38: {
197
- l1Gas: number;
198
- l2Gas: number;
199
- daGas: number;
200
- };
201
- readonly 39: {
202
- l1Gas: number;
203
- l2Gas: number;
204
- daGas: number;
205
- };
206
- readonly 40: typeof DynamicGasCost;
207
- readonly 41: {
208
- l1Gas: number;
209
- l2Gas: number;
210
- daGas: number;
211
- };
212
- readonly 42: {
213
- l1Gas: number;
214
- l2Gas: number;
215
- daGas: number;
216
- };
217
- readonly 43: {
218
- l1Gas: number;
219
- l2Gas: number;
220
- daGas: number;
221
- };
222
- readonly 44: {
223
- l1Gas: number;
224
- l2Gas: number;
225
- daGas: number;
226
- };
227
- readonly 45: {
228
- l1Gas: number;
229
- l2Gas: number;
230
- daGas: number;
231
- };
232
- readonly 46: {
233
- l1Gas: number;
234
- l2Gas: number;
235
- daGas: number;
236
- };
237
- readonly 47: {
238
- l1Gas: number;
239
- l2Gas: number;
240
- daGas: number;
241
- };
242
- readonly 48: {
243
- l1Gas: number;
244
- l2Gas: number;
245
- daGas: number;
246
- };
247
- readonly 49: {
248
- l1Gas: number;
249
- l2Gas: number;
250
- daGas: number;
251
- };
252
- readonly 50: {
253
- l1Gas: number;
254
- l2Gas: number;
255
- daGas: number;
256
- };
257
- readonly 51: {
258
- l1Gas: number;
259
- l2Gas: number;
260
- daGas: number;
261
- };
262
- readonly 52: {
263
- l1Gas: number;
264
- l2Gas: number;
265
- daGas: number;
266
- };
267
- readonly 53: {
268
- l1Gas: number;
269
- l2Gas: number;
270
- daGas: number;
271
- };
272
- readonly 54: {
273
- l1Gas: number;
274
- l2Gas: number;
275
- daGas: number;
276
- };
277
- readonly 55: {
278
- l1Gas: number;
279
- l2Gas: number;
280
- daGas: number;
281
- };
282
- readonly 56: {
283
- l1Gas: number;
284
- l2Gas: number;
285
- daGas: number;
286
- };
287
- readonly 57: {
288
- l1Gas: number;
289
- l2Gas: number;
290
- daGas: number;
291
- };
292
- readonly 58: {
293
- l1Gas: number;
294
- l2Gas: number;
295
- daGas: number;
296
- };
297
- readonly 59: {
298
- l1Gas: number;
299
- l2Gas: number;
300
- daGas: number;
301
- };
302
- readonly 60: {
303
- l1Gas: number;
304
- l2Gas: number;
305
- daGas: number;
306
- };
307
- readonly 61: {
308
- l1Gas: number;
309
- l2Gas: number;
310
- daGas: number;
311
- };
312
- };
313
- /** Constants used in base cost calculations. */
314
- export declare const GasCostConstants: {
315
- SET_COST_PER_BYTE: number;
316
- CALLDATACOPY_COST_PER_BYTE: number;
317
- ARITHMETIC_COST_PER_BYTE: number;
318
- ARITHMETIC_COST_PER_INDIRECT_ACCESS: number;
319
- };
320
- /** Returns a multiplier based on the size of the type represented by the tag. Throws on uninitialized or invalid. */
321
- export declare function getGasCostMultiplierFromTypeTag(tag: TypeTag): 2 | 1 | 16 | 4 | 32 | 8;
322
- //# sourceMappingURL=avm_gas_cost.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"avm_gas_cost.d.ts","sourceRoot":"","sources":["../../src/avm/avm_gas_cost.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGhD,0DAA0D;AAC1D,MAAM,MAAM,OAAO,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;;;;EAEpD;AAED,kDAAkD;AAClD,eAAO,MAAM,YAAY;;;;CAIxB,CAAC;AAEF,+CAA+C;AAC/C,eAAO,MAAM,aAAa,sCAAuC,CAAC;AAElE,mGAAmG;AACnG,eAAO,MAAM,cAAc,eAA2B,CAAC;AAKvD,sCAAsC;AACtC,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsEX,CAAC;AAEX,gDAAgD;AAChD,eAAO,MAAM,gBAAgB;;;;;CAK5B,CAAC;AAEF,qHAAqH;AACrH,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,OAAO,2BAkB3D"}
@@ -1,118 +0,0 @@
1
- import { TypeTag } from './avm_memory_types.js';
2
- import { Opcode } from './serialization/instruction_serialization.js';
3
- /** Creates a new instance with all values set to zero except the ones set. */
4
- export function makeGasCost(gasCost) {
5
- return { ...EmptyGasCost, ...gasCost };
6
- }
7
- /** Gas cost of zero across all gas dimensions. */
8
- export const EmptyGasCost = {
9
- l1Gas: 0,
10
- l2Gas: 0,
11
- daGas: 0,
12
- };
13
- /** Dimensions of gas usage: L1, L2, and DA. */
14
- export const GasDimensions = ['l1Gas', 'l2Gas', 'daGas'];
15
- /** Null object to represent a gas cost that's dynamic instead of fixed for a given instruction. */
16
- export const DynamicGasCost = Symbol('DynamicGasCost');
17
- /** Temporary default gas cost. We should eventually remove all usage of this variable in favor of actual gas for each opcode. */
18
- const TemporaryDefaultGasCost = { l1Gas: 0, l2Gas: 10, daGas: 0 };
19
- /** Gas costs for each instruction. */
20
- export const GasCosts = {
21
- [Opcode.ADD]: DynamicGasCost,
22
- [Opcode.SUB]: DynamicGasCost,
23
- [Opcode.MUL]: DynamicGasCost,
24
- [Opcode.DIV]: DynamicGasCost,
25
- [Opcode.FDIV]: TemporaryDefaultGasCost,
26
- [Opcode.EQ]: TemporaryDefaultGasCost,
27
- [Opcode.LT]: TemporaryDefaultGasCost,
28
- [Opcode.LTE]: TemporaryDefaultGasCost,
29
- [Opcode.AND]: TemporaryDefaultGasCost,
30
- [Opcode.OR]: TemporaryDefaultGasCost,
31
- [Opcode.XOR]: TemporaryDefaultGasCost,
32
- [Opcode.NOT]: TemporaryDefaultGasCost,
33
- [Opcode.SHL]: TemporaryDefaultGasCost,
34
- [Opcode.SHR]: TemporaryDefaultGasCost,
35
- [Opcode.CAST]: TemporaryDefaultGasCost,
36
- // Execution environment
37
- [Opcode.ADDRESS]: TemporaryDefaultGasCost,
38
- [Opcode.STORAGEADDRESS]: TemporaryDefaultGasCost,
39
- [Opcode.ORIGIN]: TemporaryDefaultGasCost,
40
- [Opcode.SENDER]: TemporaryDefaultGasCost,
41
- [Opcode.PORTAL]: TemporaryDefaultGasCost,
42
- [Opcode.FEEPERL1GAS]: TemporaryDefaultGasCost,
43
- [Opcode.FEEPERL2GAS]: TemporaryDefaultGasCost,
44
- [Opcode.FEEPERDAGAS]: TemporaryDefaultGasCost,
45
- [Opcode.CONTRACTCALLDEPTH]: TemporaryDefaultGasCost,
46
- [Opcode.CHAINID]: TemporaryDefaultGasCost,
47
- [Opcode.VERSION]: TemporaryDefaultGasCost,
48
- [Opcode.BLOCKNUMBER]: TemporaryDefaultGasCost,
49
- [Opcode.TIMESTAMP]: TemporaryDefaultGasCost,
50
- [Opcode.COINBASE]: TemporaryDefaultGasCost,
51
- [Opcode.BLOCKL1GASLIMIT]: TemporaryDefaultGasCost,
52
- [Opcode.BLOCKL2GASLIMIT]: TemporaryDefaultGasCost,
53
- [Opcode.BLOCKDAGASLIMIT]: TemporaryDefaultGasCost,
54
- [Opcode.CALLDATACOPY]: DynamicGasCost,
55
- // Gas
56
- [Opcode.L1GASLEFT]: TemporaryDefaultGasCost,
57
- [Opcode.L2GASLEFT]: TemporaryDefaultGasCost,
58
- [Opcode.DAGASLEFT]: TemporaryDefaultGasCost,
59
- // Control flow
60
- [Opcode.JUMP]: TemporaryDefaultGasCost,
61
- [Opcode.JUMPI]: TemporaryDefaultGasCost,
62
- [Opcode.INTERNALCALL]: TemporaryDefaultGasCost,
63
- [Opcode.INTERNALRETURN]: TemporaryDefaultGasCost,
64
- // Memory
65
- [Opcode.SET]: DynamicGasCost,
66
- [Opcode.MOV]: TemporaryDefaultGasCost,
67
- [Opcode.CMOV]: TemporaryDefaultGasCost,
68
- // World state
69
- [Opcode.SLOAD]: TemporaryDefaultGasCost,
70
- [Opcode.SSTORE]: TemporaryDefaultGasCost,
71
- [Opcode.NOTEHASHEXISTS]: TemporaryDefaultGasCost,
72
- [Opcode.EMITNOTEHASH]: TemporaryDefaultGasCost,
73
- [Opcode.NULLIFIEREXISTS]: TemporaryDefaultGasCost,
74
- [Opcode.EMITNULLIFIER]: TemporaryDefaultGasCost,
75
- [Opcode.L1TOL2MSGEXISTS]: TemporaryDefaultGasCost,
76
- [Opcode.HEADERMEMBER]: TemporaryDefaultGasCost,
77
- [Opcode.EMITUNENCRYPTEDLOG]: TemporaryDefaultGasCost,
78
- [Opcode.SENDL2TOL1MSG]: TemporaryDefaultGasCost,
79
- // External calls
80
- [Opcode.CALL]: TemporaryDefaultGasCost,
81
- [Opcode.STATICCALL]: TemporaryDefaultGasCost,
82
- [Opcode.DELEGATECALL]: TemporaryDefaultGasCost,
83
- [Opcode.RETURN]: TemporaryDefaultGasCost,
84
- [Opcode.REVERT]: TemporaryDefaultGasCost,
85
- // Gadgets
86
- [Opcode.KECCAK]: TemporaryDefaultGasCost,
87
- [Opcode.POSEIDON]: TemporaryDefaultGasCost,
88
- [Opcode.SHA256]: TemporaryDefaultGasCost, // temp - may be removed, but alot of contracts rely on i: TemporaryDefaultGasCost,
89
- [Opcode.PEDERSEN]: TemporaryDefaultGasCost, // temp - may be removed, but alot of contracts rely on i: TemporaryDefaultGasCost,t
90
- };
91
- /** Constants used in base cost calculations. */
92
- export const GasCostConstants = {
93
- SET_COST_PER_BYTE: 100,
94
- CALLDATACOPY_COST_PER_BYTE: 10,
95
- ARITHMETIC_COST_PER_BYTE: 10,
96
- ARITHMETIC_COST_PER_INDIRECT_ACCESS: 5,
97
- };
98
- /** Returns a multiplier based on the size of the type represented by the tag. Throws on uninitialized or invalid. */
99
- export function getGasCostMultiplierFromTypeTag(tag) {
100
- switch (tag) {
101
- case TypeTag.UINT8:
102
- return 1;
103
- case TypeTag.UINT16:
104
- return 2;
105
- case TypeTag.UINT32:
106
- return 4;
107
- case TypeTag.UINT64:
108
- return 8;
109
- case TypeTag.UINT128:
110
- return 16;
111
- case TypeTag.FIELD:
112
- return 32;
113
- case TypeTag.INVALID:
114
- case TypeTag.UNINITIALIZED:
115
- throw new Error(`Invalid tag type for gas cost multiplier: ${TypeTag[tag]}`);
116
- }
117
- }
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX2dhc19jb3N0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F2bS9hdm1fZ2FzX2Nvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQVN0RSw4RUFBOEU7QUFDOUUsTUFBTSxVQUFVLFdBQVcsQ0FBQyxPQUF5QjtJQUNuRCxPQUFPLEVBQUUsR0FBRyxZQUFZLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztBQUN6QyxDQUFDO0FBRUQsa0RBQWtEO0FBQ2xELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRztJQUMxQixLQUFLLEVBQUUsQ0FBQztJQUNSLEtBQUssRUFBRSxDQUFDO0lBQ1IsS0FBSyxFQUFFLENBQUM7Q0FDVCxDQUFDO0FBRUYsK0NBQStDO0FBQy9DLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFVLENBQUM7QUFFbEUsbUdBQW1HO0FBQ25HLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUV2RCxpSUFBaUk7QUFDakksTUFBTSx1QkFBdUIsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFFbEUsc0NBQXNDO0FBQ3RDLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRztJQUN0QixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxjQUFjO0lBQzVCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGNBQWM7SUFDNUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsY0FBYztJQUM1QixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxjQUFjO0lBQzVCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLHVCQUF1QjtJQUN0QyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSx1QkFBdUI7SUFDcEMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsdUJBQXVCO0lBQ3BDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLHVCQUF1QjtJQUNyQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSx1QkFBdUI7SUFDckMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsdUJBQXVCO0lBQ3BDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLHVCQUF1QjtJQUNyQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSx1QkFBdUI7SUFDckMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsdUJBQXVCO0lBQ3JDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLHVCQUF1QjtJQUNyQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSx1QkFBdUI7SUFDdEMsd0JBQXdCO0lBQ3hCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLHVCQUF1QjtJQUN6QyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSx1QkFBdUI7SUFDaEQsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsdUJBQXVCO0lBQ3hDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLHVCQUF1QjtJQUN4QyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSx1QkFBdUI7SUFDeEMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsdUJBQXVCO0lBQzdDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLHVCQUF1QjtJQUM3QyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSx1QkFBdUI7SUFDN0MsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsRUFBRSx1QkFBdUI7SUFDbkQsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsdUJBQXVCO0lBQ3pDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLHVCQUF1QjtJQUN6QyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSx1QkFBdUI7SUFDN0MsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsdUJBQXVCO0lBQzNDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLHVCQUF1QjtJQUMxQyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsRUFBRSx1QkFBdUI7SUFDakQsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLEVBQUUsdUJBQXVCO0lBQ2pELENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFFLHVCQUF1QjtJQUNqRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxjQUFjO0lBQ3JDLE1BQU07SUFDTixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSx1QkFBdUI7SUFDM0MsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsdUJBQXVCO0lBQzNDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLHVCQUF1QjtJQUMzQyxlQUFlO0lBQ2YsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsdUJBQXVCO0lBQ3RDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLHVCQUF1QjtJQUN2QyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSx1QkFBdUI7SUFDOUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsdUJBQXVCO0lBQ2hELFNBQVM7SUFDVCxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxjQUFjO0lBQzVCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLHVCQUF1QjtJQUNyQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSx1QkFBdUI7SUFDdEMsY0FBYztJQUNkLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLHVCQUF1QjtJQUN2QyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSx1QkFBdUI7SUFDeEMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsdUJBQXVCO0lBQ2hELENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLHVCQUF1QjtJQUM5QyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsRUFBRSx1QkFBdUI7SUFDakQsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUUsdUJBQXVCO0lBQy9DLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFFLHVCQUF1QjtJQUNqRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSx1QkFBdUI7SUFDOUMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsRUFBRSx1QkFBdUI7SUFDcEQsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUUsdUJBQXVCO0lBQy9DLGlCQUFpQjtJQUNqQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSx1QkFBdUI7SUFDdEMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsdUJBQXVCO0lBQzVDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLHVCQUF1QjtJQUM5QyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSx1QkFBdUI7SUFDeEMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsdUJBQXVCO0lBQ3hDLFVBQVU7SUFDVixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSx1QkFBdUI7SUFDeEMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsdUJBQXVCO0lBQzFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLHVCQUF1QixFQUFFLG1GQUFtRjtJQUM3SCxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSx1QkFBdUIsRUFBRSxvRkFBb0Y7Q0FDeEgsQ0FBQztBQUVYLGdEQUFnRDtBQUNoRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM5QixpQkFBaUIsRUFBRSxHQUFHO0lBQ3RCLDBCQUEwQixFQUFFLEVBQUU7SUFDOUIsd0JBQXdCLEVBQUUsRUFBRTtJQUM1QixtQ0FBbUMsRUFBRSxDQUFDO0NBQ3ZDLENBQUM7QUFFRixxSEFBcUg7QUFDckgsTUFBTSxVQUFVLCtCQUErQixDQUFDLEdBQVk7SUFDMUQsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNaLEtBQUssT0FBTyxDQUFDLEtBQUs7WUFDaEIsT0FBTyxDQUFDLENBQUM7UUFDWCxLQUFLLE9BQU8sQ0FBQyxNQUFNO1lBQ2pCLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsS0FBSyxPQUFPLENBQUMsTUFBTTtZQUNqQixPQUFPLENBQUMsQ0FBQztRQUNYLEtBQUssT0FBTyxDQUFDLE1BQU07WUFDakIsT0FBTyxDQUFDLENBQUM7UUFDWCxLQUFLLE9BQU8sQ0FBQyxPQUFPO1lBQ2xCLE9BQU8sRUFBRSxDQUFDO1FBQ1osS0FBSyxPQUFPLENBQUMsS0FBSztZQUNoQixPQUFPLEVBQUUsQ0FBQztRQUNaLEtBQUssT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUNyQixLQUFLLE9BQU8sQ0FBQyxhQUFhO1lBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakYsQ0FBQztBQUNILENBQUMifQ==
@@ -1,109 +0,0 @@
1
- import { ForeignCallInput } from '@noir-lang/acvm_js';
2
-
3
- import { ACVMField } from '../acvm_types.js';
4
-
5
- /**
6
- * Convert an array of ACVMFields to a string.
7
- *
8
- * @param msg - array of ACVMFields where each represents a single ascii character
9
- * @returns string representation of the message
10
- */
11
- export function acvmFieldMessageToString(msg: ACVMField[]): string {
12
- let msgStr = '';
13
- for (const msgChar of msg) {
14
- const asciiCode = Number(msgChar);
15
- const asciiChar = String.fromCharCode(asciiCode);
16
- msgStr = msgStr.concat(asciiChar);
17
- }
18
- // cut off string in case of preemptive null termination
19
- const nullCharIndex = msgStr.indexOf('\\0');
20
- if (nullCharIndex >= 0) {
21
- msgStr = msgStr.substring(0, nullCharIndex);
22
- }
23
- return msgStr.replaceAll('\\n', '\n').replaceAll('\\t', '\t');
24
- }
25
-
26
- /**
27
- * Format a debug string for Aztec.nr filling in `'{0}'` entries with their
28
- * corresponding values from the args array.
29
- *
30
- * @param formatStr - str of form `'this is a string with some entries like {0} and {1}'`
31
- * @param args - array of fields to fill in the string format entries with
32
- * @returns formatted string
33
- */
34
- function applyStringFormatting(formatStr: string, args: ACVMField[]): string {
35
- const matches = formatStr.match(/{\d+}/g);
36
- if (matches == null) {
37
- return formatStr;
38
- }
39
- // Get the numeric values within the curly braces, convert them to numbers,
40
- // and find the maximum value.
41
- const maxIndex = Math.max(...matches.map(match => Number(match.slice(1, -1))));
42
- const argsPadded = args.concat(Array.from({ length: Math.max(0, maxIndex - args.length) }, () => '0xBAD'));
43
-
44
- return formatStr.replace(/{(\d+)}/g, function (match, index) {
45
- return typeof args[index] != 'undefined' ? argsPadded[index] : match;
46
- });
47
- }
48
-
49
- /**
50
- * Convert an array of ACVMFields from ACVM to a formatted string.
51
- *
52
- * @param parameters - either one parameter representing a simple field or array, or two parameters when
53
- * It's a message without args or three parameters when it's a message with arguments.
54
- *
55
- * @returns formatted string
56
- */
57
- export function oracleDebugCallToFormattedStr(parameters: ForeignCallInput[]): string {
58
- if (parameters.length === 1) {
59
- return processFieldOrArray(parameters[0]);
60
- }
61
-
62
- let formatArgs: string[] = [];
63
-
64
- if (parameters.length > 2) {
65
- formatArgs = parameters[1];
66
- }
67
-
68
- const formattedMsg = applyStringFormatting(acvmFieldMessageToString(parameters[0]), formatArgs);
69
-
70
- return formattedMsg;
71
- }
72
-
73
- /**
74
- * Processes a field or an array and returns a string representation.
75
- * @param fieldOrArray - The field or array to be processed.
76
- * @returns Returns the processed string representation of the field or array.
77
- */
78
- function processFieldOrArray(fieldOrArray: string[]) {
79
- if (fieldOrArray.length === 1) {
80
- return `${fieldOrArray[0]}`;
81
- }
82
-
83
- // Check if all the elements start with 63 zero bytes
84
- // --> if yes, we have an array of bytes and we print as hex
85
- if (onlyBytes(fieldOrArray)) {
86
- const decimalArray = fieldOrArray.map(element => parseInt(element, 16));
87
- return '0x' + Buffer.from(decimalArray).toString('hex');
88
- }
89
-
90
- return '[' + fieldOrArray.join(', ') + ']';
91
- }
92
-
93
- /**
94
- * Checks if all elements in the array are valid byte representations.
95
- * @param array - The array to be checked.
96
- * @returns Returns `true` if all elements are valid byte representations, `false` otherwise.
97
- * @throws Throws an error if any element has an invalid length.
98
- */
99
- function onlyBytes(array: string[]): boolean {
100
- for (const element of array) {
101
- if (element.length != 66) {
102
- throw new Error('Invalid element length. Expected 66 chars, got ' + element.length + ' chars.');
103
- }
104
- if (!element.startsWith('0x00000000000000000000000000000000000000000000000000000000000000')) {
105
- return false;
106
- }
107
- }
108
- return true;
109
- }