@aztec/stdlib 0.87.2 → 0.87.3-nightly.20250529

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 (203) hide show
  1. package/dest/abi/abi.d.ts +3 -0
  2. package/dest/abi/abi.d.ts.map +1 -1
  3. package/dest/abi/abi.js +38 -0
  4. package/dest/avm/avm.d.ts +696 -12
  5. package/dest/avm/avm.d.ts.map +1 -1
  6. package/dest/avm/avm.js +16 -8
  7. package/dest/avm/avm_accumulated_data.d.ts +77 -0
  8. package/dest/avm/avm_accumulated_data.d.ts.map +1 -1
  9. package/dest/avm/avm_accumulated_data.js +67 -0
  10. package/dest/avm/avm_circuit_public_inputs.d.ts +73 -3
  11. package/dest/avm/avm_circuit_public_inputs.d.ts.map +1 -1
  12. package/dest/avm/avm_circuit_public_inputs.js +19 -9
  13. package/dest/avm/avm_proving_request.d.ts +366 -0
  14. package/dest/avm/avm_proving_request.d.ts.map +1 -1
  15. package/dest/block/body.d.ts +1 -1
  16. package/dest/block/body.d.ts.map +1 -1
  17. package/dest/block/body.js +2 -2
  18. package/dest/block/index.d.ts +1 -0
  19. package/dest/block/index.d.ts.map +1 -1
  20. package/dest/block/index.js +1 -0
  21. package/dest/block/l2_block.d.ts +3 -2
  22. package/dest/block/l2_block.d.ts.map +1 -1
  23. package/dest/block/l2_block.js +10 -5
  24. package/dest/block/l2_block_source.d.ts +9 -4
  25. package/dest/block/l2_block_source.d.ts.map +1 -1
  26. package/dest/block/l2_block_source.js +1 -0
  27. package/dest/block/proposal/committee_attestation.d.ts +34 -0
  28. package/dest/block/proposal/committee_attestation.d.ts.map +1 -0
  29. package/dest/block/proposal/committee_attestation.js +59 -0
  30. package/dest/block/proposal/index.d.ts +2 -0
  31. package/dest/block/proposal/index.d.ts.map +1 -0
  32. package/dest/block/proposal/index.js +1 -0
  33. package/dest/block/published_l2_block.d.ts +99 -69
  34. package/dest/block/published_l2_block.d.ts.map +1 -1
  35. package/dest/block/published_l2_block.js +38 -12
  36. package/dest/block/test/l2_tips_store_test_suite.js +1 -1
  37. package/dest/interfaces/archiver.js +2 -2
  38. package/dest/interfaces/aztec-node.js +2 -2
  39. package/dest/interfaces/p2p.d.ts +5 -2
  40. package/dest/interfaces/p2p.d.ts.map +1 -1
  41. package/dest/interfaces/p2p.js +1 -2
  42. package/dest/interfaces/prover-agent.d.ts +31 -6
  43. package/dest/interfaces/prover-agent.d.ts.map +1 -1
  44. package/dest/interfaces/prover-agent.js +15 -6
  45. package/dest/interfaces/proving-job.d.ts +370 -4
  46. package/dest/interfaces/proving-job.d.ts.map +1 -1
  47. package/dest/interfaces/proving-job.js +2 -2
  48. package/dest/interfaces/server_circuit_prover.d.ts +3 -2
  49. package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
  50. package/dest/kernel/hints/find_private_kernel_reset_dimensions.js +1 -1
  51. package/dest/kernel/hints/key_validation_hint.d.ts +2 -6
  52. package/dest/kernel/hints/key_validation_hint.d.ts.map +1 -1
  53. package/dest/kernel/hints/key_validation_hint.js +5 -7
  54. package/dest/kernel/hints/private_kernel_reset_hints.d.ts +7 -7
  55. package/dest/kernel/hints/private_kernel_reset_hints.d.ts.map +1 -1
  56. package/dest/kernel/hints/private_kernel_reset_hints.js +8 -4
  57. package/dest/kernel/hints/read_request_hints.d.ts +8 -8
  58. package/dest/kernel/hints/read_request_hints.d.ts.map +1 -1
  59. package/dest/kernel/index.d.ts +1 -0
  60. package/dest/kernel/index.d.ts.map +1 -1
  61. package/dest/kernel/index.js +1 -0
  62. package/dest/kernel/padded_side_effects.d.ts +26 -0
  63. package/dest/kernel/padded_side_effects.d.ts.map +1 -0
  64. package/dest/kernel/padded_side_effects.js +51 -0
  65. package/dest/kernel/private_kernel_data.d.ts +6 -25
  66. package/dest/kernel/private_kernel_data.d.ts.map +1 -1
  67. package/dest/kernel/private_kernel_data.js +8 -19
  68. package/dest/kernel/private_kernel_prover_output.d.ts +3 -0
  69. package/dest/kernel/private_kernel_prover_output.d.ts.map +1 -1
  70. package/dest/kernel/private_kernel_reset_circuit_private_inputs.d.ts +7 -4
  71. package/dest/kernel/private_kernel_reset_circuit_private_inputs.d.ts.map +1 -1
  72. package/dest/kernel/private_kernel_reset_circuit_private_inputs.js +10 -6
  73. package/dest/kernel/private_kernel_reset_dimensions.d.ts +10 -10
  74. package/dest/kernel/private_kernel_reset_dimensions.d.ts.map +1 -1
  75. package/dest/kernel/private_kernel_reset_dimensions.js +29 -29
  76. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts +10 -1
  77. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts.map +1 -1
  78. package/dest/kernel/private_kernel_tail_circuit_private_inputs.js +8 -3
  79. package/dest/kernel/public_call_request.d.ts +54 -0
  80. package/dest/kernel/public_call_request.d.ts.map +1 -1
  81. package/dest/kernel/public_call_request.js +58 -0
  82. package/dest/logs/contract_class_log.d.ts +0 -4
  83. package/dest/logs/contract_class_log.d.ts.map +1 -1
  84. package/dest/logs/contract_class_log.js +0 -33
  85. package/dest/logs/log_with_tx_data.d.ts +3 -3
  86. package/dest/logs/log_with_tx_data.d.ts.map +1 -1
  87. package/dest/logs/log_with_tx_data.js +9 -13
  88. package/dest/logs/pending_tagged_log.d.ts +1 -1
  89. package/dest/logs/pending_tagged_log.js +1 -1
  90. package/dest/logs/private_log.d.ts +1 -0
  91. package/dest/logs/private_log.d.ts.map +1 -1
  92. package/dest/logs/private_log.js +3 -0
  93. package/dest/logs/public_log.d.ts +1 -0
  94. package/dest/logs/public_log.d.ts.map +1 -1
  95. package/dest/logs/public_log.js +3 -0
  96. package/dest/logs/tx_scoped_l2_log.d.ts.map +1 -1
  97. package/dest/logs/tx_scoped_l2_log.js +1 -0
  98. package/dest/rollup/avm_proof_data.d.ts +7 -5
  99. package/dest/rollup/avm_proof_data.d.ts.map +1 -1
  100. package/dest/rollup/avm_proof_data.js +12 -4
  101. package/dest/rollup/base_rollup_hints.d.ts +4 -4
  102. package/dest/rollup/base_rollup_hints.d.ts.map +1 -1
  103. package/dest/rollup/base_rollup_hints.js +8 -8
  104. package/dest/rollup/previous_rollup_block_data.d.ts +6 -15
  105. package/dest/rollup/previous_rollup_block_data.d.ts.map +1 -1
  106. package/dest/rollup/previous_rollup_block_data.js +8 -13
  107. package/dest/rollup/previous_rollup_data.d.ts +6 -15
  108. package/dest/rollup/previous_rollup_data.d.ts.map +1 -1
  109. package/dest/rollup/previous_rollup_data.js +8 -13
  110. package/dest/rollup/private_tube_data.d.ts +3 -3
  111. package/dest/rollup/private_tube_data.d.ts.map +1 -1
  112. package/dest/rollup/private_tube_data.js +3 -3
  113. package/dest/rollup/public_tube_data.d.ts +3 -3
  114. package/dest/rollup/public_tube_data.d.ts.map +1 -1
  115. package/dest/rollup/public_tube_data.js +3 -3
  116. package/dest/rollup/root_rollup.d.ts +9 -10
  117. package/dest/rollup/root_rollup.d.ts.map +1 -1
  118. package/dest/rollup/root_rollup.js +9 -20
  119. package/dest/tests/factories.d.ts +2 -1
  120. package/dest/tests/factories.d.ts.map +1 -1
  121. package/dest/tests/factories.js +25 -19
  122. package/dest/tests/mocks.d.ts.map +1 -1
  123. package/dest/tests/mocks.js +4 -3
  124. package/dest/tx/private_execution_result.d.ts +6 -0
  125. package/dest/tx/private_execution_result.d.ts.map +1 -1
  126. package/dest/tx/processed_tx.d.ts.map +1 -1
  127. package/dest/tx/processed_tx.js +2 -5
  128. package/dest/tx/profiling.d.ts +41 -0
  129. package/dest/tx/profiling.d.ts.map +1 -1
  130. package/dest/tx/profiling.js +4 -1
  131. package/dest/tx/proven_tx.d.ts +40 -18
  132. package/dest/tx/proven_tx.d.ts.map +1 -1
  133. package/dest/tx/proven_tx.js +2 -2
  134. package/dest/tx/tx.d.ts +10 -25
  135. package/dest/tx/tx.d.ts.map +1 -1
  136. package/dest/tx/tx.js +25 -50
  137. package/dest/tx/tx_effect.d.ts +1 -1
  138. package/dest/tx/tx_effect.d.ts.map +1 -1
  139. package/dest/tx/tx_effect.js +2 -2
  140. package/dest/validators/types.d.ts +4 -0
  141. package/dest/validators/types.d.ts.map +1 -1
  142. package/dest/vks/index.d.ts +1 -1
  143. package/dest/vks/index.d.ts.map +1 -1
  144. package/dest/vks/index.js +1 -1
  145. package/dest/vks/{vk_witness_data.d.ts → vk_data.d.ts} +8 -8
  146. package/dest/vks/vk_data.d.ts.map +1 -0
  147. package/dest/vks/{vk_witness_data.js → vk_data.js} +10 -10
  148. package/package.json +7 -7
  149. package/src/abi/abi.ts +37 -0
  150. package/src/avm/avm.ts +14 -0
  151. package/src/avm/avm_accumulated_data.ts +93 -0
  152. package/src/avm/avm_circuit_public_inputs.ts +22 -2
  153. package/src/block/body.ts +7 -2
  154. package/src/block/index.ts +1 -0
  155. package/src/block/l2_block.ts +8 -3
  156. package/src/block/l2_block_source.ts +9 -3
  157. package/src/block/proposal/committee_attestation.ts +70 -0
  158. package/src/block/proposal/index.ts +1 -0
  159. package/src/block/published_l2_block.ts +38 -24
  160. package/src/block/test/l2_tips_store_test_suite.ts +1 -1
  161. package/src/interfaces/archiver.ts +2 -2
  162. package/src/interfaces/aztec-node.ts +2 -2
  163. package/src/interfaces/p2p.ts +8 -3
  164. package/src/interfaces/prover-agent.ts +9 -10
  165. package/src/interfaces/proving-job.ts +3 -3
  166. package/src/interfaces/server_circuit_prover.ts +3 -2
  167. package/src/kernel/hints/find_private_kernel_reset_dimensions.ts +3 -3
  168. package/src/kernel/hints/key_validation_hint.ts +4 -6
  169. package/src/kernel/hints/private_kernel_reset_hints.ts +34 -43
  170. package/src/kernel/hints/read_request_hints.ts +27 -15
  171. package/src/kernel/index.ts +1 -0
  172. package/src/kernel/padded_side_effects.ts +73 -0
  173. package/src/kernel/private_kernel_data.ts +7 -29
  174. package/src/kernel/private_kernel_prover_output.ts +1 -0
  175. package/src/kernel/private_kernel_reset_circuit_private_inputs.ts +16 -13
  176. package/src/kernel/private_kernel_reset_dimensions.ts +27 -27
  177. package/src/kernel/private_kernel_tail_circuit_private_inputs.ts +10 -2
  178. package/src/kernel/public_call_request.ts +66 -0
  179. package/src/logs/contract_class_log.ts +0 -36
  180. package/src/logs/log_with_tx_data.ts +7 -11
  181. package/src/logs/pending_tagged_log.ts +1 -1
  182. package/src/logs/private_log.ts +4 -0
  183. package/src/logs/public_log.ts +4 -0
  184. package/src/logs/tx_scoped_l2_log.ts +1 -0
  185. package/src/rollup/avm_proof_data.ts +14 -7
  186. package/src/rollup/base_rollup_hints.ts +4 -4
  187. package/src/rollup/previous_rollup_block_data.ts +6 -12
  188. package/src/rollup/previous_rollup_data.ts +6 -12
  189. package/src/rollup/private_tube_data.ts +4 -4
  190. package/src/rollup/public_tube_data.ts +4 -4
  191. package/src/rollup/root_rollup.ts +6 -19
  192. package/src/tests/factories.ts +36 -32
  193. package/src/tests/mocks.ts +6 -3
  194. package/src/tx/private_execution_result.ts +1 -1
  195. package/src/tx/processed_tx.ts +4 -5
  196. package/src/tx/profiling.ts +6 -1
  197. package/src/tx/proven_tx.ts +2 -2
  198. package/src/tx/tx.ts +28 -54
  199. package/src/tx/tx_effect.ts +23 -5
  200. package/src/validators/types.ts +2 -0
  201. package/src/vks/index.ts +1 -1
  202. package/src/vks/{vk_witness_data.ts → vk_data.ts} +6 -6
  203. package/dest/vks/vk_witness_data.d.ts.map +0 -1
