@aztec/simulator 2.1.0-rc.9 → 3.0.0-devnet.2

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 (161) hide show
  1. package/dest/private/acvm_native.d.ts +1 -2
  2. package/dest/private/acvm_native.d.ts.map +1 -1
  3. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +1 -1
  4. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -1
  5. package/dest/public/avm/avm_execution_environment.d.ts +2 -1
  6. package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
  7. package/dest/public/avm/avm_execution_environment.js +5 -2
  8. package/dest/public/avm/avm_gas.js +2 -2
  9. package/dest/public/avm/avm_simulator.d.ts +1 -1
  10. package/dest/public/avm/avm_simulator.d.ts.map +1 -1
  11. package/dest/public/avm/avm_simulator.js +14 -21
  12. package/dest/public/avm/errors.d.ts +5 -14
  13. package/dest/public/avm/errors.d.ts.map +1 -1
  14. package/dest/public/avm/errors.js +7 -20
  15. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +2 -1
  16. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
  17. package/dest/public/avm/fixtures/avm_simulation_tester.js +2 -3
  18. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +2 -0
  19. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
  20. package/dest/public/avm/fixtures/base_avm_simulation_tester.js +22 -0
  21. package/dest/public/avm/fixtures/initializers.d.ts.map +1 -1
  22. package/dest/public/avm/fixtures/initializers.js +2 -2
  23. package/dest/public/avm/opcodes/accrued_substate.d.ts +2 -2
  24. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
  25. package/dest/public/avm/opcodes/accrued_substate.js +7 -7
  26. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -1
  27. package/dest/public/avm/opcodes/addressing_mode.js +2 -3
  28. package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
  29. package/dest/public/avm/opcodes/conversion.js +3 -0
  30. package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
  31. package/dest/public/avm/opcodes/ec_add.js +3 -2
  32. package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
  33. package/dest/public/avm/opcodes/environment_getters.js +5 -7
  34. package/dest/public/avm/opcodes/instruction.d.ts.map +1 -1
  35. package/dest/public/avm/opcodes/instruction.js +5 -6
  36. package/dest/public/avm/opcodes/misc.d.ts +2 -1
  37. package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
  38. package/dest/public/avm/opcodes/misc.js +28 -8
  39. package/dest/public/avm/serialization/instruction_serialization.d.ts +8 -0
  40. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
  41. package/dest/public/avm/serialization/instruction_serialization.js +10 -0
  42. package/dest/public/avm/test_utils.d.ts +2 -2
  43. package/dest/public/avm/test_utils.d.ts.map +1 -1
  44. package/dest/public/avm/test_utils.js +6 -9
  45. package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
  46. package/dest/public/fixtures/bulk_test.js +63 -130
  47. package/dest/public/fixtures/custom_bytecode_tester.d.ts +12 -0
  48. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -0
  49. package/dest/public/fixtures/custom_bytecode_tester.js +29 -0
  50. package/dest/public/fixtures/custom_bytecode_tests.d.ts +9 -0
  51. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -0
  52. package/dest/public/fixtures/custom_bytecode_tests.js +109 -0
  53. package/dest/public/fixtures/index.d.ts +2 -1
  54. package/dest/public/fixtures/index.d.ts.map +1 -1
  55. package/dest/public/fixtures/index.js +2 -1
  56. package/dest/public/fixtures/minimal_public_tx.d.ts +2 -1
  57. package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -1
  58. package/dest/public/fixtures/minimal_public_tx.js +8 -22
  59. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +4 -2
  60. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  61. package/dest/public/fixtures/public_tx_simulation_tester.js +11 -6
  62. package/dest/public/fixtures/utils.js +1 -1
  63. package/dest/public/hinting_db_sources.d.ts +2 -0
  64. package/dest/public/hinting_db_sources.d.ts.map +1 -1
  65. package/dest/public/hinting_db_sources.js +3 -0
  66. package/dest/public/index.d.ts +1 -1
  67. package/dest/public/index.d.ts.map +1 -1
  68. package/dest/public/public_db_sources.d.ts +2 -2
  69. package/dest/public/public_db_sources.d.ts.map +1 -1
  70. package/dest/public/public_db_sources.js +11 -1
  71. package/dest/public/public_errors.d.ts +12 -0
  72. package/dest/public/public_errors.d.ts.map +1 -0
  73. package/dest/public/public_errors.js +13 -0
  74. package/dest/public/public_processor/guarded_merkle_tree.d.ts +2 -0
  75. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  76. package/dest/public/public_processor/guarded_merkle_tree.js +3 -0
  77. package/dest/public/public_processor/public_processor.d.ts +9 -4
  78. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  79. package/dest/public/public_processor/public_processor.js +12 -6
  80. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +41 -0
  81. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -0
  82. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +89 -0
  83. package/dest/public/public_tx_simulator/index.d.ts +1 -0
  84. package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
  85. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +5 -4
  86. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +1 -1
  87. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +3 -4
  88. package/dest/public/public_tx_simulator/public_tx_context.d.ts +4 -2
  89. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
  90. package/dest/public/public_tx_simulator/public_tx_context.js +12 -8
  91. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +24 -11
  92. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  93. package/dest/public/public_tx_simulator/public_tx_simulator.js +112 -44
  94. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +9 -0
  95. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -0
  96. package/dest/public/public_tx_simulator/public_tx_simulator_interface.js +1 -0
  97. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +2 -1
  98. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -1
  99. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +2 -2
  100. package/dest/public/side_effect_errors.d.ts +41 -1
  101. package/dest/public/side_effect_errors.d.ts.map +1 -1
  102. package/dest/public/side_effect_errors.js +70 -1
  103. package/dest/public/side_effect_trace.d.ts +11 -4
  104. package/dest/public/side_effect_trace.d.ts.map +1 -1
  105. package/dest/public/side_effect_trace.js +35 -20
  106. package/dest/public/side_effect_trace_interface.d.ts +6 -0
  107. package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
  108. package/dest/public/state_manager/nullifiers.d.ts +0 -3
  109. package/dest/public/state_manager/nullifiers.d.ts.map +1 -1
  110. package/dest/public/state_manager/nullifiers.js +1 -6
  111. package/dest/public/state_manager/state_manager.d.ts +7 -2
  112. package/dest/public/state_manager/state_manager.d.ts.map +1 -1
  113. package/dest/public/state_manager/state_manager.js +54 -15
  114. package/package.json +21 -17
  115. package/src/private/acvm_native.ts +1 -2
  116. package/src/private/circuit_recording/simulator_recorder_wrapper.ts +1 -1
  117. package/src/public/avm/avm_execution_environment.ts +4 -1
  118. package/src/public/avm/avm_gas.ts +2 -2
  119. package/src/public/avm/avm_simulator.ts +16 -27
  120. package/src/public/avm/errors.ts +7 -24
  121. package/src/public/avm/fixtures/avm_simulation_tester.ts +4 -2
  122. package/src/public/avm/fixtures/base_avm_simulation_tester.ts +32 -0
  123. package/src/public/avm/fixtures/initializers.ts +2 -1
  124. package/src/public/avm/opcodes/accrued_substate.ts +4 -4
  125. package/src/public/avm/opcodes/addressing_mode.ts +3 -3
  126. package/src/public/avm/opcodes/conversion.ts +4 -0
  127. package/src/public/avm/opcodes/ec_add.ts +3 -2
  128. package/src/public/avm/opcodes/environment_getters.ts +6 -8
  129. package/src/public/avm/opcodes/instruction.ts +8 -6
  130. package/src/public/avm/opcodes/misc.ts +41 -7
  131. package/src/public/avm/serialization/instruction_serialization.ts +12 -0
  132. package/src/public/avm/test_utils.ts +6 -14
  133. package/src/public/fixtures/bulk_test.ts +41 -23
  134. package/src/public/fixtures/custom_bytecode_tester.ts +49 -0
  135. package/src/public/fixtures/custom_bytecode_tests.ts +135 -0
  136. package/src/public/fixtures/index.ts +2 -1
  137. package/src/public/fixtures/minimal_public_tx.ts +8 -31
  138. package/src/public/fixtures/public_tx_simulation_tester.ts +16 -12
  139. package/src/public/fixtures/utils.ts +1 -1
  140. package/src/public/hinting_db_sources.ts +5 -0
  141. package/src/public/index.ts +6 -1
  142. package/src/public/public_db_sources.ts +19 -3
  143. package/src/public/public_errors.ts +14 -0
  144. package/src/public/public_processor/guarded_merkle_tree.ts +4 -0
  145. package/src/public/public_processor/public_processor.ts +23 -25
  146. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +128 -0
  147. package/src/public/public_tx_simulator/index.ts +1 -0
  148. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +12 -9
  149. package/src/public/public_tx_simulator/public_tx_context.ts +11 -4
  150. package/src/public/public_tx_simulator/public_tx_simulator.ts +178 -60
  151. package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +11 -0
  152. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +3 -12
  153. package/src/public/side_effect_errors.ts +91 -1
  154. package/src/public/side_effect_trace.ts +48 -23
  155. package/src/public/side_effect_trace_interface.ts +6 -0
  156. package/src/public/state_manager/nullifiers.ts +1 -7
  157. package/src/public/state_manager/state_manager.ts +73 -25
  158. package/dest/public/bytecode_errors.d.ts +0 -4
  159. package/dest/public/bytecode_errors.d.ts.map +0 -1
  160. package/dest/public/bytecode_errors.js +0 -6
  161. package/src/public/bytecode_errors.ts +0 -6
