@aztec/simulator 0.43.0 → 0.45.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 (155) hide show
  1. package/dest/acvm/oracle/oracle.d.ts +3 -1
  2. package/dest/acvm/oracle/oracle.d.ts.map +1 -1
  3. package/dest/acvm/oracle/oracle.js +12 -6
  4. package/dest/acvm/oracle/typed_oracle.d.ts +6 -4
  5. package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
  6. package/dest/acvm/oracle/typed_oracle.js +8 -2
  7. package/dest/avm/avm_context.d.ts +1 -1
  8. package/dest/avm/avm_context.d.ts.map +1 -1
  9. package/dest/avm/avm_context.js +3 -3
  10. package/dest/avm/{avm_message_call_result.d.ts → avm_contract_call_result.d.ts} +2 -2
  11. package/dest/avm/avm_contract_call_result.d.ts.map +1 -0
  12. package/dest/avm/avm_contract_call_result.js +18 -0
  13. package/dest/avm/avm_execution_environment.d.ts +8 -10
  14. package/dest/avm/avm_execution_environment.d.ts.map +1 -1
  15. package/dest/avm/avm_execution_environment.js +15 -19
  16. package/dest/avm/avm_gas.js +2 -2
  17. package/dest/avm/avm_simulator.d.ts +4 -4
  18. package/dest/avm/avm_simulator.d.ts.map +1 -1
  19. package/dest/avm/avm_simulator.js +7 -8
  20. package/dest/avm/bytecode_utils.d.ts +5 -0
  21. package/dest/avm/bytecode_utils.d.ts.map +1 -0
  22. package/dest/avm/bytecode_utils.js +29 -0
  23. package/dest/avm/errors.js +2 -2
  24. package/dest/avm/fixtures/index.d.ts +10 -6
  25. package/dest/avm/fixtures/index.d.ts.map +1 -1
  26. package/dest/avm/fixtures/index.js +10 -17
  27. package/dest/avm/journal/journal.d.ts +56 -65
  28. package/dest/avm/journal/journal.d.ts.map +1 -1
  29. package/dest/avm/journal/journal.js +80 -117
  30. package/dest/avm/journal/nullifiers.d.ts +21 -8
  31. package/dest/avm/journal/nullifiers.d.ts.map +1 -1
  32. package/dest/avm/journal/nullifiers.js +26 -8
  33. package/dest/avm/journal/public_storage.d.ts +5 -1
  34. package/dest/avm/journal/public_storage.d.ts.map +1 -1
  35. package/dest/avm/journal/public_storage.js +11 -2
  36. package/dest/avm/opcodes/accrued_substate.d.ts +1 -2
  37. package/dest/avm/opcodes/accrued_substate.d.ts.map +1 -1
  38. package/dest/avm/opcodes/accrued_substate.js +8 -17
  39. package/dest/avm/opcodes/environment_getters.d.ts +13 -8
  40. package/dest/avm/opcodes/environment_getters.d.ts.map +1 -1
  41. package/dest/avm/opcodes/environment_getters.js +20 -13
  42. package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
  43. package/dest/avm/opcodes/external_calls.js +11 -27
  44. package/dest/avm/serialization/bytecode_serialization.d.ts.map +1 -1
  45. package/dest/avm/serialization/bytecode_serialization.js +5 -5
  46. package/dest/avm/serialization/instruction_serialization.d.ts +9 -9
  47. package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -1
  48. package/dest/avm/serialization/instruction_serialization.js +10 -10
  49. package/dest/avm/test_utils.d.ts +14 -0
  50. package/dest/avm/test_utils.d.ts.map +1 -0
  51. package/dest/avm/test_utils.js +36 -0
  52. package/dest/client/client_execution_context.d.ts +6 -4
  53. package/dest/client/client_execution_context.d.ts.map +1 -1
  54. package/dest/client/client_execution_context.js +8 -6
  55. package/dest/client/execution_note_cache.d.ts.map +1 -1
  56. package/dest/client/execution_note_cache.js +1 -1
  57. package/dest/client/execution_result.d.ts +2 -1
  58. package/dest/client/execution_result.d.ts.map +1 -1
  59. package/dest/client/execution_result.js +1 -1
  60. package/dest/client/index.d.ts +2 -0
  61. package/dest/client/index.d.ts.map +1 -1
  62. package/dest/client/index.js +3 -1
  63. package/dest/client/simulator.d.ts +3 -3
  64. package/dest/client/simulator.d.ts.map +1 -1
  65. package/dest/client/simulator.js +1 -1
  66. package/dest/client/view_data_oracle.d.ts +5 -1
  67. package/dest/client/view_data_oracle.d.ts.map +1 -1
  68. package/dest/client/view_data_oracle.js +12 -4
  69. package/dest/mocks/fixtures.d.ts +3 -3
  70. package/dest/mocks/fixtures.d.ts.map +1 -1
  71. package/dest/mocks/fixtures.js +6 -5
  72. package/dest/public/abstract_phase_manager.d.ts +1 -0
  73. package/dest/public/abstract_phase_manager.d.ts.map +1 -1
  74. package/dest/public/abstract_phase_manager.js +17 -14
  75. package/dest/public/app_logic_phase_manager.d.ts.map +1 -1
  76. package/dest/public/app_logic_phase_manager.js +2 -1
  77. package/dest/public/execution.d.ts +33 -30
  78. package/dest/public/execution.d.ts.map +1 -1
  79. package/dest/public/execution.js +2 -2
  80. package/dest/public/executor.d.ts +12 -7
  81. package/dest/public/executor.d.ts.map +1 -1
  82. package/dest/public/executor.js +42 -33
  83. package/dest/public/hints_builder.d.ts +1 -1
  84. package/dest/public/index.d.ts +1 -1
  85. package/dest/public/index.d.ts.map +1 -1
  86. package/dest/public/index.js +1 -1
  87. package/dest/public/public_kernel.d.ts +1 -1
  88. package/dest/public/public_kernel.d.ts.map +1 -1
  89. package/dest/public/public_kernel.js +2 -2
  90. package/dest/public/public_processor.d.ts +5 -2
  91. package/dest/public/public_processor.d.ts.map +1 -1
  92. package/dest/public/public_processor.js +142 -123
  93. package/dest/public/side_effect_trace.d.ts +87 -0
  94. package/dest/public/side_effect_trace.d.ts.map +1 -0
  95. package/dest/public/side_effect_trace.js +236 -0
  96. package/dest/public/side_effect_trace_interface.d.ts +36 -0
  97. package/dest/public/side_effect_trace_interface.d.ts.map +1 -0
  98. package/dest/public/side_effect_trace_interface.js +2 -0
  99. package/dest/public/teardown_phase_manager.d.ts.map +1 -1
  100. package/dest/public/teardown_phase_manager.js +2 -1
  101. package/dest/rollup/rollup.d.ts +1 -1
  102. package/dest/rollup/rollup.d.ts.map +1 -1
  103. package/dest/rollup/rollup.js +2 -2
  104. package/package.json +18 -9
  105. package/src/acvm/oracle/oracle.ts +23 -5
  106. package/src/acvm/oracle/typed_oracle.ts +23 -4
  107. package/src/avm/avm_context.ts +2 -2
  108. package/src/avm/{avm_message_call_result.ts → avm_contract_call_result.ts} +1 -1
  109. package/src/avm/avm_execution_environment.ts +16 -26
  110. package/src/avm/avm_gas.ts +1 -1
  111. package/src/avm/avm_simulator.ts +10 -13
  112. package/src/avm/bytecode_utils.ts +32 -0
  113. package/src/avm/errors.ts +1 -1
  114. package/src/avm/fixtures/index.ts +21 -23
  115. package/src/avm/journal/journal.ts +118 -224
  116. package/src/avm/journal/nullifiers.ts +30 -13
  117. package/src/avm/journal/public_storage.ts +12 -2
  118. package/src/avm/opcodes/accrued_substate.ts +12 -21
  119. package/src/avm/opcodes/environment_getters.ts +23 -14
  120. package/src/avm/opcodes/external_calls.ts +13 -36
  121. package/src/avm/serialization/bytecode_serialization.ts +4 -3
  122. package/src/avm/serialization/instruction_serialization.ts +3 -3
  123. package/src/avm/test_utils.ts +53 -0
  124. package/src/client/client_execution_context.ts +22 -7
  125. package/src/client/execution_note_cache.ts +0 -1
  126. package/src/client/execution_result.ts +2 -1
  127. package/src/client/index.ts +2 -0
  128. package/src/client/simulator.ts +8 -2
  129. package/src/client/view_data_oracle.ts +20 -3
  130. package/src/mocks/fixtures.ts +7 -6
  131. package/src/public/abstract_phase_manager.ts +32 -21
  132. package/src/public/app_logic_phase_manager.ts +1 -0
  133. package/src/public/execution.ts +45 -31
  134. package/src/public/executor.ts +71 -49
  135. package/src/public/index.ts +1 -1
  136. package/src/public/public_kernel.ts +2 -1
  137. package/src/public/public_processor.ts +11 -2
  138. package/src/public/side_effect_trace.ts +341 -0
  139. package/src/public/side_effect_trace_interface.ts +41 -0
  140. package/src/public/teardown_phase_manager.ts +1 -0
  141. package/src/rollup/rollup.ts +3 -1
  142. package/dest/avm/avm_message_call_result.d.ts.map +0 -1
  143. package/dest/avm/avm_message_call_result.js +0 -18
  144. package/dest/avm/journal/trace.d.ts +0 -33
  145. package/dest/avm/journal/trace.d.ts.map +0 -1
  146. package/dest/avm/journal/trace.js +0 -152
  147. package/dest/avm/journal/trace_types.d.ts +0 -55
  148. package/dest/avm/journal/trace_types.d.ts.map +0 -1
  149. package/dest/avm/journal/trace_types.js +0 -2
  150. package/dest/public/transitional_adaptors.d.ts +0 -21
  151. package/dest/public/transitional_adaptors.d.ts.map +0 -1
  152. package/dest/public/transitional_adaptors.js +0 -90
  153. package/src/avm/journal/trace.ts +0 -181
  154. package/src/avm/journal/trace_types.ts +0 -91
  155. package/src/public/transitional_adaptors.ts +0 -168
