@aztec/stdlib 0.0.1-commit.6230efd → 0.0.1-commit.6d3c34e

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 (240) hide show
  1. package/dest/abi/contract_artifact.d.ts +2 -2
  2. package/dest/abi/contract_artifact.d.ts.map +1 -1
  3. package/dest/abi/contract_artifact.js +1 -1
  4. package/dest/abi/selector.js +3 -1
  5. package/dest/avm/avm_accumulated_data.js +5 -2
  6. package/dest/avm/avm_circuit_public_inputs.js +3 -1
  7. package/dest/avm/public_data_update_request.js +3 -1
  8. package/dest/avm/public_inner_call_request.js +3 -1
  9. package/dest/avm/revert_code.js +3 -1
  10. package/dest/aztec-address/index.js +4 -2
  11. package/dest/block/attestation_info.d.ts +5 -5
  12. package/dest/block/attestation_info.d.ts.map +1 -1
  13. package/dest/block/attestation_info.js +4 -4
  14. package/dest/block/body.js +3 -1
  15. package/dest/block/l2_block.d.ts +6 -3
  16. package/dest/block/l2_block.d.ts.map +1 -1
  17. package/dest/block/l2_block.js +6 -4
  18. package/dest/block/l2_block_code_to_purge.d.ts +2 -3
  19. package/dest/block/l2_block_code_to_purge.d.ts.map +1 -1
  20. package/dest/block/l2_block_code_to_purge.js +2 -8
  21. package/dest/block/l2_block_header.d.ts +8 -12
  22. package/dest/block/l2_block_header.d.ts.map +1 -1
  23. package/dest/block/l2_block_header.js +25 -18
  24. package/dest/block/l2_block_new.d.ts +1 -2
  25. package/dest/block/l2_block_new.d.ts.map +1 -1
  26. package/dest/block/l2_block_new.js +4 -1
  27. package/dest/block/l2_block_source.d.ts +245 -41
  28. package/dest/block/l2_block_source.d.ts.map +1 -1
  29. package/dest/block/l2_block_source.js +23 -5
  30. package/dest/block/l2_block_stream/index.d.ts +2 -1
  31. package/dest/block/l2_block_stream/index.d.ts.map +1 -1
  32. package/dest/block/l2_block_stream/index.js +1 -0
  33. package/dest/block/l2_block_stream/interfaces.d.ts +12 -5
  34. package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
  35. package/dest/block/l2_block_stream/l2_block_stream.d.ts +4 -2
  36. package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
  37. package/dest/block/l2_block_stream/l2_block_stream.js +102 -30
  38. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts +24 -16
  39. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts.map +1 -1
  40. package/dest/block/l2_block_stream/l2_tips_memory_store.js +55 -61
  41. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +49 -0
  42. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -0
  43. package/dest/block/l2_block_stream/l2_tips_store_base.js +179 -0
  44. package/dest/block/test/l2_tips_store_test_suite.d.ts +1 -1
  45. package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -1
  46. package/dest/block/test/l2_tips_store_test_suite.js +483 -38
  47. package/dest/block/validate_block_result.d.ts +24 -24
  48. package/dest/block/validate_block_result.d.ts.map +1 -1
  49. package/dest/block/validate_block_result.js +13 -13
  50. package/dest/checkpoint/checkpoint.d.ts +1 -1
  51. package/dest/checkpoint/checkpoint.d.ts.map +1 -1
  52. package/dest/checkpoint/checkpoint.js +1 -0
  53. package/dest/checkpoint/checkpoint_info.d.ts +32 -3
  54. package/dest/checkpoint/checkpoint_info.d.ts.map +1 -1
  55. package/dest/checkpoint/checkpoint_info.js +34 -1
  56. package/dest/checkpoint/index.d.ts +2 -1
  57. package/dest/checkpoint/index.d.ts.map +1 -1
  58. package/dest/checkpoint/index.js +1 -0
  59. package/dest/database-version/version_manager.js +3 -1
  60. package/dest/gas/gas.js +3 -1
  61. package/dest/gas/gas_fees.js +3 -1
  62. package/dest/interfaces/api_limit.d.ts +2 -1
  63. package/dest/interfaces/api_limit.d.ts.map +1 -1
  64. package/dest/interfaces/api_limit.js +1 -0
  65. package/dest/interfaces/archiver.d.ts +6 -6
  66. package/dest/interfaces/archiver.d.ts.map +1 -1
  67. package/dest/interfaces/archiver.js +6 -4
  68. package/dest/interfaces/aztec-node-admin.d.ts +12 -6
  69. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  70. package/dest/interfaces/aztec-node-admin.js +2 -2
  71. package/dest/interfaces/aztec-node.d.ts +11 -10
  72. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  73. package/dest/interfaces/aztec-node.js +10 -5
  74. package/dest/interfaces/configs.d.ts +6 -1
  75. package/dest/interfaces/configs.d.ts.map +1 -1
  76. package/dest/interfaces/configs.js +2 -1
  77. package/dest/interfaces/p2p.d.ts +7 -9
  78. package/dest/interfaces/p2p.d.ts.map +1 -1
  79. package/dest/interfaces/p2p.js +3 -4
  80. package/dest/interfaces/proving-job.d.ts +170 -170
  81. package/dest/interfaces/proving-job.d.ts.map +1 -1
  82. package/dest/interfaces/proving-job.js +1 -7
  83. package/dest/interfaces/server_circuit_prover.d.ts +4 -3
  84. package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
  85. package/dest/interfaces/validator.d.ts +41 -7
  86. package/dest/interfaces/validator.d.ts.map +1 -1
  87. package/dest/interfaces/validator.js +3 -1
  88. package/dest/kernel/claimed_length_array.js +3 -1
  89. package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts +6 -5
  90. package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts.map +1 -1
  91. package/dest/kernel/hints/build_note_hash_read_request_hints.js +5 -6
  92. package/dest/kernel/hints/transient_data_squashing_hint.js +3 -1
  93. package/dest/kernel/log_hash.js +3 -1
  94. package/dest/kernel/private_log_data.js +5 -2
  95. package/dest/kernel/private_to_avm_accumulated_data.js +5 -2
  96. package/dest/kernel/private_to_public_accumulated_data.js +3 -1
  97. package/dest/kernel/private_to_rollup_accumulated_data.js +3 -1
  98. package/dest/kernel/private_validation_requests.js +3 -1
  99. package/dest/kernel/public_call_request.js +5 -2
  100. package/dest/logs/contract_class_log.js +3 -1
  101. package/dest/logs/private_log.js +3 -1
  102. package/dest/logs/public_log.js +3 -1
  103. package/dest/messaging/in_hash.d.ts +4 -2
  104. package/dest/messaging/in_hash.d.ts.map +1 -1
  105. package/dest/messaging/in_hash.js +3 -1
  106. package/dest/messaging/l2_to_l1_membership.d.ts +88 -6
  107. package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
  108. package/dest/messaging/l2_to_l1_membership.js +158 -42
  109. package/dest/messaging/out_hash.d.ts +2 -1
  110. package/dest/messaging/out_hash.d.ts.map +1 -1
  111. package/dest/messaging/out_hash.js +13 -4
  112. package/dest/p2p/attestation_utils.d.ts +3 -3
  113. package/dest/p2p/attestation_utils.d.ts.map +1 -1
  114. package/dest/p2p/attestation_utils.js +1 -1
  115. package/dest/p2p/block_proposal.d.ts +85 -21
  116. package/dest/p2p/block_proposal.d.ts.map +1 -1
  117. package/dest/p2p/block_proposal.js +120 -37
  118. package/dest/p2p/checkpoint_attestation.d.ts +77 -0
  119. package/dest/p2p/checkpoint_attestation.d.ts.map +1 -0
  120. package/dest/p2p/{block_attestation.js → checkpoint_attestation.js} +22 -19
  121. package/dest/p2p/checkpoint_proposal.d.ts +154 -0
  122. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -0
  123. package/dest/p2p/checkpoint_proposal.js +217 -0
  124. package/dest/p2p/consensus_payload.d.ts +6 -7
  125. package/dest/p2p/consensus_payload.d.ts.map +1 -1
  126. package/dest/p2p/consensus_payload.js +3 -2
  127. package/dest/p2p/gossipable.d.ts +4 -3
  128. package/dest/p2p/gossipable.d.ts.map +1 -1
  129. package/dest/p2p/gossipable.js +16 -5
  130. package/dest/p2p/index.d.ts +4 -2
  131. package/dest/p2p/index.d.ts.map +1 -1
  132. package/dest/p2p/index.js +3 -1
  133. package/dest/p2p/signature_utils.d.ts +5 -3
  134. package/dest/p2p/signature_utils.d.ts.map +1 -1
  135. package/dest/p2p/signature_utils.js +3 -1
  136. package/dest/p2p/signed_txs.d.ts +40 -0
  137. package/dest/p2p/signed_txs.d.ts.map +1 -0
  138. package/dest/p2p/signed_txs.js +70 -0
  139. package/dest/p2p/topic_type.d.ts +3 -2
  140. package/dest/p2p/topic_type.d.ts.map +1 -1
  141. package/dest/p2p/topic_type.js +8 -2
  142. package/dest/rollup/block_rollup_public_inputs.d.ts +4 -9
  143. package/dest/rollup/block_rollup_public_inputs.d.ts.map +1 -1
  144. package/dest/rollup/block_rollup_public_inputs.js +6 -10
  145. package/dest/rollup/checkpoint_constant_data.js +3 -1
  146. package/dest/rollup/checkpoint_header.d.ts +15 -12
  147. package/dest/rollup/checkpoint_header.d.ts.map +1 -1
  148. package/dest/rollup/checkpoint_header.js +33 -19
  149. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +6 -1
  150. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -1
  151. package/dest/rollup/checkpoint_rollup_public_inputs.js +6 -2
  152. package/dest/rollup/root_rollup_public_inputs.d.ts +8 -3
  153. package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -1
  154. package/dest/rollup/root_rollup_public_inputs.js +6 -3
  155. package/dest/tests/factories.d.ts +15 -7
  156. package/dest/tests/factories.d.ts.map +1 -1
  157. package/dest/tests/factories.js +57 -13
  158. package/dest/tests/mocks.d.ts +59 -10
  159. package/dest/tests/mocks.d.ts.map +1 -1
  160. package/dest/tests/mocks.js +89 -41
  161. package/dest/trees/append_only_tree_snapshot.js +3 -1
  162. package/dest/tx/block_header.js +3 -1
  163. package/dest/tx/call_context.js +3 -1
  164. package/dest/tx/global_variable_builder.d.ts +2 -2
  165. package/dest/tx/global_variable_builder.d.ts.map +1 -1
  166. package/dest/tx/global_variables.js +3 -1
  167. package/dest/tx/index.d.ts +1 -2
  168. package/dest/tx/index.d.ts.map +1 -1
  169. package/dest/tx/index.js +0 -1
  170. package/dest/tx/private_execution_result.d.ts +1 -5
  171. package/dest/tx/private_execution_result.d.ts.map +1 -1
  172. package/dest/tx/private_execution_result.js +3 -20
  173. package/dest/tx/public_call_request_with_calldata.js +3 -1
  174. package/dest/tx/state_reference.js +3 -1
  175. package/dest/tx/tree_snapshots.js +3 -1
  176. package/dest/tx/tx.d.ts +1 -1
  177. package/dest/tx/tx.d.ts.map +1 -1
  178. package/dest/tx/tx.js +3 -1
  179. package/dest/tx/tx_effect.js +3 -1
  180. package/dest/tx/tx_execution_request.d.ts +1 -1
  181. package/dest/tx/tx_execution_request.d.ts.map +1 -1
  182. package/dest/tx/tx_execution_request.js +6 -2
  183. package/package.json +8 -8
  184. package/src/abi/contract_artifact.ts +10 -10
  185. package/src/block/attestation_info.ts +9 -6
  186. package/src/block/l2_block.ts +6 -5
  187. package/src/block/l2_block_code_to_purge.ts +3 -11
  188. package/src/block/l2_block_header.ts +26 -17
  189. package/src/block/l2_block_new.ts +5 -1
  190. package/src/block/l2_block_source.ts +66 -16
  191. package/src/block/l2_block_stream/index.ts +1 -0
  192. package/src/block/l2_block_stream/interfaces.ts +12 -4
  193. package/src/block/l2_block_stream/l2_block_stream.ts +121 -38
  194. package/src/block/l2_block_stream/l2_tips_memory_store.ts +62 -56
  195. package/src/block/l2_block_stream/l2_tips_store_base.ts +226 -0
  196. package/src/block/test/l2_tips_store_test_suite.ts +485 -36
  197. package/src/block/validate_block_result.ts +35 -31
  198. package/src/checkpoint/checkpoint.ts +1 -0
  199. package/src/checkpoint/checkpoint_info.ts +45 -2
  200. package/src/checkpoint/index.ts +1 -0
  201. package/src/interfaces/api_limit.ts +1 -0
  202. package/src/interfaces/archiver.ts +14 -6
  203. package/src/interfaces/aztec-node-admin.ts +5 -2
  204. package/src/interfaces/aztec-node.ts +43 -13
  205. package/src/interfaces/configs.ts +5 -0
  206. package/src/interfaces/p2p.ts +8 -12
  207. package/src/interfaces/proving-job.ts +2 -11
  208. package/src/interfaces/server_circuit_prover.ts +3 -2
  209. package/src/interfaces/validator.ts +57 -7
  210. package/src/kernel/hints/build_note_hash_read_request_hints.ts +5 -8
  211. package/src/messaging/in_hash.ts +3 -1
  212. package/src/messaging/l2_to_l1_membership.ts +176 -52
  213. package/src/messaging/out_hash.ts +17 -7
  214. package/src/p2p/attestation_utils.ts +3 -3
  215. package/src/p2p/block_proposal.ts +185 -41
  216. package/src/p2p/{block_attestation.ts → checkpoint_attestation.ts} +31 -25
  217. package/src/p2p/checkpoint_proposal.ts +337 -0
  218. package/src/p2p/consensus_payload.ts +5 -2
  219. package/src/p2p/gossipable.ts +14 -4
  220. package/src/p2p/index.ts +3 -1
  221. package/src/p2p/signature_utils.ts +3 -1
  222. package/src/p2p/signed_txs.ts +83 -0
  223. package/src/p2p/topic_type.ts +3 -2
  224. package/src/rollup/block_rollup_public_inputs.ts +3 -9
  225. package/src/rollup/checkpoint_header.ts +43 -20
  226. package/src/rollup/checkpoint_rollup_public_inputs.ts +6 -0
  227. package/src/rollup/root_rollup_public_inputs.ts +6 -0
  228. package/src/tests/factories.ts +53 -17
  229. package/src/tests/mocks.ts +166 -64
  230. package/src/tx/global_variable_builder.ts +1 -1
  231. package/src/tx/index.ts +0 -1
  232. package/src/tx/private_execution_result.ts +0 -15
  233. package/src/tx/tx.ts +2 -0
  234. package/src/tx/tx_execution_request.ts +2 -0
  235. package/dest/p2p/block_attestation.d.ts +0 -80
  236. package/dest/p2p/block_attestation.d.ts.map +0 -1
  237. package/dest/tx/content_commitment.d.ts +0 -49
  238. package/dest/tx/content_commitment.d.ts.map +0 -1
  239. package/dest/tx/content_commitment.js +0 -90
  240. package/src/tx/content_commitment.ts +0 -113
