@aztec/stdlib 0.87.7 → 1.0.0-nightly.20250604

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 (220) 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 +1188 -25
  5. package/dest/avm/avm.d.ts.map +1 -1
  6. package/dest/avm/avm.js +31 -14
  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 +572 -0
  14. package/dest/avm/avm_proving_request.d.ts.map +1 -1
  15. package/dest/avm/gas.d.ts +7 -0
  16. package/dest/avm/gas.d.ts.map +1 -0
  17. package/dest/avm/gas.js +13 -0
  18. package/dest/avm/index.d.ts +1 -0
  19. package/dest/avm/index.d.ts.map +1 -1
  20. package/dest/avm/index.js +1 -0
  21. package/dest/block/body.d.ts +1 -1
  22. package/dest/block/body.d.ts.map +1 -1
  23. package/dest/block/body.js +2 -2
  24. package/dest/block/index.d.ts +1 -0
  25. package/dest/block/index.d.ts.map +1 -1
  26. package/dest/block/index.js +1 -0
  27. package/dest/block/l2_block.d.ts +3 -2
  28. package/dest/block/l2_block.d.ts.map +1 -1
  29. package/dest/block/l2_block.js +10 -5
  30. package/dest/block/l2_block_source.d.ts +9 -4
  31. package/dest/block/l2_block_source.d.ts.map +1 -1
  32. package/dest/block/l2_block_source.js +1 -0
  33. package/dest/block/proposal/committee_attestation.d.ts +34 -0
  34. package/dest/block/proposal/committee_attestation.d.ts.map +1 -0
  35. package/dest/block/proposal/committee_attestation.js +59 -0
  36. package/dest/block/proposal/index.d.ts +2 -0
  37. package/dest/block/proposal/index.d.ts.map +1 -0
  38. package/dest/block/proposal/index.js +1 -0
  39. package/dest/block/published_l2_block.d.ts +99 -69
  40. package/dest/block/published_l2_block.d.ts.map +1 -1
  41. package/dest/block/published_l2_block.js +38 -12
  42. package/dest/block/test/l2_tips_store_test_suite.js +1 -1
  43. package/dest/interfaces/archiver.js +2 -2
  44. package/dest/interfaces/aztec-node.d.ts +3 -8
  45. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  46. package/dest/interfaces/aztec-node.js +3 -6
  47. package/dest/interfaces/block-builder.d.ts +41 -2
  48. package/dest/interfaces/block-builder.d.ts.map +1 -1
  49. package/dest/interfaces/block-builder.js +1 -1
  50. package/dest/interfaces/epoch-prover.d.ts +2 -2
  51. package/dest/interfaces/epoch-prover.d.ts.map +1 -1
  52. package/dest/interfaces/merkle_tree_operations.d.ts +14 -0
  53. package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
  54. package/dest/interfaces/p2p.d.ts +6 -3
  55. package/dest/interfaces/p2p.d.ts.map +1 -1
  56. package/dest/interfaces/p2p.js +1 -2
  57. package/dest/interfaces/proving-job.d.ts +576 -4
  58. package/dest/interfaces/proving-job.d.ts.map +1 -1
  59. package/dest/interfaces/proving-job.js +2 -2
  60. package/dest/interfaces/server_circuit_prover.d.ts +3 -2
  61. package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
  62. package/dest/kernel/hints/find_private_kernel_reset_dimensions.js +1 -1
  63. package/dest/kernel/hints/key_validation_hint.d.ts +2 -6
  64. package/dest/kernel/hints/key_validation_hint.d.ts.map +1 -1
  65. package/dest/kernel/hints/key_validation_hint.js +5 -7
  66. package/dest/kernel/hints/private_kernel_reset_hints.d.ts +7 -7
  67. package/dest/kernel/hints/private_kernel_reset_hints.d.ts.map +1 -1
  68. package/dest/kernel/hints/private_kernel_reset_hints.js +8 -4
  69. package/dest/kernel/hints/read_request_hints.d.ts +8 -8
  70. package/dest/kernel/hints/read_request_hints.d.ts.map +1 -1
  71. package/dest/kernel/index.d.ts +1 -0
  72. package/dest/kernel/index.d.ts.map +1 -1
  73. package/dest/kernel/index.js +1 -0
  74. package/dest/kernel/padded_side_effects.d.ts +26 -0
  75. package/dest/kernel/padded_side_effects.d.ts.map +1 -0
  76. package/dest/kernel/padded_side_effects.js +51 -0
  77. package/dest/kernel/private_kernel_data.d.ts +6 -25
  78. package/dest/kernel/private_kernel_data.d.ts.map +1 -1
  79. package/dest/kernel/private_kernel_data.js +8 -19
  80. package/dest/kernel/private_kernel_reset_circuit_private_inputs.d.ts +7 -4
  81. package/dest/kernel/private_kernel_reset_circuit_private_inputs.d.ts.map +1 -1
  82. package/dest/kernel/private_kernel_reset_circuit_private_inputs.js +10 -6
  83. package/dest/kernel/private_kernel_reset_dimensions.d.ts +10 -10
  84. package/dest/kernel/private_kernel_reset_dimensions.d.ts.map +1 -1
  85. package/dest/kernel/private_kernel_reset_dimensions.js +29 -29
  86. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts +10 -1
  87. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts.map +1 -1
  88. package/dest/kernel/private_kernel_tail_circuit_private_inputs.js +8 -3
  89. package/dest/kernel/private_to_avm_accumulated_data.d.ts +1 -0
  90. package/dest/kernel/private_to_avm_accumulated_data.d.ts.map +1 -1
  91. package/dest/kernel/private_to_avm_accumulated_data.js +4 -0
  92. package/dest/kernel/public_call_request.d.ts +54 -0
  93. package/dest/kernel/public_call_request.d.ts.map +1 -1
  94. package/dest/kernel/public_call_request.js +58 -0
  95. package/dest/logs/contract_class_log.d.ts +0 -4
  96. package/dest/logs/contract_class_log.d.ts.map +1 -1
  97. package/dest/logs/contract_class_log.js +0 -33
  98. package/dest/logs/log_with_tx_data.d.ts +13 -3
  99. package/dest/logs/log_with_tx_data.d.ts.map +1 -1
  100. package/dest/logs/log_with_tx_data.js +26 -14
  101. package/dest/logs/private_log.d.ts +1 -0
  102. package/dest/logs/private_log.d.ts.map +1 -1
  103. package/dest/logs/private_log.js +3 -0
  104. package/dest/logs/public_log.d.ts +1 -0
  105. package/dest/logs/public_log.d.ts.map +1 -1
  106. package/dest/logs/public_log.js +3 -0
  107. package/dest/logs/tx_scoped_l2_log.d.ts.map +1 -1
  108. package/dest/logs/tx_scoped_l2_log.js +1 -0
  109. package/dest/messaging/index.d.ts +1 -0
  110. package/dest/messaging/index.d.ts.map +1 -1
  111. package/dest/messaging/index.js +1 -0
  112. package/dest/messaging/l2_to_l1_membership.d.ts +11 -0
  113. package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -0
  114. package/dest/messaging/l2_to_l1_membership.js +70 -0
  115. package/dest/p2p/consensus_payload.d.ts.map +1 -1
  116. package/dest/rollup/avm_proof_data.d.ts +7 -5
  117. package/dest/rollup/avm_proof_data.d.ts.map +1 -1
  118. package/dest/rollup/avm_proof_data.js +12 -4
  119. package/dest/rollup/base_rollup_hints.d.ts +4 -4
  120. package/dest/rollup/base_rollup_hints.d.ts.map +1 -1
  121. package/dest/rollup/base_rollup_hints.js +8 -8
  122. package/dest/rollup/previous_rollup_block_data.d.ts +6 -15
  123. package/dest/rollup/previous_rollup_block_data.d.ts.map +1 -1
  124. package/dest/rollup/previous_rollup_block_data.js +8 -13
  125. package/dest/rollup/previous_rollup_data.d.ts +6 -15
  126. package/dest/rollup/previous_rollup_data.d.ts.map +1 -1
  127. package/dest/rollup/previous_rollup_data.js +8 -13
  128. package/dest/rollup/private_tube_data.d.ts +3 -3
  129. package/dest/rollup/private_tube_data.d.ts.map +1 -1
  130. package/dest/rollup/private_tube_data.js +3 -3
  131. package/dest/rollup/public_tube_data.d.ts +3 -3
  132. package/dest/rollup/public_tube_data.d.ts.map +1 -1
  133. package/dest/rollup/public_tube_data.js +3 -3
  134. package/dest/rollup/root_rollup.d.ts +9 -10
  135. package/dest/rollup/root_rollup.d.ts.map +1 -1
  136. package/dest/rollup/root_rollup.js +9 -20
  137. package/dest/tests/factories.d.ts +2 -1
  138. package/dest/tests/factories.d.ts.map +1 -1
  139. package/dest/tests/factories.js +53 -28
  140. package/dest/tests/mocks.d.ts.map +1 -1
  141. package/dest/tests/mocks.js +4 -3
  142. package/dest/tx/processed_tx.d.ts.map +1 -1
  143. package/dest/tx/processed_tx.js +2 -5
  144. package/dest/tx/tx.d.ts +10 -25
  145. package/dest/tx/tx.d.ts.map +1 -1
  146. package/dest/tx/tx.js +25 -50
  147. package/dest/tx/tx_effect.d.ts +1 -1
  148. package/dest/tx/tx_effect.d.ts.map +1 -1
  149. package/dest/tx/tx_effect.js +2 -2
  150. package/dest/tx/tx_hash.d.ts +1 -0
  151. package/dest/tx/tx_hash.d.ts.map +1 -1
  152. package/dest/tx/tx_hash.js +3 -0
  153. package/dest/validators/types.d.ts +4 -0
  154. package/dest/validators/types.d.ts.map +1 -1
  155. package/dest/vks/index.d.ts +1 -1
  156. package/dest/vks/index.d.ts.map +1 -1
  157. package/dest/vks/index.js +1 -1
  158. package/dest/vks/{vk_witness_data.d.ts → vk_data.d.ts} +8 -8
  159. package/dest/vks/vk_data.d.ts.map +1 -0
  160. package/dest/vks/{vk_witness_data.js → vk_data.js} +10 -10
  161. package/package.json +7 -7
  162. package/src/abi/abi.ts +37 -0
  163. package/src/avm/avm.ts +25 -4
  164. package/src/avm/avm_accumulated_data.ts +93 -0
  165. package/src/avm/avm_circuit_public_inputs.ts +22 -2
  166. package/src/avm/gas.ts +26 -0
  167. package/src/avm/index.ts +1 -0
  168. package/src/block/body.ts +7 -2
  169. package/src/block/index.ts +1 -0
  170. package/src/block/l2_block.ts +8 -3
  171. package/src/block/l2_block_source.ts +9 -3
  172. package/src/block/proposal/committee_attestation.ts +70 -0
  173. package/src/block/proposal/index.ts +1 -0
  174. package/src/block/published_l2_block.ts +38 -24
  175. package/src/block/test/l2_tips_store_test_suite.ts +1 -1
  176. package/src/interfaces/archiver.ts +2 -2
  177. package/src/interfaces/aztec-node.ts +8 -16
  178. package/src/interfaces/block-builder.ts +49 -2
  179. package/src/interfaces/epoch-prover.ts +2 -2
  180. package/src/interfaces/merkle_tree_operations.ts +20 -0
  181. package/src/interfaces/p2p.ts +9 -4
  182. package/src/interfaces/proving-job.ts +3 -3
  183. package/src/interfaces/server_circuit_prover.ts +3 -2
  184. package/src/kernel/hints/find_private_kernel_reset_dimensions.ts +3 -3
  185. package/src/kernel/hints/key_validation_hint.ts +4 -6
  186. package/src/kernel/hints/private_kernel_reset_hints.ts +34 -43
  187. package/src/kernel/hints/read_request_hints.ts +27 -15
  188. package/src/kernel/index.ts +1 -0
  189. package/src/kernel/padded_side_effects.ts +73 -0
  190. package/src/kernel/private_kernel_data.ts +7 -29
  191. package/src/kernel/private_kernel_reset_circuit_private_inputs.ts +16 -13
  192. package/src/kernel/private_kernel_reset_dimensions.ts +27 -27
  193. package/src/kernel/private_kernel_tail_circuit_private_inputs.ts +10 -2
  194. package/src/kernel/private_to_avm_accumulated_data.ts +9 -0
  195. package/src/kernel/public_call_request.ts +66 -0
  196. package/src/logs/contract_class_log.ts +0 -36
  197. package/src/logs/log_with_tx_data.ts +26 -12
  198. package/src/logs/private_log.ts +4 -0
  199. package/src/logs/public_log.ts +4 -0
  200. package/src/logs/tx_scoped_l2_log.ts +1 -0
  201. package/src/messaging/index.ts +1 -0
  202. package/src/messaging/l2_to_l1_membership.ts +113 -0
  203. package/src/p2p/consensus_payload.ts +3 -1
  204. package/src/rollup/avm_proof_data.ts +14 -7
  205. package/src/rollup/base_rollup_hints.ts +4 -4
  206. package/src/rollup/previous_rollup_block_data.ts +6 -12
  207. package/src/rollup/previous_rollup_data.ts +6 -12
  208. package/src/rollup/private_tube_data.ts +4 -4
  209. package/src/rollup/public_tube_data.ts +4 -4
  210. package/src/rollup/root_rollup.ts +6 -19
  211. package/src/tests/factories.ts +80 -43
  212. package/src/tests/mocks.ts +6 -3
  213. package/src/tx/processed_tx.ts +4 -5
  214. package/src/tx/tx.ts +28 -54
  215. package/src/tx/tx_effect.ts +23 -5
  216. package/src/tx/tx_hash.ts +4 -0
  217. package/src/validators/types.ts +2 -0
  218. package/src/vks/index.ts +1 -1
  219. package/src/vks/{vk_witness_data.ts → vk_data.ts} +6 -6
  220. package/dest/vks/vk_witness_data.d.ts.map +0 -1
