@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,312 @@
1
+ import { SpongeBlob } from '@aztec/blob-lib/types';
2
+ import { ARCHIVE_HEIGHT, L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH } from '@aztec/constants';
3
+ import { Fr } from '@aztec/foundation/fields';
4
+ import { bufferSchemaFor } from '@aztec/foundation/schemas';
5
+ import { BufferReader, type Tuple, bigintToUInt64BE, serializeToBuffer } from '@aztec/foundation/serialize';
6
+ import type { FieldsOf } from '@aztec/foundation/types';
7
+
8
+ import { ParityPublicInputs } from '../parity/parity_public_inputs.js';
9
+ import { ProofData, type RollupHonkProofData, type UltraHonkProofData } from '../proofs/proof_data.js';
10
+ import { AppendOnlyTreeSnapshot } from '../trees/append_only_tree_snapshot.js';
11
+ import { StateReference } from '../tx/state_reference.js';
12
+ import type { UInt64 } from '../types/shared.js';
13
+ import { CheckpointConstantData } from './checkpoint_constant_data.js';
14
+ import { TxRollupPublicInputs } from './tx_rollup_public_inputs.js';
15
+
16
+ export class BlockRootFirstRollupPrivateInputs {
17
+ constructor(
18
+ /**
19
+ * The original and converted roots of the L1 to L2 messages subtrees.
20
+ */
21
+ public l1ToL2Roots: UltraHonkProofData<ParityPublicInputs>,
22
+ /**
23
+ * The previous rollup proof data from base or merge rollup circuits.
24
+ */
25
+ public previousRollups: [RollupHonkProofData<TxRollupPublicInputs>, RollupHonkProofData<TxRollupPublicInputs>],
26
+ /**
27
+ * The l1 to l2 message tree snapshot immediately before this block.
28
+ */
29
+ public previousL1ToL2: AppendOnlyTreeSnapshot,
30
+ /**
31
+ * Hint for inserting the new l1 to l2 message subtree into `previousL1ToL2`.
32
+ */
33
+ public newL1ToL2MessageSubtreeSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH>,
34
+ /**
35
+ * Hint for inserting the new block hash to the last archive.
36
+ */
37
+ public newArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>,
38
+ ) {}
39
+
40
+ static from(fields: FieldsOf<BlockRootFirstRollupPrivateInputs>) {
41
+ return new BlockRootFirstRollupPrivateInputs(...BlockRootFirstRollupPrivateInputs.getFields(fields));
42
+ }
43
+
44
+ static getFields(fields: FieldsOf<BlockRootFirstRollupPrivateInputs>) {
45
+ return [
46
+ fields.l1ToL2Roots,
47
+ fields.previousRollups,
48
+ fields.previousL1ToL2,
49
+ fields.newL1ToL2MessageSubtreeSiblingPath,
50
+ fields.newArchiveSiblingPath,
51
+ ] as const;
52
+ }
53
+
54
+ toBuffer() {
55
+ return serializeToBuffer(...BlockRootFirstRollupPrivateInputs.getFields(this));
56
+ }
57
+
58
+ static fromBuffer(buffer: Buffer | BufferReader) {
59
+ const reader = BufferReader.asReader(buffer);
60
+ return new BlockRootFirstRollupPrivateInputs(
61
+ ProofData.fromBuffer(reader, ParityPublicInputs),
62
+ [ProofData.fromBuffer(reader, TxRollupPublicInputs), ProofData.fromBuffer(reader, TxRollupPublicInputs)],
63
+ AppendOnlyTreeSnapshot.fromBuffer(reader),
64
+ reader.readArray(L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, Fr),
65
+ reader.readArray(ARCHIVE_HEIGHT, Fr),
66
+ );
67
+ }
68
+
69
+ toJSON() {
70
+ return this.toBuffer();
71
+ }
72
+
73
+ static get schema() {
74
+ return bufferSchemaFor(BlockRootFirstRollupPrivateInputs);
75
+ }
76
+ }
77
+
78
+ export class BlockRootSingleTxFirstRollupPrivateInputs {
79
+ constructor(
80
+ /**
81
+ * The original and converted roots of the L1 to L2 messages subtrees.
82
+ */
83
+ public l1ToL2Roots: UltraHonkProofData<ParityPublicInputs>,
84
+ /**
85
+ * The previous rollup proof data from base or merge rollup circuits.
86
+ */
87
+ public previousRollup: RollupHonkProofData<TxRollupPublicInputs>,
88
+ /**
89
+ * The l1 to l2 message tree snapshot immediately before this block.
90
+ */
91
+ public previousL1ToL2: AppendOnlyTreeSnapshot,
92
+ /**
93
+ * Hint for inserting the new l1 to l2 message subtree.
94
+ */
95
+ public newL1ToL2MessageSubtreeSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH>,
96
+ /**
97
+ * Hint for inserting the new block hash to the last archive.
98
+ */
99
+ public newArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>,
100
+ ) {}
101
+
102
+ static from(fields: FieldsOf<BlockRootSingleTxFirstRollupPrivateInputs>) {
103
+ return new BlockRootSingleTxFirstRollupPrivateInputs(
104
+ ...BlockRootSingleTxFirstRollupPrivateInputs.getFields(fields),
105
+ );
106
+ }
107
+
108
+ static getFields(fields: FieldsOf<BlockRootSingleTxFirstRollupPrivateInputs>) {
109
+ return [
110
+ fields.l1ToL2Roots,
111
+ fields.previousRollup,
112
+ fields.previousL1ToL2,
113
+ fields.newL1ToL2MessageSubtreeSiblingPath,
114
+ fields.newArchiveSiblingPath,
115
+ ] as const;
116
+ }
117
+
118
+ toBuffer() {
119
+ return serializeToBuffer(...BlockRootSingleTxFirstRollupPrivateInputs.getFields(this));
120
+ }
121
+
122
+ static fromBuffer(buffer: Buffer | BufferReader) {
123
+ const reader = BufferReader.asReader(buffer);
124
+ return new BlockRootSingleTxFirstRollupPrivateInputs(
125
+ ProofData.fromBuffer(reader, ParityPublicInputs),
126
+ ProofData.fromBuffer(reader, TxRollupPublicInputs),
127
+ AppendOnlyTreeSnapshot.fromBuffer(reader),
128
+ reader.readArray(L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, Fr),
129
+ reader.readArray(ARCHIVE_HEIGHT, Fr),
130
+ );
131
+ }
132
+
133
+ toJSON() {
134
+ return this.toBuffer();
135
+ }
136
+
137
+ static get schema() {
138
+ return bufferSchemaFor(BlockRootSingleTxFirstRollupPrivateInputs);
139
+ }
140
+ }
141
+
142
+ export class BlockRootEmptyTxFirstRollupPrivateInputs {
143
+ constructor(
144
+ /**
145
+ * The original and converted roots of the L1 to L2 messages subtrees.
146
+ */
147
+ public l1ToL2Roots: UltraHonkProofData<ParityPublicInputs>,
148
+ /**
149
+ * The archive after applying the previous block.
150
+ */
151
+ public previousArchive: AppendOnlyTreeSnapshot,
152
+ /**
153
+ * The state reference of the previous block.
154
+ */
155
+ public previousState: StateReference,
156
+ /**
157
+ * The constants of the checkpoint.
158
+ */
159
+ public constants: CheckpointConstantData,
160
+ /**
161
+ * The start sponge blob of this block. No data has been absorbed into it yet, since it's the first block. But the
162
+ * number of expected fields must be set to the total number of fields in the entire checkpoint.
163
+ */
164
+ public startSpongeBlob: SpongeBlob,
165
+ /**
166
+ * The timestamp of this block.
167
+ */
168
+ public timestamp: UInt64,
169
+ /**
170
+ * Hint for inserting the new l1 to l2 message subtree.
171
+ */
172
+ public newL1ToL2MessageSubtreeSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH>,
173
+ /**
174
+ * Hint for inserting the new block hash to the last archive.
175
+ */
176
+ public newArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>,
177
+ ) {}
178
+
179
+ static from(fields: FieldsOf<BlockRootEmptyTxFirstRollupPrivateInputs>) {
180
+ return new BlockRootEmptyTxFirstRollupPrivateInputs(...BlockRootEmptyTxFirstRollupPrivateInputs.getFields(fields));
181
+ }
182
+
183
+ static getFields(fields: FieldsOf<BlockRootEmptyTxFirstRollupPrivateInputs>) {
184
+ return [
185
+ fields.l1ToL2Roots,
186
+ fields.previousArchive,
187
+ fields.previousState,
188
+ fields.constants,
189
+ fields.startSpongeBlob,
190
+ fields.timestamp,
191
+ fields.newL1ToL2MessageSubtreeSiblingPath,
192
+ fields.newArchiveSiblingPath,
193
+ ] as const;
194
+ }
195
+
196
+ toBuffer() {
197
+ return serializeToBuffer([
198
+ this.l1ToL2Roots,
199
+ this.previousArchive,
200
+ this.previousState,
201
+ this.constants,
202
+ this.startSpongeBlob,
203
+ bigintToUInt64BE(this.timestamp),
204
+ this.newL1ToL2MessageSubtreeSiblingPath,
205
+ this.newArchiveSiblingPath,
206
+ ]);
207
+ }
208
+
209
+ static fromBuffer(buffer: Buffer | BufferReader) {
210
+ const reader = BufferReader.asReader(buffer);
211
+ return new BlockRootEmptyTxFirstRollupPrivateInputs(
212
+ ProofData.fromBuffer(reader, ParityPublicInputs),
213
+ AppendOnlyTreeSnapshot.fromBuffer(reader),
214
+ StateReference.fromBuffer(reader),
215
+ CheckpointConstantData.fromBuffer(reader),
216
+ SpongeBlob.fromBuffer(reader),
217
+ reader.readUInt64(),
218
+ reader.readArray(L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, Fr),
219
+ reader.readArray(ARCHIVE_HEIGHT, Fr),
220
+ );
221
+ }
222
+
223
+ toJSON() {
224
+ return this.toBuffer();
225
+ }
226
+
227
+ static get schema() {
228
+ return bufferSchemaFor(BlockRootEmptyTxFirstRollupPrivateInputs);
229
+ }
230
+ }
231
+
232
+ export class BlockRootRollupPrivateInputs {
233
+ constructor(
234
+ /**
235
+ * The previous rollup proof data from base or merge rollup circuits.
236
+ */
237
+ public previousRollups: [RollupHonkProofData<TxRollupPublicInputs>, RollupHonkProofData<TxRollupPublicInputs>],
238
+ /**
239
+ * Hint for inserting the new block hash to the last archive.
240
+ */
241
+ public newArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>,
242
+ ) {}
243
+
244
+ static from(fields: FieldsOf<BlockRootRollupPrivateInputs>) {
245
+ return new BlockRootRollupPrivateInputs(...BlockRootRollupPrivateInputs.getFields(fields));
246
+ }
247
+
248
+ static getFields(fields: FieldsOf<BlockRootRollupPrivateInputs>) {
249
+ return [fields.previousRollups, fields.newArchiveSiblingPath] as const;
250
+ }
251
+
252
+ toBuffer() {
253
+ return serializeToBuffer(...BlockRootRollupPrivateInputs.getFields(this));
254
+ }
255
+
256
+ static fromBuffer(buffer: Buffer | BufferReader) {
257
+ const reader = BufferReader.asReader(buffer);
258
+ return new BlockRootRollupPrivateInputs(
259
+ [ProofData.fromBuffer(reader, TxRollupPublicInputs), ProofData.fromBuffer(reader, TxRollupPublicInputs)],
260
+ reader.readArray(ARCHIVE_HEIGHT, Fr),
261
+ );
262
+ }
263
+
264
+ toJSON() {
265
+ return this.toBuffer();
266
+ }
267
+
268
+ static get schema() {
269
+ return bufferSchemaFor(BlockRootRollupPrivateInputs);
270
+ }
271
+ }
272
+
273
+ export class BlockRootSingleTxRollupPrivateInputs {
274
+ constructor(
275
+ /**
276
+ * The previous rollup proof data from base or merge rollup circuits.
277
+ */
278
+ public previousRollup: RollupHonkProofData<TxRollupPublicInputs>,
279
+ /**
280
+ * Hint for inserting the new block hash to the last archive.
281
+ */
282
+ public newArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>,
283
+ ) {}
284
+
285
+ static from(fields: FieldsOf<BlockRootSingleTxRollupPrivateInputs>) {
286
+ return new BlockRootSingleTxRollupPrivateInputs(...BlockRootSingleTxRollupPrivateInputs.getFields(fields));
287
+ }
288
+
289
+ static getFields(fields: FieldsOf<BlockRootSingleTxRollupPrivateInputs>) {
290
+ return [fields.previousRollup, fields.newArchiveSiblingPath] as const;
291
+ }
292
+
293
+ toBuffer() {
294
+ return serializeToBuffer(...BlockRootSingleTxRollupPrivateInputs.getFields(this));
295
+ }
296
+
297
+ static fromBuffer(buffer: Buffer | BufferReader) {
298
+ const reader = BufferReader.asReader(buffer);
299
+ return new BlockRootSingleTxRollupPrivateInputs(
300
+ ProofData.fromBuffer(reader, TxRollupPublicInputs),
301
+ reader.readArray(ARCHIVE_HEIGHT, Fr),
302
+ );
303
+ }
304
+
305
+ toJSON() {
306
+ return this.toBuffer();
307
+ }
308
+
309
+ static get schema() {
310
+ return bufferSchemaFor(BlockRootSingleTxRollupPrivateInputs);
311
+ }
312
+ }
@@ -0,0 +1,84 @@
1
+ import { EthAddress } from '@aztec/foundation/eth-address';
2
+ import { Fr } from '@aztec/foundation/fields';
3
+ import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
4
+ import type { FieldsOf } from '@aztec/foundation/types';
5
+
6
+ import { AztecAddress } from '../aztec-address/index.js';
7
+ import { GasFees } from '../gas/gas_fees.js';
8
+
9
+ /**
10
+ * Constants that are the same for the entire checkpoint.
11
+ */
12
+ export class CheckpointConstantData {
13
+ constructor(
14
+ /** ChainId of the rollup. */
15
+ public chainId: Fr,
16
+ /** Version of the rollup. */
17
+ public version: Fr,
18
+ /** Root of the verification key tree. */
19
+ public vkTreeRoot: Fr,
20
+ /** Root of the protocol contract tree. */
21
+ public protocolContractTreeRoot: Fr,
22
+ /** Identifier of the prover. */
23
+ public proverId: Fr,
24
+ /** Slot number of the checkpoint. */
25
+ public slotNumber: Fr,
26
+ /** Coinbase address of the rollup. */
27
+ public coinbase: EthAddress,
28
+ /** Address to receive fees. */
29
+ public feeRecipient: AztecAddress,
30
+ /** Global gas fees for this checkpoint. */
31
+ public gasFees: GasFees,
32
+ ) {}
33
+
34
+ static from(fields: FieldsOf<CheckpointConstantData>) {
35
+ return new CheckpointConstantData(...CheckpointConstantData.getFields(fields));
36
+ }
37
+
38
+ static getFields(fields: FieldsOf<CheckpointConstantData>) {
39
+ return [
40
+ fields.chainId,
41
+ fields.version,
42
+ fields.vkTreeRoot,
43
+ fields.protocolContractTreeRoot,
44
+ fields.proverId,
45
+ fields.slotNumber,
46
+ fields.coinbase,
47
+ fields.feeRecipient,
48
+ fields.gasFees,
49
+ ] as const;
50
+ }
51
+
52
+ static empty() {
53
+ return new CheckpointConstantData(
54
+ Fr.ZERO,
55
+ Fr.ZERO,
56
+ Fr.ZERO,
57
+ Fr.ZERO,
58
+ Fr.ZERO,
59
+ Fr.ZERO,
60
+ EthAddress.ZERO,
61
+ AztecAddress.ZERO,
62
+ GasFees.empty(),
63
+ );
64
+ }
65
+
66
+ toBuffer() {
67
+ return serializeToBuffer(...CheckpointConstantData.getFields(this));
68
+ }
69
+
70
+ static fromBuffer(buffer: Buffer | BufferReader) {
71
+ const reader = BufferReader.asReader(buffer);
72
+ return new CheckpointConstantData(
73
+ Fr.fromBuffer(reader),
74
+ Fr.fromBuffer(reader),
75
+ Fr.fromBuffer(reader),
76
+ Fr.fromBuffer(reader),
77
+ Fr.fromBuffer(reader),
78
+ Fr.fromBuffer(reader),
79
+ reader.readObject(EthAddress),
80
+ reader.readObject(AztecAddress),
81
+ reader.readObject(GasFees),
82
+ );
83
+ }
84
+ }
@@ -13,11 +13,10 @@ import { z } from 'zod';
13
13
  import { AztecAddress } from '../aztec-address/index.js';