@@ -10,9 +10,14 @@ import { AbiDecodedSchema } from '../schemas/schemas.js';
10
10
  type FunctionTiming = {
11
11
  functionName: string;
12
12
  time: number;
13
+ oracles?: Record<string, { times: number[] }>;
13
14
  };
14
15
 
15
- const FunctionTimingSchema = z.object({ functionName: z.string(), time: z.number() });
16
+ const FunctionTimingSchema = z.object({
17
+ functionName: z.string(),
18
+ time: z.number(),
19
+ oracles: optional(z.record(z.string(), z.object({ times: z.array(z.number()) }))),
20
+ });
16
21
 
17
22
  export type ProvingTimings = {
18
23
  sync?: number;
@@ -6,7 +6,7 @@ import { z } from 'zod';
6
6
  import { PrivateKernelTailCircuitPublicInputs } from '../kernel/private_kernel_tail_circuit_public_inputs.js';
7
7
  import { ClientIvcProof } from '../proofs/client_ivc_proof.js';
8
8
  import { PrivateExecutionResult, collectSortedContractClassLogs } from './private_execution_result.js';
9
- import { type ProvingTimings, SimulationTimingsSchema } from './profiling.js';
9
+ import { type ProvingTimings, ProvingTimingsSchema } from './profiling.js';
10
10
  import { Tx } from './tx.js';
11
11
 
12
12
  export class TxProvingResult {
@@ -35,7 +35,7 @@ export class TxProvingResult {
35
35
  privateExecutionResult: PrivateExecutionResult.schema,
36
36
  publicInputs: PrivateKernelTailCircuitPublicInputs.schema,
37
37
  clientIvcProof: ClientIvcProof.schema,
38
- timings: optional(SimulationTimingsSchema),
38
+ timings: optional(ProvingTimingsSchema),
39
39
  })
40
40
  .transform(TxProvingResult.from);
41
41
  }