@@ -0,0 +1,109 @@
1
+ import { strict as assert } from 'assert';
2
+ import { TypeTag } from '../avm/avm_memory_types.js';
3
+ import { Addressing, AddressingMode } from '../avm/opcodes/addressing_mode.js';
4
+ import { CalldataCopy, Jump, Return, Set } from '../avm/opcodes/index.js';
5
+ import { encodeToBytecode } from '../avm/serialization/bytecode_serialization.js';
6
+ import { MAX_OPCODE_VALUE, Opcode, OperandType, getOperandSize } from '../avm/serialization/instruction_serialization.js';
7
+ import { testCustomBytecode } from './custom_bytecode_tester.js';
8
+ // First instruction resolved a base address (offset 0) which is uninitialized and therefore
9
+ // of invalid tag (FF). This will trigger an exceptional halt.
10
+ export async function addressingWithBaseTagIssueTest(isIndirect, tester) {
11
+ const addressingMode = Addressing.fromModes([
12
+ isIndirect ? AddressingMode.INDIRECT_RELATIVE : AddressingMode.RELATIVE,
13
+ AddressingMode.DIRECT,
14
+ AddressingMode.DIRECT
15
+ ]);
16
+ const bytecode = encodeToBytecode([
17
+ new CalldataCopy(/*indirect=*/ addressingMode.toWire(), /*copySize=*/ 1, /*cdOffset=*/ 0, /*dstOffset=*/ 0),
18
+ new Return(/*indirect=*/ 0, /*copySizeOffset=*/ 0, /*returnOffset=*/ 0)
19
+ ]);
20
+ const txLabel = isIndirect ? 'AddressingWithBaseTagInvalidIndirect' : 'AddressingWithBaseTagInvalidDirect';
21
+ return await testCustomBytecode(bytecode, tester, txLabel);
22
+ }
23
+ export async function pcOutOfRangeTest(tester) {
24
+ const bytecode = encodeToBytecode([
25
+ new Jump(/*jumpOffset=*/ 123),
26
+ new Return(/*indirect=*/ 0, /*copySizeOffset=*/ 0, /*returnOffset=*/ 0)
27
+ ]);
28
+ const txLabel = 'PcOutOfRange';
29
+ return await testCustomBytecode(bytecode, tester, txLabel);
30
+ }
31
+ export async function invalidOpcodeTest(tester) {
32
+ let bytecode = encodeToBytecode([
33
+ new Set(/*indirect=*/ 0, /*dstOffset=*/ 0, TypeTag.UINT32, /*value=*/ 0).as(Opcode.SET_8, Set.wireFormat8)
34
+ ]);
35
+ const offsetReturnOpcodeByte = bytecode.length;
36
+ bytecode = Buffer.concat([
37
+ bytecode,
38
+ encodeToBytecode([
39
+ new Return(/*indirect=*/ 0, /*copySizeOffset=*/ 0, /*returnOffset=*/ 0)
40
+ ])
41
+ ]);
42
+ // Manipulate the Return opcode to make the opcode invalid (out of range).
43
+ bytecode[offsetReturnOpcodeByte] = MAX_OPCODE_VALUE + 1; // opcode is invalid.
44
+ const txLabel = 'InvalidOpcode';
45
+ return await testCustomBytecode(bytecode, tester, txLabel);
46
+ }
47
+ // Single invalid byte in the bytecode.
48
+ export async function invalidByteTest(tester) {
49
+ const invalidOpcode = MAX_OPCODE_VALUE + 7;
50
+ assert(invalidOpcode < 256, 'Invalid opcode must fit in a single byte');
51
+ const bytecode = Buffer.from([
52
+ invalidOpcode
53
+ ]);
54
+ const txLabel = 'InvalidByte';
55
+ return await testCustomBytecode(bytecode, tester, txLabel);
56
+ }
57
+ // Truncate the last instruction in the bytecode.
58
+ export async function instructionTruncatedTest(tester) {
59
+ let bytecode = encodeToBytecode([
60
+ new Set(/*indirect=*/ 0, /*dstOffset=*/ 0, TypeTag.UINT32, /*value=*/ 0).as(Opcode.SET_8, Set.wireFormat8)
61
+ ]);
62
+ // Truncate the bytecode.
63
+ bytecode = bytecode.subarray(0, -1);
64
+ const txLabel = 'InstructionTruncated';
65
+ return await testCustomBytecode(bytecode, tester, txLabel);
66
+ }
67
+ // Invalid tag value byte in an instruction.
68
+ export async function invalidTagValueTest(tester) {
69
+ const bytecode = encodeToBytecode([
70
+ new Set(/*indirect=*/ 0, /*dstOffset=*/ 0, TypeTag.UINT32, /*value=*/ 0).as(Opcode.SET_8, Set.wireFormat8),
71
+ new Return(/*indirect=*/ 0, /*copySizeOffset=*/ 0, /*returnOffset=*/ 0)
72
+ ]);
73
+ const tagOffset = getTagOffsetInInstruction(Set.wireFormat8);
74
+ assert(bytecode[tagOffset].valueOf() == TypeTag.UINT32.valueOf(), 'Set instruction tag should be UINT32 in test');
75
+ bytecode[tagOffset] = TypeTag.INVALID;
76
+ const txLabel = 'InvalidTagValue';
77
+ return await testCustomBytecode(bytecode, tester, txLabel);
78
+ }
79
+ // Combine an invalid tag in the last instruction that is truncated.
80
+ export async function invalidTagValueAndInstructionTruncatedTest(tester) {
81
+ let bytecode = encodeToBytecode([
82
+ // Important: value argument must be a bigint otherwise a type error will be thrown.
83
+ new Set(/*indirect=*/ 0, /*dstOffset=*/ 0, TypeTag.UINT128, /*value=*/ 0n).as(Opcode.SET_128, Set.wireFormat128)
84
+ ]);
85
+ // Truncate the bytecode.
86
+ bytecode = bytecode.subarray(0, -5);
87
+ const tagOffset = getTagOffsetInInstruction(Set.wireFormat128);
88
+ assert(bytecode[tagOffset].valueOf() == TypeTag.UINT128.valueOf(), 'Set instruction tag should be UINT128 in test');
89
+ bytecode[tagOffset] = 0x6f; // Invalid tag value.
90
+ const txLabel = 'InvalidTagValueAndInstructionTruncated';
91
+ return await testCustomBytecode(bytecode, tester, txLabel);
92
+ }
93
+ /**
94
+ * Returns the offset of the tag in an instruction.
95
+ * @details Loops over the wire format operand type entries until it finds the tag.
96
+ * Returns the byte offset of the tag based on each operand size that is passed.
97
+ *
98
+ * @param wireFormat array of operand types
99
+ * @returns byte offset of the tag
100
+ */ function getTagOffsetInInstruction(wireFormat) {
101
+ let offset = 0;
102
+ for (const operand of wireFormat){
103
+ if (operand === OperandType.TAG) {
104
+ break;
105
+ }
106
+ offset += getOperandSize(operand);
107
+ }
108
+ return offset;
109
+ }
@@ -1,9 +1,10 @@
1
1
  export * from './public_tx_simulation_tester.js';
