@aztec/simulator 0.81.0 → 0.82.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 (86) hide show
  1. package/dest/common/db_interfaces.d.ts +6 -12
  2. package/dest/common/db_interfaces.d.ts.map +1 -1
  3. package/dest/common/db_interfaces.js +1 -1
  4. package/dest/common/message_load_oracle_inputs.d.ts +4 -0
  5. package/dest/common/message_load_oracle_inputs.d.ts.map +1 -1
  6. package/dest/common/message_load_oracle_inputs.js +9 -0
  7. package/dest/private/acvm/acvm.d.ts +6 -1
  8. package/dest/private/acvm/acvm.d.ts.map +1 -1
  9. package/dest/private/acvm/acvm.js +7 -13
  10. package/dest/private/acvm/deserialize.d.ts +0 -18
  11. package/dest/private/acvm/deserialize.d.ts.map +1 -1
  12. package/dest/private/acvm/deserialize.js +3 -24
  13. package/dest/private/acvm/oracle/oracle.d.ts +34 -34
  14. package/dest/private/acvm/oracle/oracle.d.ts.map +1 -1
  15. package/dest/private/acvm/oracle/oracle.js +119 -79
  16. package/dest/private/acvm/oracle/typed_oracle.d.ts +1 -1
  17. package/dest/private/acvm/oracle/typed_oracle.d.ts.map +1 -1
  18. package/dest/private/acvm/oracle/typed_oracle.js +2 -2
  19. package/dest/private/execution_data_provider.d.ts +3 -9
  20. package/dest/private/execution_data_provider.d.ts.map +1 -1
  21. package/dest/private/private_execution.d.ts +2 -2
  22. package/dest/private/private_execution.d.ts.map +1 -1
  23. package/dest/private/private_execution.js +4 -5
  24. package/dest/private/providers/acvm_native.d.ts +6 -4
  25. package/dest/private/providers/acvm_native.d.ts.map +1 -1
  26. package/dest/private/providers/acvm_native.js +6 -3
  27. package/dest/private/providers/acvm_wasm.d.ts +6 -7
  28. package/dest/private/providers/acvm_wasm.d.ts.map +1 -1
  29. package/dest/private/providers/acvm_wasm.js +13 -15
  30. package/dest/private/providers/acvm_wasm_with_blobs.d.ts +5 -5
  31. package/dest/private/providers/acvm_wasm_with_blobs.d.ts.map +1 -1
  32. package/dest/private/providers/acvm_wasm_with_blobs.js +7 -9
  33. package/dest/private/providers/circuit_recording/circuit_recorder.d.ts +90 -0
  34. package/dest/private/providers/circuit_recording/circuit_recorder.d.ts.map +1 -0
  35. package/dest/private/providers/circuit_recording/circuit_recorder.js +246 -0
  36. package/dest/private/providers/circuit_recording/simulation_provider_recorder_wrapper.d.ts +18 -0
  37. package/dest/private/providers/circuit_recording/simulation_provider_recorder_wrapper.d.ts.map +1 -0
  38. package/dest/private/providers/circuit_recording/simulation_provider_recorder_wrapper.js +39 -0
  39. package/dest/private/providers/simulation_provider.d.ts +21 -7
  40. package/dest/private/providers/simulation_provider.d.ts.map +1 -1
  41. package/dest/private/simulator.d.ts +3 -2
  42. package/dest/private/simulator.d.ts.map +1 -1
  43. package/dest/private/simulator.js +2 -2
  44. package/dest/private/unconstrained_execution.d.ts +2 -2
  45. package/dest/private/unconstrained_execution.d.ts.map +1 -1
  46. package/dest/private/unconstrained_execution.js +1 -2
  47. package/dest/private/unconstrained_execution_oracle.d.ts +1 -1
  48. package/dest/private/unconstrained_execution_oracle.d.ts.map +1 -1
  49. package/dest/private/unconstrained_execution_oracle.js +3 -3
  50. package/dest/public/avm/avm_simulator.d.ts.map +1 -1
  51. package/dest/public/avm/avm_simulator.js +0 -2
  52. package/dest/public/avm/journal/journal.js +1 -1
  53. package/dest/public/avm/test_utils.js +1 -1
  54. package/dest/public/public_db_sources.d.ts +1 -1
  55. package/dest/public/public_db_sources.d.ts.map +1 -1
  56. package/dest/public/public_db_sources.js +3 -3
  57. package/dest/testing.d.ts +2 -0
  58. package/dest/testing.d.ts.map +1 -0
  59. package/dest/testing.js +1 -0
  60. package/package.json +15 -14
  61. package/src/common/db_interfaces.ts +6 -13
  62. package/src/common/message_load_oracle_inputs.ts +8 -0
  63. package/src/private/acvm/acvm.ts +8 -24
  64. package/src/private/acvm/deserialize.ts +3 -30
  65. package/src/private/acvm/oracle/oracle.ts +144 -136
  66. package/src/private/acvm/oracle/typed_oracle.ts +2 -2
  67. package/src/private/execution_data_provider.ts +6 -10
  68. package/src/private/private_execution.ts +11 -7
  69. package/src/private/providers/acvm_native.ts +17 -6
  70. package/src/private/providers/acvm_wasm.ts +27 -20
  71. package/src/private/providers/acvm_wasm_with_blobs.ts +15 -12
  72. package/src/private/providers/circuit_recording/circuit_recorder.ts +283 -0
  73. package/src/private/providers/circuit_recording/simulation_provider_recorder_wrapper.ts +82 -0
  74. package/src/private/providers/simulation_provider.ts +30 -5
  75. package/src/private/simulator.ts +5 -3
  76. package/src/private/unconstrained_execution.ts +8 -4
  77. package/src/private/unconstrained_execution_oracle.ts +3 -6
  78. package/src/public/avm/avm_simulator.ts +0 -2
  79. package/src/public/avm/journal/journal.ts +1 -1
  80. package/src/public/avm/test_utils.ts +1 -1
  81. package/src/public/public_db_sources.ts +3 -3
  82. package/src/testing.ts +1 -0
  83. package/dest/public/avm/bytecode_utils.d.ts +0 -5
  84. package/dest/public/avm/bytecode_utils.d.ts.map +0 -1
  85. package/dest/public/avm/bytecode_utils.js +0 -17
  86. package/src/public/avm/bytecode_utils.ts +0 -17
