@aztec/stdlib 3.0.0-nightly.20250917 → 3.0.0-nightly.20250919

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 (234) hide show
  1. package/dest/avm/avm.d.ts +6 -0
  2. package/dest/avm/avm.d.ts.map +1 -1
  3. package/dest/avm/avm_circuit_public_inputs.d.ts +6 -1
  4. package/dest/avm/avm_circuit_public_inputs.d.ts.map +1 -1
  5. package/dest/avm/avm_circuit_public_inputs.js +11 -6
  6. package/dest/avm/avm_proving_request.d.ts +7 -0
  7. package/dest/avm/avm_proving_request.d.ts.map +1 -1
  8. package/dest/block/body.d.ts +4 -1
  9. package/dest/block/body.d.ts.map +1 -1
  10. package/dest/block/body.js +16 -5
  11. package/dest/block/index.d.ts +1 -0
  12. package/dest/block/index.d.ts.map +1 -1
  13. package/dest/block/index.js +1 -0
  14. package/dest/block/l2_block.d.ts +8 -5
  15. package/dest/block/l2_block.d.ts.map +1 -1
  16. package/dest/block/l2_block.js +14 -7
  17. package/dest/block/l2_block_code_to_purge.d.ts +3 -14
  18. package/dest/block/l2_block_code_to_purge.d.ts.map +1 -1
  19. package/dest/block/l2_block_code_to_purge.js +23 -13
  20. package/dest/block/l2_block_header.d.ts +100 -0
  21. package/dest/block/l2_block_header.d.ts.map +1 -0
  22. package/dest/block/l2_block_header.js +146 -0
  23. package/dest/block/l2_block_stream/l2_tips_memory_store.js +1 -1
  24. package/dest/block/published_l2_block.d.ts +2 -2
  25. package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -1
  26. package/dest/block/test/l2_tips_store_test_suite.js +1 -3
  27. package/dest/interfaces/block-builder.d.ts +2 -2
  28. package/dest/interfaces/block-builder.d.ts.map +1 -1
  29. package/dest/interfaces/epoch-prover.d.ts +26 -9
  30. package/dest/interfaces/epoch-prover.d.ts.map +1 -1
  31. package/dest/interfaces/proving-job.d.ts +233 -125
  32. package/dest/interfaces/proving-job.d.ts.map +1 -1
  33. package/dest/interfaces/proving-job.js +120 -102
  34. package/dest/interfaces/pxe.d.ts +192 -90
  35. package/dest/interfaces/pxe.d.ts.map +1 -1
  36. package/dest/interfaces/pxe.js +5 -31
  37. package/dest/interfaces/server_circuit_prover.d.ts +31 -27
  38. package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
  39. package/dest/interfaces/validator.d.ts +3 -2
  40. package/dest/interfaces/validator.d.ts.map +1 -1
  41. package/dest/kernel/private_circuit_public_inputs.d.ts +4 -4
  42. package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
  43. package/dest/kernel/private_circuit_public_inputs.js +7 -7
  44. package/dest/kernel/private_context_inputs.d.ts +2 -2
  45. package/dest/kernel/private_context_inputs.d.ts.map +1 -1
  46. package/dest/kernel/private_context_inputs.js +4 -4
  47. package/dest/kernel/private_kernel_tail_circuit_public_inputs.js +1 -1
  48. package/dest/p2p/consensus_payload.d.ts +7 -6
  49. package/dest/p2p/consensus_payload.d.ts.map +1 -1
  50. package/dest/p2p/consensus_payload.js +7 -6
  51. package/dest/parity/index.d.ts +2 -3
  52. package/dest/parity/index.d.ts.map +1 -1
  53. package/dest/parity/index.js +2 -3
  54. package/dest/parity/{base_parity_inputs.d.ts → parity_base_private_inputs.d.ts} +6 -6
  55. package/dest/parity/parity_base_private_inputs.d.ts.map +1 -0
  56. package/dest/parity/{base_parity_inputs.js → parity_base_private_inputs.js} +5 -5
  57. package/dest/parity/parity_root_private_inputs.d.ts +39 -0
  58. package/dest/parity/parity_root_private_inputs.d.ts.map +1 -0
  59. package/dest/parity/{root_parity_inputs.js → parity_root_private_inputs.js} +12 -13
  60. package/dest/proofs/proof_data.d.ts +4 -3
  61. package/dest/proofs/proof_data.d.ts.map +1 -1
  62. package/dest/proofs/proof_data.js +2 -2
  63. package/dest/proofs/proving_request_type.d.ts +16 -11
  64. package/dest/proofs/proving_request_type.d.ts.map +1 -1
  65. package/dest/proofs/proving_request_type.js +16 -11
  66. package/dest/rollup/base_rollup_hints.d.ts +12 -3
  67. package/dest/rollup/base_rollup_hints.d.ts.map +1 -1
  68. package/dest/rollup/base_rollup_hints.js +11 -5
  69. package/dest/rollup/block_constant_data.d.ts +20 -6
  70. package/dest/rollup/block_constant_data.d.ts.map +1 -1
  71. package/dest/rollup/block_constant_data.js +15 -7
  72. package/dest/rollup/{block_merge_rollup.d.ts → block_merge_rollup_private_inputs.d.ts} +17 -10
  73. package/dest/rollup/block_merge_rollup_private_inputs.d.ts.map +1 -0
  74. package/dest/rollup/{block_merge_rollup.js → block_merge_rollup_private_inputs.js} +14 -13
  75. package/dest/rollup/block_rollup_public_inputs.d.ts +124 -0
  76. package/dest/rollup/block_rollup_public_inputs.d.ts.map +1 -0
  77. package/dest/rollup/block_rollup_public_inputs.js +85 -0
  78. package/dest/rollup/block_root_rollup_private_inputs.d.ts +236 -0
  79. package/dest/rollup/block_root_rollup_private_inputs.d.ts.map +1 -0
  80. package/dest/rollup/block_root_rollup_private_inputs.js +257 -0
  81. package/dest/rollup/checkpoint_constant_data.d.ts +54 -0
  82. package/dest/rollup/checkpoint_constant_data.d.ts.map +1 -0
  83. package/dest/rollup/checkpoint_constant_data.js +55 -0
  84. package/dest/{tx/proposed_block_header.d.ts → rollup/checkpoint_header.d.ts} +11 -12
  85. package/dest/rollup/checkpoint_header.d.ts.map +1 -0
  86. package/dest/{tx/proposed_block_header.js → rollup/checkpoint_header.js} +9 -9
  87. package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts +30 -0
  88. package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts.map +1 -0
  89. package/dest/rollup/checkpoint_merge_rollup_private_inputs.js +37 -0
  90. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +105 -0
  91. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -0
  92. package/dest/rollup/checkpoint_rollup_public_inputs.js +105 -0
  93. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts +123 -0
  94. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts.map +1 -0
  95. package/dest/rollup/checkpoint_root_rollup_private_inputs.js +178 -0
  96. package/dest/rollup/epoch_constant_data.d.ts +19 -2
  97. package/dest/rollup/epoch_constant_data.d.ts.map +1 -1
  98. package/dest/rollup/epoch_constant_data.js +20 -7
  99. package/dest/rollup/index.d.ts +14 -12
  100. package/dest/rollup/index.d.ts.map +1 -1
  101. package/dest/rollup/index.js +14 -12
  102. package/dest/rollup/{private_base_rollup_inputs.d.ts → private_tx_base_rollup_private_inputs.d.ts} +7 -7
  103. package/dest/rollup/private_tx_base_rollup_private_inputs.d.ts.map +1 -0
  104. package/dest/rollup/{private_base_rollup_inputs.js → private_tx_base_rollup_private_inputs.js} +6 -6
  105. package/dest/rollup/{public_base_rollup_inputs.d.ts → public_tx_base_rollup_private_inputs.d.ts} +7 -7
  106. package/dest/rollup/public_tx_base_rollup_private_inputs.d.ts.map +1 -0
  107. package/dest/rollup/{public_base_rollup_inputs.js → public_tx_base_rollup_private_inputs.js} +6 -6
  108. package/dest/rollup/root_rollup_private_inputs.d.ts +67 -0
  109. package/dest/rollup/root_rollup_private_inputs.d.ts.map +1 -0
  110. package/dest/rollup/root_rollup_private_inputs.js +69 -0
  111. package/dest/rollup/root_rollup_public_inputs.d.ts +46 -0
  112. package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -0
  113. package/dest/rollup/root_rollup_public_inputs.js +71 -0
  114. package/dest/rollup/{merge_rollup.d.ts → tx_merge_rollup_private_inputs.d.ts} +11 -10
  115. package/dest/rollup/tx_merge_rollup_private_inputs.d.ts.map +1 -0
  116. package/dest/rollup/{merge_rollup.js → tx_merge_rollup_private_inputs.js} +14 -13
  117. package/dest/rollup/{base_or_merge_rollup_public_inputs.d.ts → tx_rollup_public_inputs.d.ts} +12 -12
  118. package/dest/rollup/tx_rollup_public_inputs.d.ts.map +1 -0
  119. package/dest/rollup/{base_or_merge_rollup_public_inputs.js → tx_rollup_public_inputs.js} +14 -14
  120. package/dest/stats/stats.d.ts +1 -1
  121. package/dest/stats/stats.d.ts.map +1 -1
  122. package/dest/tests/factories.d.ts +28 -68
  123. package/dest/tests/factories.d.ts.map +1 -1
  124. package/dest/tests/factories.js +90 -115
  125. package/dest/tests/mocks.d.ts +3 -2
  126. package/dest/tests/mocks.d.ts.map +1 -1
  127. package/dest/tests/mocks.js +3 -3
  128. package/dest/tx/block_header.d.ts +12 -13
  129. package/dest/tx/block_header.d.ts.map +1 -1
  130. package/dest/tx/block_header.js +16 -21
  131. package/dest/tx/global_variables.d.ts.map +1 -1
  132. package/dest/tx/global_variables.js +0 -1
  133. package/dest/tx/index.d.ts +0 -1
  134. package/dest/tx/index.d.ts.map +1 -1
  135. package/dest/tx/index.js +0 -1
  136. package/dest/tx/private_execution_result.d.ts +2 -2
  137. package/dest/tx/private_execution_result.d.ts.map +1 -1
  138. package/dest/tx/private_execution_result.js +3 -3
  139. package/dest/tx/tx_constant_data.d.ts +4 -4
  140. package/dest/tx/tx_constant_data.d.ts.map +1 -1
  141. package/dest/tx/tx_constant_data.js +6 -6
  142. package/dest/tx/tx_effect.d.ts +0 -3
  143. package/dest/tx/tx_effect.d.ts.map +1 -1
  144. package/dest/tx/tx_effect.js +2 -7
  145. package/package.json +8 -8
  146. package/src/avm/avm_circuit_public_inputs.ts +10 -0
  147. package/src/block/body.ts +23 -6
  148. package/src/block/index.ts +1 -0
  149. package/src/block/l2_block.ts +18 -8
  150. package/src/block/l2_block_code_to_purge.ts +30 -31
  151. package/src/block/l2_block_header.ts +232 -0
  152. package/src/block/l2_block_stream/l2_tips_memory_store.ts +1 -1
  153. package/src/block/test/l2_tips_store_test_suite.ts +1 -2
  154. package/src/interfaces/block-builder.ts +2 -6
  155. package/src/interfaces/epoch-prover.ts +35 -11
  156. package/src/interfaces/proving-job.ts +199 -123
  157. package/src/interfaces/pxe.ts +3 -138
  158. package/src/interfaces/server_circuit_prover.ts +83 -52
  159. package/src/interfaces/validator.ts +3 -2
  160. package/src/kernel/private_circuit_public_inputs.ts +5 -5
  161. package/src/kernel/private_context_inputs.ts +2 -2
  162. package/src/kernel/private_kernel_tail_circuit_public_inputs.ts +1 -1
  163. package/src/p2p/consensus_payload.ts +8 -7
  164. package/src/parity/index.ts +2 -3
  165. package/src/parity/{base_parity_inputs.ts → parity_base_private_inputs.ts} +6 -6
  166. package/src/parity/{root_parity_inputs.ts → parity_root_private_inputs.ts} +16 -18
  167. package/src/proofs/proof_data.ts +5 -8
  168. package/src/proofs/proving_request_type.ts +14 -8
  169. package/src/rollup/base_rollup_hints.ts +9 -1
  170. package/src/rollup/block_constant_data.ts +13 -3
  171. package/src/rollup/{block_merge_rollup.ts → block_merge_rollup_private_inputs.ts} +15 -11
  172. package/src/rollup/block_rollup_public_inputs.ts +123 -0
  173. package/src/rollup/block_root_rollup_private_inputs.ts +312 -0
  174. package/src/rollup/checkpoint_constant_data.ts +84 -0
  175. package/src/{tx/proposed_block_header.ts → rollup/checkpoint_header.ts} +16 -17
  176. package/src/rollup/checkpoint_merge_rollup_private_inputs.ts +49 -0
  177. package/src/rollup/{block_root_or_block_merge_public_inputs.ts → checkpoint_rollup_public_inputs.ts} +26 -52
  178. package/src/rollup/checkpoint_root_rollup_private_inputs.ts +218 -0
  179. package/src/rollup/epoch_constant_data.ts +32 -8
  180. package/src/rollup/index.ts +14 -12
  181. package/src/rollup/{private_base_rollup_inputs.ts → private_tx_base_rollup_private_inputs.ts} +9 -9
  182. package/src/rollup/{public_base_rollup_inputs.ts → public_tx_base_rollup_private_inputs.ts} +9 -9
  183. package/src/rollup/root_rollup_private_inputs.ts +90 -0
  184. package/src/rollup/{root_rollup.ts → root_rollup_public_inputs.ts} +8 -104
  185. package/src/rollup/{merge_rollup.ts → tx_merge_rollup_private_inputs.ts} +13 -9
  186. package/src/rollup/{base_or_merge_rollup_public_inputs.ts → tx_rollup_public_inputs.ts} +12 -12
  187. package/src/stats/stats.ts +18 -12
  188. package/src/tests/factories.ts +144 -199
  189. package/src/tests/mocks.ts +6 -13
  190. package/src/tx/block_header.ts +17 -32
  191. package/src/tx/global_variables.ts +0 -1
  192. package/src/tx/index.ts +0 -1
  193. package/src/tx/private_execution_result.ts +3 -3
  194. package/src/tx/tx_constant_data.ts +4 -4
  195. package/src/tx/tx_effect.ts +2 -7
  196. package/dest/parity/base_parity_inputs.d.ts.map +0 -1
  197. package/dest/parity/root_parity_input.d.ts +0 -52
  198. package/dest/parity/root_parity_input.d.ts.map +0 -1
  199. package/dest/parity/root_parity_input.js +0 -50
  200. package/dest/parity/root_parity_inputs.d.ts +0 -37
  201. package/dest/parity/root_parity_inputs.d.ts.map +0 -1
  202. package/dest/rollup/base_or_merge_rollup_public_inputs.d.ts.map +0 -1
  203. package/dest/rollup/block_merge_rollup.d.ts.map +0 -1
  204. package/dest/rollup/block_root_or_block_merge_public_inputs.d.ts +0 -134
  205. package/dest/rollup/block_root_or_block_merge_public_inputs.d.ts.map +0 -1
  206. package/dest/rollup/block_root_or_block_merge_public_inputs.js +0 -125
  207. package/dest/rollup/block_root_rollup.d.ts +0 -283
  208. package/dest/rollup/block_root_rollup.d.ts.map +0 -1
  209. package/dest/rollup/block_root_rollup.js +0 -306
  210. package/dest/rollup/empty_block_root_rollup_inputs.d.ts +0 -51
  211. package/dest/rollup/empty_block_root_rollup_inputs.d.ts.map +0 -1
  212. package/dest/rollup/empty_block_root_rollup_inputs.js +0 -65
  213. package/dest/rollup/merge_rollup.d.ts.map +0 -1
  214. package/dest/rollup/padding_block_root_rollup_inputs.d.ts +0 -20
  215. package/dest/rollup/padding_block_root_rollup_inputs.d.ts.map +0 -1
  216. package/dest/rollup/padding_block_root_rollup_inputs.js +0 -39
  217. package/dest/rollup/previous_rollup_block_data.d.ts +0 -47
  218. package/dest/rollup/previous_rollup_block_data.d.ts.map +0 -1
  219. package/dest/rollup/previous_rollup_block_data.js +0 -37
  220. package/dest/rollup/previous_rollup_data.d.ts +0 -47
  221. package/dest/rollup/previous_rollup_data.d.ts.map +0 -1
  222. package/dest/rollup/previous_rollup_data.js +0 -37
  223. package/dest/rollup/private_base_rollup_inputs.d.ts.map +0 -1
  224. package/dest/rollup/public_base_rollup_inputs.d.ts.map +0 -1
  225. package/dest/rollup/root_rollup.d.ts +0 -106
  226. package/dest/rollup/root_rollup.d.ts.map +0 -1
  227. package/dest/rollup/root_rollup.js +0 -147
  228. package/dest/tx/proposed_block_header.d.ts.map +0 -1
  229. package/src/parity/root_parity_input.ts +0 -71
  230. package/src/rollup/block_root_rollup.ts +0 -380
  231. package/src/rollup/empty_block_root_rollup_inputs.ts +0 -80
  232. package/src/rollup/padding_block_root_rollup_inputs.ts +0 -47
  233. package/src/rollup/previous_rollup_block_data.ts +0 -48
  234. package/src/rollup/previous_rollup_data.ts +0 -48