2
2
  export * from './utils.js';
3
3
  export * from './simple_contract_data_source.js';
4
- export { readAvmMinimalPublicTxInputsFromFile, createAvmMinimalPublicTx } from './minimal_public_tx.js';
4
+ export { readAvmMinimalPublicTxInputsFromFile, executeAvmMinimalPublicTx } from './minimal_public_tx.js';
5
5
  export { TestExecutorMetrics } from '../test_executor_metrics.js';
6
6
  export { ammTest } from './amm_test.js';
7
7
  export { bulkTest, megaBulkTest } from './bulk_test.js';
8
8
  export { tokenTest } from './token_test.js';
9
+ export * from './custom_bytecode_tests.js';
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,YAAY,CAAC;AAC3B,cAAc,kCAAkC,CAAC;AACjD,OAAO,EAAE,oCAAoC,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACxG,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,YAAY,CAAC;AAC3B,cAAc,kCAAkC,CAAC;AACjD,OAAO,EAAE,oCAAoC,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACzG,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,cAAc,4BAA4B,CAAC"}
@@ -1,8 +1,9 @@
1
1
  export * from './public_tx_simulation_tester.js';
2
2
  export * from './utils.js';
3
3
  export * from './simple_contract_data_source.js';
4
- export { readAvmMinimalPublicTxInputsFromFile, createAvmMinimalPublicTx } from './minimal_public_tx.js';
4
+ export { readAvmMinimalPublicTxInputsFromFile, executeAvmMinimalPublicTx } from './minimal_public_tx.js';
5
5
  export { TestExecutorMetrics } from '../test_executor_metrics.js';
6
6
  export { ammTest } from './amm_test.js';
7
7
  export { bulkTest, megaBulkTest } from './bulk_test.js';
8
8
  export { tokenTest } from './token_test.js';
9
+ export * from './custom_bytecode_tests.js';
@@ -1,6 +1,7 @@
1
1
  import { AvmCircuitInputs } from '@aztec/stdlib/avm';
2
2
  import type { PublicTxResult } from '../public_tx_simulator/public_tx_simulator.js';
3
- export declare function createAvmMinimalPublicTx(): Promise<PublicTxResult>;
3
+ import { PublicTxSimulationTester } from './public_tx_simulation_tester.js';
4
+ export declare function executeAvmMinimalPublicTx(tester: PublicTxSimulationTester): Promise<PublicTxResult>;
4
5
  /**
5
6
  * Reads the AVM circuit inputs for the minimal public tx from a pre-generated JSON file.
6
7
  * @returns The AvmCircuitInputs for the minimal public tx.
@@ -1 +1 @@
1
- {"version":3,"file":"minimal_public_tx.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/minimal_public_tx.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAQrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;AAGpF,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,cAAc,CAAC,CAsCxE;AAED;;;GAGG;AACH,wBAAgB,oCAAoC,IAAI,gBAAgB,CAEvE"}
1
+ {"version":3,"file":"minimal_public_tx.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/minimal_public_tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAQrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,cAAc,CAAC,CAezG;AAED;;;GAGG;AACH,wBAAgB,oCAAoC,IAAI,gBAAgB,CAEvE"}
@@ -1,6 +1,5 @@
1
- import { FunctionType, emptyContractArtifact, emptyFunctionArtifact } from '@aztec/stdlib/abi';
2
1
  import { AvmCircuitInputs } from '@aztec/stdlib/avm';
3
- import { AztecAddress } from '@aztec/stdlib/aztec-address';
2
+ import { ProtocolContracts } from '@aztec/stdlib/tx';
4
3
  import avmMinimalCircuitInputsJson from '../../../artifacts/avm_minimal_inputs.json' with {
5
4
  type: 'json'
6
5
  };
@@ -8,32 +7,19 @@ import { TypeTag } from '../avm/avm_memory_types.js';
8
7
  import { Add, Return, Set } from '../avm/opcodes/index.js';
9
8
  import { encodeToBytecode } from '../avm/serialization/bytecode_serialization.js';
10
9
  import { Opcode } from '../avm/serialization/instruction_serialization.js';
11
- import { PublicTxSimulationTester } from './public_tx_simulation_tester.js';
12
- export async function createAvmMinimalPublicTx() {
13
- const deployer = AztecAddress.fromNumber(42);
14
- const simTester = await PublicTxSimulationTester.create();
10
+ import { testCustomBytecode } from './custom_bytecode_tester.js';
11
+ export async function executeAvmMinimalPublicTx(tester) {
15
12
  const minimalBytecode = encodeToBytecode([
16
13
  new Set(/*indirect*/ 0, /*dstOffset*/ 0, TypeTag.UINT32, /*value*/ 1).as(Opcode.SET_8, Set.wireFormat8),
17
14
  new Set(/*indirect*/ 0, /*dstOffset*/ 1, TypeTag.UINT32, /*value*/ 2).as(Opcode.SET_8, Set.wireFormat8),
18
15
  new Add(/*indirect=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 2).as(Opcode.ADD_8, Add.wireFormat8),
19
16
  new Return(/*indirect=*/ 0, /*copySizeOffset=*/ 0, /*returnOffset=*/ 2)
20
17
  ]);
