@aztec/simulator 0.69.1-devnet → 0.70.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 (119) hide show
  1. package/dest/acvm/acvm.d.ts +1 -2
  2. package/dest/acvm/acvm.d.ts.map +1 -1
  3. package/dest/acvm/index.d.ts +1 -1
  4. package/dest/acvm/index.d.ts.map +1 -1
  5. package/dest/acvm/index.js +2 -2
  6. package/dest/acvm/oracle/oracle.d.ts +4 -4
  7. package/dest/acvm/oracle/oracle.d.ts.map +1 -1
  8. package/dest/acvm/oracle/oracle.js +14 -14
  9. package/dest/acvm/oracle/typed_oracle.d.ts +6 -16
  10. package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
  11. package/dest/acvm/oracle/typed_oracle.js +10 -20
  12. package/dest/avm/avm_simulator.d.ts.map +1 -1
  13. package/dest/avm/avm_simulator.js +7 -2
  14. package/dest/avm/fixtures/index.d.ts +1 -1
  15. package/dest/avm/fixtures/index.d.ts.map +1 -1
  16. package/dest/avm/fixtures/index.js +2 -2
  17. package/dest/avm/journal/nullifiers.d.ts +1 -1
  18. package/dest/avm/journal/nullifiers.d.ts.map +1 -1
  19. package/dest/avm/journal/public_storage.d.ts +1 -1
  20. package/dest/avm/journal/public_storage.d.ts.map +1 -1
  21. package/dest/client/client_execution_context.d.ts +29 -18
  22. package/dest/client/client_execution_context.d.ts.map +1 -1
  23. package/dest/client/client_execution_context.js +42 -29
  24. package/dest/client/execution_note_cache.d.ts +27 -4
  25. package/dest/client/execution_note_cache.d.ts.map +1 -1
  26. package/dest/client/execution_note_cache.js +62 -12
  27. package/dest/client/index.d.ts +11 -3
  28. package/dest/client/index.d.ts.map +1 -1
  29. package/dest/client/index.js +11 -4
  30. package/dest/client/private_execution.d.ts +3 -2
  31. package/dest/client/private_execution.d.ts.map +1 -1
  32. package/dest/client/private_execution.js +9 -7
  33. package/dest/client/simulator.d.ts +4 -2
  34. package/dest/client/simulator.d.ts.map +1 -1
  35. package/dest/client/simulator.js +13 -8
  36. package/dest/client/unconstrained_execution.d.ts +2 -1
  37. package/dest/client/unconstrained_execution.d.ts.map +1 -1
  38. package/dest/client/unconstrained_execution.js +6 -4
  39. package/dest/client/view_data_oracle.d.ts +1 -1
  40. package/dest/common/hashed_values_cache.d.ts +28 -0
  41. package/dest/common/hashed_values_cache.d.ts.map +1 -0
  42. package/dest/common/{packed_values_cache.js → hashed_values_cache.js} +22 -22
  43. package/dest/common/index.d.ts +1 -1
  44. package/dest/common/index.js +1 -1
  45. package/dest/common/message_load_oracle_inputs.d.ts +15 -0
  46. package/dest/common/message_load_oracle_inputs.d.ts.map +1 -0
  47. package/dest/common/message_load_oracle_inputs.js +15 -0
  48. package/dest/common/simulation_provider.d.ts +19 -0
  49. package/dest/common/simulation_provider.d.ts.map +1 -0
  50. package/dest/common/simulation_provider.js +27 -0
  51. package/dest/common.d.ts +2 -0
  52. package/dest/common.d.ts.map +1 -0
  53. package/dest/common.js +2 -0
  54. package/dest/providers/acvm_native.d.ts +5 -2
  55. package/dest/providers/acvm_native.d.ts.map +1 -1
  56. package/dest/providers/acvm_native.js +5 -2
  57. package/dest/providers/acvm_wasm.d.ts +8 -2
  58. package/dest/providers/acvm_wasm.d.ts.map +1 -1
  59. package/dest/providers/acvm_wasm.js +31 -5
  60. package/dest/providers/acvm_wasm_with_blobs.d.ts +14 -2
  61. package/dest/providers/acvm_wasm_with_blobs.d.ts.map +1 -1
  62. package/dest/providers/acvm_wasm_with_blobs.js +24 -4
  63. package/dest/providers/factory.d.ts +1 -1
  64. package/dest/providers/factory.d.ts.map +1 -1
  65. package/dest/providers/factory.js +1 -1
  66. package/dest/providers/index.d.ts +1 -1
  67. package/dest/providers/index.d.ts.map +1 -1
  68. package/dest/providers/index.js +2 -2
  69. package/dest/public/db_interfaces.d.ts +1 -1
  70. package/dest/public/db_interfaces.d.ts.map +1 -1
  71. package/dest/public/fixtures/index.d.ts +3 -3
  72. package/dest/public/fixtures/index.d.ts.map +1 -1
  73. package/dest/public/fixtures/index.js +48 -18
  74. package/dest/public/public_db_sources.d.ts +2 -1
  75. package/dest/public/public_db_sources.d.ts.map +1 -1
  76. package/dest/public/public_db_sources.js +2 -2
  77. package/dest/public/public_tx_simulator.js +2 -2
  78. package/{src/index.ts → dest/server.d.ts} +1 -2
  79. package/dest/server.d.ts.map +1 -0
  80. package/dest/server.js +6 -0
  81. package/package.json +11 -12
  82. package/src/acvm/acvm.ts +1 -1
  83. package/src/acvm/index.ts +1 -1
  84. package/src/acvm/oracle/oracle.ts +14 -14
  85. package/src/acvm/oracle/typed_oracle.ts +12 -20
  86. package/src/avm/avm_simulator.ts +6 -1
  87. package/src/avm/fixtures/index.ts +2 -1
  88. package/src/avm/journal/nullifiers.ts +1 -1
  89. package/src/avm/journal/public_storage.ts +1 -1
  90. package/src/client/client_execution_context.ts +47 -30
  91. package/src/client/execution_note_cache.ts +67 -14
  92. package/src/client/index.ts +11 -3
  93. package/src/client/private_execution.ts +21 -17
  94. package/src/client/simulator.ts +20 -7
  95. package/src/client/unconstrained_execution.ts +17 -13
  96. package/src/common/hashed_values_cache.ts +55 -0
  97. package/src/common/index.ts +1 -1
  98. package/src/common/message_load_oracle_inputs.ts +15 -0
  99. package/src/common/simulation_provider.ts +45 -0
  100. package/src/common.ts +1 -0
  101. package/src/providers/acvm_native.ts +12 -2
  102. package/src/providers/acvm_wasm.ts +36 -9
  103. package/src/providers/acvm_wasm_with_blobs.ts +34 -9
  104. package/src/providers/factory.ts +1 -1
  105. package/src/providers/index.ts +1 -1
  106. package/src/public/db_interfaces.ts +1 -1
  107. package/src/public/fixtures/index.ts +62 -26
  108. package/src/public/public_db_sources.ts +3 -6
  109. package/src/public/public_tx_simulator.ts +1 -1
  110. package/{dest/index.d.ts → src/server.ts} +0 -3
  111. package/dest/common/packed_values_cache.d.ts +0 -28
  112. package/dest/common/packed_values_cache.d.ts.map +0 -1
  113. package/dest/index.d.ts.map +0 -1
  114. package/dest/index.js +0 -8
  115. package/dest/providers/simulation_provider.d.ts +0 -9
  116. package/dest/providers/simulation_provider.d.ts.map +0 -1
  117. package/dest/providers/simulation_provider.js +0 -2
  118. package/src/common/packed_values_cache.ts +0 -55
  119. package/src/providers/simulation_provider.ts +0 -10