@@ -0,0 +1,218 @@
1
+ import { BlobAccumulatorPublicInputs, FinalBlobBatchingChallenges } from '@aztec/blob-lib';
2
+ import { ARCHIVE_HEIGHT, BLOBS_PER_BLOCK, FIELDS_PER_BLOB } from '@aztec/constants';
3
+ import { BLS12Point, Fr } from '@aztec/foundation/fields';
4
+ import { bufferSchemaFor } from '@aztec/foundation/schemas';
5
+ import { BufferReader, type Tuple, serializeToBuffer } from '@aztec/foundation/serialize';
6
+ import { bufferToHex, hexToBuffer } from '@aztec/foundation/string';
7
+ import type { FieldsOf } from '@aztec/foundation/types';
8
+
9
+ import { ProofData, type RollupHonkProofData } from '../proofs/proof_data.js';
10
+ import { BlockHeader } from '../tx/block_header.js';
11
+ import { BlockRollupPublicInputs } from './block_rollup_public_inputs.js';
12
+
13
+ export class CheckpointRootRollupHints {
14
+ constructor(
15
+ /**
16
+ * The header of the previous block before this checkpoint.
17
+ */
18
+ public previousBlockHeader: BlockHeader,
19
+ /**
20
+ * Hint for checking the hash of previous_block_header is the last leaf of the previous archive.
21
+ */
22
+ public previousArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>,
23
+ /**
24
+ * The current blob accumulation state across the epoch.
25
+ */
26
+ public startBlobAccumulator: BlobAccumulatorPublicInputs,
27
+ /**
28
+ * Finalized challenges z and gamma for performing blob batching. Shared value across the epoch.
29
+ */
30
+ public finalBlobChallenges: FinalBlobBatchingChallenges,
31
+ /**
32
+ * Flat list of all tx effects which will be added to the blob.
33
+ * Below line gives error 'Type instantiation is excessively deep and possibly infinite. ts(2589)'
34
+ * Tuple<Fr, FIELDS_PER_BLOB * BLOBS_PER_BLOCK>
35
+ */
36
+ public blobFields: Fr[],
37
+ /**
38
+ * KZG commitments representing the blob (precomputed in ts, injected to use inside circuit).
39
+ */
40
+ public blobCommitments: Tuple<BLS12Point, typeof BLOBS_PER_BLOCK>,
41
+ /**
42
+ * The hash of eth blob hashes for this block
43
+ * See yarn-project/foundation/src/blob/index.ts or body.ts for calculation
44
+ */
45
+ public blobsHash: Fr,
46
+ ) {}
47
+
48
+ static from(fields: FieldsOf<CheckpointRootRollupHints>) {
49
+ return new CheckpointRootRollupHints(...CheckpointRootRollupHints.getFields(fields));
50
+ }
51
+
52
+ static getFields(fields: FieldsOf<CheckpointRootRollupHints>) {
53
+ return [
54
+ fields.previousBlockHeader,
55
+ fields.previousArchiveSiblingPath,
56
+ fields.startBlobAccumulator,
57
+ fields.finalBlobChallenges,
58
+ fields.blobFields,
59
+ fields.blobCommitments,
60
+ fields.blobsHash,
61
+ ] as const;
62
+ }
63
+
64
+ toBuffer() {
65
+ return serializeToBuffer(...CheckpointRootRollupHints.getFields(this));
66
+ }
67
+
68
+ static fromBuffer(buffer: Buffer | BufferReader) {
69
+ const reader = BufferReader.asReader(buffer);
70
+ return new CheckpointRootRollupHints(
71
+ BlockHeader.fromBuffer(reader),
72
+ reader.readArray(ARCHIVE_HEIGHT, Fr),
73
+ reader.readObject(BlobAccumulatorPublicInputs),
74
+ reader.readObject(FinalBlobBatchingChallenges),
75
+ // Below line gives error 'Type instantiation is excessively deep and possibly infinite. ts(2589)'
76
+ // reader.readArray(FIELDS_PER_BLOB, Fr),
77
+ Array.from({ length: FIELDS_PER_BLOB * BLOBS_PER_BLOCK }, () => Fr.fromBuffer(reader)),
78
+ reader.readArray(BLOBS_PER_BLOCK, BLS12Point),
79
+ Fr.fromBuffer(reader),
80
+ );
81
+ }
82
+
83
+ toString() {
84
+ return bufferToHex(this.toBuffer());
85
+ }
86
+
87
+ static fromString(str: string) {
88
+ return CheckpointRootRollupHints.fromBuffer(hexToBuffer(str));
89
+ }
90
+
91
+ toJSON() {
92
+ return this.toBuffer();
93
+ }
94
+
95
+ static get schema() {
96
+ return bufferSchemaFor(CheckpointRootRollupHints);
97
+ }
98
+ }
99
+
100
+ export class CheckpointRootRollupPrivateInputs {
101
+ constructor(
102
+ public previousRollups: [
103
+ RollupHonkProofData<BlockRollupPublicInputs>,
104
+ RollupHonkProofData<BlockRollupPublicInputs>,
105
+ ],
106
+ public hints: CheckpointRootRollupHints,
107
+ ) {}
108
+
109
+ static from(fields: FieldsOf<CheckpointRootRollupPrivateInputs>) {
110
+ return new CheckpointRootRollupPrivateInputs(...CheckpointRootRollupPrivateInputs.getFields(fields));
111
+ }
112
+
113
+ static getFields(fields: FieldsOf<CheckpointRootRollupPrivateInputs>) {
114
+ return [fields.previousRollups, fields.hints] as const;
115
+ }
116
+
117
+ toBuffer() {
118
+ return serializeToBuffer(...CheckpointRootRollupPrivateInputs.getFields(this));
119
+ }
120
+
121
+ static fromBuffer(buffer: Buffer | BufferReader) {
122
+ const reader = BufferReader.asReader(buffer);
123
+ return new CheckpointRootRollupPrivateInputs(
124
+ [ProofData.fromBuffer(reader, BlockRollupPublicInputs), ProofData.fromBuffer(reader, BlockRollupPublicInputs)],
125
+ CheckpointRootRollupHints.fromBuffer(reader),
126
+ );
127
+ }
128
+
129
+ toString() {
130
+ return bufferToHex(this.toBuffer());
131
+ }
132
+
133
+ static fromString(str: string) {
134
+ return CheckpointRootRollupPrivateInputs.fromBuffer(hexToBuffer(str));
135
+ }
136
+
137
+ toJSON() {
138
+ return this.toBuffer();
139
+ }
140
+
141
+ static get schema() {
142
+ return bufferSchemaFor(CheckpointRootRollupPrivateInputs);
143
+ }
144
+ }
145
+
146
+ export class CheckpointRootSingleBlockRollupPrivateInputs {
147
+ constructor(
148
+ public previousRollup: RollupHonkProofData<BlockRollupPublicInputs>,
149
+ public hints: CheckpointRootRollupHints,
150
+ ) {}
151
+
152
+ static from(fields: FieldsOf<CheckpointRootSingleBlockRollupPrivateInputs>) {
153
+ return new CheckpointRootSingleBlockRollupPrivateInputs(
154
+ ...CheckpointRootSingleBlockRollupPrivateInputs.getFields(fields),
155
+ );
156
+ }
157
+
158
+ static getFields(fields: FieldsOf<CheckpointRootSingleBlockRollupPrivateInputs>) {
159
+ return [fields.previousRollup, fields.hints] as const;
160
+ }
161
+
162
+ toBuffer() {
163
+ return serializeToBuffer(...CheckpointRootSingleBlockRollupPrivateInputs.getFields(this));
164
+ }
165
+
166
+ static fromBuffer(buffer: Buffer | BufferReader) {
167
+ const reader = BufferReader.asReader(buffer);
168
+ return new CheckpointRootSingleBlockRollupPrivateInputs(
169
+ ProofData.fromBuffer(reader, BlockRollupPublicInputs),
170
+ CheckpointRootRollupHints.fromBuffer(reader),
171
+ );
172
+ }
173
+
174
+ toString() {
175
+ return bufferToHex(this.toBuffer());
176
+ }
177
+
178
+ static fromString(str: string) {
179
+ return CheckpointRootSingleBlockRollupPrivateInputs.fromBuffer(hexToBuffer(str));
180
+ }
181
+
182
+ toJSON() {
183
+ return this.toBuffer();
184
+ }
185
+
186
+ static get schema() {
187
+ return bufferSchemaFor(CheckpointRootSingleBlockRollupPrivateInputs);
188
+ }
189
+ }
190
+
191
+ // Checkpoint padding circuit does not have any private inputs.
192
+ export class CheckpointPaddingRollupPrivateInputs {
193
+ constructor() {}
194
+
195
+ toBuffer() {
196
+ return Buffer.alloc(0);
197
+ }
198
+
199
+ static fromBuffer(_buffer: Buffer | BufferReader) {
200
+ return new CheckpointPaddingRollupPrivateInputs();
201
+ }
202
+
203
+ toString(): `0x${string}` {
204
+ return '0x';
205
+ }
206
+
207
+ static fromString(_str: string) {
208
+ return new CheckpointPaddingRollupPrivateInputs();
209
+ }
210
+
211
+ toJSON() {
212
+ return this.toBuffer();
213
+ }
214
+
215
+ static get schema() {
216
+ return bufferSchemaFor(CheckpointPaddingRollupPrivateInputs);
217
+ }
218
+ }
@@ -1,5 +1,5 @@
1
1
  import { Fr } from '@aztec/foundation/fields';