21
- const minimalContractArtifact = emptyContractArtifact();
22
- minimalContractArtifact.name = 'MinimalContract';
23
- minimalContractArtifact.functions = [
24
- emptyFunctionArtifact()
25
- ];
26
- minimalContractArtifact.functions[0].name = 'public_dispatch';
27
- minimalContractArtifact.functions[0].functionType = FunctionType.PUBLIC;
28
- minimalContractArtifact.functions[0].bytecode = minimalBytecode;
29
- const minimalTestContract = await simTester.registerAndDeployContract(/*constructorArgs=*/ [], deployer, /*contractArtifact=*/ minimalContractArtifact);
30
- return await simTester.simulateTx(/*sender=*/ deployer, /*setupCalls=*/ [], /*appCalls=*/ [
31
- {
32
- address: minimalTestContract.address,
33
- fnName: 'public_dispatch',
34
- args: []
35
- }
36
- ], /*teardownCall=*/ undefined, /*feePayer=*/ deployer);
18
+ const result = await testCustomBytecode(minimalBytecode, tester, 'MinimalTx', 'AvmMinimalContract');
19
+ // Modify the protocol contracts to be all zeros
20
+ result.avmProvingRequest.inputs.hints.protocolContracts = ProtocolContracts.empty();
21
+ result.avmProvingRequest.inputs.publicInputs.protocolContracts = ProtocolContracts.empty();
22
+ return result;
37
23
  }
38
24
  /**
39
25
  * Reads the AVM circuit inputs for the minimal public tx from a pre-generated JSON file.
@@ -2,6 +2,7 @@ import { type ContractArtifact } from '@aztec/stdlib/abi';
2
2
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
3
  import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
4
4
  import { GlobalVariables, type Tx } from '@aztec/stdlib/tx';
5
+ import { NativeWorldStateService } from '@aztec/world-state';
5
6
  import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
6
7
  import type { PublicTxResult } from '../public_tx_simulator/public_tx_simulator.js';
7
8
  import { TestExecutorMetrics } from '../test_executor_metrics.js';
@@ -26,8 +27,9 @@ export declare class PublicTxSimulationTester extends BaseAvmSimulationTester {
26
27
  protected txCount: number;
27
28
  private simulator;
28
29
  private metricsPrefix?;
29
- constructor(merkleTree: MerkleTreeWriteOperations, contractDataSource: SimpleContractDataSource, globals?: GlobalVariables, metrics?: TestExecutorMetrics);
30
- static create(globals?: GlobalVariables, metrics?: TestExecutorMetrics): Promise<PublicTxSimulationTester>;
30
+ constructor(merkleTree: MerkleTreeWriteOperations, contractDataSource: SimpleContractDataSource, globals?: GlobalVariables, metrics?: TestExecutorMetrics, useCppSimulator?: boolean);
31
+ static create(worldStateService: NativeWorldStateService, // make sure to close this later
32
+ globals?: GlobalVariables, metrics?: TestExecutorMetrics, useCppSimulator?: boolean): Promise<PublicTxSimulationTester>;
31
33
  setMetricsPrefix(prefix: string): void;
32
34
  createTx(sender: AztecAddress, setupCalls?: TestEnqueuedCall[], appCalls?: TestEnqueuedCall[], teardownCall?: TestEnqueuedCall, feePayer?: AztecAddress, privateInsertions?: TestPrivateInsertions): Promise<Tx>;
33
35
  simulateTx(sender: AztecAddress, setupCalls?: TestEnqueuedCall[], appCalls?: TestEnqueuedCall[], teardownCall?: TestEnqueuedCall, feePayer?: AztecAddress, privateInsertions?: TestPrivateInsertions, txLabel?: string): Promise<PublicTxResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"public_tx_simulation_tester.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/public_tx_simulation_tester.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAmB,MAAM,mBAAmB,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAEjF,OAAO,EAAE,eAAe,EAAiC,KAAK,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAG3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AASxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,KAAK,qBAAqB,EAA0B,MAAM,YAAY,CAAC;AAIhF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAEF;;;;GAIG;AACH,qBAAa,wBAAyB,SAAQ,uBAAuB;;IASjE,OAAO,CAAC,OAAO;IARjB,SAAS,CAAC,OAAO,EAAE,MAAM,CAAK;IAC9B,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,aAAa,CAAC,CAAS;gBAG7B,UAAU,EAAE,yBAAyB,EACrC,kBAAkB,EAAE,wBAAwB,EAC5C,OAAO,GAAE,eAAkC,EACnC,OAAO,GAAE,mBAA+C;WAgB9C,MAAM,CACxB,OAAO,GAAE,eAAkC,EAC3C,OAAO,GAAE,mBAA+C,GACvD,OAAO,CAAC,wBAAwB,CAAC;IAM7B,gBAAgB,CAAC,MAAM,EAAE,MAAM;IAIzB,QAAQ,CACnB,MAAM,EAAE,YAAY,EACpB,UAAU,GAAE,gBAAgB,EAAO,EACnC,QAAQ,GAAE,gBAAgB,EAAO,EACjC,YAAY,CAAC,EAAE,gBAAgB,EAC/B,QAAQ,GAAE,YAAqB,EAE/B,iBAAiB,GAAE,qBAA0F,GAC5G,OAAO,CAAC,EAAE,CAAC;IAuBD,UAAU,CACrB,MAAM,EAAE,YAAY,EACpB,UAAU,GAAE,gBAAgB,EAAO,EACnC,QAAQ,GAAE,gBAAgB,EAAO,EACjC,YAAY,CAAC,EAAE,gBAAgB,EAC/B,QAAQ,GAAE,YAAqB,EAE/B,iBAAiB,CAAC,EAAE,qBAAqB,EACzC,OAAO,GAAE,MAAsB,GAC9B,OAAO,CAAC,cAAc,CAAC;IAyB1B;;;;;OAKG;IACU,mBAAmB,CAC9B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,YAAY,EACpB,UAAU,CAAC,EAAE,gBAAgB,EAAE,EAC/B,QAAQ,CAAC,EAAE,gBAAgB,EAAE,EAC7B,YAAY,CAAC,EAAE,gBAAgB,EAC/B,QAAQ,CAAC,EAAE,YAAY,EACvB,iBAAiB,CAAC,EAAE,qBAAqB,GACxC,OAAO,CAAC,cAAc,CAAC;IAI1B;;;;;;OAMG;IACU,kBAAkB,CAC7B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,YAAY,EACpB,UAAU,CAAC,EAAE,gBAAgB,EAAE,EAC/B,QAAQ,CAAC,EAAE,gBAAgB,EAAE,EAC7B,YAAY,CAAC,EAAE,gBAAgB,EAC/B,QAAQ,CAAC,EAAE,YAAY,EACvB,iBAAiB,CAAC,EAAE,qBAAqB,GACxC,OAAO,CAAC,cAAc,CAAC;IAYnB,kBAAkB;CAuB1B;AAED,wBAAgB,cAAc,oBAM7B"}
1
+ {"version":3,"file":"public_tx_simulation_tester.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/public_tx_simulation_tester.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,10 @@ import { encodeArguments } from '@aztec/stdlib/abi';
4
4
  import { Gas, GasFees } from '@aztec/stdlib/gas';
5
5
  import { PublicCallRequest } from '@aztec/stdlib/kernel';
6
6
  import { GlobalVariables, PublicCallRequestWithCalldata } from '@aztec/stdlib/tx';
7
- import { NativeWorldStateService } from '@aztec/world-state';
8
7
  import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
9
8
  import { DEFAULT_BLOCK_NUMBER, DEFAULT_TIMESTAMP, getContractFunctionAbi, getFunctionSelector } from '../avm/fixtures/utils.js';
10
9
  import { PublicContractsDB } from '../public_db_sources.js';
10
+ import { MeasuredCppPublicTxSimulatorHintedDbs } from '../public_tx_simulator/cpp_public_tx_simulator.js';
11
11
  import { MeasuredPublicTxSimulator } from '../public_tx_simulator/measured_public_tx_simulator.js';
12
12
  import { TestExecutorMetrics } from '../test_executor_metrics.js';
13
13
  import { SimpleContractDataSource } from './simple_contract_data_source.js';
@@ -22,15 +22,20 @@ const DEFAULT_GAS_FEES = new GasFees(2, 3);
22
22
  txCount;
23
23
  simulator;
24
24
  metricsPrefix;
25
- constructor(merkleTree, contractDataSource, globals = defaultGlobals(), metrics = new TestExecutorMetrics()){
25
+ constructor(merkleTree, contractDataSource, globals = defaultGlobals(), metrics = new TestExecutorMetrics(), useCppSimulator = false){
26
26
  super(contractDataSource, merkleTree), this.metrics = metrics, this.txCount = 0;
27
27
  const contractsDB = new PublicContractsDB(contractDataSource);
28
- this.simulator = new MeasuredPublicTxSimulator(merkleTree, contractsDB, globals, /*doMerkleOperations=*/ true, /*skipFeeEnforcement=*/ false, /*clientInitiatedSimulation=*/ true, this.metrics);
28
+ const config = {
29
+ doMerkleOperations: true,
30
+ skipFeeEnforcement: false,
31
+ clientInitiatedSimulation: true
32
+ };
33
+ this.simulator = useCppSimulator ? new MeasuredCppPublicTxSimulatorHintedDbs(merkleTree, contractsDB, globals, this.metrics, config) : new MeasuredPublicTxSimulator(merkleTree, contractsDB, globals, this.metrics, config);
29
34
  }