@@ -203,7 +203,7 @@ let PublicTxSimulator = (() => {
203
203
  /*transactionFee=*/ context.getTransactionFee(phase), fnName);
204
204
  const gasUsed = allocatedGas.sub(result.gasLeft); // by enqueued call
205
205
  context.consumeGas(phase, gasUsed);
206
- this.log.debug(`Simulated enqueued public call consumed ${gasUsed.l2Gas} L2 gas ending with ${result.gasLeft.l2Gas} L2 gas left.`);
206
+ this.log.debug(`Simulated enqueued public call (${fnName}) consumed ${gasUsed.l2Gas} L2 gas ending with ${result.gasLeft.l2Gas} L2 gas left.`);
207
207
  stateManager.traceEnqueuedCall(callRequest, executionRequest.args, result.reverted);
208
208
  if (result.reverted) {
209
209
  const culprit = `${executionRequest.callContext.contractAddress}:${executionRequest.callContext.functionSelector}`;
@@ -333,4 +333,4 @@ let PublicTxSimulator = (() => {
333
333
  _a;
334
334
  })();
335
335
  export { PublicTxSimulator };
336
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3R4X3NpbXVsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvcHVibGljX3R4X3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUlMLHlCQUF5QixFQUl6QixnQkFBZ0IsRUFDaEIseUJBQXlCLEdBQzFCLE1BQU0sc0JBQXNCLENBQUM7QUFHOUIsT0FBTyxFQUFlLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUFxQyxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRyxPQUFPLEVBQUUsTUFBTSxJQUFJLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUcxQyxPQUFPLEVBQW1DLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7SUFvQjVDLGlCQUFpQjs7Ozs7c0JBQWpCLGlCQUFpQjtZQUs1QixZQUNVLEVBQTRCLEVBQzVCLFlBQTBCLEVBQ2xDLGVBQWdDLEVBQ3hCLGVBQWdDLEVBQ2hDLHFCQUE4QixLQUFLLEVBQ25DLG9CQUE2QixJQUFJO2dCQUxqQyxPQUFFLElBTkQsbURBQWlCLEVBTWxCLEVBQUUsRUFBMEI7Z0JBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFj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
336
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3R4X3NpbXVsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvcHVibGljX3R4X3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUlMLHlCQUF5QixFQUl6QixnQkFBZ0IsRUFDaEIseUJBQXlCLEdBQzFCLE1BQU0sc0JBQXNCLENBQUM7QUFHOUIsT0FBTyxFQUFlLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUFxQyxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRyxPQUFPLEVBQUUsTUFBTSxJQUFJLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUcxQyxPQUFPLEVBQW1DLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7SUFvQjVDLGlCQUFpQjs7Ozs7c0JBQWpCLGlCQUFpQjtZQUs1QixZQUNVLEVBQTRCLEVBQzVCLFlBQTBCLEVBQ2xDLGVBQWdDLEVBQ3hCLGVBQWdDLEVBQ2hDLHFCQUE4QixLQUFLLEVBQ25DLG9CQUE2QixJQUFJO2dCQUxqQyxPQUFFLElBTkQsbURBQWlCLEVBTWxCLEVBQUUsRUFBMEI7Z0JBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFj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
@@ -1,7 +1,6 @@
1
- export * from './acvm/index.js';
2
1
  export * from './avm/index.js';
3
- export * from './client/index.js';
4
2
  export * from './common/index.js';
5
3
  export * from './public/index.js';
6
4
  export * from './providers/index.js';
7
5
  export * from './stats/index.js';
6
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC"}
package/dest/server.js ADDED
@@ -0,0 +1,6 @@
1
+ export * from './avm/index.js';
2
+ export * from './common/index.js';
3
+ export * from './public/index.js';
4
+ export * from './providers/index.js';
5
+ export * from './stats/index.js';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsa0JBQWtCLENBQUMifQ==
package/package.json CHANGED
@@ -1,12 +1,11 @@
1
1
  {
2
2
  "name": "@aztec/simulator",
3
- "version": "0.69.1-devnet",
3
+ "version": "0.70.0",
4
4
  "type": "module",
5
5
  "exports": {
6
- ".": "./dest/index.js",
6
+ "./common": "./dest/common.js",
7
+ "./server": "./dest/server.js",
7
8
  "./client": "./dest/client/index.js",
8
- "./acvm": "./dest/acvm/index.js",
9
- "./errors": "./dest/common/errors.js",
10
9
  "./public/fixtures": "./dest/public/fixtures/index.js"
11
10
  },
12
11
  "typedocOptions": {
@@ -61,14 +60,14 @@
61
60
  ]
62
61
  },
63
62
  "dependencies": {
64
- "@aztec/circuit-types": "0.69.1-devnet",
65
- "@aztec/circuits.js": "0.69.1-devnet",
66
- "@aztec/foundation": "0.69.1-devnet",
67
- "@aztec/noir-protocol-circuits-types": "0.69.1-devnet",
68
- "@aztec/protocol-contracts": "0.69.1-devnet",
69
- "@aztec/telemetry-client": "0.69.1-devnet",
70
- "@aztec/types": "0.69.1-devnet",
71
- "@aztec/world-state": "0.69.1-devnet",
63
+ "@aztec/circuit-types": "0.70.0",
64
+ "@aztec/circuits.js": "0.70.0",
65
+ "@aztec/foundation": "0.70.0",
66
+ "@aztec/noir-protocol-circuits-types": "0.70.0",
67
+ "@aztec/protocol-contracts": "0.70.0",
68
+ "@aztec/telemetry-client": "0.70.0",
69
+ "@aztec/types": "0.70.0",
70
+ "@aztec/world-state": "0.70.0",
72
71
  "@noir-lang/acvm_js": "portal:../../noir/packages/acvm_js",
73
72
  "@noir-lang/noirc_abi": "portal:../../noir/packages/noirc_abi",
74
73
  "@noir-lang/types": "portal:../../noir/packages/types",
package/src/acvm/acvm.ts CHANGED
@@ -16,7 +16,7 @@ import { type ORACLE_NAMES } from './oracle/index.js';
16
16
  /**
17
17
  * The callback interface for the ACIR.
18
18
  */
19
- type ACIRCallback = Record<
19
+ export type ACIRCallback = Record<
20
20
  ORACLE_NAMES,
21
21
  (
22
22
  ...args: ForeignCallInput[]
package/src/acvm/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- export * from './acvm.js';
1
+ export { extractCallStack, type ACIRCallback, type ACIRExecutionResult } from './acvm.js';
2
2
  export * from './acvm_types.js';
3
3
  export * from './deserialize.js';
4
4
  export * from './oracle/index.js';
@@ -22,25 +22,20 @@ export class Oracle {
22
22
  return toACVMField(val);
23
23
  }
24
24
 
25
- async packArgumentsArray(args: ACVMField[]): Promise<ACVMField> {
26
- const packed = await this.typedOracle.packArgumentsArray(args.map(fromACVMField));
27
- return toACVMField(packed);
28
- }
29
-
30
- async packArguments(_length: ACVMField[], values: ACVMField[]): Promise<ACVMField> {
31
- const packed = await this.typedOracle.packArgumentsArray(values.map(fromACVMField));
32
- return toACVMField(packed);
25
+ async storeArrayInExecutionCache(values: ACVMField[]): Promise<ACVMField> {
26
+ const hash = await this.typedOracle.storeArrayInExecutionCache(values.map(fromACVMField));
27
+ return toACVMField(hash);
33
28
  }
34
29
 
35
30
  // Since the argument is a slice, noir automatically adds a length field to oracle call.
36
- async packReturns(_length: ACVMField[], values: ACVMField[]): Promise<ACVMField> {
37
- const packed = await this.typedOracle.packReturns(values.map(fromACVMField));
38
- return toACVMField(packed);
31
+ async storeInExecutionCache(_length: ACVMField[], values: ACVMField[]): Promise<ACVMField> {
32
+ const hash = await this.typedOracle.storeInExecutionCache(values.map(fromACVMField));
33
+ return toACVMField(hash);
39
34
  }
40
35
 
41
- async unpackReturns([returnsHash]: ACVMField[]): Promise<ACVMField[]> {
42
- const unpacked = await this.typedOracle.unpackReturns(fromACVMField(returnsHash));
43
- return unpacked.map(toACVMField);
36
+ async loadFromExecutionCache([returnsHash]: ACVMField[]): Promise<ACVMField[]> {
37
+ const values = await this.typedOracle.loadFromExecutionCache(fromACVMField(returnsHash));
38
+ return values.map(toACVMField);
44
39
  }
45
40
 
46
41
  async getBlockNumber(): Promise<ACVMField> {
@@ -258,6 +253,11 @@ export class Oracle {
258
253
  return toACVMField(0);
259
254
  }
260
255
 
256
+ async notifyCreatedNullifier([innerNullifier]: ACVMField[]): Promise<ACVMField> {
257
+ await this.typedOracle.notifyCreatedNullifier(fromACVMField(innerNullifier));
258
+ return toACVMField(0);
259
+ }
260
+
261
261
  async checkNullifierExists([innerNullifier]: ACVMField[]): Promise<ACVMField> {
262
262
  const exists = await this.typedOracle.checkNullifierExists(fromACVMField(innerNullifier));
263
263
  return toACVMField(exists);
@@ -5,7 +5,6 @@ import {
5
5
  type NoteStatus,
6
6
  type NullifierMembershipWitness,
7
7
  type PublicDataWitness,
8
- type SiblingPath,
9
8
  type UnencryptedL2Log,
10
9
  } from '@aztec/circuit-types';
11
10
  import {
@@ -19,6 +18,8 @@ import { type FunctionSelector, type NoteSelector } from '@aztec/foundation/abi'
19
18
  import { type AztecAddress } from '@aztec/foundation/aztec-address';
20
19
  import { Fr } from '@aztec/foundation/fields';
21
20
 
21
+ import { type MessageLoadOracleInputs } from '../../common/message_load_oracle_inputs.js';
22
+
22
23
  /**
23
24
  * Information about a note needed during execution.
24
25
  */
@@ -39,19 +40,6 @@ export interface NoteData {
39
40
  index?: bigint;
40
41
  }
41
42
 
42
- export class MessageLoadOracleInputs<N extends number> {
43
- constructor(
44
- /** The index of the message commitment in the merkle tree. */
45
- public index: bigint,
46
- /** The path in the merkle tree to the message. */
47
- public siblingPath: SiblingPath<N>,
48
- ) {}
49
-
50
- toFields(): Fr[] {
51
- return [new Fr(this.index), ...this.siblingPath.toFields()];
52
- }
53
- }
54
-
55
43
  class OracleMethodNotAvailableError extends Error {
56
44
  constructor(methodName: string) {
57
45
  super(`Oracle method ${methodName} is not available.`);
@@ -68,16 +56,16 @@ export abstract class TypedOracle {
68
56
  return Fr.random();
69
57
  }
70
58
 
71
- packArgumentsArray(_args: Fr[]): Promise<Fr> {
72
- throw new OracleMethodNotAvailableError('packArgumentsArray');
59
+ storeArrayInExecutionCache(_args: Fr[]): Promise<Fr> {
60
+ throw new OracleMethodNotAvailableError('storeArrayInExecutionCache');
73
61
  }
74
62
 
75
- packReturns(_returns: Fr[]): Promise<Fr> {
76
- throw new OracleMethodNotAvailableError('packReturns');
63
+ storeInExecutionCache(_values: Fr[]): Promise<Fr> {
64
+ throw new OracleMethodNotAvailableError('storeInExecutionCache');
77
65
  }
78
66
 
79
- unpackReturns(_returnsHash: Fr): Promise<Fr[]> {
80
- throw new OracleMethodNotAvailableError('unpackReturns');
67
+ loadFromExecutionCache(_hash: Fr): Promise<Fr[]> {
68
+ throw new OracleMethodNotAvailableError('loadFromExecutionCache');
81
69
  }
82
70
 
83
71
  getBlockNumber(): Promise<number> {
@@ -166,6 +154,10 @@ export abstract class TypedOracle {
166
154
  throw new OracleMethodNotAvailableError('notifyNullifiedNote');
167
155
  }
168
156
 
157
+ notifyCreatedNullifier(_innerNullifier: Fr): Promise<void> {
158
+ throw new OracleMethodNotAvailableError('notifyCreatedNullifier');
159
+ }
160
+
169
161
  checkNullifierExists(_innerNullifier: Fr): Promise<boolean> {
170
162
  throw new OracleMethodNotAvailableError('checkNullifierExists');
171
163
  }
@@ -137,6 +137,7 @@ export class AvmSimulator {
137
137
  this.bytecode = bytecode;
138
138
 
139
139
  const { machineState } = this.context;
140
+ const callStartGas = machineState.gasLeft; // Save gas before executing instruction (for profiling)
140
141
  try {
141
142
  // Execute instruction pointed to by the current program counter
142
143
  // continuing until the machine state signifies a halt
@@ -180,7 +181,11 @@ export class AvmSimulator {
180
181
  const revertReason = reverted ? await revertReasonFromExplicitRevert(output, this.context) : undefined;
181
182
  const results = new AvmContractCallResult(reverted, output, machineState.gasLeft, revertReason);
182
183
  this.log.debug(`Context execution results: ${results.toString()}`);
183
- this.log.debug(`Executed ${instrCounter} instructions`);
184
+ const totalGasUsed: Gas = {
185
+ l2Gas: callStartGas.l2Gas - machineState.l2GasLeft,
186
+ daGas: callStartGas.daGas - machineState.daGasLeft,
187
+ };
188
+ this.log.debug(`Executed ${instrCounter} instructions and consumed ${totalGasUsed.l2Gas} L2 Gas`);
184
189
 
185
190
  this.tallyPrintFunction();
186
191
  // Return results for processing by calling context
@@ -10,8 +10,9 @@ import { strict as assert } from 'assert';
10
10
  import { mock } from 'jest-mock-extended';
11
11
  import merge from 'lodash.merge';
12
12
 
13
- import { type WorldStateDB, resolveAssertionMessageFromRevertData, traverseCauseChain } from '../../index.js';
13
+ import { resolveAssertionMessageFromRevertData, traverseCauseChain } from '../../common.js';
14
14
  import { type PublicSideEffectTraceInterface } from '../../public/side_effect_trace_interface.js';
15
+ import { type WorldStateDB } from '../../server.js';
15
16
  import { AvmContext } from '../avm_context.js';
16
17
  import { AvmExecutionEnvironment } from '../avm_execution_environment.js';
17
18
  import { AvmMachineState } from '../avm_machine_state.js';
@@ -1,6 +1,6 @@
1
1
  import { Fr } from '@aztec/foundation/fields';
2
2
 
3
- import type { CommitmentsDB } from '../../index.js';
3
+ import type { CommitmentsDB } from '../../server.js';
4
4
 
5
5
  /**
6
6
  * A class to manage new nullifier staging and existence checks during a contract call's AVM simulation.
@@ -1,7 +1,7 @@
1
1
  import { type AztecAddress } from '@aztec/circuits.js';
2
2
  import { Fr } from '@aztec/foundation/fields';
3
3
 
4
- import type { PublicStateDB } from '../../index.js';
4
+ import type { PublicStateDB } from '../../server.js';
5
5
 
6
6
  type PublicStorageReadResult = {
7
7
  value: Fr;
@@ -6,7 +6,7 @@ import {
6
6
  Note,
7
7
  NoteAndSlot,
8
8
  type NoteStatus,
9
- type PrivateExecutionResult,
9
+ type PrivateCallExecutionResult,
10
10
  PublicExecutionRequest,
11
11
  type UnencryptedL2Log,
12
12
  } from '@aztec/circuit-types';
@@ -26,7 +26,8 @@ import { Fr } from '@aztec/foundation/fields';
26
26
  import { createLogger } from '@aztec/foundation/log';
27
27
 
28
28
  import { type NoteData, toACVMWitness } from '../acvm/index.js';
29
- import { type PackedValuesCache } from '../common/packed_values_cache.js';
29
+ import { type HashedValuesCache } from '../common/hashed_values_cache.js';
30
+ import { type SimulationProvider } from '../server.js';
30
31
  import { type DBOracle } from './db_oracle.js';
31
32
  import { type ExecutionNoteCache } from './execution_note_cache.js';
32
33
  import { pickNotes } from './pick_notes.js';
@@ -57,7 +58,7 @@ export class ClientExecutionContext extends ViewDataOracle {
57
58
  private noteHashLeafIndexMap: Map<bigint, bigint> = new Map();
58
59
  private noteHashNullifierCounterMap: Map<number, number> = new Map();
59
60
  private contractClassLogs: CountedContractClassLog[] = [];
60
- private nestedExecutions: PrivateExecutionResult[] = [];
61
+ private nestedExecutions: PrivateCallExecutionResult[] = [];
61
62
  private enqueuedPublicFunctionCalls: CountedPublicExecutionRequest[] = [];
62
63
  private publicTeardownFunctionCall: PublicExecutionRequest = PublicExecutionRequest.empty();
63
64
 
@@ -69,10 +70,11 @@ export class ClientExecutionContext extends ViewDataOracle {
69
70
  protected readonly historicalHeader: BlockHeader,
70
71
  /** List of transient auth witnesses to be used during this simulation */
71
72
  authWitnesses: AuthWitness[],
72
- private readonly packedValuesCache: PackedValuesCache,
73
+ private readonly executionCache: HashedValuesCache,
73
74
  private readonly noteCache: ExecutionNoteCache,
74
75
  db: DBOracle,
75
76
  private node: AztecNode,
77
+ private provider: SimulationProvider,
76
78
  protected sideEffectCounter: number = 0,
77
79
  log = createLogger('simulator:client_execution_context'),
78
80
  scopes?: AztecAddress[],
@@ -90,7 +92,7 @@ export class ClientExecutionContext extends ViewDataOracle {
90
92
  public getInitialWitness(abi: FunctionAbi) {
91
93
  const argumentsSize = countArgumentsSize(abi);
92
94
 
93
- const args = this.packedValuesCache.unpack(this.argsHash);
95
+ const args = this.executionCache.getPreimage(this.argsHash);
94
96
 
95
97
  if (args.length !== argumentsSize) {
96
98
  throw new Error('Invalid arguments size');
@@ -159,27 +161,29 @@ export class ClientExecutionContext extends ViewDataOracle {
159
161
  }
160
162
 
161
163
  /**
162
- * Pack the given array of arguments.
163
- * @param args - Arguments to pack
164
+ * Store values in the execution cache.
165
+ * @param values - Values to store.
164
166
  */
165
- public override packArgumentsArray(args: Fr[]): Promise<Fr> {
166
- return Promise.resolve(this.packedValuesCache.pack(args));
167
+ public override storeArrayInExecutionCache(args: Fr[]): Promise<Fr> {
168
+ return Promise.resolve(this.executionCache.store(args));
167
169
  }
168
170
 
169
171
  /**
170
- * Pack the given returns.
171
- * @param returns - Returns to pack
172
+ * Store values in the execution cache.
173
+ * @param values - Values to store.
174
+ * @returns The hash of the values.
172
175
  */
173
- public override packReturns(returns: Fr[]): Promise<Fr> {
174
- return Promise.resolve(this.packedValuesCache.pack(returns));
176
+ public override storeInExecutionCache(values: Fr[]): Promise<Fr> {
177
+ return Promise.resolve(this.executionCache.store(values));
175
178
  }
176
179
 
177
180
  /**
178
- * Unpack the given returns.
179
- * @param returnsHash - Returns hash to unpack
181
+ * Gets values from the execution cache.
182
+ * @param hash - Hash of the values.
183
+ * @returns The values.
180
184
  */
181
- public override unpackReturns(returnsHash: Fr): Promise<Fr[]> {
182
- return Promise.resolve(this.packedValuesCache.unpack(returnsHash));
185
+ public override loadFromExecutionCache(hash: Fr): Promise<Fr[]> {
186
+ return Promise.resolve(this.executionCache.getPreimage(hash));
183
187
  }
184
188
 
185
189
  /**
@@ -307,6 +311,17 @@ export class ClientExecutionContext extends ViewDataOracle {
307
311
  return Promise.resolve();
308
312
  }
309
313
 
314
+ /**
315
+ * Adding a siloed nullifier into the current set of all pending nullifiers created
316
+ * within the current transaction/execution.
317
+ * @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
318
+ * @param noteHash - A hash of the new note.
319
+ */
320
+ public override notifyCreatedNullifier(innerNullifier: Fr) {
321
+ this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
322
+ return Promise.resolve();
323
+ }
324
+
310
325
  /**
311
326
  * Emit a contract class unencrypted log.
312
327
  * This fn exists because sha hashing the preimage
@@ -323,7 +338,7 @@ export class ClientExecutionContext extends ViewDataOracle {
323
338
  return Fr.fromBuffer(log.hash());
324
339
  }
325
340
 
326
- #checkValidStaticCall(childExecutionResult: PrivateExecutionResult) {
341
+ #checkValidStaticCall(childExecutionResult: PrivateCallExecutionResult) {
327
342
  if (
328
343
  childExecutionResult.publicInputs.noteHashes.some(item => !item.isEmpty()) ||
329
344
  childExecutionResult.publicInputs.nullifiers.some(item => !item.isEmpty()) ||
@@ -339,7 +354,7 @@ export class ClientExecutionContext extends ViewDataOracle {
339
354
  * Calls a private function as a nested execution.
340
355
  * @param targetContractAddress - The address of the contract to call.
341
356
  * @param functionSelector - The function selector of the function to call.
342
- * @param argsHash - The packed arguments to pass to the function.
357
+ * @param argsHash - The arguments hash to pass to the function.
343
358
  * @param sideEffectCounter - The side effect counter at the start of the call.
344
359
  * @param isStaticCall - Whether the call is a static call.
345
360
  * @returns The execution result.
@@ -369,16 +384,18 @@ export class ClientExecutionContext extends ViewDataOracle {
369
384
  derivedCallContext,
370
385
  this.historicalHeader,
371
386
  this.authWitnesses,
372
- this.packedValuesCache,
387
+ this.executionCache,
373
388
  this.noteCache,
374
389
  this.db,
375
390
  this.node,
391
+ this.provider,
376
392
  sideEffectCounter,
377
393
  this.log,
378
394
  this.scopes,
379
395
  );
380
396
 
381
397
  const childExecutionResult = await executePrivateFunction(
398
+ this.provider,
382
399
  context,
383
400
  targetArtifact,
384
401
  targetContractAddress,
@@ -402,7 +419,7 @@ export class ClientExecutionContext extends ViewDataOracle {
402
419
  * Creates a PublicExecutionRequest object representing the request to call a public function.
403
420
  * @param targetContractAddress - The address of the contract to call.
404
421
  * @param functionSelector - The function selector of the function to call.
405
- * @param argsHash - The packed arguments to pass to the function.
422
+ * @param argsHash - The arguments hash to pass to the function.
406
423
  * @param sideEffectCounter - The side effect counter at the start of the call.
407
424
  * @param isStaticCall - Whether the call is a static call.
408
425
  * @returns The public call stack item with the request information.
@@ -417,7 +434,7 @@ export class ClientExecutionContext extends ViewDataOracle {
417
434
  ) {
418
435
  const targetArtifact = await this.db.getFunctionArtifact(targetContractAddress, functionSelector);
419
436
  const derivedCallContext = this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
420
- const args = this.packedValuesCache.unpack(argsHash);
437
+ const args = this.executionCache.getPreimage(argsHash);
421
438
 
422
439
  this.log.verbose(
423
440
  `Created ${callType} public execution request to ${targetArtifact.name}@${targetContractAddress}`,
@@ -448,7 +465,7 @@ export class ClientExecutionContext extends ViewDataOracle {
448
465
  * of the execution are empty.
449
466
  * @param targetContractAddress - The address of the contract to call.
450
467
  * @param functionSelector - The function selector of the function to call.
451
- * @param argsHash - The packed arguments to pass to the function.
468
+ * @param argsHash - The arguments hash to pass to the function.
452
469
  * @param sideEffectCounter - The side effect counter at the start of the call.
453
470
  * @param isStaticCall - Whether the call is a static call.
454
471
  * @returns The public call stack item with the request information.
@@ -462,13 +479,13 @@ export class ClientExecutionContext extends ViewDataOracle {
462
479
  ): Promise<Fr> {
463
480
  // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.
464
481
  // WARNING: This is insecure and should be temporary!
465
- // The oracle repacks the arguments and returns a new args_hash.
482
+ // The oracle re-hashes the arguments and returns a new args_hash.
466
483
  // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.
467
484
  // We don't validate or compute it in the circuit because a) it's harder to do with slices, and
468
485
  // b) this is only temporary.
469
- const newArgsHash = this.packedValuesCache.pack([
486
+ const newArgsHash = this.executionCache.store([
470
487
  functionSelector.toField(),
471
- ...this.packedValuesCache.unpack(argsHash),
488
+ ...this.executionCache.getPreimage(argsHash),
472
489
  ]);
473
490
  await this.createPublicExecutionRequest(
474
491
  'enqueued',
@@ -487,7 +504,7 @@ export class ClientExecutionContext extends ViewDataOracle {
487
504
  * of the execution are empty.
488
505
  * @param targetContractAddress - The address of the contract to call.
489
506
  * @param functionSelector - The function selector of the function to call.
490
- * @param argsHash - The packed arguments to pass to the function.
507
+ * @param argsHash - The arguments hash to pass to the function.
491
508
  * @param sideEffectCounter - The side effect counter at the start of the call.
492
509
  * @param isStaticCall - Whether the call is a static call.
493
510
  * @returns The public call stack item with the request information.
@@ -501,13 +518,13 @@ export class ClientExecutionContext extends ViewDataOracle {
501
518
  ): Promise<Fr> {
502
519
  // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.
503
520
  // WARNING: This is insecure and should be temporary!
504
- // The oracle repacks the arguments and returns a new args_hash.
521
+ // The oracle rehashes the arguments and returns a new args_hash.
505
522
  // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.
506
523
  // We don't validate or compute it in the circuit because a) it's harder to do with slices, and
507
524
  // b) this is only temporary.
508
- const newArgsHash = this.packedValuesCache.pack([
525
+ const newArgsHash = this.executionCache.store([
509
526
  functionSelector.toField(),
510
- ...this.packedValuesCache.unpack(argsHash),
527
+ ...this.executionCache.getPreimage(argsHash),
511
528
  ]);
512
529
  await this.createPublicExecutionRequest(
513
530
  'teardown',