package/src/tx/tx.ts CHANGED
@@ -11,7 +11,6 @@ import type { GasSettings } from '../gas/gas_settings.js';
11
11
  import type { GetPublicLogsResponse } from '../interfaces/get_logs_response.js';
12
12
  import type { L2LogsSource } from '../interfaces/l2_logs_source.js';
13
13
  import type { PublicCallRequest } from '../kernel/index.js';
14
- import type { ScopedLogHash } from '../kernel/log_hash.js';
15
14
  import { PrivateKernelTailCircuitPublicInputs } from '../kernel/private_kernel_tail_circuit_public_inputs.js';
16
15
  import { ContractClassLog, ContractClassLogFields } from '../logs/contract_class_log.js';
17
16
  import { Gossipable } from '../p2p/gossipable.js';
@@ -42,9 +41,11 @@ export class Tx extends Gossipable {
42
41
  */
43
42
  public readonly clientIvcProof: ClientIvcProof,
44
43
  /**
45
- * Contract class logs generated by the tx.
44
+ * Contract class log fields emitted from the tx.
45
+ * Their order should match the order of the log hashes returned from `this.data.getNonEmptyContractClassLogsHashes`.
46
+ * It's checked in data_validator.ts
46
47
  */
47
- public contractClassLogs: ContractClassLogFields[],
48
+ public contractClassLogFields: ContractClassLogFields[],
48
49
  /**
49
50
  * An array of calldata for the enqueued public function calls and the teardown function call.
50
51
  */
@@ -120,7 +121,7 @@ export class Tx extends Gossipable {
120
121
  return serializeToBuffer([
121
122
  this.data,
122
123
  this.clientIvcProof,
123
- serializeArrayOfBufferableToVector(this.contractClassLogs, 1),
124
+ serializeArrayOfBufferableToVector(this.contractClassLogFields, 1),
124
125
  serializeArrayOfBufferableToVector(this.publicFunctionCalldata, 1),
125
126
  ]);
126
127
  }
@@ -130,14 +131,14 @@ export class Tx extends Gossipable {
130
131
  .object({
131
132
  data: PrivateKernelTailCircuitPublicInputs.schema,
132
133
  clientIvcProof: ClientIvcProof.schema,
133
- contractClassLogs: z.array(ContractClassLogFields.schema),
134
+ contractClassLogFields: z.array(ContractClassLogFields.schema),
134
135
  publicFunctionCalldata: z.array(HashedValues.schema),
135
136
  })
136
137
  .transform(Tx.from);
137
138
  }
138
139
 
139
140
  static from(fields: FieldsOf<Tx>) {
140
- return new Tx(fields.data, fields.clientIvcProof, fields.contractClassLogs, fields.publicFunctionCalldata);
141
+ return new Tx(fields.data, fields.clientIvcProof, fields.contractClassLogFields, fields.publicFunctionCalldata);
141
142
  }
142
143
 
143
144
  /**
@@ -149,43 +150,32 @@ export class Tx extends Gossipable {
149
150
  return logsSource.getPublicLogs({ txHash: await this.getTxHash() });
150
151
  }
151
152
 
153
+ getContractClassLogs(): ContractClassLog[] {
154
+ const logHashes = this.data.getNonEmptyContractClassLogsHashes();
155
+ return logHashes.map((logHash, i) =>
156
+ ContractClassLog.from({
157
+ contractAddress: logHash.contractAddress,
158
+ fields: this.contractClassLogFields[i],
159
+ emittedLength: logHash.logHash.length,
160
+ }),
161
+ );
162
+ }
163
+
152
164
  /**
153
165
  * Gets either revertible or non revertible contract class logs emitted by this tx.
154
166
  * @param revertible - true for revertible only logs, false for non reverible only logs.
155
167
  * @returns The requested logs.
156
168
  */
157
- async getSplitContractClassLogs(revertible: boolean, silo: boolean = false): Promise<ContractClassLog[]> {
158
- // Should only be called on txs with public calls
169
+ getSplitContractClassLogs(revertible: boolean): ContractClassLog[] {
159
170
  if (!this.data.forPublic) {
160
- return [];
171
+ throw new Error('`getSplitContractClassLogs` should only be called on txs with public calls');
161
172
  }
162
- const contractClassLogsHashes = revertible
163
- ? this.data.forPublic.revertibleAccumulatedData.contractClassLogsHashes.filter(h => !h.isEmpty())
164
- : this.data.forPublic.nonRevertibleAccumulatedData.contractClassLogsHashes.filter(h => !h.isEmpty());
165
- return await this.filterContractClassLogs(contractClassLogsHashes, silo);
166
- }
167
173
 
168
- /**
169
- * Filters contract class logs emitted by this tx.
170
- * @param logHashes - logs to keep represented by their hashes.
171
- * @param silo - whether to silo the logs before returning them.
172
- * @returns The requested logs.
173
- */
174
- async filterContractClassLogs(logHashes: ScopedLogHash[], silo: boolean = false): Promise<ContractClassLog[]> {
175
- const contractClassLogs = [];
176
- for (const fields of this.contractClassLogs) {
177
- const hashedLog = await fields.hash();
178
- const logHash = logHashes.find(hash => hash.value.equals(hashedLog));
179
- if (logHash) {
180
- const log = ContractClassLog.from({
181
- contractAddress: logHash.contractAddress,
182
- fields,
183
- emittedLength: logHash.logHash.length,
184
- });
185
- contractClassLogs.push(silo ? await log.silo() : log);
186
- }
187
- }
188
- return contractClassLogs;
174
+ const contractClassLogs = this.getContractClassLogs();
175
+ const numNonRevertible = this.data.forPublic.nonRevertibleAccumulatedData.contractClassLogsHashes.filter(
176
+ h => !h.isEmpty(),
177
+ ).length;
178
+ return revertible ? contractClassLogs.slice(numNonRevertible) : contractClassLogs.slice(0, numNonRevertible);
189
179
  }
190
180
 
191
181
  /**
@@ -246,7 +236,7 @@ export class Tx extends Gossipable {
246
236
  return (
247
237
  this.data.getSize() +
248
238
  this.clientIvcProof.clientIvcProofBuffer.length +
249
- arraySerializedSizeOfNonEmpty(this.contractClassLogs) +
239
+ arraySerializedSizeOfNonEmpty(this.contractClassLogFields) +
250
240
  this.publicFunctionCalldata.reduce((accum, cd) => accum + cd.getSize(), 0)
251
241
  );
252
242
  }
@@ -290,9 +280,9 @@ export class Tx extends Gossipable {
290
280
  static clone(tx: Tx): Tx {
291
281
  const publicInputs = PrivateKernelTailCircuitPublicInputs.fromBuffer(tx.data.toBuffer());
292
282
  const clientIvcProof = ClientIvcProof.fromBuffer(tx.clientIvcProof.toBuffer());
293
- const contractClassLogs = tx.contractClassLogs.map(p => p.clone());
283
+ const contractClassLogFields = tx.contractClassLogFields.map(p => p.clone());
294
284
  const publicFunctionCalldata = tx.publicFunctionCalldata.map(cd => HashedValues.fromBuffer(cd.toBuffer()));
295
- const clonedTx = new Tx(publicInputs, clientIvcProof, contractClassLogs, publicFunctionCalldata);
285
+ const clonedTx = new Tx(publicInputs, clientIvcProof, contractClassLogFields, publicFunctionCalldata);
296
286
  if (tx.txHash) {
297
287
  clonedTx.setTxHash(TxHash.fromBuffer(tx.txHash.toBuffer()));
298
288
  }
@@ -314,22 +304,6 @@ export class Tx extends Gossipable {
314
304
  );
315
305
  }
316
306
 
317
- /**
318
- * Filters out logs from functions that are not present in the provided kernel output.
319
- *
320
- * The purpose of this is to remove logs that got dropped due to a revert,
321
- * in which case, we only have the kernel's hashes to go on, as opposed to
322
- * this grouping by function maintained in this class.
323
- *
324
- * The logic therefore is to drop all FunctionLogs if any constituent hash
325
- * does not appear in the provided hashes: it is impossible for part of a
326
- * function to revert.
327
- */
328
- // TODO: don't modify the tx object directly. The preimages should match the log hashes. When did the log hashes change?
329
- public async filterRevertedLogs() {
330
- this.contractClassLogs = (await this.getSplitContractClassLogs(false)).map(log => log.fields);
331
- }
332
-
333
307
  #combinePublicCallRequestWithCallData(request: PublicCallRequest) {
334
308
  const calldataMap = this.getCalldataMap();
335
309
  // Assume empty calldata if nothing is given for the hash.
@@ -232,15 +232,33 @@ export class TxEffect {
232
232
  return thisLayer[0];
233
233
  }
234
234
 
235
- static async random(numPublicCallsPerTx = 3, numPublicLogsPerCall = 1): Promise<TxEffect> {
235
+ static async random(
236
+ numPublicCallsPerTx = 3,
237
+ numPublicLogsPerCall = 1,
238
+ maxEffects: number | undefined = undefined,
239
+ ): Promise<TxEffect> {
236
240
  return new TxEffect(
237
241
  RevertCode.random(),
238
242
  TxHash.random(),
239
243
  new Fr(Math.floor(Math.random() * 100_000)),
240
- makeTuple(MAX_NOTE_HASHES_PER_TX, Fr.random),
241
- makeTuple(MAX_NULLIFIERS_PER_TX, Fr.random),
242
- makeTuple(MAX_L2_TO_L1_MSGS_PER_TX, Fr.random),
243
- makeTuple(MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, PublicDataWrite.random),
244
+ makeTuple(
245
+ maxEffects === undefined ? MAX_NOTE_HASHES_PER_TX : Math.min(maxEffects, MAX_NOTE_HASHES_PER_TX),
246
+ Fr.random,
247
+ ),
248
+ makeTuple(
249
+ maxEffects === undefined ? MAX_NULLIFIERS_PER_TX : Math.min(maxEffects, MAX_NULLIFIERS_PER_TX),
250
+ Fr.random,
251
+ ),
252
+ makeTuple(
253
+ maxEffects === undefined ? MAX_L2_TO_L1_MSGS_PER_TX : Math.min(maxEffects, MAX_L2_TO_L1_MSGS_PER_TX),
254
+ Fr.random,
255
+ ),
256
+ makeTuple(
257
+ maxEffects === undefined
258
+ ? MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX
259
+ : Math.min(maxEffects, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX),
260
+ PublicDataWrite.random,
261
+ ),
244
262
  makeTuple(MAX_PRIVATE_LOGS_PER_TX, () => PrivateLog.random()),
245
263
  await makeTupleAsync(numPublicCallsPerTx * numPublicLogsPerCall, async () => await PublicLog.random()),
246
264
  await makeTupleAsync(MAX_CONTRACT_CLASS_LOGS_PER_TX, ContractClassLog.random),
@@ -35,3 +35,5 @@ export type ValidatorsStats = {
35
35
  initialSlot?: bigint;
36
36
  slotWindow: number;
37
37
  };
38
+
39
+ export type ValidatorsEpochPerformance = Record<`0x${string}`, { missed: number; total: number }>;
package/src/vks/index.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  export * from './verification_key.js';
2
- export * from './vk_witness_data.js';
2
+ export * from './vk_data.js';
@@ -7,26 +7,26 @@ import { bufferToHex } from '@aztec/foundation/string';
7
7
  import type { UInt32 } from '../types/shared.js';
8
8
  import { VerificationKeyData } from './verification_key.js';
9
9
 
10
- export class VkWitnessData {
10
+ export class VkData {
11
11
  constructor(
12
12
  public vk: VerificationKeyData,
13
13
  /**
14
14
  * Index of the vk in the vk tree.
15
15
  */
16
- public vkIndex: UInt32,
16
+ public leafIndex: UInt32,
17
17
  /**
18
18
  * Sibling path of the vk in the vk tree.
19
19
  */
20
- public vkPath: Tuple<Fr, typeof VK_TREE_HEIGHT>,
20
+ public siblingPath: Tuple<Fr, typeof VK_TREE_HEIGHT>,
21
21
  ) {}
22
22
 
23
23
  static empty() {
24
- return new VkWitnessData(VerificationKeyData.empty(), 0, makeTuple(VK_TREE_HEIGHT, Fr.zero));
24
+ return new VkData(VerificationKeyData.empty(), 0, makeTuple(VK_TREE_HEIGHT, Fr.zero));
25
25
  }
26
26
 
27
27
  static fromBuffer(buffer: Buffer | BufferReader) {
28
28
  const reader = BufferReader.asReader(buffer);
29
- return new VkWitnessData(
29
+ return new VkData(
30
30
  reader.readObject(VerificationKeyData),
31
31
  reader.readNumber(),
32
32
  reader.readArray(VK_TREE_HEIGHT, Fr),
@@ -34,7 +34,7 @@ export class VkWitnessData {
34
34
  }
35
35
 
36
36
  toBuffer() {
37
- return serializeToBuffer(this.vk, this.vkIndex, this.vkPath);
37
+ return serializeToBuffer(this.vk, this.leafIndex, this.siblingPath);
38
38
  }
39
39
 
40
40
  toString() {
@@ -1 +0,0 @@
1
- {"version":3,"file":"vk_witness_data.d.ts","sourceRoot":"","sources":["../../src/vks/vk_witness_data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,KAAK,KAAK,EAAqB,MAAM,6BAA6B,CAAC;AAG1F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,qBAAa,aAAa;IAEf,EAAE,EAAE,mBAAmB;IAC9B;;OAEG;IACI,OAAO,EAAE,MAAM;IACtB;;OAEG;IACI,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,cAAc,CAAC;gBARxC,EAAE,EAAE,mBAAmB;IAC9B;;OAEG;IACI,OAAO,EAAE,MAAM;IACtB;;OAEG;IACI,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,cAAc,CAAC;IAGjD,MAAM,CAAC,KAAK;IAIZ,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAS/C,QAAQ;IAIR,QAAQ;CAGT"}