30
- static async create(globals = defaultGlobals(), metrics = new TestExecutorMetrics()) {
35
+ static async create(worldStateService, globals = defaultGlobals(), metrics = new TestExecutorMetrics(), useCppSimulator = false) {
31
36
  const contractDataSource = new SimpleContractDataSource();
32
- const merkleTree = await (await NativeWorldStateService.tmp()).fork();
33
- return new PublicTxSimulationTester(merkleTree, contractDataSource, globals, metrics);
37
+ const merkleTree = await worldStateService.fork();
38
+ return new PublicTxSimulationTester(merkleTree, contractDataSource, globals, metrics, useCppSimulator);
34
39
  }
35
40
  setMetricsPrefix(prefix) {
36
41
  this.metricsPrefix = prefix;
@@ -86,7 +86,7 @@ import { strict as assert } from 'assert';
86
86
  ].map((r)=>new HashedValues(r.calldata, r.request.calldataHash));
87
87
  return await Tx.create({
88
88
  data: txData,
89
- clientIvcProof: ClientIvcProof.empty(),
89
+ clientIvcProof: ClientIvcProof.random(),
90
90
  contractClassLogFields: [],
91
91
  publicFunctionCalldata: calldata
92
92
  });
@@ -6,6 +6,7 @@ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
6
6
  import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
7
7
  import { type BatchInsertionResult, type IndexedTreeId, MerkleTreeId, type MerkleTreeLeafType, type MerkleTreeWriteOperations, type SequentialInsertionResult, type TreeHeights } from '@aztec/stdlib/trees';
8
8
  import type { UInt64 } from '@aztec/stdlib/types';
9
+ import type { WorldStateRevision } from '@aztec/stdlib/world-state';
9
10
  import type { PublicContractsDBInterface } from './db_interfaces.js';
10
11
  /**
11
12
  * A public contracts database that forwards requests and collects AVM hints.
@@ -54,6 +55,7 @@ export declare class HintingMerkleWriteOperations implements MerkleTreeWriteOper
54
55
  getTreeInfo(treeId: MerkleTreeId): Promise<import("@aztec/stdlib/trees").TreeInfo>;
55
56
  getStateReference(): Promise<import("@aztec/stdlib/tx").StateReference>;
56
57
  getInitialHeader(): import("@aztec/stdlib/tx").BlockHeader;
58
+ getRevision(): WorldStateRevision;
57
59
  updateArchive(header: any): Promise<void>;
58
60
  batchInsert<TreeHeight extends number, SubtreeSiblingPathHeight extends number, ID extends IndexedTreeId>(treeId: ID, leaves: Buffer[], subtreeHeight: number): Promise<BatchInsertionResult<TreeHeight, SubtreeSiblingPathHeight>>;
59
61
  close(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"hinting_db_sources.d.ts","sourceRoot":"","sources":["../../src/public/hinting_db_sources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hinting_db_sources.d.ts","sourceRoot":"","sources":["../../src/public/hinting_db_sources.ts"],"names":[],"mappings":"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"}
@@ -270,6 +270,9 @@ import { strict as assert } from 'assert';
270
270
  getInitialHeader() {
271
271
  return this.db.getInitialHeader();
272
272
  }
273
+ getRevision() {
274
+ return this.db.getRevision();
275
+ }
273
276
  async updateArchive(header) {
274
277
  return await this.db.updateArchive(header);
275
278
  }
@@ -1,6 +1,6 @@
1
1
  export { PublicContractsDB } from './public_db_sources.js';
2
2
  export { GuardedMerkleTreeOperations } from './public_processor/guarded_merkle_tree.js';
3
3
  export { PublicProcessor, PublicProcessorFactory } from './public_processor/public_processor.js';
4
- export { PublicTxSimulator, TelemetryPublicTxSimulator, type PublicTxResult } from './public_tx_simulator/index.js';
4
+ export { PublicTxSimulator, type PublicTxSimulatorConfig, TelemetryPublicTxSimulator, type PublicTxResult, } from './public_tx_simulator/index.js';
5
5
  export { getCallRequestsWithCalldataByPhase } from './utils.js';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/public/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,KAAK,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACpH,OAAO,EAAE,kCAAkC,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/public/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AACjG,OAAO,EACL,iBAAiB,EACjB,KAAK,uBAAuB,EAC5B,0BAA0B,EAC1B,KAAK,cAAc,GACpB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,kCAAkC,EAAE,MAAM,YAAY,CAAC"}
@@ -106,8 +106,8 @@ export declare class PublicTreesDB implements PublicStateDBInterface {
106
106
  constructor(db: MerkleTreeWriteOperations);
107
107
  storageRead(contract: AztecAddress, slot: Fr): Promise<Fr>;
108
108
  storageWrite(contract: AztecAddress, slot: Fr, newValue: Fr): Promise<void>;
109
- getL1ToL2LeafValue(leafIndex: bigint): Promise<Fr | undefined>;
110
- getNoteHash(leafIndex: bigint): Promise<Fr | undefined>;
109
+ getL1ToL2LeafValue(leafIndex: bigint): Promise<Fr>;
110
+ getNoteHash(leafIndex: bigint): Promise<Fr>;
111
111
  writeNoteHash(noteHash: Fr): Promise<void>;
112
112
  checkNullifierExists(nullifier: Fr): Promise<boolean>;
113
113
  writeNullifier(siloedNullifier: Fr): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"public_db_sources.d.ts","sourceRoot":"","sources":["../../src/public/public_db_sources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"public_db_sources.d.ts","sourceRoot":"","sources":["../../src/public/public_db_sources.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAK9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,EAEjC,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAGjF,OAAO,EACL,YAAY,EAKb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAIlD,OAAO,KAAK,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAI7F;;;;;GAKG;AACH,qBAAa,iBAAkB,YAAW,0BAA0B;IAgBtD,OAAO,CAAC,UAAU;IAR9B,OAAO,CAAC,2BAA2B,CAAyB;IAC5D,OAAO,CAAC,wBAAwB,CAAyB;IACzD,OAAO,CAAC,UAAU,CAAyB;IAE3C,OAAO,CAAC,uBAAuB,CAAyB;IAExD,OAAO,CAAC,GAAG,CAAmD;gBAE1C,UAAU,EAAE,kBAAkB;IAElD;;;OAGG;IACU,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnD;;;OAGG;IACU,4BAA4B,CAAC,EAAE,EAAE,EAAE;IAKhD;;;OAGG;IACU,yBAAyB,CAAC,EAAE,EAAE,EAAE;IAK7C;;;;OAIG;YACW,+BAA+B;IAO7C;;;;OAIG;YACW,4BAA4B;IAK1C;;;;OAIG;IACH,OAAO,CAAC,iCAAiC;IAQzC;;;;OAIG;IACH,OAAO,CAAC,8BAA8B;IAQtC;;;;;OAKG;YACW,0BAA0B;IAoBxC;;;;;OAKG;IACH,OAAO,CAAC,4BAA4B;IAcpC;;OAEG;IACI,mBAAmB;IAM1B;;;OAGG;IACI,oBAAoB,CAAC,kBAAkB,GAAE,OAAe;IAuBlD,mBAAmB,CAC9B,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAUtC,gBAAgB,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAU/E,qBAAqB,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAyBnE,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAGlH;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,aAAc,YAAW,sBAAsB;IAG9C,OAAO,CAAC,QAAQ,CAAC,EAAE;IAF/B,OAAO,CAAC,MAAM,CAA6C;gBAE9B,EAAE,EAAE,yBAAyB;IAE7C,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IA2B1D,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAa3E,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;IAkBlD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;IAkB3C,aAAa,CAAC,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1C,oBAAoB,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBrD,cAAc,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlD,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCpE,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC;CASxD"}
@@ -1,4 +1,4 @@
1
- import { NULLIFIER_SUBTREE_HEIGHT, PUBLIC_DATA_SUBTREE_HEIGHT } from '@aztec/constants';
1
+ import { L1_TO_L2_MSG_TREE_LEAF_COUNT, NOTE_HASH_TREE_LEAF_COUNT, NULLIFIER_SUBTREE_HEIGHT, PUBLIC_DATA_SUBTREE_HEIGHT } from '@aztec/constants';
2
2
  import { Fr } from '@aztec/foundation/fields';
3
3
  import { createLogger } from '@aztec/foundation/log';
4
4
  import { Timer } from '@aztec/foundation/timer';
@@ -9,6 +9,8 @@ import { computePublicBytecodeCommitment } from '@aztec/stdlib/contract';
9
9
  import { computePublicDataTreeLeafSlot } from '@aztec/stdlib/hash';
10
10
  import { MerkleTreeId, NullifierLeaf, PublicDataTreeLeaf, getTreeName } from '@aztec/stdlib/trees';
11
11
  import { TreeSnapshots } from '@aztec/stdlib/tx';
12
+ import { strict as assert } from 'assert';
13
+ import { L1ToL2MessageIndexOutOfRangeError, NoteHashIndexOutOfRangeError } from './side_effect_errors.js';
12
14
  import { TxContractCache } from './tx_contract_cache.js';
13
15
  /**
14
16
  * Implements the PublicContractsDBInterface using a ContractDataSource.
@@ -236,7 +238,11 @@ import { TxContractCache } from './tx_contract_cache.js';
236
238
  }
237
239
  async getL1ToL2LeafValue(leafIndex) {
238
240
  const timer = new Timer();
241
+ if (leafIndex > L1_TO_L2_MSG_TREE_LEAF_COUNT) {
242
+ throw new L1ToL2MessageIndexOutOfRangeError(Number(leafIndex));
243
+ }
239
244
  const leafValue = await this.db.getLeafValue(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, leafIndex);
245
+ assert(leafValue !== undefined, 'Unexpected null response from l1 to l2 message tree');
240
246
  // TODO: We need this for the hints. See class comment for more details.
241
247
  await this.db.getSiblingPath(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, leafIndex);
242
248
  this.logger.debug(`Fetched L1 to L2 message leaf value (leafIndex=${leafIndex}, value=${leafValue})`, {
@@ -248,7 +254,11 @@ import { TxContractCache } from './tx_contract_cache.js';
248
254
  }
249
255
  async getNoteHash(leafIndex) {
250
256
  const timer = new Timer();
257
+ if (leafIndex > NOTE_HASH_TREE_LEAF_COUNT) {
258
+ throw new NoteHashIndexOutOfRangeError(Number(leafIndex));
259
+ }
251
260
  const leafValue = await this.db.getLeafValue(MerkleTreeId.NOTE_HASH_TREE, leafIndex);
261
+ assert(leafValue !== undefined, 'Unexpected null response from note hash tree');
252
262
  // TODO: We need this for the hints. See class comment for more details.
253
263
  await this.db.getSiblingPath(MerkleTreeId.NOTE_HASH_TREE, leafIndex);
254
264
  this.logger.debug(`Fetched note hash leaf value (leafIndex=${leafIndex}, value=${leafValue})`, {
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Any known (and checked) error that can be thrown during public execution.
3
+ * Includes AvmExecutionErrors and SideEffectErrors.
4
+ *
5
+ * AvmSimulator catches any checked errors before returning a boolean "reverted".
6
+ * Unchecked errors are generally the result of a bug. They are propagated and
7
+ * ultimately will be the resonsibility of PublicProcessor to handle.
8
+ */
9
+ export declare abstract class CheckedPublicExecutionError extends Error {
10
+ constructor(message: string);
11
+ }
12
+ //# sourceMappingURL=public_errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public_errors.d.ts","sourceRoot":"","sources":["../../src/public/public_errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,8BAAsB,2BAA4B,SAAQ,KAAK;gBACjD,OAAO,EAAE,MAAM;CAI5B"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Any known (and checked) error that can be thrown during public execution.
3
+ * Includes AvmExecutionErrors and SideEffectErrors.
4
+ *
5
+ * AvmSimulator catches any checked errors before returning a boolean "reverted".
6
+ * Unchecked errors are generally the result of a bug. They are propagated and
7
+ * ultimately will be the resonsibility of PublicProcessor to handle.
8
+ */ export class CheckedPublicExecutionError extends Error {
9
+ constructor(message){
10
+ super(message);
11
+ this.name = 'CheckedPublicExecutionError';
12
+ }
13
+ }
@@ -1,6 +1,7 @@
1
1
  import type { IndexedTreeLeafPreimage, SiblingPath } from '@aztec/foundation/trees';
2
2
  import type { BatchInsertionResult, IndexedTreeId, MerkleTreeId, MerkleTreeLeafType, MerkleTreeWriteOperations, SequentialInsertionResult, TreeHeights, TreeInfo } from '@aztec/stdlib/trees';
3
3
  import type { BlockHeader, StateReference } from '@aztec/stdlib/tx';
4
+ import type { WorldStateRevision } from '@aztec/stdlib/world-state';
4
5
  /**
5
6
  * Wraps an instance of `MerkleTreeWriteOperations` to allow the sequencer to gate access.
6
7
  * If transactions execution goes past the deadline, the simulator will continue to execute and update the world state
@@ -24,6 +25,7 @@ export declare class GuardedMerkleTreeOperations implements MerkleTreeWriteOpera
24
25
  getTreeInfo(treeId: MerkleTreeId): Promise<TreeInfo>;
25
26
  getStateReference(): Promise<StateReference>;
26
27
  getInitialHeader(): BlockHeader;
28
+ getRevision(): WorldStateRevision;
27
29
  getSiblingPath<ID extends MerkleTreeId>(treeId: ID, index: bigint): Promise<SiblingPath<TreeHeights[ID]>>;
28
30
  getPreviousValueIndex<ID extends IndexedTreeId>(treeId: ID, value: bigint): Promise<{
29
31
  index: bigint;
@@ -1 +1 @@
1
- {"version":3,"file":"guarded_merkle_tree.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/guarded_merkle_tree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"guarded_merkle_tree.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/guarded_merkle_tree.ts"],"names":[],"mappings":"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"}
@@ -63,6 +63,9 @@ import { SerialQueue } from '@aztec/foundation/queue';
63
63
  getInitialHeader() {
64
64
  return this.target.getInitialHeader();
65
65
  }
66
+ getRevision() {
67
+ return this.target.getRevision();
68
+ }
66
69
  getSiblingPath(treeId, index) {
67
70
  return this.guardAndPush(()=>this.target.getSiblingPath(treeId, index));
68
71
  }
@@ -1,10 +1,11 @@
1
+ import { Fr } from '@aztec/foundation/fields';
1
2
  import { DateProvider } from '@aztec/foundation/timer';
2
3
  import type { ContractDataSource } from '@aztec/stdlib/contract';
3
4
  import type { MerkleTreeWriteOperations, PublicProcessorLimits, PublicProcessorValidator, SequencerConfig } from '@aztec/stdlib/interfaces/server';
4
5
  import { type FailedTx, GlobalVariables, NestedProcessReturnValues, type ProcessedTx, Tx } from '@aztec/stdlib/tx';
5
6
  import { type TelemetryClient, type Traceable, type Tracer } from '@aztec/telemetry-client';
6
7
  import { PublicContractsDB } from '../public_db_sources.js';
7
- import { type PublicTxSimulator } from '../public_tx_simulator/index.js';
8
+ import { type PublicTxSimulator, type PublicTxSimulatorConfig } from '../public_tx_simulator/index.js';
8
9
  import { GuardedMerkleTreeOperations } from './guarded_merkle_tree.js';
9
10
  /**
10
11
  * Creates new instances of PublicProcessor given the provided merkle tree db and contract data source.
@@ -16,13 +17,17 @@ export declare class PublicProcessorFactory {
16
17
  constructor(contractDataSource: ContractDataSource, dateProvider?: DateProvider, telemetryClient?: TelemetryClient);
17
18
  /**
18
19
  * Creates a new instance of a PublicProcessor.
19
- * @param historicalHeader - The header of a block previous to the one in which the tx is included.
20
20
  * @param globalVariables - The global variables for the block being processed.
21
21
  * @param skipFeeEnforcement - Allows disabling balance checks for fee estimations.
22
22
  * @returns A new instance of a PublicProcessor.
23
23
  */
24
- create(merkleTree: MerkleTreeWriteOperations, globalVariables: GlobalVariables, skipFeeEnforcement: boolean, clientInitiatedSimulation?: boolean): PublicProcessor;
25
- protected createPublicTxSimulator(merkleTree: MerkleTreeWriteOperations, contractsDB: PublicContractsDB, globalVariables: GlobalVariables, doMerkleOperations: boolean, skipFeeEnforcement: boolean, clientInitiatedSimulation: boolean): PublicTxSimulator;
24
+ create(merkleTree: MerkleTreeWriteOperations, globalVariables: GlobalVariables, config: {
25
+ skipFeeEnforcement: boolean;
26
+ clientInitiatedSimulation: boolean;
27
+ proverId?: Fr;
28
+ maxDebugLogMemoryReads?: number;
29
+ }): PublicProcessor;
30
+ protected createPublicTxSimulator(merkleTree: MerkleTreeWriteOperations, contractsDB: PublicContractsDB, globalVariables: GlobalVariables, config?: Partial<PublicTxSimulatorConfig>): PublicTxSimulator;
26
31
  }
