@aztec/simulator 0.72.1 → 0.73.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 (114) hide show
  1. package/README.md +1 -1
  2. package/dest/avm/avm_simulator.d.ts +0 -1
  3. package/dest/avm/avm_simulator.d.ts.map +1 -1
  4. package/dest/avm/avm_simulator.js +4 -19
  5. package/dest/avm/avm_tree.d.ts +9 -8
  6. package/dest/avm/avm_tree.d.ts.map +1 -1
  7. package/dest/avm/avm_tree.js +35 -30
  8. package/dest/avm/fixtures/avm_simulation_tester.d.ts +21 -0
  9. package/dest/avm/fixtures/avm_simulation_tester.d.ts.map +1 -0
  10. package/dest/avm/fixtures/avm_simulation_tester.js +74 -0
  11. package/dest/avm/fixtures/base_avm_simulation_tester.d.ts +35 -0
  12. package/dest/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -0
  13. package/dest/avm/fixtures/base_avm_simulation_tester.js +76 -0
  14. package/dest/avm/fixtures/index.d.ts +6 -2
  15. package/dest/avm/fixtures/index.d.ts.map +1 -1
  16. package/dest/avm/fixtures/index.js +28 -14
  17. package/dest/avm/fixtures/simple_contract_data_source.d.ts +31 -0
  18. package/dest/avm/fixtures/simple_contract_data_source.d.ts.map +1 -0
  19. package/dest/avm/fixtures/simple_contract_data_source.js +75 -0
  20. package/dest/avm/journal/journal.d.ts +3 -3
  21. package/dest/avm/journal/journal.d.ts.map +1 -1
  22. package/dest/avm/journal/journal.js +24 -21
  23. package/dest/avm/opcodes/accrued_substate.js +2 -2
  24. package/dest/avm/opcodes/hashing.js +2 -2
  25. package/dest/avm/test_utils.d.ts +1 -1
  26. package/dest/avm/test_utils.d.ts.map +1 -1
  27. package/dest/avm/test_utils.js +4 -3
  28. package/dest/client/client_execution_context.d.ts +1 -1
  29. package/dest/client/client_execution_context.d.ts.map +1 -1
  30. package/dest/client/client_execution_context.js +21 -18
  31. package/dest/client/execution_note_cache.d.ts +3 -3
  32. package/dest/client/execution_note_cache.d.ts.map +1 -1
  33. package/dest/client/execution_note_cache.js +10 -10
  34. package/dest/client/pick_notes.js +5 -5
  35. package/dest/client/simulator.js +4 -4
  36. package/dest/client/view_data_oracle.js +2 -2
  37. package/dest/common/hashed_values_cache.d.ts +1 -1
  38. package/dest/common/hashed_values_cache.d.ts.map +1 -1
  39. package/dest/common/hashed_values_cache.js +5 -5
  40. package/dest/providers/acvm_wasm.d.ts +2 -0
  41. package/dest/providers/acvm_wasm.d.ts.map +1 -1
  42. package/dest/providers/acvm_wasm.js +15 -2
  43. package/dest/public/execution.d.ts +1 -1
  44. package/dest/public/execution.d.ts.map +1 -1
  45. package/dest/public/execution.js +3 -3
  46. package/dest/public/fee_payment.d.ts +2 -2
  47. package/dest/public/fee_payment.d.ts.map +1 -1
  48. package/dest/public/fee_payment.js +3 -3
  49. package/dest/public/fixtures/index.d.ts +2 -37
  50. package/dest/public/fixtures/index.d.ts.map +1 -1
  51. package/dest/public/fixtures/index.js +3 -250
  52. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +21 -0
  53. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -0
  54. package/dest/public/fixtures/public_tx_simulation_tester.js +89 -0
  55. package/dest/public/fixtures/utils.d.ts +17 -0
  56. package/dest/public/fixtures/utils.d.ts.map +1 -0
  57. package/dest/public/fixtures/utils.js +66 -0
  58. package/dest/public/index.d.ts +1 -1
  59. package/dest/public/index.d.ts.map +1 -1
  60. package/dest/public/index.js +2 -2
  61. package/dest/public/public_db_sources.d.ts +2 -1
  62. package/dest/public/public_db_sources.d.ts.map +1 -1
  63. package/dest/public/public_db_sources.js +27 -21
  64. package/dest/public/public_processor.d.ts +1 -1
  65. package/dest/public/public_processor.d.ts.map +1 -1
  66. package/dest/public/public_processor.js +19 -18
  67. package/dest/public/public_tx_context.d.ts +5 -5
  68. package/dest/public/public_tx_context.d.ts.map +1 -1
  69. package/dest/public/public_tx_context.js +43 -17
  70. package/dest/public/public_tx_simulator.js +7 -7
  71. package/dest/public/{enqueued_call_side_effect_trace.d.ts → side_effect_trace.d.ts} +5 -5
  72. package/dest/public/side_effect_trace.d.ts.map +1 -0
  73. package/dest/public/{enqueued_call_side_effect_trace.js → side_effect_trace.js} +7 -7
  74. package/dest/public/side_effect_trace_interface.d.ts +1 -1
  75. package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
  76. package/dest/test/utils.d.ts +1 -1
  77. package/dest/test/utils.d.ts.map +1 -1
  78. package/dest/test/utils.js +3 -3
  79. package/package.json +9 -9
  80. package/src/avm/avm_simulator.ts +3 -27
  81. package/src/avm/avm_tree.ts +39 -37
  82. package/src/avm/fixtures/avm_simulation_tester.ts +105 -0
  83. package/src/avm/fixtures/base_avm_simulation_tester.ts +104 -0
  84. package/src/avm/fixtures/index.ts +46 -17
  85. package/src/avm/fixtures/simple_contract_data_source.ts +98 -0
  86. package/src/avm/journal/journal.ts +24 -21
  87. package/src/avm/opcodes/accrued_substate.ts +1 -1
  88. package/src/avm/opcodes/hashing.ts +1 -1
  89. package/src/avm/test_utils.ts +3 -4
  90. package/src/client/client_execution_context.ts +27 -21
  91. package/src/client/execution_note_cache.ts +19 -14
  92. package/src/client/pick_notes.ts +4 -4
  93. package/src/client/simulator.ts +3 -3
  94. package/src/client/view_data_oracle.ts +1 -1
  95. package/src/common/hashed_values_cache.ts +4 -4
  96. package/src/providers/acvm_wasm.ts +13 -2
  97. package/src/public/execution.ts +3 -3
  98. package/src/public/fee_payment.ts +2 -2
  99. package/src/public/fixtures/index.ts +2 -387
  100. package/src/public/fixtures/public_tx_simulation_tester.ts +174 -0
  101. package/src/public/fixtures/utils.ts +110 -0
  102. package/src/public/index.ts +1 -1
  103. package/src/public/public_db_sources.ts +31 -20
  104. package/src/public/public_processor.ts +25 -18
  105. package/src/public/public_tx_context.ts +86 -27
  106. package/src/public/public_tx_simulator.ts +6 -6
  107. package/src/public/{enqueued_call_side_effect_trace.ts → side_effect_trace.ts} +7 -7
  108. package/src/public/side_effect_trace_interface.ts +1 -1
  109. package/src/test/utils.ts +2 -2
  110. package/dest/public/enqueued_call_side_effect_trace.d.ts.map +0 -1
  111. package/dest/public/transitional_adapters.d.ts +0 -4
  112. package/dest/public/transitional_adapters.d.ts.map +0 -1
  113. package/dest/public/transitional_adapters.js +0 -29
  114. package/src/public/transitional_adapters.ts +0 -113