@@ -44,7 +44,7 @@ export interface P2PApiWithoutAttestations {
44
44
  getPeers(includePending?: boolean): Promise<PeerInfo[]>;
45
45
  }
46
46
 
47
- export interface P2PClient extends P2PApiWithoutAttestations {
47
+ export interface P2PApiWithAttestations extends P2PApiWithoutAttestations {
48
48
  /**
49
49
  * Queries the Attestation pool for attestations for the given slot
50
50
  *
@@ -53,13 +53,19 @@ export interface P2PClient extends P2PApiWithoutAttestations {
53
53
  * @returns BlockAttestations
54
54
  */
55
55
  getAttestationsForSlot(slot: bigint, proposalId?: string): Promise<BlockAttestation[]>;
56
+ }
56
57
 
58
+ export interface P2PClient extends P2PApiWithAttestations {
57
59
  /** Manually adds an attestation to the p2p client attestation pool. */
58
- addAttestation(attestation: BlockAttestation): Promise<void>;
60
+ addAttestations(attestations: BlockAttestation[]): Promise<void>;
59
61
  }
60
62
 
61
63
  export type P2PApi<T extends P2PClientType = P2PClientType.Full> = T extends P2PClientType.Full
62
- ? P2PClient & P2PApiWithoutAttestations
64
+ ? P2PApiWithAttestations
65
+ : P2PApiWithoutAttestations;
66
+
67
+ export type P2PApiFull<T extends P2PClientType = P2PClientType.Full> = T extends P2PClientType.Full
68
+ ? P2PApiWithAttestations & P2PClient
63
69
  : P2PApiWithoutAttestations;
64
70
 
65
71
  export const P2PApiSchema: ApiSchemaFor<P2PApi> = {
@@ -71,5 +77,4 @@ export const P2PApiSchema: ApiSchemaFor<P2PApi> = {
71
77
  getPendingTxCount: z.function().returns(schemas.Integer),
72
78
  getEncodedEnr: z.function().returns(z.string().optional()),
73
79
  getPeers: z.function().args(optional(z.boolean())).returns(z.array(PeerInfoSchema)),
74
- addAttestation: z.function().args(BlockAttestation.schema).returns(z.void()),
75
80
  };
@@ -1,5 +1,5 @@
1
1
  import {
2
- AVM_PROOF_LENGTH_IN_FIELDS,
2
+ AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED,
3
3
  NESTED_RECURSIVE_PROOF_LENGTH,
4
4
  NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
5
5
  RECURSIVE_PROOF_LENGTH,
@@ -179,7 +179,7 @@ export type ProvingJobInputsMap = {
179
179
  export const ProvingJobResult = z.discriminatedUnion('type', [
180
180
  z.object({
181
181
  type: z.literal(ProvingRequestType.PUBLIC_VM),
182
- result: schemaForRecursiveProofAndVerificationKey(AVM_PROOF_LENGTH_IN_FIELDS),
182
+ result: schemaForRecursiveProofAndVerificationKey(AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED),
183
183
  }),
184
184
  z.object({
185
185
  type: z.literal(ProvingRequestType.PRIVATE_BASE_ROLLUP),
@@ -249,7 +249,7 @@ export const ProvingJobResult = z.discriminatedUnion('type', [
249
249
  ]);
250
250
  export type ProvingJobResult = z.infer<typeof ProvingJobResult>;
251
251
  export type ProvingJobResultsMap = {
252
- [ProvingRequestType.PUBLIC_VM]: ProofAndVerificationKey<typeof AVM_PROOF_LENGTH_IN_FIELDS>;
252
+ [ProvingRequestType.PUBLIC_VM]: ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>;
253
253
  [ProvingRequestType.PRIVATE_BASE_ROLLUP]: PublicInputsAndRecursiveProof<
254
254
  BaseOrMergeRollupPublicInputs,
255
255
  typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH
@@ -1,5 +1,5 @@
1
1
  import type {
2
- AVM_PROOF_LENGTH_IN_FIELDS,
2
+ AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED,
3
3
  NESTED_RECURSIVE_PROOF_LENGTH,
4
4
  NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
5
5
  RECURSIVE_PROOF_LENGTH,
@@ -149,9 +149,10 @@ export interface ServerCircuitProver {
149
149
  */
150
150
  getAvmProof(
151
151
  inputs: AvmCircuitInputs,
152
+ skipPublicInputsValidation?: boolean, // TODO(#14234)[Unconditional PIs validation]: Remove.
152
153
  signal?: AbortSignal,
153
154
  epochNumber?: number,
154
- ): Promise<ProofAndVerificationKey<typeof AVM_PROOF_LENGTH_IN_FIELDS>>;
155
+ ): Promise<ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>>;
155
156
  }
156
157
 
157
158
  /**
@@ -148,9 +148,9 @@ export function findPrivateKernelResetDimensions(
148
148
  ? isEnough
149
149
  : // If isInner is true, it's a reset to prevent overflow. The following must be zero because siloing can't be done at the moment.
150
150
  (dimensions: PrivateKernelResetDimensions) =>
151
- dimensions.NOTE_HASH_SILOING_AMOUNT === 0 &&
152
- dimensions.NULLIFIER_SILOING_AMOUNT === 0 &&
153
- dimensions.PRIVATE_LOG_SILOING_AMOUNT === 0 &&
151
+ dimensions.NOTE_HASH_SILOING === 0 &&
152
+ dimensions.NULLIFIER_SILOING === 0 &&
153
+ dimensions.PRIVATE_LOG_SILOING === 0 &&
154
154
  isEnough(dimensions);
155
155
 
156
156
  const options = [
@@ -5,20 +5,18 @@ export class KeyValidationHint {
5
5
  constructor(
6
6
  /** Master secret key used to derive sk_app and pk_m. */
7
7
  public skM: GrumpkinScalar,
8
- /** Index of the request in the array of hints. */
9
- public requestIndex: number,
10
8
  ) {}
11
9
 
12
10
  static fromBuffer(buffer: Buffer | BufferReader) {
13
11
  const reader = BufferReader.asReader(buffer);
14
- return new KeyValidationHint(reader.readObject(GrumpkinScalar), reader.readNumber());
12
+ return new KeyValidationHint(reader.readObject(GrumpkinScalar));
15
13
  }
16
14
 
17
15
  toBuffer() {
18
- return serializeToBuffer(this.skM, this.requestIndex);
16
+ return serializeToBuffer(this.skM);
19
17
  }
20
18
 
21
- static nada(keyValidationRequestLen: number) {
22
- return new KeyValidationHint(GrumpkinScalar.zero(), keyValidationRequestLen);
19
+ static empty() {
20
+ return new KeyValidationHint(GrumpkinScalar.zero());
23
21
  }
24
22
  }
@@ -10,8 +10,8 @@ export class PrivateKernelResetHints<
10
10
  NH_RR_SETTLED extends number,
11
11
  NLL_RR_PENDING extends number,
12
12
  NLL_RR_SETTLED extends number,
13
- KEY_VALIDATION_REQUESTS extends number,
14
- NUM_TRANSIENT_DATA_INDEX_HINTS extends number,
13
+ KEY_VALIDATION_HINTS_LEN extends number,
14
+ TRANSIENT_DATA_HINTS_LEN extends number,
15
15
  > {
16
16
  constructor(
17
17
  /**
@@ -25,11 +25,11 @@ export class PrivateKernelResetHints<
25
25
  /**
26
26
  * Contains hints for key validation request.
27
27
  */
28
- public keyValidationHints: Tuple<KeyValidationHint, KEY_VALIDATION_REQUESTS>,
28
+ public keyValidationHints: Tuple<KeyValidationHint, KEY_VALIDATION_HINTS_LEN>,
29
29
  /**
30
30
  * Contains hints for the transient note hashes to locate corresponding nullifiers.
31
31
  */
32
- public transientDataIndexHints: Tuple<TransientDataIndexHint, NUM_TRANSIENT_DATA_INDEX_HINTS>,
32
+ public transientDataIndexHints: Tuple<TransientDataIndexHint, TRANSIENT_DATA_HINTS_LEN>,
33
33
  /**
34
34
  * The "final" minRevertibleSideEffectCounter of a tx, to split the data for squashing.
35
35
  * Not the minRevertibleSideEffectCounter at the point the reset circuit is run.
@@ -47,39 +47,30 @@ export class PrivateKernelResetHints<
47
47
  );
48
48
  }
49
49
 
50
- trimToSizes<
51
- NEW_NH_RR_PENDING extends number,
52
- NEW_NH_RR_SETTLED extends number,
53
- NEW_NLL_RR_PENDING extends number,
54
- NEW_NLL_RR_SETTLED extends number,
55
- NEW_KEY_VALIDATION_REQUESTS extends number,
56
- NUM_TRANSIENT_DATA_INDEX_HINTS extends number,
57
- >(
58
- numNoteHashReadRequestPending: NEW_NH_RR_PENDING,
59
- numNoteHashReadRequestSettled: NEW_NH_RR_SETTLED,
60
- numNullifierReadRequestPending: NEW_NLL_RR_PENDING,
61
- numNullifierReadRequestSettled: NEW_NLL_RR_SETTLED,
62
- numKeyValidationRequests: NEW_KEY_VALIDATION_REQUESTS,
63
- numTransientDataIndexHints: NUM_TRANSIENT_DATA_INDEX_HINTS,
64
- ): PrivateKernelResetHints<
65
- NEW_NH_RR_PENDING,
66
- NEW_NH_RR_SETTLED,
67
- NEW_NLL_RR_PENDING,
68
- NEW_NLL_RR_SETTLED,
69
- NEW_KEY_VALIDATION_REQUESTS,
70
- NUM_TRANSIENT_DATA_INDEX_HINTS
71
- > {
50
+ trimToSizes(
51
+ numNoteHashReadRequestPending: number,
52
+ numNoteHashReadRequestSettled: number,
53
+ numNullifierReadRequestPending: number,
54
+ numNullifierReadRequestSettled: number,
55
+ numKeyValidationHints: number,
56
+ numTransientDataIndexHints: number,
57
+ ) {
58
+ // Noir does not allow empty arrays. So we make the minimum array size 1.
59
+ // There is a constant for each dimension, coded in the circuit that indicates how many hints should be applied.
60
+ // The circuit is selected based on the dimension sizes, not the hint array sizes created here.
61
+ const useSize = (num: number) => Math.max(num, 1);
62
+
72
63
  return new PrivateKernelResetHints(
73
- this.noteHashReadRequestHints.trimToSizes(numNoteHashReadRequestPending, numNoteHashReadRequestSettled),
74
- this.nullifierReadRequestHints.trimToSizes(numNullifierReadRequestPending, numNullifierReadRequestSettled),
75
- this.keyValidationHints.slice(0, numKeyValidationRequests) as Tuple<
76
- KeyValidationHint,
77
- NEW_KEY_VALIDATION_REQUESTS
78
- >,
79
- this.transientDataIndexHints.slice(0, numTransientDataIndexHints) as Tuple<
80
- TransientDataIndexHint,
81
- NUM_TRANSIENT_DATA_INDEX_HINTS
82
- >,
64
+ this.noteHashReadRequestHints.trimToSizes(
65
+ useSize(numNoteHashReadRequestPending),
66
+ useSize(numNoteHashReadRequestSettled),
67
+ ),
68
+ this.nullifierReadRequestHints.trimToSizes(
69
+ useSize(numNullifierReadRequestPending),
70
+ useSize(numNullifierReadRequestSettled),
71
+ ),
72
+ this.keyValidationHints.slice(0, useSize(numKeyValidationHints)),
73
+ this.transientDataIndexHints.slice(0, useSize(numTransientDataIndexHints)),
83
74
  this.validationRequestsSplitCounter,
84
75
  );
85
76
  }
@@ -93,23 +84,23 @@ export class PrivateKernelResetHints<
93
84
  NH_RR_SETTLED extends number,
94
85
  NLL_RR_PENDING extends number,
95
86
  NLL_RR_SETTLED extends number,
96
- KEY_VALIDATION_REQUESTS extends number,
97
- NUM_TRANSIENT_DATA_INDEX_HINTS extends number,
87
+ KEY_VALIDATION_HINTS_LEN extends number,
88
+ TRANSIENT_DATA_HINTS_LEN extends number,
98
89
  >(
99
90
  buffer: Buffer | BufferReader,
100
91
  numNoteHashReadRequestPending: NH_RR_PENDING,
101
92
  numNoteHashReadRequestSettled: NH_RR_SETTLED,
102
93
  numNullifierReadRequestPending: NLL_RR_PENDING,
103
94
  numNullifierReadRequestSettled: NLL_RR_SETTLED,
104
- numNullifierKeys: KEY_VALIDATION_REQUESTS,
105
- numTransientDataIndexHints: NUM_TRANSIENT_DATA_INDEX_HINTS,
95
+ numKeyValidationHints: KEY_VALIDATION_HINTS_LEN,
96
+ numTransientDataIndexHints: TRANSIENT_DATA_HINTS_LEN,
106
97
  ): PrivateKernelResetHints<
107
98
  NH_RR_PENDING,
108
99
  NH_RR_SETTLED,
109
100
  NLL_RR_PENDING,
110
101
  NLL_RR_SETTLED,
111
- KEY_VALIDATION_REQUESTS,
112
- NUM_TRANSIENT_DATA_INDEX_HINTS
102
+ KEY_VALIDATION_HINTS_LEN,
103
+ TRANSIENT_DATA_HINTS_LEN
113
104
  > {
114
105
  const reader = BufferReader.asReader(buffer);
115
106
  return new PrivateKernelResetHints(
@@ -121,7 +112,7 @@ export class PrivateKernelResetHints<
121
112
  fromBuffer: buf =>
122
113
  nullifierReadRequestHintsFromBuffer(buf, numNullifierReadRequestPending, numNullifierReadRequestSettled),
123
114
  }),
124
- reader.readArray(numNullifierKeys, KeyValidationHint),
115
+ reader.readArray(numKeyValidationHints, KeyValidationHint),
125
116
  reader.readArray(numTransientDataIndexHints, TransientDataIndexHint),
126
117
  reader.readNumber(),
127
118
  );
@@ -94,8 +94,8 @@ export class SettledReadHint<TREE_HEIGHT extends number, LEAF_PREIMAGE extends B
94
94
  */
95
95
  export class ReadRequestResetHints<
96
96
  READ_REQUEST_LEN extends number,
97
- NUM_PENDING_READS extends number,
98
- NUM_SETTLED_READS extends number,
97
+ PENDING_READ_HINTS_LEN extends number,
98
+ SETTLED_READ_HINTS_LEN extends number,
99
99
  TREE_HEIGHT extends number,
100
100
  LEAF_PREIMAGE extends Bufferable,
101
101
  > {
@@ -104,23 +104,29 @@ export class ReadRequestResetHints<
104
104
  /**
105
105
  * The hints for read requests reading pending values.
106
106
  */
107
- public pendingReadHints: Tuple<PendingReadHint, NUM_PENDING_READS>,
107
+ public pendingReadHints: Tuple<PendingReadHint, PENDING_READ_HINTS_LEN>,
108
108
  /**
109
109
  * The hints for read requests reading settled values.
110
110
  */
111
- public settledReadHints: Tuple<SettledReadHint<TREE_HEIGHT, LEAF_PREIMAGE>, NUM_SETTLED_READS>,
111
+ public settledReadHints: Tuple<SettledReadHint<TREE_HEIGHT, LEAF_PREIMAGE>, SETTLED_READ_HINTS_LEN>,
112
112
  ) {}
113
113
 
114
- trimToSizes<NEW_NUM_PENDING_READS extends number, NEW_NUM_SETTLED_READS extends number>(
115
- numPendingReads: NEW_NUM_PENDING_READS,
116
- numSettledReads: NEW_NUM_SETTLED_READS,
117
- ): ReadRequestResetHints<READ_REQUEST_LEN, NEW_NUM_PENDING_READS, NEW_NUM_SETTLED_READS, TREE_HEIGHT, LEAF_PREIMAGE> {
114
+ trimToSizes<NEW_PENDING_READ_HINTS_LEN extends number, NEW_SETTLED_READ_HINTS_LEN extends number>(
115
+ numPendingReads: NEW_PENDING_READ_HINTS_LEN,
116
+ numSettledReads: NEW_SETTLED_READ_HINTS_LEN,
117
+ ): ReadRequestResetHints<
118
+ READ_REQUEST_LEN,
119
+ NEW_PENDING_READ_HINTS_LEN,
120
+ NEW_SETTLED_READ_HINTS_LEN,
121
+ TREE_HEIGHT,
122
+ LEAF_PREIMAGE
123
+ > {
118
124
  return new ReadRequestResetHints(
119
125
  this.readRequestStatuses,
120
- this.pendingReadHints.slice(0, numPendingReads) as Tuple<PendingReadHint, NEW_NUM_PENDING_READS>,
126
+ this.pendingReadHints.slice(0, numPendingReads) as Tuple<PendingReadHint, NEW_PENDING_READ_HINTS_LEN>,
121
127
  this.settledReadHints.slice(0, numSettledReads) as Tuple<
122
128
  SettledReadHint<TREE_HEIGHT, LEAF_PREIMAGE>,
123
- NEW_NUM_SETTLED_READS
129
+ NEW_SETTLED_READ_HINTS_LEN
124
130
  >,
125
131
  );
126
132
  }
@@ -132,18 +138,24 @@ export class ReadRequestResetHints<
132
138
  */
133
139
  static fromBuffer<
134
140
  READ_REQUEST_LEN extends number,
135
- NUM_PENDING_READS extends number,
136
- NUM_SETTLED_READS extends number,
141
+ PENDING_READ_HINTS_LEN extends number,
142
+ SETTLED_READ_HINTS_LEN extends number,
137
143
  TREE_HEIGHT extends number,
138
144
  LEAF_PREIMAGE extends Bufferable,
139
145
  >(
140
146
  buffer: Buffer | BufferReader,
141
147
  readRequestLen: READ_REQUEST_LEN,
142
- numPendingReads: NUM_PENDING_READS,
143
- numSettledReads: NUM_SETTLED_READS,
148
+ numPendingReads: PENDING_READ_HINTS_LEN,
149
+ numSettledReads: SETTLED_READ_HINTS_LEN,
144
150
  treeHeight: TREE_HEIGHT,
145
151
  leafPreimageFromBuffer: { fromBuffer: (buffer: BufferReader) => LEAF_PREIMAGE },
146
- ): ReadRequestResetHints<READ_REQUEST_LEN, NUM_PENDING_READS, NUM_SETTLED_READS, TREE_HEIGHT, LEAF_PREIMAGE> {
152
+ ): ReadRequestResetHints<
153
+ READ_REQUEST_LEN,
154
+ PENDING_READ_HINTS_LEN,
155
+ SETTLED_READ_HINTS_LEN,
156
+ TREE_HEIGHT,
157
+ LEAF_PREIMAGE
158
+ > {
147
159
  const reader = BufferReader.asReader(buffer);
148
160
  return new ReadRequestResetHints(
149
161
  reader.readArray(readRequestLen, ReadRequestStatus),
@@ -28,3 +28,4 @@ export * from './private_call_request.js';
28
28
  export * from './private_validation_requests.js';
29
29
  export * from './private_kernel_simulated_output.js';
30
30
  export * from './private_kernel_prover_output.js';
31
+ export * from './padded_side_effects.js';
@@ -0,0 +1,73 @@
1
+ import { MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_PRIVATE_LOGS_PER_TX } from '@aztec/constants';
2
+ import { makeTuple } from '@aztec/foundation/array';
3
+ import { Fr } from '@aztec/foundation/fields';
4
+ import { BufferReader, type Tuple, serializeToBuffer } from '@aztec/foundation/serialize';
5
+
6
+ import { PrivateLog } from '../logs/index.js';
7
+
8
+ export class PaddedSideEffects {
9
+ constructor(
10
+ public noteHashes: Tuple<Fr, typeof MAX_NOTE_HASHES_PER_TX>,
11
+ public nullifiers: Tuple<Fr, typeof MAX_NULLIFIERS_PER_TX>,
12
+ public privateLogs: Tuple<PrivateLog, typeof MAX_PRIVATE_LOGS_PER_TX>,
13
+ ) {}
14
+
15
+ toBuffer() {
16
+ return serializeToBuffer(this.noteHashes, this.nullifiers, this.privateLogs);
17
+ }
18
+
19
+ static fromBuffer(buffer: Buffer | BufferReader) {
20
+ const reader = BufferReader.asReader(buffer);
21
+ return new PaddedSideEffects(
22
+ reader.readArray(MAX_NOTE_HASHES_PER_TX, Fr),
23
+ reader.readArray(MAX_NULLIFIERS_PER_TX, Fr),
24
+ reader.readArray(MAX_PRIVATE_LOGS_PER_TX, PrivateLog),
25
+ );
26
+ }
27
+
28
+ static empty() {
29
+ return new PaddedSideEffects(
30
+ makeTuple(MAX_NOTE_HASHES_PER_TX, Fr.zero),
31
+ makeTuple(MAX_NULLIFIERS_PER_TX, Fr.zero),
32
+ makeTuple(MAX_PRIVATE_LOGS_PER_TX, PrivateLog.empty),
33
+ );
34
+ }
35
+ }
36
+
37
+ export class PaddedSideEffectAmounts {
38
+ constructor(
39
+ public nonRevertibleNoteHashes: number,
40
+ public revertibleNoteHashes: number,
41
+ public nonRevertibleNullifiers: number,
42
+ public revertibleNullifiers: number,
43
+ public nonRevertiblePrivateLogs: number,
44
+ public revertiblePrivateLogs: number,
45
+ ) {}
46
+
47
+ toBuffer() {
48
+ return serializeToBuffer(
49
+ this.nonRevertibleNoteHashes,
50
+ this.revertibleNoteHashes,
51
+ this.nonRevertibleNullifiers,
52
+ this.revertibleNullifiers,
53
+ this.nonRevertiblePrivateLogs,
54
+ this.revertiblePrivateLogs,
55
+ );
56
+ }
57
+
58
+ static fromBuffer(buffer: Buffer | BufferReader) {
59
+ const reader = BufferReader.asReader(buffer);
60
+ return new PaddedSideEffectAmounts(
61
+ reader.readNumber(),
62
+ reader.readNumber(),
63
+ reader.readNumber(),
64
+ reader.readNumber(),
65
+ reader.readNumber(),
66
+ reader.readNumber(),
67
+ );
68
+ }
69
+
70
+ static empty() {
71
+ return new PaddedSideEffectAmounts(0, 0, 0, 0, 0, 0);
72
+ }
73
+ }
@@ -1,10 +1,6 @@
1
- import { VK_TREE_HEIGHT } from '@aztec/constants';
2
- import { makeTuple } from '@aztec/foundation/array';
3
- import { Fr } from '@aztec/foundation/fields';
4
- import { BufferReader, type Tuple, serializeToBuffer } from '@aztec/foundation/serialize';
1
+ import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
5
2
 
6
- import type { UInt32 } from '../types/shared.js';
7
- import { VerificationKeyData } from '../vks/verification_key.js';
3
+ import { VkData } from '../vks/index.js';
8
4
  import { PrivateKernelCircuitPublicInputs } from './private_kernel_circuit_public_inputs.js';
9
5
 
10
6
  /**
@@ -19,17 +15,9 @@ export class PrivateKernelData {
19
15
  */
20
16
  public publicInputs: PrivateKernelCircuitPublicInputs,
21
17
  /**
22
- * Verification key of the previous kernel.
18
+ * The verification key and the witness of the vk in the vk tree.
23
19
  */
24
- public verificationKey: VerificationKeyData,
25
- /**
26
- * Index of the previous kernel's vk in a tree of vks.
27
- */
28
- public vkIndex: UInt32,
29
- /**
30
- * Sibling path of the previous kernel's vk in a tree of vks.
31
- */
32
- public vkPath: Tuple<Fr, typeof VK_TREE_HEIGHT>,
20
+ public vkData: VkData,
33
21
  ) {}
34
22
 
35
23
  /**
@@ -37,25 +25,15 @@ export class PrivateKernelData {
37
25
  * @returns The buffer.
38
26
  */
39
27
  toBuffer() {
40
- return serializeToBuffer(this.publicInputs, this.verificationKey, this.vkIndex, this.vkPath);
28
+ return serializeToBuffer(this.publicInputs, this.vkData);
41
29
  }
42
30
 
43
31
  static fromBuffer(buffer: Buffer | BufferReader): PrivateKernelData {
44
32
  const reader = BufferReader.asReader(buffer);
45
- return new this(
46
- reader.readObject(PrivateKernelCircuitPublicInputs),
47
- reader.readObject(VerificationKeyData),
48
- reader.readNumber(),
49
- reader.readArray(VK_TREE_HEIGHT, Fr),
50
- );
33
+ return new this(reader.readObject(PrivateKernelCircuitPublicInputs), reader.readObject(VkData));
51
34
  }
52
35
 
53
36
  static empty(): PrivateKernelData {
54
- return new PrivateKernelData(
55
- PrivateKernelCircuitPublicInputs.empty(),
56
- VerificationKeyData.empty(),
57
- 0,
58
- makeTuple(VK_TREE_HEIGHT, Fr.zero),
59
- );
37
+ return new PrivateKernelData(PrivateKernelCircuitPublicInputs.empty(), VkData.empty());
60
38
  }
61
39
  }
@@ -7,6 +7,7 @@ import type {
7
7
  import { serializeToBuffer } from '@aztec/foundation/serialize';
8
8
 
9
9
  import type { PrivateKernelResetHints } from './hints/private_kernel_reset_hints.js';
10
+ import type { PaddedSideEffects } from './padded_side_effects.js';
10
11
  import type { PrivateKernelData } from './private_kernel_data.js';
11
12
  import type { PrivateKernelResetDimensions } from './private_kernel_reset_dimensions.js';
12
13
 
@@ -15,23 +16,24 @@ export class PrivateKernelResetCircuitPrivateInputsVariants<
15
16
  NH_RR_SETTLED extends number,
16
17
  NLL_RR_PENDING extends number,
17
18
  NLL_RR_SETTLED extends number,
18
- KEY_VALIDATION_REQUESTS extends number,
19
- NUM_TRANSIENT_DATA_INDEX_HINTS extends number,
19
+ KEY_VALIDATION_HINTS_LEN extends number,
20
+ TRANSIENT_DATA_HINTS_LEN extends number,
20
21
  > {
21
22
  constructor(
22
23
  public previousKernel: PrivateKernelData,
24
+ public paddedSideEffects: PaddedSideEffects,
23
25
  public hints: PrivateKernelResetHints<
24
26
  NH_RR_PENDING,
25
27
  NH_RR_SETTLED,
26
28
  NLL_RR_PENDING,
27
29
  NLL_RR_SETTLED,
28
- KEY_VALIDATION_REQUESTS,
29
- NUM_TRANSIENT_DATA_INDEX_HINTS
30
+ KEY_VALIDATION_HINTS_LEN,
31
+ TRANSIENT_DATA_HINTS_LEN
30
32
  >,
31
33
  ) {}
32
34
 
33
35
  toBuffer() {
34
- return serializeToBuffer(this.previousKernel, this.hints);
36
+ return serializeToBuffer(this.previousKernel, this.paddedSideEffects, this.hints);
35
37
  }
36
38
  }
37
39
 
@@ -44,6 +46,7 @@ export class PrivateKernelResetCircuitPrivateInputs {
44
46
  * The previous kernel data
45
47
  */
46
48
  public previousKernel: PrivateKernelData,
49
+ public paddedSideEffects: PaddedSideEffects,
47
50
  public hints: PrivateKernelResetHints<
48
51
  typeof MAX_NOTE_HASH_READ_REQUESTS_PER_TX,
49
52
  typeof MAX_NOTE_HASH_READ_REQUESTS_PER_TX,
@@ -60,18 +63,18 @@ export class PrivateKernelResetCircuitPrivateInputs {
60
63
  * @returns The buffer.
61
64
  */
62
65
  toBuffer() {
63
- return serializeToBuffer(this.previousKernel, this.hints, this.dimensions);
66
+ return serializeToBuffer(this.previousKernel, this.paddedSideEffects, this.hints, this.dimensions);
64
67
  }
65
68
 
66
69
  trimToSizes() {
67
70
  const hints = this.hints.trimToSizes(
68
- this.dimensions.NOTE_HASH_PENDING_AMOUNT,
69
- this.dimensions.NOTE_HASH_SETTLED_AMOUNT,
70
- this.dimensions.NULLIFIER_PENDING_AMOUNT,
71
- this.dimensions.NULLIFIER_SETTLED_AMOUNT,
72
- this.dimensions.NULLIFIER_KEYS,
73
- this.dimensions.TRANSIENT_DATA_AMOUNT,
71
+ this.dimensions.NOTE_HASH_PENDING_READ,
72
+ this.dimensions.NOTE_HASH_SETTLED_READ,
73
+ this.dimensions.NULLIFIER_PENDING_READ,
74
+ this.dimensions.NULLIFIER_SETTLED_READ,
75
+ this.dimensions.KEY_VALIDATION,
76
+ this.dimensions.TRANSIENT_DATA_SQUASHING,
74
77
  );
75
- return new PrivateKernelResetCircuitPrivateInputsVariants(this.previousKernel, hints);
78
+ return new PrivateKernelResetCircuitPrivateInputsVariants(this.previousKernel, this.paddedSideEffects, hints);
76
79
  }
77
80
  }
@@ -3,28 +3,28 @@ import type { FieldsOf } from '@aztec/foundation/types';
3
3
 
4
4
  export class PrivateKernelResetDimensions {
5
5
  constructor(
6
- public NOTE_HASH_PENDING_AMOUNT: number,
7
- public NOTE_HASH_SETTLED_AMOUNT: number,
8
- public NULLIFIER_PENDING_AMOUNT: number,
9
- public NULLIFIER_SETTLED_AMOUNT: number,
10
- public NULLIFIER_KEYS: number,
11
- public TRANSIENT_DATA_AMOUNT: number,
12
- public NOTE_HASH_SILOING_AMOUNT: number,
13
- public NULLIFIER_SILOING_AMOUNT: number,
14
- public PRIVATE_LOG_SILOING_AMOUNT: number,
6
+ public NOTE_HASH_PENDING_READ: number,
7
+ public NOTE_HASH_SETTLED_READ: number,
8
+ public NULLIFIER_PENDING_READ: number,
9
+ public NULLIFIER_SETTLED_READ: number,
10
+ public KEY_VALIDATION: number,
11
+ public TRANSIENT_DATA_SQUASHING: number,
12
+ public NOTE_HASH_SILOING: number,
13
+ public NULLIFIER_SILOING: number,
14
+ public PRIVATE_LOG_SILOING: number,
15
15
  ) {}
16
16
 
17
17
  toBuffer() {
18
18
  return serializeToBuffer(
19
- this.NOTE_HASH_PENDING_AMOUNT,
20
- this.NOTE_HASH_SETTLED_AMOUNT,
21
- this.NULLIFIER_PENDING_AMOUNT,
22
- this.NULLIFIER_SETTLED_AMOUNT,
23
- this.NULLIFIER_KEYS,
24
- this.TRANSIENT_DATA_AMOUNT,
25
- this.NOTE_HASH_SILOING_AMOUNT,
26
- this.NULLIFIER_SILOING_AMOUNT,
27
- this.PRIVATE_LOG_SILOING_AMOUNT,
19
+ this.NOTE_HASH_PENDING_READ,
20
+ this.NOTE_HASH_SETTLED_READ,
21
+ this.NULLIFIER_PENDING_READ,
22
+ this.NULLIFIER_SETTLED_READ,
23
+ this.KEY_VALIDATION,
24
+ this.TRANSIENT_DATA_SQUASHING,
25
+ this.NOTE_HASH_SILOING,
26
+ this.NULLIFIER_SILOING,
27
+ this.PRIVATE_LOG_SILOING,
28
28
  );
29
29
  }
30
30
 
@@ -57,15 +57,15 @@ export class PrivateKernelResetDimensions {
57
57
  export type DimensionName = keyof FieldsOf<PrivateKernelResetDimensions>;
58
58
 
59
59
  export const privateKernelResetDimensionNames: DimensionName[] = [
60
- 'NOTE_HASH_PENDING_AMOUNT',
61
- 'NOTE_HASH_SETTLED_AMOUNT',
62
- 'NULLIFIER_PENDING_AMOUNT',
63
- 'NULLIFIER_SETTLED_AMOUNT',
64
- 'NULLIFIER_KEYS',
65
- 'TRANSIENT_DATA_AMOUNT',
66
- 'NOTE_HASH_SILOING_AMOUNT',
67
- 'NULLIFIER_SILOING_AMOUNT',
68
- 'PRIVATE_LOG_SILOING_AMOUNT',
60
+ 'NOTE_HASH_PENDING_READ',
61
+ 'NOTE_HASH_SETTLED_READ',
62
+ 'NULLIFIER_PENDING_READ',
63
+ 'NULLIFIER_SETTLED_READ',
64
+ 'KEY_VALIDATION',
65
+ 'TRANSIENT_DATA_SQUASHING',
66
+ 'NOTE_HASH_SILOING',
67
+ 'NULLIFIER_SILOING',
68
+ 'PRIVATE_LOG_SILOING',
69
69
  ];
70
70
 
71
71
  export interface DimensionConfig {
@@ -1,5 +1,6 @@
1
1
  import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
2
2
 
3
+ import { PaddedSideEffectAmounts } from './padded_side_effects.js';
3
4
  import { PrivateKernelData } from './private_kernel_data.js';
4
5
  import { countAccumulatedItems } from './utils/order_and_comparison.js';
5
6
 
@@ -12,6 +13,10 @@ export class PrivateKernelTailCircuitPrivateInputs {
12
13
  * The previous kernel data
13
14
  */
14
15
  public previousKernel: PrivateKernelData,
16
+ /**
17
+ * The number of the padded side effects.
18
+ */
19
+ public paddedSideEffectAmounts: PaddedSideEffectAmounts,
15
20
  ) {}
16
21
 
17
22
  isForPublic() {
@@ -26,7 +31,7 @@ export class PrivateKernelTailCircuitPrivateInputs {
26
31
  * @returns The buffer.
27
32
  */
28
33
  toBuffer() {
29
- return serializeToBuffer(this.previousKernel);
34
+ return serializeToBuffer(this.previousKernel, this.paddedSideEffectAmounts);
30
35
  }
31
36
 
32
37
  /**
@@ -36,6 +41,9 @@ export class PrivateKernelTailCircuitPrivateInputs {
36
41
  */
37
42
  static fromBuffer(buffer: Buffer | BufferReader): PrivateKernelTailCircuitPrivateInputs {
38
43
  const reader = BufferReader.asReader(buffer);
39
- return new PrivateKernelTailCircuitPrivateInputs(reader.readObject(PrivateKernelData));
44
+ return new PrivateKernelTailCircuitPrivateInputs(
45
+ reader.readObject(PrivateKernelData),
46
+ reader.readObject(PaddedSideEffectAmounts),
47
+ );
40
48
  }
41
49
  }