27
32
  /**
28
33
  * Converts Txs lifted from the P2P module into ProcessedTx objects by executing
@@ -1 +1 @@
1
- {"version":3,"file":"public_processor.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/public_processor.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAkC,MAAM,yBAAyB,CAAC;AAMvF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGjE,OAAO,KAAK,EACV,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,EACxB,eAAe,EAChB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,KAAK,QAAQ,EACb,eAAe,EACf,yBAAyB,EACzB,KAAK,WAAW,EAEhB,EAAE,EAIH,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,iBAAiB,EAAiB,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,KAAK,iBAAiB,EAA8B,MAAM,iCAAiC,CAAC;AACrG,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAGvE;;GAEG;AACH,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,YAAY;IACpB,SAAS,CAAC,eAAe,EAAE,eAAe;gBAFlC,kBAAkB,EAAE,kBAAkB,EACtC,YAAY,GAAE,YAAiC,EAC7C,eAAe,GAAE,eAAsC;IAGnE;;;;;;OAMG;IACI,MAAM,CACX,UAAU,EAAE,yBAAyB,EACrC,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,OAAO,EAC3B,yBAAyB,GAAE,OAAe,GACzC,eAAe;IAuBlB,SAAS,CAAC,uBAAuB,CAC/B,UAAU,EAAE,yBAAyB,EACrC,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,OAAO,EAC3B,kBAAkB,EAAE,OAAO,EAC3B,yBAAyB,EAAE,OAAO,GACjC,iBAAiB;CAWrB;AASD;;;GAGG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAI7C,SAAS,CAAC,eAAe,EAAE,eAAe;IAC1C,OAAO,CAAC,iBAAiB;IACzB,SAAS,CAAC,WAAW,EAAE,iBAAiB;IACxC,SAAS,CAAC,iBAAiB,EAAE,iBAAiB;IAC9C,OAAO,CAAC,YAAY;IAEpB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,IAAI;IAVd,OAAO,CAAC,OAAO,CAAyB;gBAG5B,eAAe,EAAE,eAAe,EAClC,iBAAiB,EAAE,2BAA2B,EAC5C,WAAW,EAAE,iBAAiB,EAC9B,iBAAiB,EAAE,iBAAiB,EACtC,YAAY,EAAE,YAAY,EAClC,eAAe,GAAE,eAAsC,EAC/C,GAAG,yCAA6C,EAChD,IAAI,GAAE,IAAI,CAAC,eAAe,EAAE,4BAA4B,CAAM;IAKxE,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;;;;;OAMG;IACU,OAAO,CAClB,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,EACrC,MAAM,GAAE,qBAA0B,EAClC,SAAS,GAAE,wBAA6B,GACvC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,yBAAyB,EAAE,CAAC,CAAC;YA4L5D,wBAAwB;YAiBxB,SAAS;YA2BT,gCAAgC;IA2B9C,kFAAkF;YACpE,uBAAuB;IA2CrC;;;;OAIG;YACW,gCAAgC;YA0BhC,oBAAoB;YAkCpB,wBAAwB;CAsCvC"}
1
+ {"version":3,"file":"public_processor.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/public_processor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAkC,MAAM,yBAAyB,CAAC;AAMvF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGjE,OAAO,KAAK,EACV,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,EACxB,eAAe,EAChB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,KAAK,QAAQ,EACb,eAAe,EACf,yBAAyB,EACzB,KAAK,WAAW,EAEhB,EAAE,EAIH,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAKjC,OAAO,EAAE,iBAAiB,EAAiB,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAE7B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAGvE;;GAEG;AACH,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,YAAY;IACpB,SAAS,CAAC,eAAe,EAAE,eAAe;gBAFlC,kBAAkB,EAAE,kBAAkB,EACtC,YAAY,GAAE,YAAiC,EAC7C,eAAe,GAAE,eAAsC;IAGnE;;;;;OAKG;IACI,MAAM,CACX,UAAU,EAAE,yBAAyB,EACrC,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE;QACN,kBAAkB,EAAE,OAAO,CAAC;QAC5B,yBAAyB,EAAE,OAAO,CAAC;QACnC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACd,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACjC,GACA,eAAe;IAsBlB,SAAS,CAAC,uBAAuB,CAC/B,UAAU,EAAE,yBAAyB,EACrC,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EAChC,MAAM,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GACxC,iBAAiB;CAGrB;AASD;;;GAGG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAI7C,SAAS,CAAC,eAAe,EAAE,eAAe;IAC1C,OAAO,CAAC,iBAAiB;IACzB,SAAS,CAAC,WAAW,EAAE,iBAAiB;IACxC,SAAS,CAAC,iBAAiB,EAAE,iBAAiB;IAC9C,OAAO,CAAC,YAAY;IAEpB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,IAAI;IAVd,OAAO,CAAC,OAAO,CAAyB;gBAG5B,eAAe,EAAE,eAAe,EAClC,iBAAiB,EAAE,2BAA2B,EAC5C,WAAW,EAAE,iBAAiB,EAC9B,iBAAiB,EAAE,iBAAiB,EACtC,YAAY,EAAE,YAAY,EAClC,eAAe,GAAE,eAAsC,EAC/C,GAAG,yCAA6C,EAChD,IAAI,GAAE,IAAI,CAAC,eAAe,EAAE,4BAA4B,CAAM;IAKxE,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;;;;;OAMG;IACU,OAAO,CAClB,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,EACrC,MAAM,GAAE,qBAA0B,EAClC,SAAS,GAAE,wBAA6B,GACvC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,yBAAyB,EAAE,CAAC,CAAC;YA4L5D,wBAAwB;YAiBxB,SAAS;YA2BT,gCAAgC;IA2B9C,kFAAkF;YACpE,uBAAuB;IA2CrC;;;;OAIG;YACW,gCAAgC;YA0BhC,oBAAoB;YAkCpB,wBAAwB;CAsCvC"}
@@ -20,6 +20,7 @@ import { MerkleTreeId } from '@aztec/stdlib/trees';
20
20
  import { NestedProcessReturnValues, Tx, TxExecutionPhase, makeProcessedTxFromPrivateOnlyTx, makeProcessedTxFromTxWithPublicCalls } from '@aztec/stdlib/tx';
21
21
  import { Attributes, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
22
22
  import { ForkCheckpoint } from '@aztec/world-state/native';
23
+ import { AssertionError } from 'assert';
23
24
  import { PublicContractsDB, PublicTreesDB } from '../public_db_sources.js';
24
25
  import { TelemetryPublicTxSimulator } from '../public_tx_simulator/index.js';
25
26
  import { GuardedMerkleTreeOperations } from './guarded_merkle_tree.js';
@@ -37,18 +38,23 @@ import { PublicProcessorMetrics } from './public_processor_metrics.js';
37
38
  }
38
39
  /**
39
40
  * Creates a new instance of a PublicProcessor.
40
- * @param historicalHeader - The header of a block previous to the one in which the tx is included.
41
41
  * @param globalVariables - The global variables for the block being processed.
42
42
  * @param skipFeeEnforcement - Allows disabling balance checks for fee estimations.
43
43
  * @returns A new instance of a PublicProcessor.
44
- */ create(merkleTree, globalVariables, skipFeeEnforcement, clientInitiatedSimulation = false) {
44
+ */ create(merkleTree, globalVariables, config) {
45
45
  const contractsDB = new PublicContractsDB(this.contractDataSource);
46
46
  const guardedFork = new GuardedMerkleTreeOperations(merkleTree);
47
- const publicTxSimulator = this.createPublicTxSimulator(guardedFork, contractsDB, globalVariables, /*doMerkleOperations=*/ true, skipFeeEnforcement, clientInitiatedSimulation);
47
+ const publicTxSimulator = this.createPublicTxSimulator(guardedFork, contractsDB, globalVariables, {
48
+ proverId: config.proverId,
49
+ doMerkleOperations: true,
50
+ skipFeeEnforcement: config.skipFeeEnforcement,
51
+ clientInitiatedSimulation: config.clientInitiatedSimulation,
52
+ maxDebugLogMemoryReads: config.maxDebugLogMemoryReads
53
+ });
48
54
  return new PublicProcessor(globalVariables, guardedFork, contractsDB, publicTxSimulator, this.dateProvider, this.telemetryClient);
49
55
  }
50
- createPublicTxSimulator(merkleTree, contractsDB, globalVariables, doMerkleOperations, skipFeeEnforcement, clientInitiatedSimulation) {
51
- return new TelemetryPublicTxSimulator(merkleTree, contractsDB, globalVariables, doMerkleOperations, skipFeeEnforcement, clientInitiatedSimulation, this.telemetryClient);
56
+ createPublicTxSimulator(merkleTree, contractsDB, globalVariables, config) {
57
+ return new TelemetryPublicTxSimulator(merkleTree, contractsDB, globalVariables, this.telemetryClient, config);
52
58
  }
53
59
  }
54
60
  class PublicProcessorTimeoutError extends Error {
@@ -226,7 +232,7 @@ class PublicProcessorTimeoutError extends Error {
226
232
  // Roll back state to start of TX before proceeding to next TX
227
233
  await checkpoint.revert();
228
234
  await this.guardedMerkleTree.getUnderlyingFork().revertAllCheckpoints();
229
- const errorMessage = err instanceof Error ? err.message : 'Unknown error';
235
+ const errorMessage = err instanceof Error || err instanceof AssertionError ? err.message : 'Unknown error';
230
236
  this.log.warn(`Failed to process tx ${txHash.toString()}: ${errorMessage} ${err?.stack}`);
231
237
  failed.push({
232
238
  tx,