@@ -103,11 +103,11 @@ export class UnconstrainedExecutionOracle extends TypedOracle {
103
103
  * @param leafSlot - The slot of the public data tree to get the witness for.
104
104
  * @returns - The witness
105
105
  */
106
- public override async getPublicDataTreeWitness(
106
+ public override async getPublicDataWitness(
107
107
  blockNumber: number,
108
108
  leafSlot: Fr,
109
109
  ): Promise<PublicDataWitness | undefined> {
110
- return await this.executionDataProvider.getPublicDataTreeWitness(blockNumber, leafSlot);
110
+ return await this.executionDataProvider.getPublicDataWitness(blockNumber, leafSlot);
111
111
  }
112
112
 
113
113
  /**
@@ -149,10 +149,7 @@ export class UnconstrainedExecutionOracle extends TypedOracle {
149
149
  * @returns Authentication witness for the requested message hash.
150
150
  */
151
151
  public override getAuthWitness(messageHash: Fr): Promise<Fr[] | undefined> {
152
- return Promise.resolve(
153
- this.authWitnesses.find(w => w.requestHash.equals(messageHash))?.witness ??
154
- this.executionDataProvider.getAuthWitness(messageHash),
155
- );
152
+ return Promise.resolve(this.authWitnesses.find(w => w.requestHash.equals(messageHash))?.witness);
156
153
  }
157
154
 
158
155
  /**
@@ -12,7 +12,6 @@ import { AvmContractCallResult } from './avm_contract_call_result.js';
12
12
  import { AvmExecutionEnvironment } from './avm_execution_environment.js';
13
13
  import type { Gas } from './avm_gas.js';
14
14
  import { AvmMachineState } from './avm_machine_state.js';
15
- import { isAvmBytecode } from './bytecode_utils.js';
16
15
  import {
17
16
  AvmExecutionError,
18
17
  AvmRevertReason,
@@ -139,7 +138,6 @@ export class AvmSimulator {
139
138
  */
140
139
  public async executeBytecode(bytecode: Buffer): Promise<AvmContractCallResult> {
141
140
  const startTotalTime = performance.now();
142
- assert(isAvmBytecode(bytecode), "AVM simulator can't execute non-AVM bytecode");
143
141
  assert(bytecode.length > 0, "AVM simulator can't execute empty bytecode");
144
142
 
145
143
  this.bytecode = bytecode;
@@ -194,7 +194,7 @@ export class AvmPersistableStateManager {
194
194
  * @returns true if the note hash exists at the given leaf index, false otherwise
195
195
  */
196
196
  public async checkNoteHashExists(contractAddress: AztecAddress, noteHash: Fr, leafIndex: Fr): Promise<boolean> {
197
- const gotLeafValue = (await this.treesDB.getCommitmentValue(leafIndex.toBigInt())) ?? Fr.ZERO;
197
+ const gotLeafValue = (await this.treesDB.getNoteHash(leafIndex.toBigInt())) ?? Fr.ZERO;
198
198
  const exists = gotLeafValue.equals(noteHash);
199
199
  this.log.trace(
200
200
  `noteHashes(${contractAddress})@${noteHash} ?? leafIndex: ${leafIndex} | gotLeafValue: ${gotLeafValue}, exists: ${exists}.`,
@@ -28,7 +28,7 @@ export function mockStorageReadWithMap(worldStateDB: PublicTreesDB, mockedStorag
28
28
  }
29
29
 
30
30
  export function mockNoteHashExists(worldStateDB: PublicTreesDB, _leafIndex: Fr, value?: Fr) {
31
- (worldStateDB as jest.Mocked<PublicTreesDB>).getCommitmentValue.mockImplementation((index: bigint) => {
31
+ (worldStateDB as jest.Mocked<PublicTreesDB>).getNoteHash.mockImplementation((index: bigint) => {
32
32
  if (index == _leafIndex.toBigInt()) {
33
33
  return Promise.resolve(value);
34
34
  } else {
@@ -431,13 +431,13 @@ export class PublicTreesDB extends ForwardMerkleTree implements PublicStateDBInt
431
431
  return leafValue;
432
432
  }
433
433
 
434
- public async getCommitmentValue(leafIndex: bigint): Promise<Fr | undefined> {
434
+ public async getNoteHash(leafIndex: bigint): Promise<Fr | undefined> {
435
435
  const timer = new Timer();
436
436
  const leafValue = await this.db.getLeafValue(MerkleTreeId.NOTE_HASH_TREE, leafIndex);
437
- this.logger.debug(`[DB] Fetched commitment leaf value`, {
437
+ this.logger.debug(`[DB] Fetched note hash leaf value`, {
438
438
  eventName: 'public-db-access',
439
439
  duration: timer.ms(),
440
- operation: 'get-commitment-leaf-value',
440
+ operation: 'get-note-hash',
441
441
  } satisfies PublicDBAccessStats);
442
442
  return leafValue;
443
443
  }
package/src/testing.ts ADDED
@@ -0,0 +1 @@
1
+ export { SimulationProviderRecorderWrapper } from './private/providers/circuit_recording/simulation_provider_recorder_wrapper.js';
@@ -1,5 +0,0 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- /// <reference types="node" resolution-mode="require"/>
3
- export declare function markBytecodeAsAvm(bytecode: Buffer): Buffer;
4
- export declare function isAvmBytecode(bytecode: Buffer): boolean;
5
- //# sourceMappingURL=bytecode_utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bytecode_utils.d.ts","sourceRoot":"","sources":["../../../src/public/avm/bytecode_utils.ts"],"names":[],"mappings":";;AASA,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGvD"}
@@ -1,17 +0,0 @@
1
- import { Opcode } from './serialization/instruction_serialization.js';
2
- const AVM_MAGIC_SUFFIX = Buffer.from([
3
- Opcode.MOV_16,
4
- 0x00,
5
- ...Buffer.from('18ca', 'hex'),
6
- ...Buffer.from('18ca', 'hex')
7
- ]);
8
- export function markBytecodeAsAvm(bytecode) {
9
- return Buffer.concat([
10
- bytecode,
11
- AVM_MAGIC_SUFFIX
12
- ]);
13
- }
14
- export function isAvmBytecode(bytecode) {
15
- const magicSize = AVM_MAGIC_SUFFIX.length;
16
- return bytecode.subarray(-magicSize).equals(AVM_MAGIC_SUFFIX);
17
- }
@@ -1,17 +0,0 @@
1
- import { Opcode } from './serialization/instruction_serialization.js';
2
-
3
- const AVM_MAGIC_SUFFIX = Buffer.from([
4
- Opcode.MOV_16, // opcode
5
- 0x00, // indirect
6
- ...Buffer.from('18ca', 'hex'), // srcOffset
7
- ...Buffer.from('18ca', 'hex'), // dstOffset
8
- ]);
9
-
10
- export function markBytecodeAsAvm(bytecode: Buffer): Buffer {
11
- return Buffer.concat([bytecode, AVM_MAGIC_SUFFIX]);
12
- }
13
-
14
- export function isAvmBytecode(bytecode: Buffer): boolean {
15
- const magicSize = AVM_MAGIC_SUFFIX.length;
16
- return bytecode.subarray(-magicSize).equals(AVM_MAGIC_SUFFIX);
17
- }