14
14
  import { GasFees } from '../gas/index.js';
15
15
  import { schemas } from '../schemas/index.js';
16
+ import { ContentCommitment } from '../tx/content_commitment.js';
16
17
  import type { UInt64 } from '../types/shared.js';
17
- import { ContentCommitment } from './content_commitment.js';
18
18
 
19
- /** The proposed values of an L2 block. */
20
- export class ProposedBlockHeader {
19
+ export class CheckpointHeader {
21
20
  constructor(
22
21
  /** Root of the archive tree before this block is added. */
23
22
  public lastArchiveRoot: Fr,
@@ -37,7 +36,7 @@ export class ProposedBlockHeader {
37
36
  public totalManaUsed: Fr,
38
37
  ) {}
39
38
 
40
- static get schema(): ZodFor<ProposedBlockHeader> {
39
+ static get schema(): ZodFor<CheckpointHeader> {
41
40
  return z
42
41
  .object({
43
42
  lastArchiveRoot: schemas.Fr,
@@ -49,10 +48,10 @@ export class ProposedBlockHeader {
49
48
  gasFees: GasFees.schema,
50
49
  totalManaUsed: schemas.Fr,
51
50
  })
52
- .transform(ProposedBlockHeader.from);
51
+ .transform(CheckpointHeader.from);
53
52
  }
54
53
 
55
- static getFields(fields: FieldsOf<ProposedBlockHeader>) {
54
+ static getFields(fields: FieldsOf<CheckpointHeader>) {
56
55
  return [
57
56
  fields.lastArchiveRoot,
58
57
  fields.contentCommitment,
@@ -65,14 +64,14 @@ export class ProposedBlockHeader {
65
64
  ] as const;
66
65
  }
67
66
 
68
- static from(fields: FieldsOf<ProposedBlockHeader>) {
69
- return new ProposedBlockHeader(...ProposedBlockHeader.getFields(fields));
67
+ static from(fields: FieldsOf<CheckpointHeader>) {
68
+ return new CheckpointHeader(...CheckpointHeader.getFields(fields));
70
69
  }
71
70
 
72
- static fromBuffer(buffer: Buffer | BufferReader): ProposedBlockHeader {
71
+ static fromBuffer(buffer: Buffer | BufferReader) {
73
72
  const reader = BufferReader.asReader(buffer);
74
73
 
75
- return new ProposedBlockHeader(
74
+ return new CheckpointHeader(
76
75
  reader.readObject(Fr),
77
76
  reader.readObject(ContentCommitment),
78
77
  Fr.fromBuffer(reader),
@@ -102,8 +101,8 @@ export class ProposedBlockHeader {
102
101
  return sha256ToField([this.toBuffer()]);
103
102
  }
104
103
 
105
- static empty(fields: Partial<FieldsOf<ProposedBlockHeader>> = {}): ProposedBlockHeader {
106
- return ProposedBlockHeader.from({
104
+ static empty(fields: Partial<FieldsOf<CheckpointHeader>> = {}) {
105
+ return CheckpointHeader.from({
107
106
  lastArchiveRoot: Fr.ZERO,
108
107
  contentCommitment: ContentCommitment.empty(),
109
108
  slotNumber: Fr.ZERO,
@@ -116,8 +115,8 @@ export class ProposedBlockHeader {
116
115
  });
117
116
  }
118
117
 
119
- static random(): ProposedBlockHeader {
120
- return new ProposedBlockHeader(
118
+ static random(): CheckpointHeader {
119
+ return new CheckpointHeader(
121
120
  Fr.random(),
122
121
  ContentCommitment.random(),
123
122
  new Fr(BigInt(Math.floor(Math.random() * 1000) + 1)),
@@ -150,12 +149,12 @@ export class ProposedBlockHeader {
150
149
  return bufferToHex(this.toBuffer());
151
150
  }
152
151
 
153
- static fromString(str: string): ProposedBlockHeader {
154
- return ProposedBlockHeader.fromBuffer(hexToBuffer(str));
152
+ static fromString(str: string) {
153
+ return CheckpointHeader.fromBuffer(hexToBuffer(str));
155
154
  }
156
155
 
157
156
  static fromViem(header: ViemHeader) {
158
- return new ProposedBlockHeader(
157
+ return new CheckpointHeader(
159
158
  Fr.fromString(header.lastArchiveRoot),
160
159
  ContentCommitment.fromViem(header.contentCommitment),
161
160
  new Fr(header.slotNumber),
@@ -0,0 +1,49 @@
1
+ import { bufferSchemaFor } from '@aztec/foundation/schemas';
2
+ import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
3
+ import { bufferToHex, hexToBuffer } from '@aztec/foundation/string';
4
+
5
+ import { ProofData, type RollupHonkProofData } from '../proofs/proof_data.js';
6
+ import { CheckpointRollupPublicInputs } from './checkpoint_rollup_public_inputs.js';
7
+
8
+ /**
9
+ * Represents inputs of the checkpoint merge rollup circuit.
10
+ */
11
+ export class CheckpointMergeRollupPrivateInputs {
12
+ constructor(
13
+ /**
14
+ * Previous rollup data from the 2 checkpoint root or merge rollup circuits that preceded this checkpoint merge rollup circuit.
15
+ */
16
+ public previousRollups: [
17
+ RollupHonkProofData<CheckpointRollupPublicInputs>,
18
+ RollupHonkProofData<CheckpointRollupPublicInputs>,
19
+ ],
20
+ ) {}
21
+
22
+ toBuffer() {
23
+ return serializeToBuffer(this.previousRollups);
24
+ }
25
+
26
+ static fromBuffer(buffer: Buffer | BufferReader) {
27
+ const reader = BufferReader.asReader(buffer);
28
+ return new CheckpointMergeRollupPrivateInputs([
29
+ ProofData.fromBuffer(reader, CheckpointRollupPublicInputs),
30
+ ProofData.fromBuffer(reader, CheckpointRollupPublicInputs),
31
+ ]);
32
+ }
33
+
34
+ toString() {
35
+ return bufferToHex(this.toBuffer());
36
+ }
37
+
38
+ static fromString(str: string) {
39
+ return CheckpointMergeRollupPrivateInputs.fromBuffer(hexToBuffer(str));
40
+ }
41
+
42
+ toJSON() {
43
+ return this.toBuffer();
44
+ }
45
+
46
+ static get schema() {
47
+ return bufferSchemaFor(CheckpointMergeRollupPrivateInputs);
48
+ }
49
+ }
@@ -1,4 +1,4 @@
1
- import { BlockBlobPublicInputs } from '@aztec/blob-lib';
1
+ import { BlobAccumulatorPublicInputs, FinalBlobBatchingChallenges } from '@aztec/blob-lib';
2
2
  import { AZTEC_MAX_EPOCH_DURATION } from '@aztec/constants';
3
3
  import { EthAddress } from '@aztec/foundation/eth-address';
4
4
  import { Fr } from '@aztec/foundation/fields';
@@ -8,106 +8,80 @@ import { bufferToHex, hexToBuffer } from '@aztec/foundation/string';
8
8
  import type { FieldsOf } from '@aztec/foundation/types';
9
9
 
10
10
  import { AppendOnlyTreeSnapshot } from '../trees/append_only_tree_snapshot.js';
11
- import { GlobalVariables } from '../tx/global_variables.js';
12
11
  import { EpochConstantData } from './epoch_constant_data.js';
13
12
 
14
13
  /**
15
- * Output of the block root and block merge rollup circuits.
14
+ * Output of the checkpoint root and checkpoint merge rollup circuits.
16
15
  */
17
- export class BlockRootOrBlockMergePublicInputs {
16
+ export class CheckpointRollupPublicInputs {
18
17
  constructor(
19
18
  /**
20
19
  * Constants for the entire epoch.
21
20
  */
22
21
  public constants: EpochConstantData,
23
22
  /**
24
- * Archive tree immediately before this block range.
23
+ * Archive tree immediately before this checkpoint range.
25
24
  */
26
25
  public previousArchive: AppendOnlyTreeSnapshot,
27
26
  /**
28
- * Archive tree after adding this block range.
27
+ * Archive tree after adding this checkpoint range.
29
28
  */
30
29
  public newArchive: AppendOnlyTreeSnapshot,
31
30
  /**
32
- * Global variables for the first block in the range.
31
+ * The hashes of the headers of the constituent checkpoints.
33
32
  */
34
- public startGlobalVariables: GlobalVariables,
33
+ public checkpointHeaderHashes: Tuple<Fr, typeof AZTEC_MAX_EPOCH_DURATION>,
35
34
  /**
36
- * Global variables for the last block in the range.
35
+ * The summed transaction fees and recipients of the constituent checkpoints.
37
36
  */
38
- public endGlobalVariables: GlobalVariables,
39
- /**
40
- * SHA256 hash of L2 to L1 messages. Used to make public inputs constant-sized (to then be opened onchain).
41
- * Note: Truncated to 31 bytes to fit in Fr.
42
- */
43
- public outHash: Fr,
37
+ public fees: Tuple<FeeRecipient, typeof AZTEC_MAX_EPOCH_DURATION>,
44
38
  /**
45
- * The hashes of the proposed block headers of the constituent blocks.
39
+ * Accumulated opening proofs for all blobs before this checkpoint range.
46
40
  */
47
- public proposedBlockHeaderHashes: Tuple<Fr, typeof AZTEC_MAX_EPOCH_DURATION>,
41
+ public startBlobAccumulator: BlobAccumulatorPublicInputs,
48
42
  /**
49
- * The summed `transaction_fee`s and recipients of the constituent blocks.
43
+ * Accumulated opening proofs for all blobs after applying this checkpoint range.
50
44
  */
51
- public fees: Tuple<FeeRecipient, typeof AZTEC_MAX_EPOCH_DURATION>,
45
+ public endBlobAccumulator: BlobAccumulatorPublicInputs,
52
46
  /**
53
- * Public inputs required to verify a batch of blobs.
47
+ * Final values z and gamma, shared across the epoch.
54
48
  */
55
- public blobPublicInputs: BlockBlobPublicInputs,
49
+ public finalBlobChallenges: FinalBlobBatchingChallenges,
56
50
  ) {}
57
51
 
58
- /**
59
- * Deserializes from a buffer or reader.
60
- * @param buffer - Buffer or reader to read from.
61
- * @returns The deserialized public inputs.
62
- */
63
- static fromBuffer(buffer: Buffer | BufferReader): BlockRootOrBlockMergePublicInputs {
52
+ static fromBuffer(buffer: Buffer | BufferReader) {
64
53
  const reader = BufferReader.asReader(buffer);
65
- return new BlockRootOrBlockMergePublicInputs(
54
+ return new CheckpointRollupPublicInputs(
66
55
  reader.readObject(EpochConstantData),
67
56
  reader.readObject(AppendOnlyTreeSnapshot),
68
57
  reader.readObject(AppendOnlyTreeSnapshot),
69
- reader.readObject(GlobalVariables),
70
- reader.readObject(GlobalVariables),
71
- Fr.fromBuffer(reader),
72
58
  reader.readArray(AZTEC_MAX_EPOCH_DURATION, Fr),
73
59
  reader.readArray(AZTEC_MAX_EPOCH_DURATION, FeeRecipient),
74
- reader.readObject(BlockBlobPublicInputs),
60
+ reader.readObject(BlobAccumulatorPublicInputs),
61
+ reader.readObject(BlobAccumulatorPublicInputs),
62
+ reader.readObject(FinalBlobBatchingChallenges),
75
63
  );
76
64
  }
77
65
 
78
- /**
79
- * Serialize this as a buffer.
80
- * @returns The buffer.
81
- */
82
66
  toBuffer() {
83
67
  return serializeToBuffer(
84
68
  this.constants,
85
69
  this.previousArchive,
86
70
  this.newArchive,
87
- this.startGlobalVariables,
88
- this.endGlobalVariables,
89
- this.outHash,
90
- this.proposedBlockHeaderHashes,
71
+ this.checkpointHeaderHashes,
91
72
  this.fees,
92
- this.blobPublicInputs,
73
+ this.startBlobAccumulator,
74
+ this.endBlobAccumulator,
75
+ this.finalBlobChallenges,
93
76
  );
94
77
  }
95
78
 
96
- /**
97
- * Serialize this as a hex string.
98
- * @returns - The hex string.
99
- */
100
79
  toString() {
101
80
  return bufferToHex(this.toBuffer());
102
81
  }
103
82
 
104
- /**
105
- * Deserializes from a hex string.
106
- * @param str - A hex string to deserialize from.
107
- * @returns A new BaseOrMergeRollupPublicInputs instance.
108
- */
109
83
  static fromString(str: string) {
110
- return BlockRootOrBlockMergePublicInputs.fromBuffer(hexToBuffer(str));
84
+ return CheckpointRollupPublicInputs.fromBuffer(hexToBuffer(str));
111
85
  }
112
86
 
113
87
  /** Returns a buffer representation for JSON serialization. */
@@ -117,7 +91,7 @@ export class BlockRootOrBlockMergePublicInputs {
117
91
 
118
92
  /** Creates an instance from a hex string. */
119
93
  static get schema() {
120
- return bufferSchemaFor(BlockRootOrBlockMergePublicInputs);
94
+ return bufferSchemaFor(CheckpointRollupPublicInputs);
121
95
  }
122
96
  }
123
97