@@ -1 +1 @@
1
- {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/public/execution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/public/execution.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { Gas, PublicCallStackItemCompressed, PublicInnerCallRequest, RevertCode, } from '@aztec/circuits.js';
2
2
  import { computeVarArgsHash } from '@aztec/circuits.js/hash';
3
- export function resultToPublicCallRequest(result) {
3
+ export async function resultToPublicCallRequest(result) {
4
4
  const request = result.executionRequest;
5
- const item = new PublicCallStackItemCompressed(request.callContext.contractAddress, request.callContext, computeVarArgsHash(request.args), computeVarArgsHash(result.returnValues),
5
+ const item = new PublicCallStackItemCompressed(request.callContext.contractAddress, request.callContext, await computeVarArgsHash(request.args), await computeVarArgsHash(result.returnValues),
6
6
  // TODO(@just-mitch): need better mapping from simulator to revert code.
7
7
  result.reverted ? RevertCode.APP_LOGIC_REVERTED : RevertCode.OK, Gas.from(result.startGasLeft), Gas.from(result.endGasLeft));
8
8
  return new PublicInnerCallRequest(item, result.startSideEffectCounter.toNumber());
9
9
  }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1YmxpYy9leGVjdXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUtMLEdBQUcsRUFJSCw2QkFBNkIsRUFFN0Isc0JBQXNCLEVBR3RCLFVBQVUsR0FHWCxNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBOEc3RCxNQUFNLFVBQVUseUJBQXlCLENBQUMsTUFBZ0M7SUFDeEUsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDO0lBQ3hDLE1BQU0sSUFBSSxHQUFHLElBQUksNkJBQTZCLENBQzVDLE9BQU8sQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUNuQyxPQUFPLENBQUMsV0FBVyxFQUNuQixrQkFBa0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQ2hDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7SUFDdkMsd0VBQXdFO0lBQ3hFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFDL0QsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQzdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUM1QixDQUFDO0lBQ0YsT0FBTyxJQUFJLHNCQUFzQixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsc0JBQXNCLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztBQUNwRixDQUFDIn0=
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1YmxpYy9leGVjdXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUtMLEdBQUcsRUFJSCw2QkFBNkIsRUFFN0Isc0JBQXNCLEVBR3RCLFVBQVUsR0FHWCxNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBOEc3RCxNQUFNLENBQUMsS0FBSyxVQUFVLHlCQUF5QixDQUFDLE1BQWdDO0lBQzlFLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztJQUN4QyxNQUFNLElBQUksR0FBRyxJQUFJLDZCQUE2QixDQUM1QyxPQUFPLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFDbkMsT0FBTyxDQUFDLFdBQVcsRUFDbkIsTUFBTSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQ3RDLE1BQU0sa0JBQWtCLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztJQUM3Qyx3RUFBd0U7SUFDeEUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUMvRCxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFDN0IsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQzVCLENBQUM7SUFDRixPQUFPLElBQUksc0JBQXNCLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBQ3BGLENBQUMifQ==
@@ -3,9 +3,9 @@ import { Fr } from '@aztec/foundation/fields';
3
3
  /**
4
4
  * Computes the storage slot within the Fee Juice contract for the balance of the fee payer.
5
5
  */
6
- export declare function computeFeePayerBalanceStorageSlot(feePayer: AztecAddress): Fr;
6
+ export declare function computeFeePayerBalanceStorageSlot(feePayer: AztecAddress): Promise<Fr>;
7
7
  /**
8
8
  * Computes the leaf slot in the public data tree for the balance of the fee payer in the Fee Juice.
9
9
  */
10
- export declare function computeFeePayerBalanceLeafSlot(feePayer: AztecAddress): Fr;
10
+ export declare function computeFeePayerBalanceLeafSlot(feePayer: AztecAddress): Promise<Fr>;
11
11
  //# sourceMappingURL=fee_payment.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fee_payment.d.ts","sourceRoot":"","sources":["../../src/public/fee_payment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAI9C;;GAEG;AACH,wBAAgB,iCAAiC,CAAC,QAAQ,EAAE,YAAY,MAEvE;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,YAAY,GAAG,EAAE,CAMzE"}
1
+ {"version":3,"file":"fee_payment.d.ts","sourceRoot":"","sources":["../../src/public/fee_payment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAI9C;;GAEG;AACH,wBAAgB,iCAAiC,CAAC,QAAQ,EAAE,YAAY,eAEvE;AAED;;GAEG;AACH,wBAAsB,8BAA8B,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,EAAE,CAAC,CAMxF"}
@@ -11,11 +11,11 @@ export function computeFeePayerBalanceStorageSlot(feePayer) {
11
11
  /**
12
12
  * Computes the leaf slot in the public data tree for the balance of the fee payer in the Fee Juice.
13
13
  */
14
- export function computeFeePayerBalanceLeafSlot(feePayer) {
14
+ export async function computeFeePayerBalanceLeafSlot(feePayer) {
15
15
  if (feePayer.isZero()) {
16
16
  return Fr.ZERO;
17
17
  }
18
- const balanceSlot = computeFeePayerBalanceStorageSlot(feePayer);
18
+ const balanceSlot = await computeFeePayerBalanceStorageSlot(feePayer);
19
19
  return computePublicDataTreeLeafSlot(ProtocolContractAddress.FeeJuice, balanceSlot);
20
20
  }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlX3BheW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGljL2ZlZV9wYXltZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWhHLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUV2RTs7R0FFRztBQUNILE1BQU0sVUFBVSxpQ0FBaUMsQ0FBQyxRQUFzQjtJQUN0RSxPQUFPLHNCQUFzQixDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3hGLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSw4QkFBOEIsQ0FBQyxRQUFzQjtJQUNuRSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQztJQUNqQixDQUFDO0lBQ0QsTUFBTSxXQUFXLEdBQUcsaUNBQWlDLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEUsT0FBTyw2QkFBNkIsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDdEYsQ0FBQyJ9
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlX3BheW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGljL2ZlZV9wYXltZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWhHLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUV2RTs7R0FFRztBQUNILE1BQU0sVUFBVSxpQ0FBaUMsQ0FBQyxRQUFzQjtJQUN0RSxPQUFPLHNCQUFzQixDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3hGLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsOEJBQThCLENBQUMsUUFBc0I7SUFDekUsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUN0QixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDakIsQ0FBQztJQUNELE1BQU0sV0FBVyxHQUFHLE1BQU0saUNBQWlDLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEUsT0FBTyw2QkFBNkIsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDdEYsQ0FBQyJ9
@@ -1,38 +1,3 @@
1
- import { type MerkleTreeWriteOperations, PublicExecutionRequest, Tx } from '@aztec/circuit-types';
2
- import { type AvmCircuitInputs, type ContractClassPublic, type ContractDataSource, type ContractInstanceWithAddress, FunctionSelector, Gas, type PublicFunction } from '@aztec/circuits.js';
3
- import { type ContractArtifact } from '@aztec/foundation/abi';
4
- import { AztecAddress } from '@aztec/foundation/aztec-address';
5
- import { Fr } from '@aztec/foundation/fields';
6
- export declare function simulateAvmTestContractGenerateCircuitInputs(setupFunctionNames: string[], setupArgs: Fr[][] | undefined, appFunctionNames: string[], appArgs?: Fr[][], teardownFunctionName?: string, teardownArgs?: Fr[], expectRevert?: boolean, contractDataSource?: MockedAvmTestContractDataSource, assertionErrString?: string): Promise<AvmCircuitInputs>;
7
- export declare function simulateAvmTestContractCall(functionName: string, args?: Fr[], expectRevert?: boolean, contractDataSource?: MockedAvmTestContractDataSource): Promise<void>;
8
- /**
9
- * Craft a carrier transaction for some public calls for simulation by PublicTxSimulator.
10
- */
11
- export declare function createTxForPublicCalls(setupExecutionRequests: PublicExecutionRequest[], appExecutionRequests: PublicExecutionRequest[], firstNullifier: Fr, teardownExecutionRequest?: PublicExecutionRequest, gasUsedByPrivate?: Gas): Tx;
12
- export declare class MockedAvmTestContractDataSource implements ContractDataSource {
13
- private skipContractDeployments;
14
- private fnName;
15
- fnSelector: FunctionSelector;
16
- private bytecode;
17
- private publicFn;
18
- private bytecodeCommitment;
19
- private contractClasses;
20
- contractInstances: Map<string, ContractInstanceWithAddress>;
21
- firstContractInstance: ContractInstanceWithAddress;
22
- instanceSameClassAsFirstContract: ContractInstanceWithAddress;
23
- otherContractInstance: ContractInstanceWithAddress;
24
- private constructor();
25
- deployContracts(merkleTrees: MerkleTreeWriteOperations): Promise<void>;
26
- static create(skipContractDeployments?: boolean): Promise<MockedAvmTestContractDataSource>;
27
- getPublicFunction(_address: AztecAddress, _selector: FunctionSelector): Promise<PublicFunction>;
28
- getBlockNumber(): Promise<number>;
29
- getContractClass(id: Fr): Promise<ContractClassPublic | undefined>;
30
- getBytecodeCommitment(_id: Fr): Promise<Fr>;
31
- addContractClass(_contractClass: ContractClassPublic): Promise<void>;
32
- getContract(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined>;
33
- getContractClassIds(): Promise<Fr[]>;
34
- getContractArtifact(_address: AztecAddress): Promise<ContractArtifact | undefined>;
35
- getContractFunctionName(_address: AztecAddress, _selector: FunctionSelector): Promise<string>;
36
- registerContractFunctionSignatures(_address: AztecAddress, _signatures: string[]): Promise<void>;
37
- }
1
+ export * from './public_tx_simulation_tester.js';
2
+ export * from './utils.js';
38
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,YAAY,CAAC"}
@@ -1,250 +1,3 @@
1
- import { MerkleTreeId, PublicExecutionRequest, Tx } from '@aztec/circuit-types';
2
- import { BlockHeader, CallContext, DEFAULT_GAS_LIMIT, DEPLOYER_CONTRACT_ADDRESS, FunctionSelector, Gas, GasFees, GasSettings, GlobalVariables, MAX_L2_GAS_PER_TX_PUBLIC_PORTION, MAX_PUBLIC_CALLS_TO_UNIQUE_CONTRACT_CLASS_IDS, PartialPrivateTailPublicInputsForPublic, PrivateKernelTailCircuitPublicInputs, PublicKeys, RollupValidationRequests, SerializableContractInstance, TxConstantData, TxContext, computePublicBytecodeCommitment, } from '@aztec/circuits.js';
3
- import { siloNullifier } from '@aztec/circuits.js/hash';
4
- import { makeContractClassPublic, makeContractInstanceFromClassId } from '@aztec/circuits.js/testing';
5
- import { AztecAddress } from '@aztec/foundation/aztec-address';
6
- import { Fr, Point } from '@aztec/foundation/fields';
7
- import { openTmpStore } from '@aztec/kv-store/lmdb';
8
- import { AvmTestContractArtifact } from '@aztec/noir-contracts.js/AvmTest';
9
- import { MerkleTrees } from '@aztec/world-state';
10
- import { strict as assert } from 'assert';
11
- import { initContext, initExecutionEnvironment, initPersistableStateManager } from '../../avm/fixtures/index.js';
12
- import { AvmEphemeralForest, AvmSimulator } from '../../server.js';
13
- import { PublicEnqueuedCallSideEffectTrace } from '../enqueued_call_side_effect_trace.js';
14
- import { WorldStateDB } from '../public_db_sources.js';
15
- import { PublicTxSimulator } from '../public_tx_simulator.js';
16
- const TIMESTAMP = new Fr(99833);
17
- export async function simulateAvmTestContractGenerateCircuitInputs(setupFunctionNames, setupArgs = [], appFunctionNames, appArgs = [], teardownFunctionName, teardownArgs = [], expectRevert = false, contractDataSource, assertionErrString) {
18
- const globals = GlobalVariables.empty();
19
- globals.timestamp = TIMESTAMP;
20
- const merkleTrees = await (await MerkleTrees.new(openTmpStore())).fork();
21
- if (!contractDataSource) {
22
- contractDataSource = await MockedAvmTestContractDataSource.create();
23
- }
24
- await contractDataSource.deployContracts(merkleTrees);
25
- const worldStateDB = new WorldStateDB(merkleTrees, contractDataSource);
26
- const simulator = new PublicTxSimulator(merkleTrees, worldStateDB, globals, /*doMerkleOperations=*/ true);
27
- const sender = await AztecAddress.random();
28
- const callContext = new CallContext(sender, contractDataSource.firstContractInstance.address, contractDataSource.fnSelector,
29
- /*isStaticCall=*/ false);
30
- const setupExecutionRequests = [];
31
- for (let i = 0; i < setupFunctionNames.length; i++) {
32
- const functionSelector = getAvmTestContractFunctionSelector(setupFunctionNames[i]);
33
- const fnArgs = [functionSelector.toField(), ...setupArgs[i]];
34
- const executionRequest = new PublicExecutionRequest(callContext, fnArgs);
35
- setupExecutionRequests.push(executionRequest);
36
- }
37
- const appExecutionRequests = [];
38
- for (let i = 0; i < appFunctionNames.length; i++) {
39
- const functionSelector = getAvmTestContractFunctionSelector(appFunctionNames[i]);
40
- const fnArgs = [functionSelector.toField(), ...appArgs[i]];
41
- const executionRequest = new PublicExecutionRequest(callContext, fnArgs);
42
- appExecutionRequests.push(executionRequest);
43
- }
44
- let teardownExecutionRequest = undefined;
45
- if (teardownFunctionName) {
46
- const functionSelector = getAvmTestContractFunctionSelector(teardownFunctionName);
47
- const fnArgs = [functionSelector.toField(), ...teardownArgs];
48
- teardownExecutionRequest = new PublicExecutionRequest(callContext, fnArgs);
49
- }
50
- const tx = createTxForPublicCalls(setupExecutionRequests, appExecutionRequests, Fr.random(), teardownExecutionRequest);
51
- const avmResult = await simulator.simulate(tx);
52
- if (!expectRevert) {
53
- expect(avmResult.revertCode.isOK()).toBe(true);
54
- }
55
- else {
56
- // Explicit revert when an assertion failed.
57
- expect(avmResult.revertCode.isOK()).toBe(false);
58
- expect(avmResult.revertReason).toBeDefined();
59
- if (assertionErrString !== undefined) {
60
- expect(avmResult.revertReason?.getMessage()).toContain(assertionErrString);
61
- }
62
- }
63
- const avmCircuitInputs = avmResult.avmProvingRequest.inputs;
64
- return avmCircuitInputs;
65
- }
66
- export async function simulateAvmTestContractCall(functionName, args = [], expectRevert = false, contractDataSource) {
67
- const globals = GlobalVariables.empty();
68
- globals.timestamp = TIMESTAMP;
69
- if (!contractDataSource) {
70
- contractDataSource = await MockedAvmTestContractDataSource.create();
71
- }
72
- const merkleTrees = await (await MerkleTrees.new(openTmpStore())).fork();
73
- await contractDataSource.deployContracts(merkleTrees);
74
- const worldStateDB = new WorldStateDB(merkleTrees, contractDataSource);
75
- const trace = new PublicEnqueuedCallSideEffectTrace();
76
- const ephemeralTrees = await AvmEphemeralForest.create(worldStateDB.getMerkleInterface());
77
- const persistableState = initPersistableStateManager({
78
- worldStateDB,
79
- trace,
80
- merkleTrees: ephemeralTrees,
81
- doMerkleOperations: true,
82
- });
83
- const sender = await AztecAddress.random();
84
- const functionSelector = getAvmTestContractFunctionSelector(functionName);
85
- args = [functionSelector.toField(), ...args];
86
- const environment = initExecutionEnvironment({
87
- calldata: args,
88
- globals,
89
- address: contractDataSource.firstContractInstance.address,
90
- sender,
91
- });
92
- const context = initContext({ env: environment, persistableState });
93
- // First we simulate (though it's not needed in this simple case).
94
- const simulator = new AvmSimulator(context);
95
- const results = await simulator.execute();
96
- expect(results.reverted).toBe(expectRevert);
97
- }
98
- /**
99
- * Craft a carrier transaction for some public calls for simulation by PublicTxSimulator.
100
- */
101
- export function createTxForPublicCalls(setupExecutionRequests, appExecutionRequests, firstNullifier, teardownExecutionRequest, gasUsedByPrivate = Gas.empty()) {
102
- assert(setupExecutionRequests.length > 0 || appExecutionRequests.length > 0 || teardownExecutionRequest !== undefined, "Can't create public tx with no enqueued calls");
103
- const setupCallRequests = setupExecutionRequests.map(er => er.toCallRequest());
104
- const appCallRequests = appExecutionRequests.map(er => er.toCallRequest());
105
- // use max limits
106
- const gasLimits = new Gas(DEFAULT_GAS_LIMIT, MAX_L2_GAS_PER_TX_PUBLIC_PORTION);
107
- const forPublic = PartialPrivateTailPublicInputsForPublic.empty();
108
- // TODO(#9269): Remove this fake nullifier method as we move away from 1st nullifier as hash.
109
- forPublic.nonRevertibleAccumulatedData.nullifiers[0] = firstNullifier; // fake tx nullifier
110
- // We reverse order because the simulator expects it to be like a "stack" of calls to pop from
111
- for (let i = setupCallRequests.length - 1; i >= 0; i--) {
112
- forPublic.nonRevertibleAccumulatedData.publicCallRequests[i] = setupCallRequests[i];
113
- }
114
- for (let i = appCallRequests.length - 1; i >= 0; i--) {
115
- forPublic.revertibleAccumulatedData.publicCallRequests[i] = appCallRequests[i];
116
- }
117
- if (teardownExecutionRequest) {
118
- forPublic.publicTeardownCallRequest = teardownExecutionRequest.toCallRequest();
119
- }
120
- const teardownGasLimits = teardownExecutionRequest ? gasLimits : Gas.empty();
121
- const gasSettings = new GasSettings(gasLimits, teardownGasLimits, GasFees.empty(), GasFees.empty());
122
- const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
123
- const constantData = new TxConstantData(BlockHeader.empty(), txContext, Fr.zero(), Fr.zero());
124
- const txData = new PrivateKernelTailCircuitPublicInputs(constantData, RollupValidationRequests.empty(),
125
- /*gasUsed=*/ gasUsedByPrivate, AztecAddress.zero(), forPublic);
126
- const tx = Tx.newWithTxData(txData, teardownExecutionRequest);
127
- // Reverse order because the simulator expects it to be like a "stack" of calls to pop from.
128
- // Also push app calls before setup calls for this reason.
129
- for (let i = appExecutionRequests.length - 1; i >= 0; i--) {
130
- tx.enqueuedPublicFunctionCalls.push(appExecutionRequests[i]);
131
- }
132
- for (let i = setupExecutionRequests.length - 1; i >= 0; i--) {
133
- tx.enqueuedPublicFunctionCalls.push(setupExecutionRequests[i]);
134
- }
135
- return tx;
136
- }
137
- export class MockedAvmTestContractDataSource {
138
- constructor(skipContractDeployments) {
139
- this.skipContractDeployments = skipContractDeployments;
140
- this.fnName = 'public_dispatch';
141
- this.fnSelector = getAvmTestContractFunctionSelector(this.fnName);
142
- // maps contract class ID to class
143
- this.contractClasses = new Map();
144
- // maps contract instance address to instance
145
- this.contractInstances = new Map();
146
- this.firstContractInstance = SerializableContractInstance.default().withAddress(AztecAddress.fromNumber(0));
147
- this.instanceSameClassAsFirstContract = SerializableContractInstance.default().withAddress(AztecAddress.fromNumber(0));
148
- this.bytecode = getAvmTestContractBytecode(this.fnName);
149
- this.fnSelector = getAvmTestContractFunctionSelector(this.fnName);
150
- this.publicFn = { bytecode: this.bytecode, selector: this.fnSelector };
151
- this.bytecodeCommitment = computePublicBytecodeCommitment(this.bytecode);
152
- }
153
- async deployContracts(merkleTrees) {
154
- if (!this.skipContractDeployments) {
155
- for (const contractInstance of this.contractInstances.values()) {
156
- const contractAddressNullifier = siloNullifier(AztecAddress.fromNumber(DEPLOYER_CONTRACT_ADDRESS), contractInstance.address.toField());
157
- await merkleTrees.batchInsert(MerkleTreeId.NULLIFIER_TREE, [contractAddressNullifier.toBuffer()], 0);
158
- }
159
- const instanceSameClassAsFirstContractNullifier = siloNullifier(AztecAddress.fromNumber(DEPLOYER_CONTRACT_ADDRESS), this.instanceSameClassAsFirstContract.address.toField());
160
- await merkleTrees.batchInsert(MerkleTreeId.NULLIFIER_TREE, [instanceSameClassAsFirstContractNullifier.toBuffer()], 0);
161
- // other contract address used by the bulk test's GETCONTRACTINSTANCE test
162
- const otherContractAddressNullifier = siloNullifier(AztecAddress.fromNumber(DEPLOYER_CONTRACT_ADDRESS), this.otherContractInstance.address.toField());
163
- await merkleTrees.batchInsert(MerkleTreeId.NULLIFIER_TREE, [otherContractAddressNullifier.toBuffer()], 0);
164
- }
165
- }
166
- static async create(skipContractDeployments = false) {
167
- const dataSource = new MockedAvmTestContractDataSource(skipContractDeployments);
168
- // create enough unique classes to hit the limit (plus two extra)
169
- for (let i = 0; i < MAX_PUBLIC_CALLS_TO_UNIQUE_CONTRACT_CLASS_IDS + 1; i++) {
170
- const contractClass = makeContractClassPublic(/*seed=*/ i, dataSource.publicFn);
171
- const contractInstance = await makeContractInstanceFromClassId(contractClass.id, /*seed=*/ i);
172
- dataSource.contractClasses.set(contractClass.id.toString(), contractClass);
173
- dataSource.contractInstances.set(contractInstance.address.toString(), contractInstance);
174
- if (i === 0) {
175
- dataSource.firstContractInstance = contractInstance;
176
- }
177
- }
178
- // a contract with the same class but different instance/address as the first contract
179
- dataSource.instanceSameClassAsFirstContract = await makeContractInstanceFromClassId(dataSource.firstContractInstance.contractClassId,
180
- /*seed=*/ 1000);
181
- // The values here should match those in `avm_simulator.test.ts`
182
- // Used for GETCONTRACTINSTANCE test
183
- dataSource.otherContractInstance = new SerializableContractInstance({
184
- version: 1,
185
- salt: new Fr(0x123),
186
- deployer: new AztecAddress(new Fr(0x456)),
187
- contractClassId: new Fr(0x789),
188
- initializationHash: new Fr(0x101112),
189
- publicKeys: new PublicKeys(new Point(new Fr(0x131415), new Fr(0x161718), false), new Point(new Fr(0x192021), new Fr(0x222324), false), new Point(new Fr(0x252627), new Fr(0x282930), false), new Point(new Fr(0x313233), new Fr(0x343536), false)),
190
- }).withAddress(AztecAddress.fromNumber(0x4444));
191
- return dataSource;
192
- }
193
- getPublicFunction(_address, _selector) {
194
- return Promise.resolve(this.publicFn);
195
- }
196
- getBlockNumber() {
197
- throw new Error('Method not implemented.');
198
- }
199
- getContractClass(id) {
200
- return Promise.resolve(this.contractClasses.get(id.toString()));
201
- }
202
- getBytecodeCommitment(_id) {
203
- return Promise.resolve(this.bytecodeCommitment);
204
- }
205
- addContractClass(_contractClass) {
206
- return Promise.resolve();
207
- }
208
- getContract(address) {
209
- if (!this.skipContractDeployments) {
210
- if (address.equals(this.otherContractInstance.address)) {
211
- return Promise.resolve(this.otherContractInstance);
212
- }
213
- else if (address.equals(this.instanceSameClassAsFirstContract.address)) {
214
- return Promise.resolve(this.instanceSameClassAsFirstContract);
215
- }
216
- else {
217
- return Promise.resolve(this.contractInstances.get(address.toString()));
218
- }
219
- }
220
- return Promise.resolve(undefined);
221
- }
222
- getContractClassIds() {
223
- throw new Error('Method not implemented.');
224
- }
225
- getContractArtifact(_address) {
226
- throw new Error('Method not implemented.');
227
- }
228
- getContractFunctionName(_address, _selector) {
229
- return Promise.resolve(this.fnName);
230
- }
231
- registerContractFunctionSignatures(_address, _signatures) {
232
- return Promise.resolve();
233
- }
234
- }
235
- function getAvmTestContractFunctionSelector(functionName) {
236
- const artifact = AvmTestContractArtifact.functions.find(f => f.name === functionName);
237
- assert(!!artifact, `Function ${functionName} not found in AvmTestContractArtifact`);
238
- const params = artifact.parameters;
239
- return FunctionSelector.fromNameAndParameters(artifact.name, params);
240
- }
241
- function getAvmTestContractArtifact(functionName) {
242
- const artifact = AvmTestContractArtifact.functions.find(f => f.name === functionName);
243
- assert(!!artifact?.bytecode, `No bytecode found for function ${functionName}. Try re-running bootstrap.sh on the repository root.`);
244
- return artifact;
245
- }
246
- function getAvmTestContractBytecode(functionName) {
247
- const artifact = getAvmTestContractArtifact(functionName);
248
- return artifact.bytecode;
249
- }
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHVibGljL2ZpeHR1cmVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQWtDLHNCQUFzQixFQUFFLEVBQUUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hILE9BQU8sRUFFTCxXQUFXLEVBQ1gsV0FBVyxFQUlYLGlCQUFpQixFQUNqQix5QkFBeUIsRUFDekIsZ0JBQWdCLEVBQ2hCLEdBQUcsRUFDSCxPQUFPLEVBQ1AsV0FBVyxFQUNYLGVBQWUsRUFDZixnQ0FBZ0MsRUFDaEMsNkNBQTZDLEVBQzdDLHVDQUF1QyxFQUN2QyxvQ0FBb0MsRUFFcEMsVUFBVSxFQUNWLHdCQUF3QixFQUN4Qiw0QkFBNEIsRUFDNUIsY0FBYyxFQUNkLFNBQVMsRUFDVCwrQkFBK0IsR0FDaEMsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLCtCQUErQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsTUFBTSxJQUFJLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUUxQyxPQUFPLEVBQUUsV0FBVyxFQUFFLHdCQUF3QixFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakgsT0FBTyxFQUFF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
1
+ export * from './public_tx_simulation_tester.js';
2
+ export * from './utils.js';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHVibGljL2ZpeHR1cmVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxZQUFZLENBQUMifQ==
@@ -0,0 +1,21 @@
1
+ import { AztecAddress } from '@aztec/foundation/aztec-address';
2
+ import { BaseAvmSimulationTester } from '../../avm/fixtures/base_avm_simulation_tester.js';
3
+ import { type PublicTxResult } from '../public_tx_simulator.js';
4
+ export type TestEnqueuedCall = {
5
+ address: AztecAddress;
6
+ fnName: string;
7
+ args: any[];
8
+ isStaticCall?: boolean;
9
+ };
10
+ /**
11
+ * A test class that extends the BaseAvmSimulationTester to enable real-app testing of the PublicTxSimulator.
12
+ * It provides an interface for simulating one transaction at a time and maintains state between subsequent
13
+ * transactions.
14
+ */
15
+ export declare class PublicTxSimulationTester extends BaseAvmSimulationTester {
16
+ private txCount;
17
+ static create(skipContractDeployments?: boolean): Promise<PublicTxSimulationTester>;
18
+ simulateTx(sender: AztecAddress, setupCalls?: TestEnqueuedCall[], appCalls?: TestEnqueuedCall[], teardownCall?: TestEnqueuedCall, feePayer?: AztecAddress): Promise<PublicTxResult>;
19
+ private commitTxStateUpdates;
20
+ }
21
+ //# sourceMappingURL=public_tx_simulation_tester.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public_tx_simulation_tester.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/public_tx_simulation_tester.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAO/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAI3F,OAAO,EAAE,KAAK,cAAc,EAAqB,MAAM,2BAA2B,CAAC;AAMnF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF;;;;GAIG;AACH,qBAAa,wBAAyB,SAAQ,uBAAuB;IACnE,OAAO,CAAC,OAAO,CAAK;WAEA,MAAM,CAAC,uBAAuB,UAAQ,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAMjF,UAAU,CACrB,MAAM,EAAE,YAAY,EACpB,UAAU,GAAE,gBAAgB,EAAO,EACnC,QAAQ,GAAE,gBAAgB,EAAO,EACjC,YAAY,CAAC,EAAE,gBAAgB,EAC/B,QAAQ,GAAE,YAAkC,GAC3C,OAAO,CAAC,cAAc,CAAC;YAwEZ,oBAAoB;CAqBnC"}
@@ -0,0 +1,89 @@
1
+ import { MerkleTreeId, PublicExecutionRequest } from '@aztec/circuit-types';
2
+ import { CallContext, FunctionSelector, GasFees, GlobalVariables, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, NULLIFIER_SUBTREE_HEIGHT, PUBLIC_DATA_TREE_HEIGHT, PUBLIC_DISPATCH_SELECTOR, } from '@aztec/circuits.js';
3
+ import { encodeArguments } from '@aztec/foundation/abi';
4
+ import { AztecAddress } from '@aztec/foundation/aztec-address';
5
+ import { padArrayEnd } from '@aztec/foundation/collection';
6
+ import { Fr } from '@aztec/foundation/fields';
7
+ import { openTmpStore } from '@aztec/kv-store/lmdb';
8
+ import { AvmTestContractArtifact } from '@aztec/noir-contracts.js/AvmTest';
9
+ import { MerkleTrees } from '@aztec/world-state';
10
+ import { BaseAvmSimulationTester } from '../../avm/fixtures/base_avm_simulation_tester.js';
11
+ import { getContractFunctionArtifact, getFunctionSelector } from '../../avm/fixtures/index.js';
12
+ import { SimpleContractDataSource } from '../../avm/fixtures/simple_contract_data_source.js';
13
+ import { WorldStateDB } from '../public_db_sources.js';
14
+ import { PublicTxSimulator } from '../public_tx_simulator.js';
15
+ import { createTxForPublicCalls } from './index.js';
16
+ const TIMESTAMP = new Fr(99833);
17
+ const DEFAULT_GAS_FEES = new GasFees(2, 3);
18
+ /**
19
+ * A test class that extends the BaseAvmSimulationTester to enable real-app testing of the PublicTxSimulator.
20
+ * It provides an interface for simulating one transaction at a time and maintains state between subsequent
21
+ * transactions.
22
+ */
23
+ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
24
+ constructor() {
25
+ super(...arguments);
26
+ this.txCount = 0;
27
+ }
28
+ static async create(skipContractDeployments = false) {
29
+ const contractDataSource = new SimpleContractDataSource();
30
+ const merkleTrees = await (await MerkleTrees.new(openTmpStore())).fork();
31
+ return new PublicTxSimulationTester(contractDataSource, merkleTrees, skipContractDeployments);
32
+ }
33
+ async simulateTx(sender, setupCalls = [], appCalls = [], teardownCall, feePayer = AztecAddress.zero()) {
34
+ const globals = GlobalVariables.empty();
35
+ globals.timestamp = TIMESTAMP;
36
+ globals.gasFees = DEFAULT_GAS_FEES;
37
+ const worldStateDB = new WorldStateDB(this.merkleTrees, this.contractDataSource);
38
+ const simulator = new PublicTxSimulator(this.merkleTrees, worldStateDB, globals, /*doMerkleOperations=*/ true);
39
+ const setupExecutionRequests = [];
40
+ for (let i = 0; i < setupCalls.length; i++) {
41
+ const address = setupCalls[i].address;
42
+ const contractArtifact = await this.contractDataSource.getContractArtifact(address);
43
+ const req = await executionRequestForCall(sender, address, setupCalls[i].fnName, setupCalls[i].args, setupCalls[i].isStaticCall, contractArtifact);
44
+ setupExecutionRequests.push(req);
45
+ }
46
+ const appExecutionRequests = [];
47
+ for (let i = 0; i < appCalls.length; i++) {
48
+ const address = appCalls[i].address;
49
+ const contractArtifact = await this.contractDataSource.getContractArtifact(address);
50
+ const req = await executionRequestForCall(sender, address, appCalls[i].fnName, appCalls[i].args, appCalls[i].isStaticCall, contractArtifact);
51
+ appExecutionRequests.push(req);
52
+ }
53
+ let teardownExecutionRequest = undefined;
54
+ if (teardownCall) {
55
+ const address = teardownCall.address;
56
+ const contractArtifact = await this.contractDataSource.getContractArtifact(address);
57
+ teardownExecutionRequest = await executionRequestForCall(sender, address, teardownCall.fnName, teardownCall.args, teardownCall.isStaticCall, contractArtifact);
58
+ }
59
+ // Use a fake "first nullifier" to make sure note hash nonces are computed properly,
60
+ // but make sure each tx has a unique first nullifier.
61
+ const firstNullifier = new Fr(420000 + this.txCount++);
62
+ const tx = await createTxForPublicCalls(firstNullifier, setupExecutionRequests, appExecutionRequests, teardownExecutionRequest, feePayer);
63
+ const avmResult = await simulator.simulate(tx);
64
+ if (avmResult.revertCode.isOK()) {
65
+ await this.commitTxStateUpdates(avmResult.avmProvingRequest.inputs.publicInputs);
66
+ }
67
+ return avmResult;
68
+ }
69
+ async commitTxStateUpdates(avmCircuitInputs) {
70
+ await this.merkleTrees.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, padArrayEnd(avmCircuitInputs.accumulatedData.noteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX));
71
+ try {
72
+ await this.merkleTrees.batchInsert(MerkleTreeId.NULLIFIER_TREE, padArrayEnd(avmCircuitInputs.accumulatedData.nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX).map(n => n.toBuffer()), NULLIFIER_SUBTREE_HEIGHT);
73
+ }
74
+ catch (error) {
75
+ this.logger.warn(`Detected duplicate nullifier.`);
76
+ }
77
+ await this.merkleTrees.batchInsert(MerkleTreeId.PUBLIC_DATA_TREE, avmCircuitInputs.accumulatedData.publicDataWrites.map(w => w.toBuffer()), PUBLIC_DATA_TREE_HEIGHT);
78
+ }
79
+ }
80
+ async function executionRequestForCall(sender, address, fnName, args = [], isStaticCall = false, contractArtifact = AvmTestContractArtifact) {
81
+ const fnSelector = await getFunctionSelector(fnName, contractArtifact);
82
+ const fnAbi = getContractFunctionArtifact(fnName, contractArtifact);
83
+ const encodedArgs = encodeArguments(fnAbi, args);
84
+ const calldata = [fnSelector.toField(), ...encodedArgs];
85
+ const callContext = new CallContext(sender, address,
86
+ /*selector=*/ new FunctionSelector(PUBLIC_DISPATCH_SELECTOR), isStaticCall);
87
+ return new PublicExecutionRequest(callContext, calldata);
88
+ }
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3R4X3NpbXVsYXRpb25fdGVzdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3B1YmxpYy9maXh0dXJlcy9wdWJsaWNfdHhfc2ltdWxhdGlvbl90ZXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxzQkFBc0IsRUFBVyxNQUFNLHNCQUFzQixDQUFDO0FBQ3JGLE9BQU8sRUFFTCxXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLE9BQU8sRUFDUCxlQUFlLEVBQ2Ysc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixHQUN6QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBeUIsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUF1QixpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFD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
@@ -0,0 +1,17 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ /// <reference types="node" resolution-mode="require"/>
3
+ import { type PublicExecutionRequest, Tx } from '@aztec/circuit-types';
4
+ import { FunctionSelector, Gas } from '@aztec/circuits.js';
5
+ import { type FunctionArtifact } from '@aztec/foundation/abi';
6
+ import { AztecAddress } from '@aztec/foundation/aztec-address';
7
+ import { Fr } from '@aztec/foundation/fields';
8
+ export declare const PUBLIC_DISPATCH_FN_NAME = "public_dispatch";
9
+ /**
10
+ * Craft a carrier transaction for some public calls for simulation by PublicTxSimulator.
11
+ */
12
+ export declare function createTxForPublicCalls(firstNullifier: Fr, setupExecutionRequests: PublicExecutionRequest[], appExecutionRequests: PublicExecutionRequest[], teardownExecutionRequest?: PublicExecutionRequest, feePayer?: AztecAddress, gasUsedByPrivate?: Gas): Promise<Tx>;
13
+ export declare function getAvmTestContractFunctionSelector(functionName: string): Promise<FunctionSelector>;
14
+ export declare function getAvmTestContractArtifact(functionName: string): FunctionArtifact;
15
+ export declare function getAvmTestContractBytecode(functionName: string): Buffer;
16
+ export declare function getAvmTestContractPublicDispatchBytecode(): Buffer;
17
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/utils.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,KAAK,sBAAsB,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAGL,gBAAgB,EAChB,GAAG,EASJ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAK9C,eAAO,MAAM,uBAAuB,oBAAoB,CAAC;AAEzD;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,cAAc,EAAE,EAAE,EAClB,sBAAsB,EAAE,sBAAsB,EAAE,EAChD,oBAAoB,EAAE,sBAAsB,EAAE,EAC9C,wBAAwB,CAAC,EAAE,sBAAsB,EACjD,QAAQ,eAAsB,EAC9B,gBAAgB,GAAE,GAAiB,GAClC,OAAO,CAAC,EAAE,CAAC,CAkDb;AAED,wBAAgB,kCAAkC,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAKlG;AAED,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,MAAM,GAAG,gBAAgB,CAOjF;AAED,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAGvE;AAED,wBAAgB,wCAAwC,IAAI,MAAM,CAEjE"}