@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,75 +1,72 @@
1
- import { Fr } from '@aztec/circuits.js';
1
+ import { type Fr } from '@aztec/circuits.js';
2
2
  import type { AvmContext } from '../avm_context.js';
3
3
  import type { AvmExecutionEnvironment } from '../avm_execution_environment.js';
4
- import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
5
- import { Instruction } from './instruction.js';
6
- declare abstract class GetterInstruction extends Instruction {
7
- protected indirect: number;
8
- protected dstOffset: number;
9
- static readonly wireFormat: OperandType[];
10
- constructor(indirect: number, dstOffset: number);
11
- execute(context: AvmContext): Promise<void>;
12
- protected abstract getIt(env: AvmExecutionEnvironment): Fr | number | bigint;
4
+ import { type MemoryValue } from '../avm_memory_types.js';
5
+ import { Opcode } from '../serialization/instruction_serialization.js';
6
+ import { GetterInstruction } from './instruction_impl.js';
7
+ declare abstract class EnvironmentGetterInstruction extends GetterInstruction {
8
+ protected getValue(context: AvmContext): MemoryValue;
9
+ protected abstract getEnvironmentValue(env: AvmExecutionEnvironment): Fr | number | bigint;
13
10
  }
14
- export declare class Address extends GetterInstruction {
11
+ export declare class Address extends EnvironmentGetterInstruction {
15
12
  static type: string;
16
13
  static readonly opcode: Opcode;
17
- protected getIt(env: AvmExecutionEnvironment): import("@aztec/circuits.js").AztecAddress;
14
+ protected getEnvironmentValue(env: AvmExecutionEnvironment): import("@aztec/circuits.js").AztecAddress;
18
15
  }
19
- export declare class StorageAddress extends GetterInstruction {
16
+ export declare class StorageAddress extends EnvironmentGetterInstruction {
20
17
  static type: string;
21
18
  static readonly opcode: Opcode;
22
- protected getIt(env: AvmExecutionEnvironment): import("@aztec/circuits.js").AztecAddress;
19
+ protected getEnvironmentValue(env: AvmExecutionEnvironment): import("@aztec/circuits.js").AztecAddress;
23
20
  }
24
- export declare class Sender extends GetterInstruction {
21
+ export declare class Sender extends EnvironmentGetterInstruction {
25
22
  static type: string;
26
23
  static readonly opcode: Opcode;
27
- protected getIt(env: AvmExecutionEnvironment): import("@aztec/circuits.js").AztecAddress;
24
+ protected getEnvironmentValue(env: AvmExecutionEnvironment): import("@aztec/circuits.js").AztecAddress;
28
25
  }
29
- export declare class Origin extends GetterInstruction {
26
+ export declare class Origin extends EnvironmentGetterInstruction {
30
27
  static type: string;
31
28
  static readonly opcode: Opcode;
32
- protected getIt(env: AvmExecutionEnvironment): import("@aztec/circuits.js").AztecAddress;
29
+ protected getEnvironmentValue(env: AvmExecutionEnvironment): import("@aztec/circuits.js").AztecAddress;
33
30
  }
34
- export declare class FeePerL1Gas extends GetterInstruction {
31
+ export declare class FeePerL1Gas extends EnvironmentGetterInstruction {
35
32
  static type: string;
36
33
  static readonly opcode: Opcode;
37
- protected getIt(env: AvmExecutionEnvironment): Fr;
34
+ protected getEnvironmentValue(env: AvmExecutionEnvironment): Fr;
38
35
  }
39
- export declare class FeePerL2Gas extends GetterInstruction {
36
+ export declare class FeePerL2Gas extends EnvironmentGetterInstruction {
40
37
  static type: string;
41
38
  static readonly opcode: Opcode;
42
- protected getIt(env: AvmExecutionEnvironment): Fr;
39
+ protected getEnvironmentValue(env: AvmExecutionEnvironment): Fr;
43
40
  }
44
- export declare class FeePerDAGas extends GetterInstruction {
41
+ export declare class FeePerDAGas extends EnvironmentGetterInstruction {
45
42
  static type: string;
46
43
  static readonly opcode: Opcode;
47
- protected getIt(env: AvmExecutionEnvironment): Fr;
44
+ protected getEnvironmentValue(env: AvmExecutionEnvironment): Fr;
48
45
  }
49
- export declare class Portal extends GetterInstruction {
46
+ export declare class Portal extends EnvironmentGetterInstruction {
50
47
  static type: string;
51
48
  static readonly opcode: Opcode;
52
- protected getIt(env: AvmExecutionEnvironment): Fr;
49
+ protected getEnvironmentValue(env: AvmExecutionEnvironment): Fr;
53
50
  }
54
- export declare class ChainId extends GetterInstruction {
51
+ export declare class ChainId extends EnvironmentGetterInstruction {
55
52
  static type: string;
56
53
  static readonly opcode: Opcode;
57
- protected getIt(env: AvmExecutionEnvironment): Fr;
54
+ protected getEnvironmentValue(env: AvmExecutionEnvironment): Fr;
58
55
  }
59
- export declare class Version extends GetterInstruction {
56
+ export declare class Version extends EnvironmentGetterInstruction {
60
57
  static type: string;
61
58
  static readonly opcode: Opcode;
62
- protected getIt(env: AvmExecutionEnvironment): Fr;
59
+ protected getEnvironmentValue(env: AvmExecutionEnvironment): Fr;
63
60
  }
64
- export declare class BlockNumber extends GetterInstruction {
61
+ export declare class BlockNumber extends EnvironmentGetterInstruction {
65
62
  static type: string;
66
63
  static readonly opcode: Opcode;
67
- protected getIt(env: AvmExecutionEnvironment): Fr;
64
+ protected getEnvironmentValue(env: AvmExecutionEnvironment): Fr;
68
65
  }
69
- export declare class Timestamp extends GetterInstruction {
66
+ export declare class Timestamp extends EnvironmentGetterInstruction {
70
67
  static type: string;
71
68
  static readonly opcode: Opcode;
72
- protected getIt(env: AvmExecutionEnvironment): Fr;
69
+ protected getEnvironmentValue(env: AvmExecutionEnvironment): Fr;
73
70
  }
74
71
  export {};
75
72
  //# sourceMappingURL=environment_getters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"environment_getters.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/environment_getters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"environment_getters.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/environment_getters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAS,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,+CAA+C,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,uBAAe,4BAA6B,SAAQ,iBAAiB;IACnE,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,WAAW;IAIpD,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,EAAE,uBAAuB,GAAG,EAAE,GAAG,MAAM,GAAG,MAAM;CAC3F;AAED,qBAAa,OAAQ,SAAQ,4BAA4B;IACvD,MAAM,CAAC,IAAI,EAAE,MAAM,CAAa;IAChC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAkB;IAEhD,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,uBAAuB;CAG3D;AAED,qBAAa,cAAe,SAAQ,4BAA4B;IAC9D,MAAM,CAAC,IAAI,EAAE,MAAM,CAAoB;IACvC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAyB;IAEvD,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,uBAAuB;CAG3D;AAED,qBAAa,MAAO,SAAQ,4BAA4B;IACtD,MAAM,CAAC,IAAI,EAAE,MAAM,CAAY;IAC/B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAiB;IAE/C,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,uBAAuB;CAG3D;AAED,qBAAa,MAAO,SAAQ,4BAA4B;IACtD,MAAM,CAAC,IAAI,EAAE,MAAM,CAAY;IAC/B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAiB;IAE/C,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,uBAAuB;CAG3D;AAED,qBAAa,WAAY,SAAQ,4BAA4B;IAC3D,MAAM,CAAC,IAAI,EAAE,MAAM,CAAiB;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAsB;IAEpD,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,uBAAuB;CAG3D;AAED,qBAAa,WAAY,SAAQ,4BAA4B;IAC3D,MAAM,CAAC,IAAI,EAAE,MAAM,CAAiB;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAsB;IAEpD,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,uBAAuB;CAG3D;AAED,qBAAa,WAAY,SAAQ,4BAA4B;IAC3D,MAAM,CAAC,IAAI,EAAE,MAAM,CAAiB;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAsB;IAEpD,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,uBAAuB;CAG3D;AAED,qBAAa,MAAO,SAAQ,4BAA4B;IACtD,MAAM,CAAC,IAAI,EAAE,MAAM,CAAY;IAC/B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAiB;IAE/C,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,uBAAuB;CAG3D;AAED,qBAAa,OAAQ,SAAQ,4BAA4B;IACvD,MAAM,CAAC,IAAI,EAAE,MAAM,CAAa;IAChC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAkB;IAEhD,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,uBAAuB;CAG3D;AAED,qBAAa,OAAQ,SAAQ,4BAA4B;IACvD,MAAM,CAAC,IAAI,EAAE,MAAM,CAAa;IAChC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAkB;IAEhD,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,uBAAuB;CAG3D;AAED,qBAAa,WAAY,SAAQ,4BAA4B;IAC3D,MAAM,CAAC,IAAI,EAAE,MAAM,CAAiB;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAsB;IAEpD,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,uBAAuB;CAG3D;AAED,qBAAa,SAAU,SAAQ,4BAA4B;IACzD,MAAM,CAAC,IAAI,EAAE,MAAM,CAAe;IAClC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAoB;IAElD,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,uBAAuB;CAG3D"}
@@ -1,105 +1,96 @@
1
1
  import { Field } from '../avm_memory_types.js';
2
- import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
3
- import { Instruction } from './instruction.js';
4
- class GetterInstruction extends Instruction {
5
- constructor(indirect, dstOffset) {
6
- super();
7
- this.indirect = indirect;
8
- this.dstOffset = dstOffset;
9
- }
10
- async execute(context) {
11
- const res = new Field(this.getIt(context.environment));
12
- context.machineState.memory.set(this.dstOffset, res);
13
- context.machineState.incrementPc();
2
+ import { Opcode } from '../serialization/instruction_serialization.js';
3
+ import { GetterInstruction } from './instruction_impl.js';
4
+ class EnvironmentGetterInstruction extends GetterInstruction {
5
+ getValue(context) {
6
+ return new Field(this.getEnvironmentValue(context.environment));
14
7
  }
15
8
  }
16
- // Informs (de)serialization. See Instruction.deserialize.
17
- GetterInstruction.wireFormat = [OperandType.UINT8, OperandType.UINT8, OperandType.UINT32];
18
- export class Address extends GetterInstruction {
19
- getIt(env) {
9
+ export class Address extends EnvironmentGetterInstruction {
10
+ getEnvironmentValue(env) {
20
11
  return env.address;
21
12
  }
22
13
  }
23
14
  Address.type = 'ADDRESS';
24
15
  Address.opcode = Opcode.ADDRESS;
25
- export class StorageAddress extends GetterInstruction {
26
- getIt(env) {
16
+ export class StorageAddress extends EnvironmentGetterInstruction {
17
+ getEnvironmentValue(env) {
27
18
  return env.storageAddress;
28
19
  }
29
20
  }
30
21
  StorageAddress.type = 'STORAGEADDRESS';
31
22
  StorageAddress.opcode = Opcode.STORAGEADDRESS;
32
- export class Sender extends GetterInstruction {
33
- getIt(env) {
23
+ export class Sender extends EnvironmentGetterInstruction {
24
+ getEnvironmentValue(env) {
34
25
  return env.sender;
35
26
  }
36
27
  }
37
28
  Sender.type = 'SENDER';
38
29
  Sender.opcode = Opcode.SENDER;
39
- export class Origin extends GetterInstruction {
40
- getIt(env) {
30
+ export class Origin extends EnvironmentGetterInstruction {
31
+ getEnvironmentValue(env) {
41
32
  return env.origin;
42
33
  }
43
34
  }
44
35
  Origin.type = 'ORIGIN';
45
36
  Origin.opcode = Opcode.ORIGIN;
46
- export class FeePerL1Gas extends GetterInstruction {
47
- getIt(env) {
37
+ export class FeePerL1Gas extends EnvironmentGetterInstruction {
38
+ getEnvironmentValue(env) {
48
39
  return env.feePerL1Gas;
49
40
  }
50
41
  }
51
42
  FeePerL1Gas.type = 'FEEPERL1GAS';
52
43
  FeePerL1Gas.opcode = Opcode.FEEPERL1GAS;
53
- export class FeePerL2Gas extends GetterInstruction {
54
- getIt(env) {
44
+ export class FeePerL2Gas extends EnvironmentGetterInstruction {
45
+ getEnvironmentValue(env) {
55
46
  return env.feePerL2Gas;
56
47
  }
57
48
  }
58
49
  FeePerL2Gas.type = 'FEEPERL2GAS';
59
50
  FeePerL2Gas.opcode = Opcode.FEEPERL2GAS;
60
- export class FeePerDAGas extends GetterInstruction {
61
- getIt(env) {
51
+ export class FeePerDAGas extends EnvironmentGetterInstruction {
52
+ getEnvironmentValue(env) {
62
53
  return env.feePerDaGas;
63
54
  }
64
55
  }
65
56
  FeePerDAGas.type = 'FEEPERDAGAS';
66
57
  FeePerDAGas.opcode = Opcode.FEEPERDAGAS;
67
- export class Portal extends GetterInstruction {
68
- getIt(env) {
58
+ export class Portal extends EnvironmentGetterInstruction {
59
+ getEnvironmentValue(env) {
69
60
  return env.portal.toField();
70
61
  }
71
62
  }
72
63
  Portal.type = 'PORTAL';
73
64
  Portal.opcode = Opcode.PORTAL;
74
- export class ChainId extends GetterInstruction {
75
- getIt(env) {
65
+ export class ChainId extends EnvironmentGetterInstruction {
66
+ getEnvironmentValue(env) {
76
67
  return env.globals.chainId;
77
68
  }
78
69
  }
79
70
  ChainId.type = 'CHAINID';
80
71
  ChainId.opcode = Opcode.CHAINID;
81
- export class Version extends GetterInstruction {
82
- getIt(env) {
72
+ export class Version extends EnvironmentGetterInstruction {
73
+ getEnvironmentValue(env) {
83
74
  return env.globals.version;
84
75
  }
85
76
  }
86
77
  Version.type = 'VERSION';
87
78
  Version.opcode = Opcode.VERSION;
88
- export class BlockNumber extends GetterInstruction {
89
- getIt(env) {
79
+ export class BlockNumber extends EnvironmentGetterInstruction {
80
+ getEnvironmentValue(env) {
90
81
  return env.globals.blockNumber;
91
82
  }
92
83
  }
93
84
  BlockNumber.type = 'BLOCKNUMBER';
94
85
  BlockNumber.opcode = Opcode.BLOCKNUMBER;
95
- export class Timestamp extends GetterInstruction {
96
- getIt(env) {
86
+ export class Timestamp extends EnvironmentGetterInstruction {
87
+ getEnvironmentValue(env) {
97
88
  return env.globals.timestamp;
98
89
  }
99
90
  }
100
91
  Timestamp.type = 'TIMESTAMP';
101
92
  Timestamp.opcode = Opcode.TIMESTAMP;
102
- // export class Coinbase extends GetterInstruction {
93
+ // export class Coinbase extends EnvironmentGetterInstruction {
103
94
  // static type: string = 'COINBASE';
104
95
  // static numberOfOperands = 1;
105
96
  // constructor(private destOffset: number) {
@@ -112,7 +103,7 @@ Timestamp.opcode = Opcode.TIMESTAMP;
112
103
  // }
113
104
  // }
114
105
  // // TODO: are these even needed within the block? (both block gas limit variables - why does the execution env care?)
115
- // export class BlockL1GasLimit extends GetterInstruction {
106
+ // export class BlockL1GasLimit extends EnvironmentGetterInstruction {
116
107
  // static type: string = 'BLOCKL1GASLIMIT';
117
108
  // static numberOfOperands = 1;
118
109
  // constructor(private destOffset: number) {
@@ -124,7 +115,7 @@ Timestamp.opcode = Opcode.TIMESTAMP;
124
115
  // this.incrementPc(machineState);
125
116
  // }
126
117
  // }
127
- // export class BlockL2GasLimit extends GetterInstruction {
118
+ // export class BlockL2GasLimit extends EnvironmentGetterInstruction {
128
119
  // static type: string = 'BLOCKL2GASLIMIT';
129
120
  // static numberOfOperands = 1;
130
121
  // constructor(private destOffset: number) {
@@ -136,7 +127,7 @@ Timestamp.opcode = Opcode.TIMESTAMP;
136
127
  // this.incrementPc(machineState);
137
128
  // }
138
129
  // }
139
- // export class BlockDAGasLimit extends GetterInstruction {
130
+ // export class BlockDAGasLimit extends EnvironmentGetterInstruction {
140
131
  // static type: string = 'BLOCKDAGASLIMIT';
141
132
  // static numberOfOperands = 1;
142
133
  // constructor(private destOffset: number) {
@@ -148,4 +139,4 @@ Timestamp.opcode = Opcode.TIMESTAMP;
148
139
  // this.incrementPc(machineState);
149
140
  // }
150
141
  // }
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnRfZ2V0dGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vb3Bjb2Rlcy9lbnZpcm9ubWVudF9nZXR0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvQyxNQUFlLGlCQUFrQixTQUFRLFdBQVc7SUFJbEQsWUFBc0IsUUFBZ0IsRUFBWSxTQUFpQjtRQUNqRSxLQUFLLEVBQUUsQ0FBQztRQURZLGFBQVEsR0FBUixRQUFRLENBQVE7UUFBWSxjQUFTLEdBQVQsU0FBUyxDQUFRO0lBRW5FLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQW1CO1FBQy9CLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDdkQsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDckQsT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQyxDQUFDOztBQVhELDBEQUEwRDtBQUMxQyw0QkFBVSxHQUFrQixDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7QUFlekcsTUFBTSxPQUFPLE9BQVEsU0FBUSxpQkFBaUI7SUFJbEMsS0FBSyxDQUFDLEdBQTRCO1FBQzFDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQztJQUNyQixDQUFDOztBQUxNLFlBQUksR0FBVyxTQUFTLENBQUM7QUFDaEIsY0FBTSxHQUFXLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFPbEQsTUFBTSxPQUFPLGNBQWUsU0FBUSxpQkFBaUI7SUFJekMsS0FBSyxDQUFDLEdBQTRCO1FBQzFDLE9BQU8sR0FBRyxDQUFDLGNBQWMsQ0FBQztJQUM1QixDQUFDOztBQUxNLG1CQUFJLEdBQVcsZ0JBQWdCLENBQUM7QUFDdkIscUJBQU0sR0FBVyxNQUFNLENBQUMsY0FBYyxDQUFDO0FBT3pELE1BQU0sT0FBTyxNQUFPLFNBQVEsaUJBQWlCO0lBSWpDLEtBQUssQ0FBQyxHQUE0QjtRQUMxQyxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFDcEIsQ0FBQzs7QUFMTSxXQUFJLEdBQVcsUUFBUSxDQUFDO0FBQ2YsYUFBTSxHQUFXLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFPakQsTUFBTSxPQUFPLE1BQU8sU0FBUSxpQkFBaUI7SUFJakMsS0FBSyxDQUFDLEdBQTRCO1FBQzFDLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUNwQixDQUFDOztBQUxNLFdBQUksR0FBVyxRQUFRLENBQUM7QUFDZixhQUFNLEdBQVcsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQU9qRCxNQUFNLE9BQU8sV0FBWSxTQUFRLGlCQUFpQjtJQUl0QyxLQUFLLENBQUMsR0FBNEI7UUFDMUMsT0FBTyxHQUFHLENBQUMsV0FBVyxDQUFDO0lBQ3pCLENBQUM7O0FBTE0sZ0JBQUksR0FBVyxhQUFhLENBQUM7QUFDcEIsa0JBQU0sR0FBVyxNQUFNLENBQUMsV0FBVyxDQUFDO0FBT3RELE1BQU0sT0FBTyxXQUFZLFNBQVEsaUJBQWlCO0lBSXRDLEtBQUssQ0FBQyxHQUE0QjtRQUMxQyxPQUFPLEdBQUcsQ0FBQyxXQUFXLENBQUM7SUFDekIsQ0FBQzs7QUFMTSxnQkFBSSxHQUFXLGFBQWEsQ0FBQztBQUNwQixrQkFBTSxHQUFXLE1BQU0sQ0FBQyxXQUFXLENBQUM7QUFPdEQsTUFBTSxPQUFPLFdBQVksU0FBUSxpQkFBaUI7SUFJdEMsS0FBSyxDQUFDLEdBQTRCO1FBQzFDLE9BQU8sR0FBRyxDQUFDLFdBQVcsQ0FBQztJQUN6QixDQUFDOztBQUxNLGdCQUFJLEdBQVcsYUFBYSxDQUFDO0FBQ3BCLGtCQUFNLEdBQVcsTUFBTSxDQUFDLFdBQVcsQ0FBQztBQU90RCxNQUFNLE9BQU8sTUFBTyxTQUFRLGlCQUFpQjtJQUlqQyxLQUFLLENBQUMsR0FBNEI7UUFDMUMsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzlCLENBQUM7O0FBTE0sV0FBSSxHQUFXLFFBQVEsQ0FBQztBQUNmLGFBQU0sR0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBT2pELE1BQU0sT0FBTyxPQUFRLFNBQVEsaUJBQWlCO0lBSWxDLEtBQUssQ0FBQyxHQUE0QjtRQUMxQyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQzdCLENBQUM7O0FBTE0sWUFBSSxHQUFXLFNBQVMsQ0FBQztBQUNoQixjQUFNLEdBQVcsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQU9sRCxNQUFNLE9BQU8sT0FBUSxTQUFRLGlCQUFpQjtJQUlsQyxLQUFLLENBQUMsR0FBNEI7UUFDMUMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUM3QixDQUFDOztBQUxNLFlBQUksR0FBVyxTQUFTLENBQUM7QUFDaEIsY0FBTSxHQUFXLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFPbEQsTUFBTSxPQUFPLFdBQVksU0FBUSxpQkFBaUI7SUFJdEMsS0FBSyxDQUFDLEdBQTRCO1FBQzFDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDakMsQ0FBQzs7QUFMTSxnQkFBSSxHQUFXLGFBQWEsQ0FBQztBQUNwQixrQkFBTSxHQUFXLE1BQU0sQ0FBQyxXQUFXLENBQUM7QUFPdEQsTUFBTSxPQUFPLFNBQVUsU0FBUSxpQkFBaUI7SUFJcEMsS0FBSyxDQUFDLEdBQTRCO1FBQzFDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7SUFDL0IsQ0FBQzs7QUFMTSxjQUFJLEdBQVcsV0FBVyxDQUFDO0FBQ2xCLGdCQUFNLEdBQVcsTUFBTSxDQUFDLFNBQVMsQ0FBQztBQU9wRCxvREFBb0Q7QUFDcEQsd0NBQXdDO0FBQ3hDLG1DQUFtQztBQUVuQyxnREFBZ0Q7QUFDaEQsbUJBQW1CO0FBQ25CLFFBQVE7QUFFUiwwRkFBMEY7QUFDMUYsd0VBQXdFO0FBRXhFLDhEQUE4RDtBQUU5RCwwQ0FBMEM7QUFDMUMsUUFBUTtBQUNSLElBQUk7QUFFSix1SEFBdUg7QUFDdkgsMkRBQTJEO0FBQzNELCtDQUErQztBQUMvQyxtQ0FBbUM7QUFFbkMsZ0RBQWdEO0FBQ2hELG1CQUFtQjtBQUNuQixRQUFRO0FBRVIsMEZBQTBGO0FBQzFGLCtFQUErRTtBQUUvRSxxRUFBcUU7QUFFckUsMENBQTBDO0FBQzFDLFFBQVE7QUFDUixJQUFJO0FBRUosMkRBQTJEO0FBQzNELCtDQUErQztBQUMvQyxtQ0FBbUM7QUFFbkMsZ0RBQWdEO0FBQ2hELG1CQUFtQjtBQUNuQixRQUFRO0FBRVIsMEZBQTBGO0FBQzFGLCtFQUErRTtBQUUvRSxxRUFBcUU7QUFFckUsMENBQTBDO0FBQzFDLFFBQVE7QUFDUixJQUFJO0FBRUosMkRBQTJEO0FBQzNELCtDQUErQztBQUMvQyxtQ0FBbUM7QUFFbkMsZ0RBQWdEO0FBQ2hELG1CQUFtQjtBQUNuQixRQUFRO0FBRVIsMEZBQTBGO0FBQzFGLCtFQUErRTtBQUUvRSxxRUFBcUU7QUFFckUsMENBQTBDO0FBQzFDLFFBQVE7QUFDUixJQUFJIn0=
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnRfZ2V0dGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vb3Bjb2Rlcy9lbnZpcm9ubWVudF9nZXR0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxLQUFLLEVBQW9CLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE1BQWUsNEJBQTZCLFNBQVEsaUJBQWlCO0lBQ3pELFFBQVEsQ0FBQyxPQUFtQjtRQUNwQyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0NBR0Y7QUFFRCxNQUFNLE9BQU8sT0FBUSxTQUFRLDRCQUE0QjtJQUk3QyxtQkFBbUIsQ0FBQyxHQUE0QjtRQUN4RCxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUM7SUFDckIsQ0FBQzs7QUFMTSxZQUFJLEdBQVcsU0FBUyxDQUFDO0FBQ2hCLGNBQU0sR0FBVyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBT2xELE1BQU0sT0FBTyxjQUFlLFNBQVEsNEJBQTRCO0lBSXBELG1CQUFtQixDQUFDLEdBQTRCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLGNBQWMsQ0FBQztJQUM1QixDQUFDOztBQUxNLG1CQUFJLEdBQVcsZ0JBQWdCLENBQUM7QUFDdkIscUJBQU0sR0FBVyxNQUFNLENBQUMsY0FBYyxDQUFDO0FBT3pELE1BQU0sT0FBTyxNQUFPLFNBQVEsNEJBQTRCO0lBSTVDLG1CQUFtQixDQUFDLEdBQTRCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUNwQixDQUFDOztBQUxNLFdBQUksR0FBVyxRQUFRLENBQUM7QUFDZixhQUFNLEdBQVcsTUFBTSxDQUFDLE1B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
@@ -1,9 +1,9 @@
1
1
  import type { AvmContext } from '../avm_context.js';
2
2
  import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
3
3
  import { Instruction } from './instruction.js';
4
- export declare class Call extends Instruction {
4
+ declare abstract class ExternalCall extends Instruction {
5
5
  private indirect;
6
- private _gasOffset;
6
+ private gasOffset;
7
7
  private addrOffset;
8
8
  private argsOffset;
9
9
  private argsSize;
@@ -11,27 +11,20 @@ export declare class Call extends Instruction {
11
11
  private retSize;
12
12
  private successOffset;
13
13
  private temporaryFunctionSelectorOffset;
14
- static type: string;
15
- static readonly opcode: Opcode;
16
14
  static readonly wireFormat: OperandType[];
17
- constructor(indirect: number, _gasOffset: number, addrOffset: number, argsOffset: number, argsSize: number, retOffset: number, retSize: number, successOffset: number, temporaryFunctionSelectorOffset: number);
15
+ constructor(indirect: number, gasOffset: number, addrOffset: number, argsOffset: number, argsSize: number, retOffset: number, retSize: number, successOffset: number, temporaryFunctionSelectorOffset: number);
18
16
  execute(context: AvmContext): Promise<void>;
17
+ abstract get type(): 'CALL' | 'STATICCALL';
19
18
  }
20
- export declare class StaticCall extends Instruction {
21
- private indirect;
22
- private _gasOffset;
23
- private addrOffset;
24
- private argsOffset;
25
- private argsSize;
26
- private retOffset;
27
- private retSize;
28
- private successOffset;
29
- private temporaryFunctionSelectorOffset;
30
- static type: string;
19
+ export declare class Call extends ExternalCall {
20
+ static type: "CALL";
31
21
  static readonly opcode: Opcode;
32
- static readonly wireFormat: OperandType[];
33
- constructor(indirect: number, _gasOffset: number, addrOffset: number, argsOffset: number, argsSize: number, retOffset: number, retSize: number, successOffset: number, temporaryFunctionSelectorOffset: number);
34
- execute(context: AvmContext): Promise<void>;
22
+ get type(): "CALL";
23
+ }
24
+ export declare class StaticCall extends ExternalCall {
25
+ static type: "STATICCALL";
26
+ static readonly opcode: Opcode;
27
+ get type(): "STATICCALL";
35
28
  }
36
29
  export declare class Return extends Instruction {
37
30
  private indirect;
@@ -53,4 +46,5 @@ export declare class Revert extends Instruction {
53
46
  constructor(indirect: number, returnOffset: number, retSize: number);
54
47
  execute(context: AvmContext): Promise<void>;
55
48
  }
49
+ export {};
56
50
  //# sourceMappingURL=external_calls.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"external_calls.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/external_calls.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"external_calls.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/external_calls.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,uBAAe,YAAa,SAAQ,WAAW;IAiB3C,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,+BAA+B;IA1BzC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAYvC;gBAGQ,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EAIrB,+BAA+B,EAAE,MAAM;IAKpC,OAAO,CAAC,OAAO,EAAE,UAAU;IAyDxC,aAAoB,IAAI,IAAI,MAAM,GAAG,YAAY,CAAC;CACnD;AAED,qBAAa,IAAK,SAAQ,YAAY;IACpC,MAAM,CAAC,IAAI,SAAmB;IAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAe;IAE7C,IAAW,IAAI,WAEd;CACF;AAED,qBAAa,UAAW,SAAQ,YAAY;IAC1C,MAAM,CAAC,IAAI,eAAyB;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAqB;IAEnD,IAAW,IAAI,iBAEd;CACF;AAED,qBAAa,MAAO,SAAQ,WAAW;IAWzB,OAAO,CAAC,QAAQ;IAAU,OAAO,CAAC,YAAY;IAAU,OAAO,CAAC,QAAQ;IAVpF,MAAM,CAAC,IAAI,EAAE,MAAM,CAAY;IAC/B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAiB;IAE/C,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAKvC;gBAEkB,QAAQ,EAAE,MAAM,EAAU,YAAY,EAAE,MAAM,EAAU,QAAQ,EAAE,MAAM;IAI/E,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAYzD;AAED,qBAAa,MAAO,SAAQ,WAAW;IAWzB,OAAO,CAAC,QAAQ;IAAU,OAAO,CAAC,YAAY;IAAU,OAAO,CAAC,OAAO;IAVnF,MAAM,CAAC,IAAI,EAAE,MAAM,CAAY;IAC/B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAiB;IAE/C,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAKvC;gBAEkB,QAAQ,EAAE,MAAM,EAAU,YAAY,EAAE,MAAM,EAAU,OAAO,EAAE,MAAM;IAI9E,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAYzD"}
@@ -1,18 +1,20 @@
1
1
  import { FunctionSelector } from '@aztec/circuits.js';
2
+ import { padArrayEnd } from '@aztec/foundation/collection';
3
+ import { gasLeftToGas, sumGas } from '../avm_gas.js';
2
4
  import { Field, Uint8 } from '../avm_memory_types.js';
3
5
  import { AvmSimulator } from '../avm_simulator.js';
4
6
  import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
5
7
  import { Addressing } from './addressing_mode.js';
6
8
  import { Instruction } from './instruction.js';
7
- export class Call extends Instruction {
8
- constructor(indirect, _gasOffset /* Unused due to no formal gas implementation at this moment */, addrOffset, argsOffset, argsSize, retOffset, retSize, successOffset,
9
+ class ExternalCall extends Instruction {
10
+ constructor(indirect, gasOffset /* Unused due to no formal gas implementation at this moment */, addrOffset, argsOffset, argsSize, retOffset, retSize, successOffset,
9
11
  // Function selector is temporary since eventually public contract bytecode will be one blob
10
12
  // containing all functions, and function selector will become an application-level mechanism
11
13
  // (e.g. first few bytes of calldata + compiler-generated jump table)
12
14
  temporaryFunctionSelectorOffset) {
13
15
  super();
14
16
  this.indirect = indirect;
15
- this._gasOffset = _gasOffset;
17
+ this.gasOffset = gasOffset;
16
18
  this.addrOffset = addrOffset;
17
19
  this.argsOffset = argsOffset;
18
20
  this.argsSize = argsSize;
@@ -21,34 +23,44 @@ export class Call extends Instruction {
21
23
  this.successOffset = successOffset;
22
24
  this.temporaryFunctionSelectorOffset = temporaryFunctionSelectorOffset;
23
25
  }
24
- // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3992): there is no concept of remaining / available gas at this moment
25
26
  async execute(context) {
26
- const [_gasOffset, addrOffset, argsOffset, retOffset, successOffset] = Addressing.fromWire(this.indirect).resolve([this._gasOffset, this.addrOffset, this.argsOffset, this.retOffset, this.successOffset], context.machineState.memory);
27
- const callAddress = context.machineState.memory.getAs(addrOffset);
28
- const calldata = context.machineState.memory.getSlice(argsOffset, this.argsSize).map(f => f.toFr());
29
- const functionSelector = context.machineState.memory.getAs(this.temporaryFunctionSelectorOffset).toFr();
30
- const nestedContext = context.createNestedContractCallContext(callAddress.toFr(), calldata, FunctionSelector.fromField(functionSelector));
27
+ const memory = context.machineState.memory.track(this.type);
28
+ const [gasOffset, addrOffset, argsOffset, retOffset, successOffset] = Addressing.fromWire(this.indirect).resolve([this.gasOffset, this.addrOffset, this.argsOffset, this.retOffset, this.successOffset], memory);
29
+ const callAddress = memory.getAs(addrOffset);
30
+ const calldata = memory.getSlice(argsOffset, this.argsSize).map(f => f.toFr());
31
+ const l1Gas = memory.get(gasOffset).toNumber();
32
+ const l2Gas = memory.getAs(gasOffset + 1).toNumber();
33
+ const daGas = memory.getAs(gasOffset + 2).toNumber();
34
+ const functionSelector = memory.getAs(this.temporaryFunctionSelectorOffset).toFr();
35
+ const allocatedGas = { l1Gas, l2Gas, daGas };
36
+ const memoryOperations = { reads: this.argsSize + 5, writes: 1 + this.retSize, indirect: this.indirect };
37
+ const totalGas = sumGas(this.gasCost(memoryOperations), allocatedGas);
38
+ context.machineState.consumeGas(totalGas);
39
+ const nestedContext = context.createNestedContractCallContext(callAddress.toFr(), calldata, allocatedGas, this.type, FunctionSelector.fromField(functionSelector));
31
40
  const nestedCallResults = await new AvmSimulator(nestedContext).execute();
32
41
  const success = !nestedCallResults.reverted;
33
- // We only take as much data as was specified in the return size -> TODO: should we be reverting here
42
+ // We only take as much data as was specified in the return size and pad with zeroes if the return data is smaller
43
+ // than the specified size in order to prevent that memory to be left with garbage
34
44
  const returnData = nestedCallResults.output.slice(0, this.retSize);
35
- const convertedReturnData = returnData.map(f => new Field(f));
45
+ const convertedReturnData = padArrayEnd(returnData.map(f => new Field(f)), new Field(0), this.retSize);
36
46
  // Write our return data into memory
37
- context.machineState.memory.set(successOffset, new Uint8(success ? 1 : 0));
38
- context.machineState.memory.setSlice(retOffset, convertedReturnData);
47
+ memory.set(successOffset, new Uint8(success ? 1 : 0));
48
+ memory.setSlice(retOffset, convertedReturnData);
49
+ // Refund unused gas
50
+ context.machineState.refundGas(gasLeftToGas(nestedContext.machineState));
51
+ // TODO: Should we merge the changes from a nested call in the case of a STATIC call?
39
52
  if (success) {
40
53
  context.persistableState.acceptNestedCallState(nestedContext.persistableState);
41
54
  }
42
55
  else {
43
56
  context.persistableState.rejectNestedCallState(nestedContext.persistableState);
44
57
  }
58
+ memory.assert(memoryOperations);
45
59
  context.machineState.incrementPc();
46
60
  }
47
61
  }
48
- Call.type = 'CALL';
49
- Call.opcode = Opcode.CALL;
50
62
  // Informs (de)serialization. See Instruction.deserialize.
51
- Call.wireFormat = [
63
+ ExternalCall.wireFormat = [
52
64
  OperandType.UINT8,
53
65
  OperandType.UINT8,
54
66
  OperandType.UINT32,
@@ -61,58 +73,20 @@ Call.wireFormat = [
61
73
  /* temporary function selector */
62
74
  OperandType.UINT32,
63
75
  ];
64
- export class StaticCall extends Instruction {
65
- constructor(indirect, _gasOffset /* Unused due to no formal gas implementation at this moment */, addrOffset, argsOffset, argsSize, retOffset, retSize, successOffset, temporaryFunctionSelectorOffset) {
66
- super();
67
- this.indirect = indirect;
68
- this._gasOffset = _gasOffset;
69
- this.addrOffset = addrOffset;
70
- this.argsOffset = argsOffset;
71
- this.argsSize = argsSize;
72
- this.retOffset = retOffset;
73
- this.retSize = retSize;
74
- this.successOffset = successOffset;
75
- this.temporaryFunctionSelectorOffset = temporaryFunctionSelectorOffset;
76
+ export class Call extends ExternalCall {
77
+ get type() {
78
+ return Call.type;
76
79
  }
77
- async execute(context) {
78
- const [_gasOffset, addrOffset, argsOffset, retOffset, successOffset] = Addressing.fromWire(this.indirect).resolve([this._gasOffset, this.addrOffset, this.argsOffset, this.retOffset, this.successOffset], context.machineState.memory);
79
- const callAddress = context.machineState.memory.get(addrOffset);
80
- const calldata = context.machineState.memory.getSlice(argsOffset, this.argsSize).map(f => f.toFr());
81
- const functionSelector = context.machineState.memory.getAs(this.temporaryFunctionSelectorOffset).toFr();
82
- const nestedContext = context.createNestedContractStaticCallContext(callAddress.toFr(), calldata, FunctionSelector.fromField(functionSelector));
83
- const nestedCallResults = await new AvmSimulator(nestedContext).execute();
84
- const success = !nestedCallResults.reverted;
85
- // We only take as much data as was specified in the return size -> TODO: should we be reverting here
86
- const returnData = nestedCallResults.output.slice(0, this.retSize);
87
- const convertedReturnData = returnData.map(f => new Field(f));
88
- // Write our return data into memory
89
- context.machineState.memory.set(successOffset, new Uint8(success ? 1 : 0));
90
- context.machineState.memory.setSlice(retOffset, convertedReturnData);
91
- if (success) {
92
- context.persistableState.acceptNestedCallState(nestedContext.persistableState);
93
- }
94
- else {
95
- context.persistableState.rejectNestedCallState(nestedContext.persistableState);
96
- }
97
- context.machineState.incrementPc();
80
+ }
81
+ Call.type = 'CALL';
82
+ Call.opcode = Opcode.CALL;
83
+ export class StaticCall extends ExternalCall {
84
+ get type() {
85
+ return StaticCall.type;
98
86
  }
99
87
  }
100
88
  StaticCall.type = 'STATICCALL';
101
89
  StaticCall.opcode = Opcode.STATICCALL;
102
- // Informs (de)serialization. See Instruction.deserialize.
103
- StaticCall.wireFormat = [
104
- OperandType.UINT8,
105
- OperandType.UINT8,
106
- OperandType.UINT32,
107
- OperandType.UINT32,
108
- OperandType.UINT32,
109
- OperandType.UINT32,
110
- OperandType.UINT32,
111
- OperandType.UINT32,
112
- OperandType.UINT32,
113
- /* temporary function selector */
114
- OperandType.UINT32,
115
- ];
116
90
  export class Return extends Instruction {
117
91
  constructor(indirect, returnOffset, copySize) {
118
92
  super();
@@ -121,9 +95,13 @@ export class Return extends Instruction {
121
95
  this.copySize = copySize;
122
96
  }
123
97
  async execute(context) {
124
- const [returnOffset] = Addressing.fromWire(this.indirect).resolve([this.returnOffset], context.machineState.memory);
125
- const output = context.machineState.memory.getSlice(returnOffset, this.copySize).map(word => word.toFr());
98
+ const memoryOperations = { reads: this.copySize, indirect: this.indirect };
99
+ const memory = context.machineState.memory.track(this.type);
100
+ context.machineState.consumeGas(this.gasCost(memoryOperations));
101
+ const [returnOffset] = Addressing.fromWire(this.indirect).resolve([this.returnOffset], memory);
102
+ const output = memory.getSlice(returnOffset, this.copySize).map(word => word.toFr());
126
103
  context.machineState.return(output);
104
+ memory.assert(memoryOperations);
127
105
  }
128
106
  }
129
107
  Return.type = 'RETURN';
@@ -143,9 +121,13 @@ export class Revert extends Instruction {
143
121
  this.retSize = retSize;
144
122
  }
145
123
  async execute(context) {
146
- const [returnOffset] = Addressing.fromWire(this.indirect).resolve([this.returnOffset], context.machineState.memory);
147
- const output = context.machineState.memory.getSlice(returnOffset, this.retSize).map(word => word.toFr());
124
+ const memoryOperations = { reads: this.retSize, indirect: this.indirect };
125
+ const memory = context.machineState.memory.track(this.type);
126
+ context.machineState.consumeGas(this.gasCost(memoryOperations));
127
+ const [returnOffset] = Addressing.fromWire(this.indirect).resolve([this.returnOffset], memory);
128
+ const output = memory.getSlice(returnOffset, this.retSize).map(word => word.toFr());
148
129
  context.machineState.revert(output);
130
+ memory.assert(memoryOperations);
149
131
  }
150
132
  }
151
133
  Revert.type = 'REVERT';
@@ -157,4 +139,4 @@ Revert.wireFormat = [
157
139
  OperandType.UINT32,
158
140
  OperandType.UINT32,
159
141
  ];
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWxfY2FsbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL29wY29kZXMvZXh0ZXJuYWxfY2FsbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHdEQsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DLE1BQU0sT0FBTyxJQUFLLFNBQVEsV0FBVztJQWtCbkMsWUFDVSxRQUFnQixFQUNoQixVQUFrQixDQUFDLCtEQUErRCxFQUNsRixVQUFrQixFQUNsQixVQUFrQixFQUNsQixRQUFnQixFQUNoQixTQUFpQixFQUNqQixPQUFlLEVBQ2YsYUFBcUI7SUFDN0IsNEZBQTRGO0lBQzVGLDZGQUE2RjtJQUM3RixxRUFBcUU7SUFDN0QsK0JBQXVDO1FBRS9DLEtBQUssRUFBRSxDQUFDO1FBYkEsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDbEIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNsQixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2hCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBSXJCLG9DQUErQixHQUEvQiwrQkFBK0IsQ0FBUTtJQUdqRCxDQUFDO0lBRUQscUlBQXFJO0lBQ3JJLEtB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
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWxfY2FsbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL29wY29kZXMvZXh0ZXJuYWxfY2FsbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDcEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvQyxNQUFlLFlBQWEsU0FBUSxXQUFXO0lBZ0I3QyxZQUNVLFFBQWdCLEVBQ2hCLFNBQWlCLENBQUMsK0RBQStELEVBQ2pGLFVBQWtCLEVBQ2xCLFVBQWtCLEVBQ2xCLFFBQWdCLEVBQ2hCLFNBQWlCLEVBQ2pCLE9BQWUsRUFDZixhQUFxQjtJQUM3Qiw0RkFBNEY7SUFDNUYsNkZBQTZGO0lBQzdGLHFFQUFxRTtJQUM3RCwrQkFBdUM7UUFFL0MsS0FBSyxFQUFFLENBQUM7UUFiQSxhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2hCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNsQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixZQUFPLEdBQVAsT0FBTyxDQUFR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
@@ -1,4 +1,4 @@
1
- import { AvmContext } from '../avm_context.js';
1
+ import { type AvmContext } from '../avm_context.js';
2
2
  import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
3
3
  import { Instruction } from './instruction.js';
4
4
  export declare class Poseidon2 extends Instruction {
@@ -36,13 +36,14 @@ export declare class Sha256 extends Instruction {
36
36
  }
37
37
  export declare class Pedersen extends Instruction {
38
38
  private indirect;
39
+ private genIndexOffset;
39
40
  private dstOffset;
40
41
  private messageOffset;
41
42
  private messageSizeOffset;
42
43
  static type: string;
43
44
  static readonly opcode: Opcode;
44
45
  static readonly wireFormat: OperandType[];
45
- constructor(indirect: number, dstOffset: number, messageOffset: number, messageSizeOffset: number);
46
+ constructor(indirect: number, genIndexOffset: number, dstOffset: number, messageOffset: number, messageSizeOffset: number);
46
47
  execute(context: AvmContext): Promise<void>;
47
48
  }
48
49
  //# sourceMappingURL=hashing.d.ts.map