@aztec/simulator 0.0.1-commit.001888fc → 0.0.1-commit.017a351

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 (92) hide show
  1. package/dest/private/acvm_wasm.d.ts +1 -1
  2. package/dest/private/acvm_wasm.d.ts.map +1 -1
  3. package/dest/private/acvm_wasm.js +3 -1
  4. package/dest/public/avm/avm_simulator.js +1 -1
  5. package/dest/public/avm/calldata.d.ts +1 -1
  6. package/dest/public/avm/calldata.d.ts.map +1 -1
  7. package/dest/public/avm/calldata.js +3 -2
  8. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +2 -1
  9. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
  10. package/dest/public/avm/fixtures/base_avm_simulation_tester.js +17 -2
  11. package/dest/public/avm/fixtures/utils.d.ts +1 -1
  12. package/dest/public/avm/fixtures/utils.d.ts.map +1 -1
  13. package/dest/public/avm/fixtures/utils.js +3 -0
  14. package/dest/public/avm/opcodes/contract.d.ts +3 -2
  15. package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
  16. package/dest/public/avm/opcodes/contract.js +5 -1
  17. package/dest/public/avm/opcodes/ec_add.d.ts +2 -4
  18. package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
  19. package/dest/public/avm/opcodes/ec_add.js +13 -27
  20. package/dest/public/contracts_db_checkpoint.d.ts +2 -2
  21. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -1
  22. package/dest/public/contracts_db_checkpoint.js +1 -1
  23. package/dest/public/fixtures/bulk_test.d.ts +1 -1
  24. package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
  25. package/dest/public/fixtures/bulk_test.js +31 -4
  26. package/dest/public/fixtures/custom_bytecode_tests.d.ts +3 -1
  27. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -1
  28. package/dest/public/fixtures/custom_bytecode_tests.js +61 -1
  29. package/dest/public/fixtures/opcode_spammer.d.ts +1 -1
  30. package/dest/public/fixtures/opcode_spammer.d.ts.map +1 -1
  31. package/dest/public/fixtures/opcode_spammer.js +2 -10
  32. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +1 -1
  33. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  34. package/dest/public/fixtures/public_tx_simulation_tester.js +3 -3
  35. package/dest/public/fixtures/utils.d.ts +1 -1
  36. package/dest/public/fixtures/utils.d.ts.map +1 -1
  37. package/dest/public/fixtures/utils.js +14 -15
  38. package/dest/public/hinting_db_sources.d.ts +2 -1
  39. package/dest/public/hinting_db_sources.d.ts.map +1 -1
  40. package/dest/public/hinting_db_sources.js +4 -1
  41. package/dest/public/public_db_sources.d.ts +6 -3
  42. package/dest/public/public_db_sources.d.ts.map +1 -1
  43. package/dest/public/public_db_sources.js +16 -10
  44. package/dest/public/public_processor/guarded_merkle_tree.d.ts +4 -3
  45. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  46. package/dest/public/public_processor/guarded_merkle_tree.js +3 -0
  47. package/dest/public/public_processor/public_processor.d.ts +4 -3
  48. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  49. package/dest/public/public_processor/public_processor.js +60 -34
  50. package/dest/public/public_processor/public_processor_metrics.d.ts +4 -1
  51. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  52. package/dest/public/public_processor/public_processor_metrics.js +8 -0
  53. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +1 -1
  54. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -1
  55. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +3 -2
  56. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +1 -1
  57. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -1
  58. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +3 -8
  59. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +1 -1
  60. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +1 -1
  61. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +3 -7
  62. package/dest/public/public_tx_simulator/public_tx_context.d.ts +7 -3
  63. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
  64. package/dest/public/public_tx_simulator/public_tx_context.js +8 -10
  65. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +6 -2
  66. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  67. package/dest/public/public_tx_simulator/public_tx_simulator.js +12 -7
  68. package/package.json +16 -15
  69. package/src/private/acvm_wasm.ts +4 -1
  70. package/src/public/avm/avm_simulator.ts +1 -1
  71. package/src/public/avm/calldata.ts +3 -2
  72. package/src/public/avm/fixtures/base_avm_simulation_tester.ts +22 -2
  73. package/src/public/avm/fixtures/utils.ts +3 -0
  74. package/src/public/avm/opcodes/contract.ts +5 -1
  75. package/src/public/avm/opcodes/ec_add.ts +12 -31
  76. package/src/public/avm/opcodes/external_calls.ts +1 -1
  77. package/src/public/contracts_db_checkpoint.ts +1 -1
  78. package/src/public/fixtures/bulk_test.ts +29 -4
  79. package/src/public/fixtures/custom_bytecode_tests.ts +139 -1
  80. package/src/public/fixtures/opcode_spammer.ts +4 -8
  81. package/src/public/fixtures/public_tx_simulation_tester.ts +4 -9
  82. package/src/public/fixtures/utils.ts +21 -18
  83. package/src/public/hinting_db_sources.ts +5 -0
  84. package/src/public/public_db_sources.ts +21 -14
  85. package/src/public/public_processor/guarded_merkle_tree.ts +5 -2
  86. package/src/public/public_processor/public_processor.ts +79 -41
  87. package/src/public/public_processor/public_processor_metrics.ts +12 -0
  88. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +3 -2
  89. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +3 -12
  90. package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +3 -10
  91. package/src/public/public_tx_simulator/public_tx_context.ts +8 -10
  92. package/src/public/public_tx_simulator/public_tx_simulator.ts +11 -7