2
- import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
2
+ import { BufferReader, serializeToBuffer, serializeToFields } from '@aztec/foundation/serialize';
3
3
  import type { FieldsOf } from '@aztec/foundation/types';
4
4
 
5
5
  /**
@@ -7,6 +7,14 @@ import type { FieldsOf } from '@aztec/foundation/types';
7
7
  */
8
8
  export class EpochConstantData {
9
9
  constructor(
10
+ /**
11
+ * ChainId of the rollup.
12
+ */
13
+ public chainId: Fr,
14
+ /**
15
+ * Version of the rollup.
16
+ */
17
+ public version: Fr,
10
18
  /**
11
19
  * Root of the verification key tree.
12
20
  */
@@ -25,20 +33,36 @@ export class EpochConstantData {
25
33
  return new EpochConstantData(...EpochConstantData.getFields(fields));
26
34
  }
27
35
 
28
- static fromBuffer(buffer: Buffer | BufferReader): EpochConstantData {
29
- const reader = BufferReader.asReader(buffer);
30
- return new EpochConstantData(Fr.fromBuffer(reader), Fr.fromBuffer(reader), Fr.fromBuffer(reader));
36
+ static getFields(fields: FieldsOf<EpochConstantData>) {
37
+ return [
38
+ fields.chainId,
39
+ fields.version,
40
+ fields.vkTreeRoot,
41
+ fields.protocolContractTreeRoot,
42
+ fields.proverId,
43
+ ] as const;
31
44
  }
32
45
 
33
- static getFields(fields: FieldsOf<EpochConstantData>) {
34
- return [fields.vkTreeRoot, fields.protocolContractTreeRoot, fields.proverId] as const;
46
+ toFields(): Fr[] {
47
+ return serializeToFields(...EpochConstantData.getFields(this));
35
48
  }
36
49
 
37
- static empty() {
38
- return new EpochConstantData(Fr.ZERO, Fr.ZERO, Fr.ZERO);
50
+ static fromBuffer(buffer: Buffer | BufferReader): EpochConstantData {
51
+ const reader = BufferReader.asReader(buffer);
52
+ return new EpochConstantData(
53
+ Fr.fromBuffer(reader),
54
+ Fr.fromBuffer(reader),
55
+ Fr.fromBuffer(reader),
56
+ Fr.fromBuffer(reader),
57
+ Fr.fromBuffer(reader),
58
+ );
39
59
  }
40
60
 
41
61
  toBuffer() {
42
62
  return serializeToBuffer(...EpochConstantData.getFields(this));
43
63
  }
64
+
65
+ static empty() {
66
+ return new EpochConstantData(Fr.ZERO, Fr.ZERO, Fr.ZERO, Fr.ZERO, Fr.ZERO);
67
+ }
44
68
  }
@@ -1,18 +1,20 @@
1
1
  export * from './avm_proof_data.js';
2
- export * from './base_or_merge_rollup_public_inputs.js';
3
2
  export * from './base_rollup_hints.js';
4
3
  export * from './block_constant_data.js';
5
- export * from './block_merge_rollup.js';
6
- export * from './block_root_or_block_merge_public_inputs.js';
7
- export * from './empty_block_root_rollup_inputs.js';
4
+ export * from './block_merge_rollup_private_inputs.js';
5
+ export * from './block_rollup_public_inputs.js';
6
+ export * from './block_root_rollup_private_inputs.js';
7
+ export * from './checkpoint_constant_data.js';
8
+ export * from './checkpoint_header.js';
9
+ export * from './checkpoint_merge_rollup_private_inputs.js';
10
+ export * from './checkpoint_rollup_public_inputs.js';
11
+ export * from './checkpoint_root_rollup_private_inputs.js';
8
12
  export * from './epoch_constant_data.js';
9
- export * from './block_root_rollup.js';
10
- export * from './merge_rollup.js';
11
- export * from './padding_block_root_rollup_inputs.js';
12
- export * from './previous_rollup_block_data.js';
13
- export * from './previous_rollup_data.js';
14
- export * from './private_base_rollup_inputs.js';
15
- export * from './public_base_rollup_inputs.js';
13
+ export * from './private_tx_base_rollup_private_inputs.js';
14
+ export * from './public_tx_base_rollup_private_inputs.js';
16
15
  export * from './public_tube_private_inputs.js';
17
- export * from './root_rollup.js';
16
+ export * from './root_rollup_private_inputs.js';
17
+ export * from './root_rollup_public_inputs.js';
18
18
  export * from './state_diff_hints.js';
19
+ export * from './tx_merge_rollup_private_inputs.js';
20
+ export * from './tx_rollup_public_inputs.js';
@@ -7,34 +7,34 @@ import { PrivateToRollupKernelCircuitPublicInputs } from '../kernel/private_to_r
7
7
  import { type CivcProofData, ProofData } from '../proofs/proof_data.js';
8
8
  import { PrivateBaseRollupHints } from './base_rollup_hints.js';
9
9
 
10
- export class PrivateBaseRollupInputs {
10
+ export class PrivateTxBaseRollupPrivateInputs {
11
11
  constructor(
12
12
  public hidingKernelProofData: CivcProofData<PrivateToRollupKernelCircuitPublicInputs>,
13
13
  public hints: PrivateBaseRollupHints,
14
14
  ) {}
15
15
 
16
- static from(fields: FieldsOf<PrivateBaseRollupInputs>): PrivateBaseRollupInputs {
17
- return new PrivateBaseRollupInputs(...PrivateBaseRollupInputs.getFields(fields));
16
+ static from(fields: FieldsOf<PrivateTxBaseRollupPrivateInputs>): PrivateTxBaseRollupPrivateInputs {
17
+ return new PrivateTxBaseRollupPrivateInputs(...PrivateTxBaseRollupPrivateInputs.getFields(fields));
18
18
  }
19
19
 
20
- static getFields(fields: FieldsOf<PrivateBaseRollupInputs>) {
20
+ static getFields(fields: FieldsOf<PrivateTxBaseRollupPrivateInputs>) {
21
21
  return [fields.hidingKernelProofData, fields.hints] as const;
22
22
  }
23
23
 
24
- static fromBuffer(buffer: Buffer | BufferReader): PrivateBaseRollupInputs {
24
+ static fromBuffer(buffer: Buffer | BufferReader): PrivateTxBaseRollupPrivateInputs {
25
25
  const reader = BufferReader.asReader(buffer);
26
- return new PrivateBaseRollupInputs(
26
+ return new PrivateTxBaseRollupPrivateInputs(
27
27
  ProofData.fromBuffer(reader, PrivateToRollupKernelCircuitPublicInputs),
28
28
  reader.readObject(PrivateBaseRollupHints),
29
29
  );
30
30
  }
31
31
 
32
32
  toBuffer() {
33
- return serializeToBuffer(...PrivateBaseRollupInputs.getFields(this));
33
+ return serializeToBuffer(...PrivateTxBaseRollupPrivateInputs.getFields(this));
34
34
  }
35
35
 
36
36
  static fromString(str: string) {
37
- return PrivateBaseRollupInputs.fromBuffer(hexToBuffer(str));
37
+ return PrivateTxBaseRollupPrivateInputs.fromBuffer(hexToBuffer(str));
38
38
  }
39
39
 
40
40
  toString() {
@@ -48,6 +48,6 @@ export class PrivateBaseRollupInputs {
48
48
 
49
49
  /** Creates an instance from a hex string. */
50
50
  static get schema() {
51
- return bufferSchemaFor(PrivateBaseRollupInputs);
51
+ return bufferSchemaFor(PrivateTxBaseRollupPrivateInputs);
52
52
  }
53
53
  }
@@ -8,24 +8,24 @@ import { ProofData, type RollupHonkProofData } from '../proofs/proof_data.js';
8
8
  import { AvmProofData } from './avm_proof_data.js';
9
9
  import { PublicBaseRollupHints } from './base_rollup_hints.js';
10
10
 
11
- export class PublicBaseRollupInputs {
11
+ export class PublicTxBaseRollupPrivateInputs {
12
12
  constructor(
13
13
  public publicTubeProofData: RollupHonkProofData<PrivateToPublicKernelCircuitPublicInputs>,
14
14
  public avmProofData: AvmProofData,
15
15
  public hints: PublicBaseRollupHints,
16
16
  ) {}
17
17
 
18
- static from(fields: FieldsOf<PublicBaseRollupInputs>): PublicBaseRollupInputs {
19
- return new PublicBaseRollupInputs(...PublicBaseRollupInputs.getFields(fields));
18
+ static from(fields: FieldsOf<PublicTxBaseRollupPrivateInputs>): PublicTxBaseRollupPrivateInputs {
19
+ return new PublicTxBaseRollupPrivateInputs(...PublicTxBaseRollupPrivateInputs.getFields(fields));
20
20
  }
21
21
 
22
- static getFields(fields: FieldsOf<PublicBaseRollupInputs>) {
22
+ static getFields(fields: FieldsOf<PublicTxBaseRollupPrivateInputs>) {
23
23
  return [fields.publicTubeProofData, fields.avmProofData, fields.hints] as const;
24
24
  }
25
25
 
26
- static fromBuffer(buffer: Buffer | BufferReader): PublicBaseRollupInputs {
26
+ static fromBuffer(buffer: Buffer | BufferReader): PublicTxBaseRollupPrivateInputs {
27
27
  const reader = BufferReader.asReader(buffer);
28
- return new PublicBaseRollupInputs(
28
+ return new PublicTxBaseRollupPrivateInputs(
29
29
  ProofData.fromBuffer(reader, PrivateToPublicKernelCircuitPublicInputs),
30
30
  reader.readObject(AvmProofData),
31
31
  reader.readObject(PublicBaseRollupHints),
@@ -33,11 +33,11 @@ export class PublicBaseRollupInputs {
33
33
  }
34
34
 
35
35
  toBuffer() {
36
- return serializeToBuffer(...PublicBaseRollupInputs.getFields(this));
36
+ return serializeToBuffer(...PublicTxBaseRollupPrivateInputs.getFields(this));
37
37
  }
38
38
 
39
39
  static fromString(str: string) {
40
- return PublicBaseRollupInputs.fromBuffer(hexToBuffer(str));
40
+ return PublicTxBaseRollupPrivateInputs.fromBuffer(hexToBuffer(str));
41
41
  }
42
42
 
43
43
  toString() {
@@ -51,6 +51,6 @@ export class PublicBaseRollupInputs {
51
51
 
52
52
  /** Creates an instance from a string. */
53
53
  static get schema() {
54
- return bufferSchemaFor(PublicBaseRollupInputs);
54
+ return bufferSchemaFor(PublicTxBaseRollupPrivateInputs);
55
55
  }
56
56
  }
@@ -0,0 +1,90 @@
1
+ import { bufferSchemaFor } from '@aztec/foundation/schemas';
2
+ import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
3
+ import { bufferToHex, hexToBuffer } from '@aztec/foundation/string';
4
+ import type { FieldsOf } from '@aztec/foundation/types';
5
+
6
+ import { ProofData, type RollupHonkProofData } from '../proofs/proof_data.js';
7
+ import { CheckpointRollupPublicInputs } from './checkpoint_rollup_public_inputs.js';
8
+
9
+ /**
10
+ * Represents inputs of the root rollup circuit.
11
+ */
12
+ export class RootRollupPrivateInputs {
13
+ constructor(
14
+ /**
15
+ * The previous rollup data.
16
+ * Note: Root rollup circuit is the latest circuit the chain of circuits and the previous rollup data is the data
17
+ * from 2 checkpoint root/merge/padding circuits.
18
+ */
19
+ public previousRollups: [
20
+ RollupHonkProofData<CheckpointRollupPublicInputs>,
21
+ RollupHonkProofData<CheckpointRollupPublicInputs>,
22
+ ],
23
+ ) {}
24
+
25
+ /**
26
+ * Serializes the inputs to a buffer.
27
+ * @returns - The inputs serialized to a buffer.
28
+ */
29
+ toBuffer() {
30
+ return serializeToBuffer(...RootRollupPrivateInputs.getFields(this));
31
+ }
32
+
33
+ /**
34
+ * Serializes the inputs to a hex string.
35
+ * @returns The instance serialized to a hex string.
36
+ */
37
+ toString() {
38
+ return bufferToHex(this.toBuffer());
39
+ }
40
+
41
+ /**
42
+ * Creates a new instance from fields.
43
+ * @param fields - Fields to create the instance from.
44
+ * @returns A new RootRollupPrivateInputs instance.
45
+ */
46
+ static from(fields: FieldsOf<RootRollupPrivateInputs>) {
47
+ return new RootRollupPrivateInputs(...RootRollupPrivateInputs.getFields(fields));
48
+ }
49
+
50
+ /**
51
+ * Extracts fields from an instance.
52
+ * @param fields - Fields to create the instance from.
53
+ * @returns An array of fields.
54
+ */
55
+ static getFields(fields: FieldsOf<RootRollupPrivateInputs>) {
56
+ return [fields.previousRollups] as const;
57
+ }
58
+
59
+ /**
60
+ * Deserializes the inputs from a buffer.
61
+ * @param buffer - A buffer to deserialize from.
62
+ * @returns A new RootRollupPrivateInputs instance.
63
+ */
64
+ static fromBuffer(buffer: Buffer | BufferReader) {
65
+ const reader = BufferReader.asReader(buffer);
66
+ return new RootRollupPrivateInputs([
67
+ ProofData.fromBuffer(reader, CheckpointRollupPublicInputs),
68
+ ProofData.fromBuffer(reader, CheckpointRollupPublicInputs),
69
+ ]);
70
+ }
71
+
72
+ /**
73
+ * Deserializes the inputs from a hex string.
74
+ * @param str - A hex string to deserialize from.
75
+ * @returns A new RootRollupPrivateInputs instance.
76
+ */
77
+ static fromString(str: string) {
78
+ return RootRollupPrivateInputs.fromBuffer(hexToBuffer(str));
79
+ }
80
+
81
+ /** Returns a representation for JSON serialization. */
82
+ toJSON() {
83
+ return this.toBuffer();
84
+ }
85
+
86
+ /** Creates an instance from a string. */
87
+ static get schema() {
88
+ return bufferSchemaFor(RootRollupPrivateInputs);
89
+ }
90
+ }
@@ -7,88 +7,8 @@ import { BufferReader, type Tuple, serializeToBuffer, serializeToFields } from '
7
7
  import { bufferToHex, hexToBuffer } from '@aztec/foundation/string';
8
8
  import type { FieldsOf } from '@aztec/foundation/types';
9
9
 
10
- import { FeeRecipient } from './block_root_or_block_merge_public_inputs.js';
11
- import { PreviousRollupBlockData } from './previous_rollup_block_data.js';
12
-
13
- /**
14
- * Represents inputs of the root rollup circuit.
15
- */
16
- export class RootRollupInputs {
17
- constructor(
18
- /**
19
- * The previous rollup data.
20
- * Note: Root rollup circuit is the latest circuit the chain of circuits and the previous rollup data is the data
21
- * from 2 block merge circuits.
22
- */
23
- public previousRollupData: [PreviousRollupBlockData, PreviousRollupBlockData],
24
- ) {}
25
-
26
- /**
27
- * Serializes the inputs to a buffer.
28
- * @returns - The inputs serialized to a buffer.
29
- */
30
- toBuffer() {
31
- return serializeToBuffer(...RootRollupInputs.getFields(this));
32
- }
33
-
34
- /**
35
- * Serializes the inputs to a hex string.
36
- * @returns The instance serialized to a hex string.
37
- */
38
- toString() {
39
- return bufferToHex(this.toBuffer());
40
- }
41
-
42
- /**
43
- * Creates a new instance from fields.
44
- * @param fields - Fields to create the instance from.
45
- * @returns A new RootRollupInputs instance.
46
- */
47
- static from(fields: FieldsOf<RootRollupInputs>): RootRollupInputs {
48
- return new RootRollupInputs(...RootRollupInputs.getFields(fields));
49
- }
50
-
51
- /**
52
- * Extracts fields from an instance.
53
- * @param fields - Fields to create the instance from.
54
- * @returns An array of fields.
55
- */
56
- static getFields(fields: FieldsOf<RootRollupInputs>) {
57
- return [fields.previousRollupData] as const;
58
- }
59
-
60
- /**
61
- * Deserializes the inputs from a buffer.
62
- * @param buffer - A buffer to deserialize from.
63
- * @returns A new RootRollupInputs instance.
64
- */
65
- static fromBuffer(buffer: Buffer | BufferReader): RootRollupInputs {
66
- const reader = BufferReader.asReader(buffer);
67
- return new RootRollupInputs([
68
- reader.readObject(PreviousRollupBlockData),
69
- reader.readObject(PreviousRollupBlockData),
70
- ]);
71
- }
72
-
73
- /**
74
- * Deserializes the inputs from a hex string.
75
- * @param str - A hex string to deserialize from.
76
- * @returns A new RootRollupInputs instance.
77
- */
78
- static fromString(str: string) {
79
- return RootRollupInputs.fromBuffer(hexToBuffer(str));
80
- }
81
-
82
- /** Returns a representation for JSON serialization. */
83
- toJSON() {
84
- return this.toBuffer();
85
- }
86
-
87
- /** Creates an instance from a string. */
88
- static get schema() {
89
- return bufferSchemaFor(RootRollupInputs);
90
- }
91
- }
10
+ import { FeeRecipient } from './checkpoint_rollup_public_inputs.js';
11
+ import { EpochConstantData } from './epoch_constant_data.js';
92
12
 
93
13
  /**
94
14
  * Represents public inputs of the root rollup circuit.
@@ -101,13 +21,9 @@ export class RootRollupPublicInputs {
101
21
  public previousArchiveRoot: Fr,
102
22
  /** Root of the archive tree after this rollup is processed */
103
23
  public endArchiveRoot: Fr,
104
- public proposedBlockHeaderHashes: Tuple<Fr, typeof AZTEC_MAX_EPOCH_DURATION>,
24
+ public checkpointHeaderHashes: Tuple<Fr, typeof AZTEC_MAX_EPOCH_DURATION>,
105
25
  public fees: Tuple<FeeRecipient, typeof AZTEC_MAX_EPOCH_DURATION>,
106
- public chainId: Fr,
107
- public version: Fr,
108
- public vkTreeRoot: Fr,
109
- public protocolContractTreeRoot: Fr,
110
- public proverId: Fr,
26
+ public constants: EpochConstantData,
111
27
  public blobPublicInputs: FinalBlobAccumulatorPublicInputs,
112
28
  ) {}
113
29
 
@@ -115,13 +31,9 @@ export class RootRollupPublicInputs {
115
31
  return [
116
32
  fields.previousArchiveRoot,
117
33
  fields.endArchiveRoot,
118
- fields.proposedBlockHeaderHashes,
34
+ fields.checkpointHeaderHashes,
119
35
  fields.fees,
120
- fields.chainId,
121
- fields.version,
122
- fields.vkTreeRoot,
123
- fields.protocolContractTreeRoot,
124
- fields.proverId,
36
+ fields.constants,
125
37
  fields.blobPublicInputs,
126
38
  ] as const;
127
39
  }
@@ -150,11 +62,7 @@ export class RootRollupPublicInputs {
150
62
  Fr.fromBuffer(reader),
151
63
  reader.readArray(AZTEC_MAX_EPOCH_DURATION, Fr),
152
64
  reader.readArray(AZTEC_MAX_EPOCH_DURATION, FeeRecipient),
153
- Fr.fromBuffer(reader),
154
- Fr.fromBuffer(reader),
155
- Fr.fromBuffer(reader),
156
- Fr.fromBuffer(reader),
157
- Fr.fromBuffer(reader),
65
+ EpochConstantData.fromBuffer(reader),
158
66
  reader.readObject(FinalBlobAccumulatorPublicInputs),
159
67
  );
160
68
  }
@@ -184,11 +92,7 @@ export class RootRollupPublicInputs {
184
92
  Fr.random(),
185
93
  makeTuple(AZTEC_MAX_EPOCH_DURATION, Fr.random),
186
94
  makeTuple(AZTEC_MAX_EPOCH_DURATION, FeeRecipient.random),
187
- Fr.random(),
188
- Fr.random(),
189
- Fr.random(),
190
- Fr.random(),
191
- Fr.random(),
95
+ new EpochConstantData(Fr.random(), Fr.random(), Fr.random(), Fr.random(), Fr.random()),
192
96
  FinalBlobAccumulatorPublicInputs.random(),
193
97
  );
194
98
  }