@@ -14,12 +14,13 @@ import { z } from 'zod';
14
14
  import { AztecAddress } from '../aztec-address/index.js';
15
15
  import { GasFees } from '../gas/index.js';
16
16
  import { schemas } from '../schemas/index.js';
17
- import { ContentCommitment } from '../tx/content_commitment.js';
17
+ import type { GlobalVariables } from '../tx/global_variables.js';
18
18
  import type { UInt64 } from '../types/shared.js';
19
19
 
20
20
  /**
21
21
  * Header of a checkpoint. A checkpoint is a collection of blocks submitted to L1 all within the same slot.
22
22
  * TODO(palla/mbps): Should this include chainId and version as well? Is this used just in circuits?
23
+ * TODO(palla/mbps): What about CheckpointNumber?
23
24
  */
24
25
  export class CheckpointHeader {
25
26
  constructor(
@@ -27,8 +28,10 @@ export class CheckpointHeader {
27
28
  public lastArchiveRoot: Fr,
28
29
  /** Hash of the headers of all blocks in this checkpoint. */
29
30
  public blockHeadersHash: Fr,
30
- /** Content commitment of the L2 block. */
31
- public contentCommitment: ContentCommitment,
31
+ /** Hash of the blobs in the checkpoint. */
32
+ public blobsHash: Fr,
33
+ /** Root of the l1 to l2 messages subtree. */
34
+ public inHash: Fr,
32
35
  /** Slot number of the L2 block */
33
36
  public slotNumber: SlotNumber,
34
37
  /** Timestamp of the L2 block. */
@@ -48,7 +51,8 @@ export class CheckpointHeader {
48
51
  .object({
49
52
  lastArchiveRoot: schemas.Fr,
50
53
  blockHeadersHash: schemas.Fr,
51
- contentCommitment: ContentCommitment.schema,
54
+ blobsHash: schemas.Fr,
55
+ inHash: schemas.Fr,
52
56
  slotNumber: schemas.SlotNumber,
53
57
  timestamp: schemas.BigInt,
54
58
  coinbase: schemas.EthAddress,
@@ -63,7 +67,8 @@ export class CheckpointHeader {
63
67
  return [
64
68
  fields.lastArchiveRoot,
65
69
  fields.blockHeadersHash,
66
- fields.contentCommitment,
70
+ fields.blobsHash,
71
+ fields.inHash,
67
72
  fields.slotNumber,
68
73
  fields.timestamp,
69
74
  fields.coinbase,
@@ -83,7 +88,8 @@ export class CheckpointHeader {
83
88
  return new CheckpointHeader(
84
89
  reader.readObject(Fr),
85
90
  reader.readObject(Fr),
86
- reader.readObject(ContentCommitment),
91
+ reader.readObject(Fr),
92
+ reader.readObject(Fr),
87
93
  SlotNumber(Fr.fromBuffer(reader).toNumber()),
88
94
  reader.readUInt64(),
89
95
  reader.readObject(EthAddress),
@@ -97,7 +103,8 @@ export class CheckpointHeader {
97
103
  return (
98
104
  this.lastArchiveRoot.equals(other.lastArchiveRoot) &&
99
105
  this.blockHeadersHash.equals(other.blockHeadersHash) &&
100
- this.contentCommitment.equals(other.contentCommitment) &&
106
+ this.blobsHash.equals(other.blobsHash) &&
107
+ this.inHash.equals(other.inHash) &&
101
108
  this.slotNumber === other.slotNumber &&
102
109
  this.timestamp === other.timestamp &&
103
110
  this.coinbase.equals(other.coinbase) &&
@@ -107,12 +114,24 @@ export class CheckpointHeader {
107
114
  );
108
115
  }
109
116
 
117
+ /** Returns true if the global variables match those in the checkpoint header. */
118
+ matchesGlobalVariables(other: GlobalVariables) {
119
+ return (
120
+ this.coinbase.equals(other.coinbase) &&
121
+ this.feeRecipient.equals(other.feeRecipient) &&
122
+ this.gasFees.equals(other.gasFees) &&
123
+ this.slotNumber === other.slotNumber &&
124
+ this.timestamp === other.timestamp
125
+ );
126
+ }
127
+
110
128
  toBuffer() {
111
129
  // Note: The order here must match the order in the ProposedHeaderLib solidity library.
112
130
  return serializeToBuffer([
113
131
  this.lastArchiveRoot,
114
132
  this.blockHeadersHash,
115
- this.contentCommitment,
133
+ this.blobsHash,
134
+ this.inHash,
116
135
  new Fr(this.slotNumber),
117
136
  bigintToUInt64BE(this.timestamp),
118
137
  this.coinbase,
@@ -130,7 +149,8 @@ export class CheckpointHeader {
130
149
  return CheckpointHeader.from({
131
150
  lastArchiveRoot: Fr.ZERO,
132
151
  blockHeadersHash: Fr.ZERO,
133
- contentCommitment: ContentCommitment.empty(),
152
+ blobsHash: Fr.ZERO,
153
+ inHash: Fr.ZERO,
134
154
  slotNumber: SlotNumber.ZERO,
135
155
  timestamp: 0n,
136
156
  coinbase: EthAddress.ZERO,
@@ -141,13 +161,12 @@ export class CheckpointHeader {
141
161
  });
142
162
  }
143
163
 
144
- static random(
145
- overrides: Partial<FieldsOf<CheckpointHeader>> & Partial<FieldsOf<ContentCommitment>> = {},
146
- ): CheckpointHeader {
164
+ static random(overrides: Partial<FieldsOf<CheckpointHeader>> = {}): CheckpointHeader {
147
165
  return CheckpointHeader.from({
148
166
  lastArchiveRoot: Fr.random(),
149
167
  blockHeadersHash: Fr.random(),
150
- contentCommitment: ContentCommitment.random(overrides),
168
+ blobsHash: Fr.random(),
169
+ inHash: Fr.random(),
151
170
  slotNumber: SlotNumber(Math.floor(Math.random() * 1000) + 1),
152
171
  timestamp: BigInt(Math.floor(Date.now() / 1000)),
153
172
  coinbase: EthAddress.random(),
@@ -162,7 +181,8 @@ export class CheckpointHeader {
162
181
  return (
163
182
  this.lastArchiveRoot.isZero() &&
164
183
  this.blockHeadersHash.isZero() &&
165
- this.contentCommitment.isEmpty() &&
184
+ this.blobsHash.isZero() &&
185
+ this.inHash.isZero() &&
166
186
  this.slotNumber === 0 &&
167
187
  this.timestamp === 0n &&
168
188
  this.coinbase.isZero() &&
@@ -188,7 +208,8 @@ export class CheckpointHeader {
188
208
  return new CheckpointHeader(
189
209
  Fr.fromString(header.lastArchiveRoot),
190
210
  Fr.fromString(header.blockHeadersHash),
191
- ContentCommitment.fromViem(header.contentCommitment),
211
+ Fr.fromString(header.blobsHash),
212
+ Fr.fromString(header.inHash),
192
213
  SlotNumber.fromBigInt(header.slotNumber),
193
214
  header.timestamp,
194
215
  new EthAddress(hexToBuffer(header.coinbase)),
@@ -210,7 +231,8 @@ export class CheckpointHeader {
210
231
  return {
211
232
  lastArchiveRoot: this.lastArchiveRoot.toString(),
212
233
  blockHeadersHash: this.blockHeadersHash.toString(),
213
- contentCommitment: this.contentCommitment.toViem(),
234
+ blobsHash: this.blobsHash.toString(),
235
+ inHash: this.inHash.toString(),
214
236
  slotNumber: BigInt(this.slotNumber),
215
237
  timestamp: this.timestamp,
216
238
  coinbase: this.coinbase.toString(),
@@ -227,7 +249,8 @@ export class CheckpointHeader {
227
249
  return {
228
250
  lastArchive: this.lastArchiveRoot.toString(),
229
251
  blockHeadersHash: this.blockHeadersHash.toString(),
230
- contentCommitment: this.contentCommitment.toInspect(),
252
+ blobsHash: this.blobsHash.toString(),
253
+ inHash: this.inHash.toString(),
231
254
  slotNumber: this.slotNumber,
232
255
  timestamp: this.timestamp,
233
256
  coinbase: this.coinbase.toString(),
@@ -238,16 +261,16 @@ export class CheckpointHeader {
238
261
  }
239
262
 
240
263
  [inspect.custom]() {
241
- const gasfees = `da:${this.gasFees.feePerDaGas}, l2:${this.gasFees.feePerL2Gas}`;
242
264
  return `Header {
243
265
  lastArchiveRoot: ${this.lastArchiveRoot.toString()},
244
266
  blockHeadersHash: ${this.blockHeadersHash.toString()},
245
- contentCommitment: ${inspect(this.contentCommitment)},
267
+ blobsHash: ${inspect(this.blobsHash)},
268
+ inHash: ${inspect(this.inHash)},
246
269
  slotNumber: ${this.slotNumber},
247
270
  timestamp: ${this.timestamp},
248
271
  coinbase: ${this.coinbase.toString()},
249
272
  feeRecipient: ${this.feeRecipient.toString()},
250
- gasFees: ${gasfees},
273
+ gasFees: { da:${this.gasFees.feePerDaGas}, l2:${this.gasFees.feePerL2Gas} },
251
274
  totalManaUsed: ${this.totalManaUsed.toBigInt()},
252
275
  }`;
253
276
  }
@@ -31,6 +31,10 @@ export class CheckpointRollupPublicInputs {
31
31
  * The hashes of the headers of the constituent checkpoints.
32
32
  */
33
33
  public checkpointHeaderHashes: Tuple<Fr, typeof AZTEC_MAX_EPOCH_DURATION>,
34
+ /**
35
+ * The `out_hash` values from all checkpoints in this checkpoint range.
36
+ */
37
+ public outHashes: Tuple<Fr, typeof AZTEC_MAX_EPOCH_DURATION>,
34
38
  /**
35
39
  * The summed transaction fees and recipients of the constituent checkpoints.
36
40
  */
@@ -56,6 +60,7 @@ export class CheckpointRollupPublicInputs {
56
60
  reader.readObject(AppendOnlyTreeSnapshot),
57
61
  reader.readObject(AppendOnlyTreeSnapshot),
58
62
  reader.readArray(AZTEC_MAX_EPOCH_DURATION, Fr),
63
+ reader.readArray(AZTEC_MAX_EPOCH_DURATION, Fr),
59
64
  reader.readArray(AZTEC_MAX_EPOCH_DURATION, FeeRecipient),
60
65
  reader.readObject(BlobAccumulator),
61
66
  reader.readObject(BlobAccumulator),
@@ -69,6 +74,7 @@ export class CheckpointRollupPublicInputs {
69
74
  this.previousArchive,
70
75
  this.newArchive,
71
76
  this.checkpointHeaderHashes,
77
+ this.outHashes,
72
78
  this.fees,
73
79
  this.startBlobAccumulator,
74
80
  this.endBlobAccumulator,
@@ -21,6 +21,9 @@ export class RootRollupPublicInputs {
21
21
  public previousArchiveRoot: Fr,
22
22
  /** Root of the archive tree after this rollup is processed */
23
23
  public endArchiveRoot: Fr,
24
+ /** Root of the unbalanced merkle tree consisting of the `out_hash` values from all checkpoints in this rollup. */
25
+ public outHash: Fr,
26
+ /** Hashes of checkpoint headers for this rollup. */
24
27
  public checkpointHeaderHashes: Tuple<Fr, typeof AZTEC_MAX_EPOCH_DURATION>,
25
28
  public fees: Tuple<FeeRecipient, typeof AZTEC_MAX_EPOCH_DURATION>,
26
29
  public constants: EpochConstantData,
@@ -31,6 +34,7 @@ export class RootRollupPublicInputs {
31
34
  return [
32
35
  fields.previousArchiveRoot,
33
36
  fields.endArchiveRoot,
37
+ fields.outHash,
34
38
  fields.checkpointHeaderHashes,
35
39
  fields.fees,
36
40
  fields.constants,
@@ -58,6 +62,7 @@ export class RootRollupPublicInputs {
58
62
  public static fromBuffer(buffer: Buffer | BufferReader): RootRollupPublicInputs {
59
63
  const reader = BufferReader.asReader(buffer);
60
64
  return new RootRollupPublicInputs(
65
+ Fr.fromBuffer(reader),
61
66
  Fr.fromBuffer(reader),
62
67
  Fr.fromBuffer(reader),
63
68
  reader.readArray(AZTEC_MAX_EPOCH_DURATION, Fr),
@@ -88,6 +93,7 @@ export class RootRollupPublicInputs {
88
93
  /** Creates a random instance. Used for testing only - will not prove/verify. */
89
94
  static random() {
90
95
  return new RootRollupPublicInputs(
96
+ Fr.random(),
91
97
  Fr.random(),
92
98
  Fr.random(),
93
99
  makeTuple(AZTEC_MAX_EPOCH_DURATION, Fr.random),
@@ -43,7 +43,7 @@ import {
43
43
  VK_TREE_HEIGHT,
44
44
  } from '@aztec/constants';
45
45
  import { type FieldsOf, makeTuple } from '@aztec/foundation/array';
46
- import { BlockNumber, SlotNumber } from '@aztec/foundation/branded-types';
46
+ import { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
47
47
  import { compact } from '@aztec/foundation/collection';
48
48
  import { Grumpkin } from '@aztec/foundation/crypto/grumpkin';
49
49
  import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
@@ -88,6 +88,7 @@ import { PublicDataRead } from '../avm/public_data_read.js';
88
88
  import { PublicDataWrite } from '../avm/public_data_write.js';
89
89
  import { AztecAddress } from '../aztec-address/index.js';
90
90
  import { L2BlockHeader } from '../block/l2_block_header.js';
91
+ import type { L2Tips } from '../block/l2_block_source.js';
91
92
  import {
92
93
  type ContractClassPublic,
93
94
  ContractDeploymentData,
@@ -164,7 +165,6 @@ import { NullifierLeaf, NullifierLeafPreimage } from '../trees/nullifier_leaf.js
164
165
  import { PublicDataTreeLeaf, PublicDataTreeLeafPreimage } from '../trees/public_data_leaf.js';
165
166
  import { BlockHeader } from '../tx/block_header.js';
166
167
  import { CallContext } from '../tx/call_context.js';
167
- import { ContentCommitment } from '../tx/content_commitment.js';
168
168
  import { FunctionData } from '../tx/function_data.js';
169
169
  import { GlobalVariables } from '../tx/global_variables.js';
170
170
  import { PartialStateReference } from '../tx/partial_state_reference.js';
@@ -837,7 +837,6 @@ export function makeBlockRollupPublicInputs(seed = 0): BlockRollupPublicInputs {
837
837
  makeSpongeBlob(seed + 0x600),
838
838
  makeSpongeBlob(seed + 0x700),
839
839
  BigInt(seed + 0x800),
840
- BigInt(seed + 0x810),
841
840
  fr(seed + 0x820),
842
841
  fr(seed + 0x830),
843
842
  fr(seed + 0x840),
@@ -852,10 +851,11 @@ export function makeCheckpointRollupPublicInputs(seed = 0) {
852
851
  makeAppendOnlyTreeSnapshot(seed + 0x100),
853
852
  makeAppendOnlyTreeSnapshot(seed + 0x200),
854
853
  makeTuple(AZTEC_MAX_EPOCH_DURATION, () => fr(seed), 0x300),
855
- makeTuple(AZTEC_MAX_EPOCH_DURATION, () => makeFeeRecipient(seed), 0x400),
856
- makeBlobAccumulator(seed + 0x500),
854
+ makeTuple(AZTEC_MAX_EPOCH_DURATION, () => fr(seed), 0x400),
855
+ makeTuple(AZTEC_MAX_EPOCH_DURATION, () => makeFeeRecipient(seed), 0x500),
857
856
  makeBlobAccumulator(seed + 0x600),
858
- makeFinalBlobBatchingChallenges(seed + 0x700),
857
+ makeBlobAccumulator(seed + 0x700),
858
+ makeFinalBlobBatchingChallenges(seed + 0x800),
859
859
  );
860
860
  }
861
861
 
@@ -887,20 +887,14 @@ export function makeRootRollupPublicInputs(seed = 0): RootRollupPublicInputs {
887
887
  return new RootRollupPublicInputs(
888
888
  fr(seed + 0x100),
889
889
  fr(seed + 0x200),
890
- makeTuple(AZTEC_MAX_EPOCH_DURATION, () => fr(seed), 0x300),
890
+ fr(seed + 0x300),
891
+ makeTuple(AZTEC_MAX_EPOCH_DURATION, () => fr(seed), 0x400),
891
892
  makeTuple(AZTEC_MAX_EPOCH_DURATION, () => makeFeeRecipient(seed), 0x500),
892
893
  makeEpochConstantData(seed + 0x600),
893
894
  makeFinalBlobAccumulator(seed + 0x700),
894
895
  );
895
896
  }
896
897
 
897
- /**
898
- * Makes content commitment
899
- */
900
- export function makeContentCommitment(seed = 0): ContentCommitment {
901
- return new ContentCommitment(fr(seed + 0x100), fr(seed + 0x200), fr(seed + 0x300));
902
- }
903
-
904
898
  export function makeBlockHeader(
905
899
  seed = 0,
906
900
  overrides: Partial<FieldsOf<Omit<BlockHeader, 'globalVariables'>>> & Partial<FieldsOf<GlobalVariables>> = {},
@@ -924,7 +918,8 @@ export function makeL2BlockHeader(
924
918
  ) {
925
919
  return new L2BlockHeader(
926
920
  makeAppendOnlyTreeSnapshot(seed + 0x100),
927
- overrides?.contentCommitment ?? makeContentCommitment(seed + 0x200),
921
+ overrides?.blobsHash ?? fr(seed + 0x200),
922
+ overrides?.inHash ?? fr(seed + 0x300),
928
923
  overrides?.state ?? makeStateReference(seed + 0x600),
929
924
  makeGlobalVariables((seed += 0x700), {
930
925
  ...(blockNumber !== undefined ? { blockNumber: BlockNumber(blockNumber) } : {}),
@@ -941,7 +936,8 @@ export function makeCheckpointHeader(seed = 0) {
941
936
  return CheckpointHeader.from({
942
937
  lastArchiveRoot: fr(seed + 0x100),
943
938
  blockHeadersHash: fr(seed + 0x150),
944
- contentCommitment: makeContentCommitment(seed + 0x200),
939
+ blobsHash: fr(seed + 0x200),
940
+ inHash: fr(seed + 0x210),
945
941
  slotNumber: SlotNumber(seed + 0x300),
946
942
  timestamp: BigInt(seed + 0x400),
947
943
  coinbase: makeEthAddress(seed + 0x500),
@@ -988,7 +984,7 @@ function makeCountedL2ToL1Message(seed = 0) {
988
984
  return new CountedL2ToL1Message(makeL2ToL1Message(seed), seed + 2);
989
985
  }
990
986
 
991
- function makeScopedL2ToL1Message(seed = 1) {
987
+ export function makeScopedL2ToL1Message(seed = 1) {
992
988
  return new ScopedL2ToL1Message(makeL2ToL1Message(seed), makeAztecAddress(seed + 3));
993
989
  }
994
990
 
@@ -1741,3 +1737,43 @@ export async function randomTxScopedPublicL2Log(opts?: {
1741
1737
  opts?.firstNullifier ?? Fr.random(),
1742
1738
  );
1743
1739
  }
1740
+
1741
+ /**
1742
+ * Creates L2Tips with all tips pointing to the same block number.
1743
+ * Useful for mocking aztecNode.getL2Tips() in tests.
1744
+ * @param blockNumber - The block number to use for all tips.
1745
+ * @param hash - Optional hash for the block (defaults to empty string).
1746
+ * @param checkpointNumber - Optional checkpoint number (defaults to blockNumber).
1747
+ * @param checkpointHash - Optional checkpoint hash (defaults to block hash).
1748
+ * @returns L2Tips object with all tips at the same block.
1749
+ */
1750
+ export function makeL2Tips(
1751
+ blockNumber: number | BlockNumber,
1752
+ hash = '',
1753
+ checkpointNumber?: number | CheckpointNumber,
1754
+ checkpointHash?: string,
1755
+ ): L2Tips {
1756
+ const bn = typeof blockNumber === 'number' ? BlockNumber(blockNumber) : blockNumber;
1757
+ const cpn =
1758
+ checkpointNumber !== undefined
1759
+ ? typeof checkpointNumber === 'number'
1760
+ ? CheckpointNumber(checkpointNumber)
1761
+ : checkpointNumber
1762
+ : CheckpointNumber(bn);
1763
+ const cph = checkpointHash ?? hash;
1764
+ return {
1765
+ proposed: { number: bn, hash },
1766
+ checkpointed: {
1767
+ block: { number: bn, hash },
1768
+ checkpoint: { number: cpn, hash: cph },
1769
+ },
1770
+ proven: {
1771
+ block: { number: bn, hash },
1772
+ checkpoint: { number: cpn, hash: cph },
1773
+ },
1774
+ finalized: {
1775
+ block: { number: bn, hash },
1776
+ checkpoint: { number: cpn, hash: cph },
1777
+ },
1778
+ };
1779
+ }