@@ -27,7 +27,6 @@ import { type PublicContractsDB, PublicTreesDB } from '../public_db_sources.js';
27
27
  import {
28
28
  L2ToL1MessageLimitReachedError,
29
29
  NoteHashLimitReachedError,
30
- NullifierCollisionError,
31
30
  NullifierLimitReachedError,
32
31
  } from '../side_effect_errors.js';
33
32
  import type { PublicPersistableStateManager } from '../state_manager/state_manager.js';
@@ -147,7 +146,8 @@ export class PublicTxSimulator implements PublicTxSimulatorInterface {
147
146
  hintingContractsDB.createCheckpoint();
148
147
 
149
148
  try {
150
- // This will throw if there is a nullifier collision or other insertion error (limit reached).
149
+ // This may throw: a side-effect limit error triggers a soft revert (caught below), while a
150
+ // nullifier collision is unrecoverable and propagates out of simulate() to throw out the tx.
151
151
  await this.insertRevertiblesFromPrivate(context);
152
152
 
153
153
  // Only proceed with app logic if there was no revert during revertible insertion.
@@ -401,7 +401,7 @@ export class PublicTxSimulator implements PublicTxSimulatorInterface {
401
401
  // However, things work as expected because later calls to getters on the hintingContractsDB
402
402
  // will pick up the new contracts and will generate the necessary hints.
403
403
  // So, a consumer of the hints will always see the new contracts.
404
- await this.contractsDB.addContracts(context.nonRevertibleContractDeploymentData);
404
+ this.contractsDB.addContractsFromLogs(context.nonRevertibleContractDeploymentData);
405
405
  }
406
406
 
407
407
  /**
@@ -409,9 +409,13 @@ export class PublicTxSimulator implements PublicTxSimulatorInterface {
409
409
  * Throws TxSimRevertibleInsertionsRevert if there is some checked error during revertible insertions.
410
410
  * This function checks for the following errors:
411
411
  * - NullifierLimitReachedError
412
- * - NullifierCollisionError
413
412
  * - NoteHashLimitReachedError
414
413
  * - L2ToL1MessageLimitReachedError
414
+ *
415
+ * Note: NullifierCollisionError is intentionally NOT caught here. A nullifier collision
416
+ * during revertible insertions is unprovable (the nullifier originated from private, so
417
+ * a collision indicates the tx should never have been proposed). It propagates as-is to
418
+ * make the transaction unrecoverable, matching the AVM circuit behavior.
415
419
  */
416
420
  protected async insertRevertiblesFromPrivate(context: PublicTxContext) {
417
421
  const stateManager = context.state.getActiveStateManager();
@@ -421,7 +425,7 @@ export class PublicTxSimulator implements PublicTxSimulatorInterface {
421
425
  await stateManager.writeSiloedNullifier(siloedNullifier);
422
426
  }
423
427
  } catch (e: any) {
424
- if (e instanceof NullifierLimitReachedError || e instanceof NullifierCollisionError) {
428
+ if (e instanceof NullifierLimitReachedError) {
425
429
  context.revert(
426
430
  TxExecutionPhase.APP_LOGIC,
427
431
  new SimulationError(
@@ -431,7 +435,7 @@ export class PublicTxSimulator implements PublicTxSimulatorInterface {
431
435
  );
432
436
  throw new TxSimRevertibleInsertionsRevert();
433
437
  } else {
434
- // Unchecked/unknown error - re-throw as-is
438
+ // Unchecked/unknown error or NullifierCollisionError (unrecoverable) - re-throw as-is
435
439
  throw e;
436
440
  }
437
441
  }
@@ -486,7 +490,7 @@ export class PublicTxSimulator implements PublicTxSimulatorInterface {
486
490
  // However, things work as expected because later calls to getters on the hintingContractsDB
487
491
  // will pick up the new contracts and will generate the necessary hints.
488
492
  // So, a consumer of the hints will always see the new contracts.
489
- await this.contractsDB.addContracts(context.revertibleContractDeploymentData);
493
+ this.contractsDB.addContractsFromLogs(context.revertibleContractDeploymentData);
490
494
  }
491
495
 
492
496
  private async payFee(context: PublicTxContext) {