@@ -1,6 +1,6 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
2
  import type { AvmContext } from './avm_context.js';
3
- import { AvmContractCallResults } from './avm_message_call_result.js';
3
+ import { AvmContractCallResult } from './avm_contract_call_result.js';
4
4
  import type { Instruction } from './opcodes/index.js';
5
5
  export declare class AvmSimulator {
6
6
  private context;
@@ -10,7 +10,7 @@ export declare class AvmSimulator {
10
10
  /**
11
11
  * Fetch the bytecode and execute it in the current context.
12
12
  */
13
- execute(): Promise<AvmContractCallResults>;
13
+ execute(): Promise<AvmContractCallResult>;
14
14
  /**
15
15
  * Return the bytecode used for execution, if any.
16
16
  */
@@ -19,11 +19,11 @@ export declare class AvmSimulator {
19
19
  * Executes the provided bytecode in the current context.
20
20
  * This method is useful for testing and debugging.
21
21
  */
22
- executeBytecode(bytecode: Buffer): Promise<AvmContractCallResults>;
22
+ executeBytecode(bytecode: Buffer): Promise<AvmContractCallResult>;
23
23
  /**
24
24
  * Executes the provided instructions in the current context.
25
25
  * This method is useful for testing and debugging.
26
26
  */
27
- executeInstructions(instructions: Instruction[]): Promise<AvmContractCallResults>;
27
+ executeInstructions(instructions: Instruction[]): Promise<AvmContractCallResult>;
28
28
  }
29
29
  //# sourceMappingURL=avm_simulator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"avm_simulator.d.ts","sourceRoot":"","sources":["../../src/avm/avm_simulator.ts"],"names":[],"mappings":";AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAQtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,qBAAa,YAAY;IAIX,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,QAAQ,CAAqB;gBAEjB,OAAO,EAAE,UAAU;IAMvC;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAgBvD;;OAEG;IACI,WAAW,IAAI,MAAM,GAAG,SAAS;IAIxC;;;OAGG;IACU,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAQ/E;;;OAGG;IACU,mBAAmB,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAgD/F"}
1
+ {"version":3,"file":"avm_simulator.d.ts","sourceRoot":"","sources":["../../src/avm/avm_simulator.ts"],"names":[],"mappings":";AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAStE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,qBAAa,YAAY;IAIX,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,QAAQ,CAAqB;gBAEjB,OAAO,EAAE,UAAU;IAIvC;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAetD;;OAEG;IACI,WAAW,IAAI,MAAM,GAAG,SAAS;IAIxC;;;OAGG;IACU,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAQ9E;;;OAGG;IACU,mBAAmB,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAgD9F"}
@@ -1,20 +1,19 @@
1
1
  import { createDebugLogger } from '@aztec/foundation/log';
2
2
  import { strict as assert } from 'assert';
3
- import { decompressBytecodeIfCompressed, isAvmBytecode } from '../public/transitional_adaptors.js';
4
- import { AvmContractCallResults } from './avm_message_call_result.js';
3
+ import { AvmContractCallResult } from './avm_contract_call_result.js';
4
+ import { decompressBytecodeIfCompressed, isAvmBytecode } from './bytecode_utils.js';
5
5
  import { AvmExecutionError, InvalidProgramCounterError, NoBytecodeForContractError, revertReasonFromExceptionalHalt, revertReasonFromExplicitRevert, } from './errors.js';
6
6
  import { decodeFromBytecode } from './serialization/bytecode_serialization.js';
7
7
  export class AvmSimulator {
8
8
  constructor(context) {
9
9
  this.context = context;
10
- this.log = createDebugLogger(`aztec:avm_simulator:core(f:${context.environment.temporaryFunctionSelector.toString()})`);
10
+ this.log = createDebugLogger(`aztec:avm_simulator:core(f:${context.environment.functionSelector.toString()})`);
11
11
  }
12
12
  /**
13
13
  * Fetch the bytecode and execute it in the current context.
14
14
  */
15
15
  async execute() {
16
- const selector = this.context.environment.temporaryFunctionSelector;
17
- const bytecode = await this.context.persistableState.hostStorage.contractsDb.getBytecode(this.context.environment.address, selector);
16
+ const bytecode = await this.context.persistableState.getBytecode(this.context.environment.address, this.context.environment.functionSelector);
18
17
  // This assumes that we will not be able to send messages to accounts without code
19
18
  // Pending classes and instances impl details
20
19
  if (!bytecode) {
@@ -65,7 +64,7 @@ export class AvmSimulator {
65
64
  const output = machineState.getOutput();
66
65
  const reverted = machineState.getReverted();
67
66
  const revertReason = reverted ? revertReasonFromExplicitRevert(output, this.context) : undefined;
68
- const results = new AvmContractCallResults(reverted, output, revertReason);
67
+ const results = new AvmContractCallResult(reverted, output, revertReason);
69
68
  this.log.debug(`Context execution results: ${results.toString()}`);
70
69
  // Return results for processing by calling context
71
70
  return results;
@@ -78,11 +77,11 @@ export class AvmSimulator {
78
77
  }
79
78
  const revertReason = revertReasonFromExceptionalHalt(err, this.context);
80
79
  // Note: "exceptional halts" cannot return data, hence []
81
- const results = new AvmContractCallResults(/*reverted=*/ true, /*output=*/ [], revertReason);
80
+ const results = new AvmContractCallResult(/*reverted=*/ true, /*output=*/ [], revertReason);
82
81
  this.log.debug(`Context execution results: ${results.toString()}`);
83
82
  // Return results for processing by calling context
84
83
  return results;
85
84
  }
86
85
  }
87
86
  }
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX3NpbXVsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdm0vYXZtX3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFNUUsT0FBTyxFQUFFLE1BQU0sSUFBSSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFMUMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRW5HLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsMEJBQTBCLEVBQzFCLDBCQUEwQixFQUMxQiwrQkFBK0IsRUFDL0IsOEJBQThCLEdBQy9CLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRS9FLE1BQU0sT0FBTyxZQUFZO0lBSXZCLFlBQW9CLE9BQW1CO1FBQW5CLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDckMsSUFBSSxDQUFDLEdBQUcsR0FBRyxpQkFBaUIsQ0FDMUIsOEJBQThCLE9BQU8sQ0FBQyxXQUFXLENBQUMseUJBQXlCLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FDMUYsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxPQUFPO1FBQ2xCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLHlCQUF5QixDQUFDO1FBQ3BFLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FDdEYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUNoQyxRQUFRLENBQ1QsQ0FBQztRQUVGLGtGQUFrRjtRQUNsRiw2Q0FB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
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX3NpbXVsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdm0vYXZtX3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFNUUsT0FBTyxFQUFFLE1BQU0sSUFBSSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHMUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BGLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsMEJBQTBCLEVBQzFCLDBCQUEwQixFQUMxQiwrQkFBK0IsRUFDL0IsOEJBQThCLEdBQy9CLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRS9FLE1BQU0sT0FBTyxZQUFZO0lBSXZCLFlBQW9CLE9BQW1CO1FBQW5CLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDckMsSUFBSSxDQUFDLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyw4QkFBOEIsT0FBTyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDakgsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLE9BQU87UUFDbEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FDOUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FDMUMsQ0FBQztRQUVGLGtGQUFrRjtRQUNsRiw2Q0FBNkM7UUFDN0MsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLDBC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
@@ -0,0 +1,5 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ export declare function markBytecodeAsAvm(bytecode: Buffer): Buffer;
3
+ export declare function decompressBytecodeIfCompressed(bytecode: Buffer): Promise<Buffer>;
4
+ export declare function isAvmBytecode(bytecode: Buffer): Promise<boolean>;
5
+ //# sourceMappingURL=bytecode_utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bytecode_utils.d.ts","sourceRoot":"","sources":["../../src/avm/bytecode_utils.ts"],"names":[],"mappings":";AAYA,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1D;AAGD,wBAAsB,8BAA8B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQtF;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAItE"}
@@ -0,0 +1,29 @@
1
+ import { promisify } from 'util';
2
+ import { gunzip } from 'zlib';
3
+ import { Mov } from '../avm/opcodes/memory.js';
4
+ const AVM_MAGIC_SUFFIX = Buffer.from([
5
+ Mov.opcode, // opcode
6
+ 0x00, // indirect
7
+ ...Buffer.from('000018ca', 'hex'), // srcOffset
8
+ ...Buffer.from('000018ca', 'hex'), // dstOffset
9
+ ]);
10
+ export function markBytecodeAsAvm(bytecode) {
11
+ return Buffer.concat([bytecode, AVM_MAGIC_SUFFIX]);
12
+ }
13
+ // This is just a helper function for the AVM simulator
14
+ export async function decompressBytecodeIfCompressed(bytecode) {
15
+ try {
16
+ return await promisify(gunzip)(bytecode);
17
+ }
18
+ catch {
19
+ // If the bytecode is not compressed, the gunzip call will throw an error
20
+ // In this case, we assume the bytecode is not compressed and continue.
21
+ return Promise.resolve(bytecode);
22
+ }
23
+ }
24
+ export async function isAvmBytecode(bytecode) {
25
+ const decompressedBytecode = await decompressBytecodeIfCompressed(bytecode);
26
+ const magicSize = AVM_MAGIC_SUFFIX.length;
27
+ return decompressedBytecode.subarray(-magicSize).equals(AVM_MAGIC_SUFFIX);
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnl0ZWNvZGVfdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXZtL2J5dGVjb2RlX3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU5QixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0MsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ25DLEdBQUcsQ0FBQyxNQUFNLEVBQUUsU0FBUztJQUNyQixJQUFJLEVBQUUsV0FBVztJQUNqQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFFLFlBQVk7SUFDL0MsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxZQUFZO0NBQ2hELENBQUMsQ0FBQztBQUVILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxRQUFnQjtJQUNoRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCx1REFBdUQ7QUFDdkQsTUFBTSxDQUFDLEtBQUssVUFBVSw4QkFBOEIsQ0FBQyxRQUFnQjtJQUNuRSxJQUFJLENBQUM7UUFDSCxPQUFPLE1BQU0sU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCx5RUFBeUU7UUFDekUsdUVBQXVFO1FBQ3ZFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuQyxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsYUFBYSxDQUFDLFFBQWdCO0lBQ2xELE1BQU0sb0JBQW9CLEdBQUcsTUFBTSw4QkFBOEIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1RSxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7SUFDMUMsT0FBTyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUM1RSxDQUFDIn0=
@@ -97,7 +97,7 @@ function createRevertReason(message, context, nestedError) {
97
97
  return new AvmRevertReason(message,
98
98
  /*failingFunction=*/ {
99
99
  contractAddress: context.environment.address,
100
- functionSelector: context.environment.temporaryFunctionSelector,
100
+ functionSelector: context.environment.functionSelector,
101
101
  },
102
102
  /*noirCallStack=*/ [...context.machineState.internalCallStack, context.machineState.pc].map(pc => `0.${pc}`),
103
103
  /*options=*/ { cause: nestedError });
@@ -145,4 +145,4 @@ export function decodeRevertDataAsMessage(revertData) {
145
145
  }
146
146
  }
147
147
  }
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F2bS9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3JEOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixpQkFBa0IsU0FBUSxLQUFLO0lBQ25ELFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTywwQkFBMkIsU0FBUSxpQkFBaUI7SUFDL0QsWUFBWSxlQUE2QjtRQUN2QyxLQUFLLENBQUMseUJBQXlCLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLElBQUksR0FBRyxpQ0FBaUMsQ0FBQztJQUNoRCxDQUFDO0NBQ0Y7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsaUJBQWlCO0lBQy9ELFlBQVksRUFBVSxFQUFFLEdBQVc7UUFDakMsS0FBSyxDQUFDLDJCQUEyQixFQUFFLFlBQVksR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsSUFBSSxHQUFHLDRCQUE0QixDQUFDO0lBQzNDLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGlCQUFpQjtJQUM5RCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRywyQkFBMkIsQ0FBQztJQUMxQyxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxhQUFjLFNBQVEsaUJBQWlCO0lBQzNDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBYyxFQUFFLE1BQWMsRUFBRSxXQUFtQjtRQUN6RSxPQUFPLElBQUksYUFBYSxDQUFDLDBCQUEwQixNQUFN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
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F2bS9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3JEOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixpQkFBa0IsU0FBUSxLQUFLO0lBQ25ELFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTywwQkFBMkIsU0FBUSxpQkFBaUI7SUFDL0QsWUFBWSxlQUE2QjtRQUN2QyxLQUFLLENBQUMseUJBQXlCLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLElBQUksR0FBRyxpQ0FBaUMsQ0FBQztJQUNoRCxDQUFDO0NBQ0Y7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsaUJBQWlCO0lBQy9ELFlBQVksRUFBVSxFQUFFLEdBQVc7UUFDakMsS0FBSyxDQUFDLDJCQUEyQixFQUFFLFlBQVksR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsSUFBSSxHQUFHLDRCQUE0QixDQUFDO0lBQzNDLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGlCQUFpQjtJQUM5RCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRywyQkFBMkIsQ0FBQztJQUMxQyxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxhQUFjLFNBQVEsaUJBQWlCO0lBQzNDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBYyxFQUFFLE1BQWMsRUFBRSxXQUFtQjtRQUN6RSxPQUFPLElBQUksYUFBYSxDQUFDLDBCQUEwQixNQUFN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
@@ -1,14 +1,15 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
2
  import { GlobalVariables } from '@aztec/circuits.js';
3
- import { AztecAddress } from '@aztec/foundation/aztec-address';
4
3
  import { type CommitmentsDB, type PublicContractsDB, type PublicStateDB } from '../../index.js';
4
+ import { type PublicSideEffectTraceInterface } from '../../public/side_effect_trace_interface.js';
5
5
  import { AvmContext } from '../avm_context.js';
6
6
  import { AvmExecutionEnvironment } from '../avm_execution_environment.js';
7
7
  import { AvmMachineState } from '../avm_machine_state.js';
8
8
  import { Field, Uint8 } from '../avm_memory_types.js';
9
9
  import { HostStorage } from '../journal/host_storage.js';
10
10
  import { AvmPersistableStateManager } from '../journal/journal.js';
11
- import { type TracedContractInstance } from '../journal/trace_types.js';
11
+ import { NullifierManager } from '../journal/nullifiers.js';
12
+ import { PublicStorage } from '../journal/public_storage.js';
12
13
  /**
13
14
  * Create a new AVM context with default values.
14
15
  */
@@ -23,8 +24,13 @@ export declare function initHostStorage(overrides?: {
23
24
  contractsDb?: PublicContractsDB;
24
25
  commitmentsDb?: CommitmentsDB;
25
26
  }): HostStorage;
26
- /** Creates an empty state manager with mocked storage. */
27
- export declare function initMockPersistableStateManager(): AvmPersistableStateManager;
27
+ /** Creates an empty state manager with mocked host storage. */
28
+ export declare function initPersistableStateManager(overrides?: {
29
+ hostStorage?: HostStorage;
30
+ trace?: PublicSideEffectTraceInterface;
31
+ publicStorage?: PublicStorage;
32
+ nullifiers?: NullifierManager;
33
+ }): AvmPersistableStateManager;
28
34
  /**
29
35
  * Create an empty instance of the Execution Environment where all values are zero, unless overridden in the overrides object
30
36
  */
@@ -50,6 +56,4 @@ export declare function anyAvmContextInputs(): any[];
50
56
  export declare function randomMemoryBytes(length: number): Uint8[];
51
57
  export declare function randomMemoryFields(length: number): Field[];
52
58
  export declare function getAvmTestContractBytecode(functionName: string): Buffer;
53
- export declare function randomTracedContractInstance(): TracedContractInstance;
54
- export declare function emptyTracedContractInstance(withAddress?: AztecAddress): TracedContractInstance;
55
59
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/avm/fixtures/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAwB,eAAe,EAAU,MAAM,oBAAoB,CAAC;AAEnF,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAU/D,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAChG,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAoB,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAExE;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,CAAC,EAAE;IACtC,gBAAgB,CAAC,EAAE,0BAA0B,CAAC;IAC9C,GAAG,CAAC,EAAE,uBAAuB,CAAC;IAC9B,YAAY,CAAC,EAAE,eAAe,CAAC;CAChC,GAAG,UAAU,CAMb;AAED,qDAAqD;AACrD,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE;IAC1C,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,GAAG,WAAW,CAMd;AAED,0DAA0D;AAC1D,wBAAgB,+BAA+B,IAAI,0BAA0B,CAE5E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,uBAAuB,CAiB9G;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAUzF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAKtF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,GAAG,GAAG,CAEhE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,wBAAgB,mBAAmB,UAMlC;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,CAEzD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,CAE1D;AAED,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAOvE;AAED,wBAAgB,4BAA4B,IAAI,sBAAsB,CAIrE;AAED,wBAAgB,2BAA2B,CAAC,WAAW,CAAC,EAAE,YAAY,GAAG,sBAAsB,CAG9F"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/avm/fixtures/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAW,eAAe,EAAU,MAAM,oBAAoB,CAAC;AAWtE,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAChG,OAAO,EAAE,KAAK,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAClG,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAoB,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,CAAC,EAAE;IACtC,gBAAgB,CAAC,EAAE,0BAA0B,CAAC;IAC9C,GAAG,CAAC,EAAE,uBAAuB,CAAC;IAC9B,YAAY,CAAC,EAAE,eAAe,CAAC;CAChC,GAAG,UAAU,CAMb;AAED,qDAAqD;AACrD,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE;IAC1C,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,GAAG,WAAW,CAMd;AAED,+DAA+D;AAC/D,wBAAgB,2BAA2B,CAAC,SAAS,CAAC,EAAE;IACtD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,KAAK,CAAC,EAAE,8BAA8B,CAAC;IACvC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B,GAAG,0BAA0B,CAQ7B;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,uBAAuB,CAc9G;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAUzF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAKtF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,GAAG,GAAG,CAEhE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,wBAAgB,mBAAmB,UAMlC;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,CAEzD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,CAE1D;AAED,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAOvE"}
@@ -1,10 +1,9 @@
1
- import { GasFees, GasSettings, GlobalVariables, Header } from '@aztec/circuits.js';
1
+ import { GasFees, GlobalVariables, Header } from '@aztec/circuits.js';
2
2
  import { FunctionSelector } from '@aztec/foundation/abi';
3
3
  import { AztecAddress } from '@aztec/foundation/aztec-address';
4
4
  import { EthAddress } from '@aztec/foundation/eth-address';
5
5
  import { Fr } from '@aztec/foundation/fields';
6
6
  import { AvmTestContractArtifact } from '@aztec/noir-contracts.js';
7
- import { SerializableContractInstance } from '@aztec/types/contracts';
8
7
  import { strict as assert } from 'assert';
9
8
  import { mock } from 'jest-mock-extended';
10
9
  import merge from 'lodash.merge';
@@ -14,25 +13,28 @@ import { AvmMachineState } from '../avm_machine_state.js';
14
13
  import { Field, Uint8 } from '../avm_memory_types.js';
15
14
  import { HostStorage } from '../journal/host_storage.js';
16
15
  import { AvmPersistableStateManager } from '../journal/journal.js';
16
+ import { NullifierManager } from '../journal/nullifiers.js';
17
+ import { PublicStorage } from '../journal/public_storage.js';
17
18
  /**
18
19
  * Create a new AVM context with default values.
19
20
  */
20
21
  export function initContext(overrides) {
21
- return new AvmContext(overrides?.persistableState || initMockPersistableStateManager(), overrides?.env || initExecutionEnvironment(), overrides?.machineState || initMachineState());
22
+ return new AvmContext(overrides?.persistableState || initPersistableStateManager(), overrides?.env || initExecutionEnvironment(), overrides?.machineState || initMachineState());
22
23
  }
23
24
  /** Creates an empty host storage with mocked dbs. */
24
25
  export function initHostStorage(overrides) {
25
26
  return new HostStorage(overrides?.publicDb || mock(), overrides?.contractsDb || mock(), overrides?.commitmentsDb || mock());
26
27
  }
27
- /** Creates an empty state manager with mocked storage. */
28
- export function initMockPersistableStateManager() {
29
- return new AvmPersistableStateManager(initHostStorage());
28
+ /** Creates an empty state manager with mocked host storage. */
29
+ export function initPersistableStateManager(overrides) {
30
+ const hostStorage = overrides?.hostStorage || initHostStorage();
31
+ return new AvmPersistableStateManager(hostStorage, overrides?.trace || mock(), overrides?.publicStorage || new PublicStorage(hostStorage.publicStateDb), overrides?.nullifiers || new NullifierManager(hostStorage.commitmentsDb));
30
32
  }
31
33
  /**
32
34
  * Create an empty instance of the Execution Environment where all values are zero, unless overridden in the overrides object
33
35
  */
34
36
  export function initExecutionEnvironment(overrides) {
35
- return new AvmExecutionEnvironment(overrides?.address ?? AztecAddress.zero(), overrides?.storageAddress ?? AztecAddress.zero(), overrides?.sender ?? AztecAddress.zero(), overrides?.feePerL2Gas ?? Fr.zero(), overrides?.feePerDaGas ?? Fr.zero(), overrides?.contractCallDepth ?? Fr.zero(), overrides?.header ?? Header.empty(), overrides?.globals ?? GlobalVariables.empty(), overrides?.isStaticCall ?? false, overrides?.isDelegateCall ?? false, overrides?.calldata ?? [], overrides?.gasSettings ?? GasSettings.empty(), overrides?.transactionFee ?? Fr.ZERO, overrides?.temporaryFunctionSelector ?? FunctionSelector.empty());
37
+ return new AvmExecutionEnvironment(overrides?.address ?? AztecAddress.zero(), overrides?.storageAddress ?? AztecAddress.zero(), overrides?.sender ?? AztecAddress.zero(), overrides?.functionSelector ?? FunctionSelector.empty(), overrides?.contractCallDepth ?? Fr.zero(), overrides?.transactionFee ?? Fr.zero(), overrides?.header ?? Header.empty(), overrides?.globals ?? GlobalVariables.empty(), overrides?.isStaticCall ?? false, overrides?.isDelegateCall ?? false, overrides?.calldata ?? []);
36
38
  }
37
39
  /**
38
40
  * Create an empty instance of the Execution Environment where all values are zero, unless overridden in the overrides object
@@ -80,13 +82,4 @@ export function getAvmTestContractBytecode(functionName) {
80
82
  assert(!!artifact?.bytecode, `No bytecode found for function ${functionName}. Try re-running bootstrap.sh on the repository root.`);
81
83
  return artifact.bytecode;
82
84
  }
83
- export function randomTracedContractInstance() {
84
- const instance = SerializableContractInstance.random();
85
- const address = AztecAddress.random();
86
- return { exists: true, ...instance, address };
87
- }
88
- export function emptyTracedContractInstance(withAddress) {
89
- const instance = SerializableContractInstance.empty().withAddress(withAddress ?? AztecAddress.zero());
90
- return { exists: false, ...instance };
91
- }
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL2ZpeHR1cmVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV0RSxPQUFPLEVBQUUsTUFBTSxJQUFJLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUMsT0FBTyxLQUFLLE1BQU0sY0FBYyxDQUFDO0FBR2pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHbkU7O0dBRUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFD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
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL2ZpeHR1cmVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRW5FLE9BQU8sRUFBRSxNQUFNLElBQUksTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxQyxPQUFPLEtBQUssTUFBTSxjQUFjLENBQUM7QUFJakMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFF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
@@ -1,71 +1,45 @@
1
- import { UnencryptedL2Log } from '@aztec/circuit-types';
2
- import { ContractStorageRead, ContractStorageUpdateRequest, EthAddress, L2ToL1Message, LogHash, NoteHash, Nullifier, ReadRequest } from '@aztec/circuits.js';
3
- import { Fr } from '@aztec/foundation/fields';
4
- import { type PublicExecutionResult } from '../../index.js';
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { AztecAddress, type FunctionSelector, type Gas } from '@aztec/circuits.js';
3
+ import { type Fr } from '@aztec/foundation/fields';
4
+ import { type TracedContractInstance } from '../../public/side_effect_trace.js';
5
+ import { type PublicSideEffectTraceInterface } from '../../public/side_effect_trace_interface.js';
6
+ import { type AvmContractCallResult } from '../avm_contract_call_result.js';
7
+ import { type AvmExecutionEnvironment } from '../avm_execution_environment.js';
5
8
  import { type HostStorage } from './host_storage.js';
6
- import { Nullifiers } from './nullifiers.js';
9
+ import { NullifierManager } from './nullifiers.js';
7
10
  import { PublicStorage } from './public_storage.js';
8
- import { WorldStateAccessTrace } from './trace.js';
9
- import { type TracedContractInstance, type TracedL1toL2MessageCheck, type TracedNoteHash, type TracedNoteHashCheck, type TracedNullifier, type TracedNullifierCheck, type TracedPublicStorageRead, type TracedPublicStorageWrite, type TracedUnencryptedL2Log } from './trace_types.js';
10
- /**
11
- * Data held within the journal
12
- */
13
- export type JournalData = {
14
- storageWrites: TracedPublicStorageWrite[];
15
- storageReads: TracedPublicStorageRead[];
16
- noteHashChecks: TracedNoteHashCheck[];
17
- newNoteHashes: TracedNoteHash[];
18
- nullifierChecks: TracedNullifierCheck[];
19
- newNullifiers: TracedNullifier[];
20
- l1ToL2MessageChecks: TracedL1toL2MessageCheck[];
21
- newL1Messages: L2ToL1Message[];
22
- newLogs: UnencryptedL2Log[];
23
- newLogsHashes: TracedUnencryptedL2Log[];
24
- /** contract address -\> key -\> value */
25
- currentStorageValue: Map<bigint, Map<bigint, Fr>>;
26
- sideEffectCounter: number;
27
- };
28
- export type PartialPublicExecutionResult = {
29
- noteHashReadRequests: ReadRequest[];
30
- nullifierReadRequests: ReadRequest[];
31
- nullifierNonExistentReadRequests: ReadRequest[];
32
- l1ToL2MsgReadRequests: ReadRequest[];
33
- newNoteHashes: NoteHash[];
34
- newL2ToL1Messages: L2ToL1Message[];
35
- startSideEffectCounter: number;
36
- newNullifiers: Nullifier[];
37
- contractStorageReads: ContractStorageRead[];
38
- contractStorageUpdateRequests: ContractStorageUpdateRequest[];
39
- unencryptedLogsHashes: LogHash[];
40
- unencryptedLogs: UnencryptedL2Log[];
41
- allUnencryptedLogs: UnencryptedL2Log[];
42
- nestedExecutions: PublicExecutionResult[];
43
- };
44
11
  /**
45
12
  * A class to manage persistable AVM state for contract calls.
46
13
  * Maintains a cache of the current world state,
47
- * a trace of all world state accesses, and a list of accrued substate items.
14
+ * a trace of all side effects.
48
15
  *
49
- * The simulator should make any world state and accrued substate queries through this object.
16
+ * The simulator should make any world state / tree queries through this object.
50
17
  *
51
18
  * Manages merging of successful/reverted child state into current state.
52
19
  */
53
20
  export declare class AvmPersistableStateManager {
21
+ /** Reference to node storage */
22
+ private readonly hostStorage;
23
+ /** Side effect trace */
24
+ private readonly trace;
25
+ /** Public storage, including cached writes */
26
+ readonly publicStorage: PublicStorage;
27
+ /** Nullifier set, including cached/recently-emitted nullifiers */
28
+ private readonly nullifiers;
54
29
  private readonly log;
30
+ constructor(
55
31
  /** Reference to node storage */
56
- readonly hostStorage: HostStorage;
57
- /** World State */
32
+ hostStorage: HostStorage,
33
+ /** Side effect trace */
34
+ trace: PublicSideEffectTraceInterface,
58
35
  /** Public storage, including cached writes */
59
- publicStorage: PublicStorage;
36
+ publicStorage: PublicStorage,
60
37
  /** Nullifier set, including cached/recently-emitted nullifiers */
61
- nullifiers: Nullifiers;
62
- /** World State Access Trace */
63
- trace: WorldStateAccessTrace;
64
- /** Accrued Substate **/
65
- newL1Messages: L2ToL1Message[];
66
- newLogs: UnencryptedL2Log[];
67
- transitionalExecutionResult: PartialPublicExecutionResult;
68
- constructor(hostStorage: HostStorage, parent?: AvmPersistableStateManager);
38
+ nullifiers: NullifierManager);
39
+ /**
40
+ * Create a new state manager with some preloaded pending siloed nullifiers
41
+ */
42
+ static newWithPendingSiloedNullifiers(hostStorage: HostStorage, trace: PublicSideEffectTraceInterface, pendingSiloedNullifiers: Fr[]): AvmPersistableStateManager;
69
43
  /**
70
44
  * Create a new state manager forked from this one
71
45
  */
@@ -86,6 +60,14 @@ export declare class AvmPersistableStateManager {
86
60
  * @returns the latest value written to slot, or 0 if never written to before
87
61
  */
88
62
  readStorage(storageAddress: Fr, slot: Fr): Promise<Fr>;
63
+ /**
64
+ * Read from public storage, don't trace the read.
65
+ *
66
+ * @param storageAddress - the address of the contract whose storage is being read from
67
+ * @param slot - the slot in the contract's storage being read from
68
+ * @returns the latest value written to slot, or 0 if never written to before
69
+ */
70
+ peekStorage(storageAddress: Fr, slot: Fr): Promise<Fr>;
89
71
  /**
90
72
  * Check if a note hash exists at the given leaf index, trace the check.
91
73
  *
@@ -119,28 +101,37 @@ export declare class AvmPersistableStateManager {
119
101
  * @param msgLeafIndex - the message leaf index to use in the check
120
102
  * @returns exists - whether the message exists in the L1 to L2 Messages tree
121
103
  */
122
- checkL1ToL2MessageExists(msgHash: Fr, msgLeafIndex: Fr): Promise<boolean>;
104
+ checkL1ToL2MessageExists(contractAddress: Fr, msgHash: Fr, msgLeafIndex: Fr): Promise<boolean>;
123
105
  /**
124
106
  * Write an L2 to L1 message.
125
107
  * @param recipient - L1 contract address to send the message to.
126
108
  * @param content - Message content.
127
109
  */
128
- writeL1Message(recipient: EthAddress | Fr, content: Fr): void;
129
- writeLog(contractAddress: Fr, event: Fr, log: Fr[]): void;
110
+ writeL2ToL1Message(recipient: Fr, content: Fr): void;
111
+ /**
112
+ * Write an unencrypted log
113
+ * @param contractAddress - address of the contract that emitted the log
114
+ * @param event - log event selector
115
+ * @param log - log contents
116
+ */
117
+ writeUnencryptedLog(contractAddress: Fr, log: Fr[]): void;
118
+ /**
119
+ * Get a contract instance.
120
+ * @param contractAddress - address of the contract instance to retrieve.
121
+ * @returns the contract instance with an "exists" flag
122
+ */
130
123
  getContractInstance(contractAddress: Fr): Promise<TracedContractInstance>;
131
124
  /**
132
- * Accept nested world state modifications, merging in its trace and accrued substate
125
+ * Accept nested world state modifications
133
126
  */
134
- acceptNestedCallState(nestedJournal: AvmPersistableStateManager): void;
127
+ acceptNestedCallState(nestedState: AvmPersistableStateManager): void;
135
128
  /**
136
- * Reject nested world state, merging in its trace, but not accepting any state modifications
129
+ * Get a contract's bytecode from the contracts DB
137
130
  */
138
- rejectNestedCallState(nestedJournal: AvmPersistableStateManager): void;
131
+ getBytecode(contractAddress: AztecAddress, selector: FunctionSelector): Promise<Buffer | undefined>;
139
132
  /**
140
- * Access the current state of the journal
141
- *
142
- * @returns a JournalData object
133
+ * Accept the nested call's state and trace the nested call
143
134
  */
144
- flush(): JournalData;
135
+ processNestedCall(nestedState: AvmPersistableStateManager, nestedEnvironment: AvmExecutionEnvironment, startGasLeft: Gas, endGasLeft: Gas, bytecode: Buffer, avmCallResults: AvmContractCallResult): Promise<void>;
145
136
  }
146
137
  //# sourceMappingURL=journal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../../../src/avm/journal/journal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../../../src/avm/journal/journal.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAInD,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,KAAK,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAClG,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;;;;GAQG;AACH,qBAAa,0BAA0B;IAInC,gCAAgC;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,wBAAwB;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,8CAA8C;aAE9B,aAAa,EAAE,aAAa;IAC5C,kEAAkE;IAClE,OAAO,CAAC,QAAQ,CAAC,UAAU;IAX7B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAuE;;IAGzF,gCAAgC;IACf,WAAW,EAAE,WAAW;IACzC,wBAAwB;IACP,KAAK,EAAE,8BAA8B;IACtD,8CAA8C;IAE9B,aAAa,EAAE,aAAa;IAC5C,kEAAkE;IACjD,UAAU,EAAE,gBAAgB;IAG/C;;OAEG;WACW,8BAA8B,CAC1C,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,8BAA8B,EACrC,uBAAuB,EAAE,EAAE,EAAE;IAc/B;;OAEG;IACI,IAAI;IASX;;;;;;OAMG;IACI,YAAY,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IAO3D;;;;;;OAMG;IACU,WAAW,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IASnE;;;;;;OAMG;IACU,WAAW,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IASnE;;;;;;;OAOG;IACU,mBAAmB,CAAC,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAQnG;;;OAGG;IACI,aAAa,CAAC,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE;IAKrD;;;;;OAKG;IACU,oBAAoB,CAAC,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAStF;;;;OAIG;IACU,cAAc,CAAC,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE;IAQ7D;;;;;OAKG;IACU,wBAAwB,CAAC,eAAe,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAU3G;;;;OAIG;IACI,kBAAkB,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;IAKpD;;;;;OAKG;IACI,mBAAmB,CAAC,eAAe,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;IAKzD;;;;OAIG;IACU,mBAAmB,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAgBtF;;OAEG;IACI,qBAAqB,CAAC,WAAW,EAAE,0BAA0B;IAKpE;;OAEG;IACU,WAAW,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIhH;;OAEG;IACU,iBAAiB,CAC5B,WAAW,EAAE,0BAA0B,EACvC,iBAAiB,EAAE,uBAAuB,EAC1C,YAAY,EAAE,GAAG,EACjB,UAAU,EAAE,GAAG,EACf,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,qBAAqB;CAuBxC"}