@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,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
  }
@@ -34,6 +34,7 @@ export interface PrivateExecutionStep {
34
34
  timings: {
35
35
  witgen: number;
36
36
  gateCount?: number;
37
+ oracles?: Record<string, { times: number[] }>;
37
38
  };
38
39
  }
39
40
 
@@ -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
  }
@@ -123,6 +123,72 @@ export class PublicCallRequest {
123
123
  }
124
124
  }
125
125
 
126
+ /**
127
+ * Represents lengths of arrays of public call requests.
128
+ */
129
+ export class PublicCallRequestArrayLengths {
130
+ constructor(
131
+ /**
132
+ * Number of setup call requests
133
+ */
134
+ public setupCalls: number,
135
+ /**
136
+ * Number of app logic call requests
137
+ */
138
+ public appLogicCalls: number,
139
+ /**
140
+ * Whether there is a teardown call request
141
+ */
142
+ public teardownCall: boolean,
143
+ ) {}
144
+
145
+ static get schema() {
146
+ return z
147
+ .object({
148
+ setupCalls: z.number(),
149
+ appLogicCalls: z.number(),
150
+ teardownCall: z.boolean(),
151
+ })
152
+ .transform(({ setupCalls, appLogicCalls, teardownCall }) => {
153
+ return new PublicCallRequestArrayLengths(setupCalls, appLogicCalls, teardownCall);
154
+ });
155
+ }
156
+
157
+ static getFields(fields: FieldsOf<PublicCallRequestArrayLengths>) {
158
+ return [fields.setupCalls, fields.appLogicCalls, fields.teardownCall] as const;
159
+ }
160
+
161
+ static fromFields(fields: Fr[] | FieldReader): PublicCallRequestArrayLengths {
162
+ const reader = FieldReader.asReader(fields);
163
+ return new PublicCallRequestArrayLengths(reader.readU32(), reader.readU32(), reader.readBoolean());
164
+ }
165
+
166
+ toFields(): Fr[] {
167
+ return serializeToFields(...PublicCallRequestArrayLengths.getFields(this));
168
+ }
169
+
170
+ static fromBuffer(buffer: Buffer | BufferReader) {
171
+ const reader = BufferReader.asReader(buffer);
172
+ return new PublicCallRequestArrayLengths(reader.readNumber(), reader.readNumber(), reader.readBoolean());
173
+ }
174
+
175
+ toBuffer() {
176
+ return serializeToBuffer(...PublicCallRequestArrayLengths.getFields(this));
177
+ }
178
+
179
+ static empty() {
180
+ return new PublicCallRequestArrayLengths(0, 0, false);
181
+ }
182
+
183
+ [inspect.custom]() {
184
+ return `PublicCallRequestArrayLengths {
185
+ setupCalls: ${this.setupCalls}
186
+ appLogicCalls: ${this.appLogicCalls}
187
+ teardownCall: ${this.teardownCall}
188
+ }`;
189
+ }
190
+ }
191
+
126
192
  export class CountedPublicCallRequest {
127
193
  constructor(
128
194
  public inner: PublicCallRequest,
@@ -96,8 +96,6 @@ export class ContractClassLogFields {
96
96
 
97
97
  export class ContractClassLog {
98
98
  static SIZE_IN_BYTES = Fr.SIZE_IN_BYTES * CONTRACT_CLASS_LOG_LENGTH;
99
- // Keeps original first field pre-siloing. Only set by silo().
100
- public unsiloedFirstField?: Fr | undefined;
101
99
 
102
100
  constructor(
103
101
  public contractAddress: AztecAddress,
@@ -180,40 +178,6 @@ export class ContractClassLog {
180
178
  );
181
179
  }
182
180
 
183
- setUnsiloedFirstField(field: Fr) {
184
- this.unsiloedFirstField = field;
185
- }
186
-
187
- toUnsiloed() {
188
- if (this.contractAddress.isZero()) {
189
- return this;
190
- }
191
- if (this.unsiloedFirstField) {
192
- return new ContractClassLog(
193
- this.contractAddress,
194
- new ContractClassLogFields([this.unsiloedFirstField].concat(this.fields.fields.slice(1))),
195
- this.emittedLength,
196
- );
197
- } else {
198
- return this;
199
- }
200
- }
201
-
202
- // TODO(#13914): Don't need to silo the contract class logs.
203
- async silo() {
204
- if (this.contractAddress.isZero()) {
205
- return this;
206
- }
207
-
208
- const fields = this.fields.clone();
209
- const unsiloedField = fields.fields[0];
210
- const siloedField = await poseidon2Hash([this.contractAddress, unsiloedField]);
211
- fields.fields[0] = siloedField;
212
- const cloned = new ContractClassLog(this.contractAddress, fields, this.emittedLength);
213
- cloned.setUnsiloedFirstField(unsiloedField);
214
- return cloned;
215
- }
216
-
217
181
  async hash() {
218
182
  return await this.fields.hash();
219
183
  }