@aztec/stdlib 6.0.0-nightly.20260810 → 6.0.0-nightly.20260821

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 (228) hide show
  1. package/dest/abi/abi.d.ts +4 -3
  2. package/dest/abi/abi.d.ts.map +1 -1
  3. package/dest/abi/abi.js +5 -1
  4. package/dest/abi/contract_artifact.d.ts +7 -2
  5. package/dest/abi/contract_artifact.d.ts.map +1 -1
  6. package/dest/abi/contract_artifact.js +18 -19
  7. package/dest/avm/avm.d.ts +3 -2
  8. package/dest/avm/avm.d.ts.map +1 -1
  9. package/dest/avm/avm.js +9 -3
  10. package/dest/avm/avm_proving_request.d.ts +70 -70
  11. package/dest/block/l2_block.d.ts +1 -2
  12. package/dest/block/l2_block.d.ts.map +1 -1
  13. package/dest/block/l2_block.js +2 -3
  14. package/dest/block/l2_block_source.d.ts +3 -6
  15. package/dest/block/l2_block_source.d.ts.map +1 -1
  16. package/dest/block/l2_block_stream/event_driven_l2_block_stream.d.ts +11 -20
  17. package/dest/block/l2_block_stream/event_driven_l2_block_stream.d.ts.map +1 -1
  18. package/dest/block/l2_block_stream/event_driven_l2_block_stream.js +12 -116
  19. package/dest/checkpoint/checkpoint_data.d.ts +14 -2
  20. package/dest/checkpoint/checkpoint_data.d.ts.map +1 -1
  21. package/dest/checkpoint/checkpoint_data.js +2 -1
  22. package/dest/checkpoint/index.d.ts +2 -1
  23. package/dest/checkpoint/index.d.ts.map +1 -1
  24. package/dest/checkpoint/index.js +1 -0
  25. package/dest/checkpoint/previous_checkpoint_inbox_rolling_hash.d.ts +21 -0
  26. package/dest/checkpoint/previous_checkpoint_inbox_rolling_hash.d.ts.map +1 -0
  27. package/dest/checkpoint/previous_checkpoint_inbox_rolling_hash.js +34 -0
  28. package/dest/checkpoint/simulation_overrides.d.ts +2 -2
  29. package/dest/checkpoint/simulation_overrides.d.ts.map +1 -1
  30. package/dest/checkpoint/simulation_overrides.js +11 -8
  31. package/dest/config/network-consensus-config.d.ts +4 -3
  32. package/dest/config/network-consensus-config.d.ts.map +1 -1
  33. package/dest/config/network-consensus-config.js +9 -4
  34. package/dest/config/node-rpc-config.d.ts +13 -1
  35. package/dest/config/node-rpc-config.d.ts.map +1 -1
  36. package/dest/config/node-rpc-config.js +34 -1
  37. package/dest/deserialization/index.d.ts +17 -17
  38. package/dest/deserialization/index.d.ts.map +1 -1
  39. package/dest/deserialization/index.js +18 -18
  40. package/dest/gas/gas_settings.d.ts +17 -5
  41. package/dest/gas/gas_settings.d.ts.map +1 -1
  42. package/dest/gas/gas_settings.js +4 -4
  43. package/dest/gas/tx_gas_limits.d.ts +3 -4
  44. package/dest/gas/tx_gas_limits.d.ts.map +1 -1
  45. package/dest/gas/tx_gas_limits.js +4 -5
  46. package/dest/interfaces/archiver.d.ts +2 -2
  47. package/dest/interfaces/archiver.d.ts.map +1 -1
  48. package/dest/interfaces/archiver.js +32 -5
  49. package/dest/interfaces/aztec-node-admin.d.ts +2 -1
  50. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  51. package/dest/interfaces/aztec-node.d.ts +22 -4
  52. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  53. package/dest/interfaces/aztec-node.js +11 -9
  54. package/dest/interfaces/block-builder.d.ts +11 -2
  55. package/dest/interfaces/block-builder.d.ts.map +1 -1
  56. package/dest/interfaces/configs.d.ts +7 -1
  57. package/dest/interfaces/configs.d.ts.map +1 -1
  58. package/dest/interfaces/configs.js +2 -1
  59. package/dest/interfaces/p2p.d.ts +18 -1
  60. package/dest/interfaces/p2p.d.ts.map +1 -1
  61. package/dest/interfaces/p2p.js +8 -0
  62. package/dest/interfaces/proving-job.d.ts +17 -42
  63. package/dest/interfaces/proving-job.d.ts.map +1 -1
  64. package/dest/interfaces/proving-job.js +16 -47
  65. package/dest/interfaces/server_circuit_prover.d.ts +8 -15
  66. package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
  67. package/dest/interfaces/validator.d.ts +7 -7
  68. package/dest/interfaces/validator.d.ts.map +1 -1
  69. package/dest/messaging/append_l1_to_l2_messages.d.ts +5 -5
  70. package/dest/messaging/append_l1_to_l2_messages.d.ts.map +1 -1
  71. package/dest/messaging/append_l1_to_l2_messages.js +4 -8
  72. package/dest/messaging/inbox_bucket.d.ts +77 -0
  73. package/dest/messaging/inbox_bucket.d.ts.map +1 -0
  74. package/dest/messaging/inbox_bucket.js +73 -0
  75. package/dest/messaging/inbox_consumption.d.ts +55 -0
  76. package/dest/messaging/inbox_consumption.d.ts.map +1 -0
  77. package/dest/messaging/inbox_consumption.js +53 -0
  78. package/dest/messaging/inbox_rolling_hash.d.ts +16 -0
  79. package/dest/messaging/inbox_rolling_hash.d.ts.map +1 -0
  80. package/dest/messaging/inbox_rolling_hash.js +23 -0
  81. package/dest/messaging/index.d.ts +6 -3
  82. package/dest/messaging/index.d.ts.map +1 -1
  83. package/dest/messaging/index.js +5 -2
  84. package/dest/messaging/l1_to_l2_message_bundle.d.ts +31 -0
  85. package/dest/messaging/l1_to_l2_message_bundle.d.ts.map +1 -0
  86. package/dest/messaging/l1_to_l2_message_bundle.js +51 -0
  87. package/dest/messaging/l1_to_l2_message_source.d.ts +44 -10
  88. package/dest/messaging/l1_to_l2_message_source.d.ts.map +1 -1
  89. package/dest/messaging/l1_to_l2_message_sponge.d.ts +40 -0
  90. package/dest/messaging/l1_to_l2_message_sponge.d.ts.map +1 -0
  91. package/dest/messaging/l1_to_l2_message_sponge.js +56 -0
  92. package/dest/noir/index.d.ts +3 -3
  93. package/dest/noir/index.d.ts.map +1 -1
  94. package/dest/p2p/block_proposal.d.ts +24 -9
  95. package/dest/p2p/block_proposal.d.ts.map +1 -1
  96. package/dest/p2p/block_proposal.js +42 -20
  97. package/dest/p2p/checkpoint_attestation.d.ts +1 -1
  98. package/dest/p2p/checkpoint_proposal.d.ts +13 -3
  99. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
  100. package/dest/p2p/checkpoint_proposal.js +26 -8
  101. package/dest/p2p/consensus_payload.d.ts +1 -1
  102. package/dest/p2p/index.d.ts +2 -1
  103. package/dest/p2p/index.d.ts.map +1 -1
  104. package/dest/p2p/index.js +1 -0
  105. package/dest/p2p/validated_proposal.d.ts +35 -0
  106. package/dest/p2p/validated_proposal.d.ts.map +1 -0
  107. package/dest/p2p/validated_proposal.js +17 -0
  108. package/dest/p2p/wire_compat_fixtures.d.ts +7 -0
  109. package/dest/p2p/wire_compat_fixtures.d.ts.map +1 -0
  110. package/dest/p2p/wire_compat_fixtures.js +14 -0
  111. package/dest/parity/inbox_parity_private_inputs.d.ts +61 -0
  112. package/dest/parity/inbox_parity_private_inputs.d.ts.map +1 -0
  113. package/dest/parity/inbox_parity_private_inputs.js +79 -0
  114. package/dest/parity/index.d.ts +2 -3
  115. package/dest/parity/index.d.ts.map +1 -1
  116. package/dest/parity/index.js +1 -2
  117. package/dest/parity/parity_public_inputs.d.ts +15 -14
  118. package/dest/parity/parity_public_inputs.d.ts.map +1 -1
  119. package/dest/parity/parity_public_inputs.js +13 -15
  120. package/dest/proofs/proving_request_type.d.ts +11 -14
  121. package/dest/proofs/proving_request_type.d.ts.map +1 -1
  122. package/dest/proofs/proving_request_type.js +10 -13
  123. package/dest/rollup/block_constant_data.d.ts +8 -8
  124. package/dest/rollup/block_constant_data.js +4 -4
  125. package/dest/rollup/block_rollup_public_inputs.d.ts +18 -6
  126. package/dest/rollup/block_rollup_public_inputs.d.ts.map +1 -1
  127. package/dest/rollup/block_rollup_public_inputs.js +14 -7
  128. package/dest/rollup/block_root_rollup_private_inputs.d.ts +109 -113
  129. package/dest/rollup/block_root_rollup_private_inputs.d.ts.map +1 -1
  130. package/dest/rollup/block_root_rollup_private_inputs.js +79 -130
  131. package/dest/rollup/checkpoint_header.d.ts +14 -6
  132. package/dest/rollup/checkpoint_header.d.ts.map +1 -1
  133. package/dest/rollup/checkpoint_header.js +18 -14
  134. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +22 -2
  135. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -1
  136. package/dest/rollup/checkpoint_rollup_public_inputs.js +14 -3
  137. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts +27 -6
  138. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts.map +1 -1
  139. package/dest/rollup/checkpoint_root_rollup_private_inputs.js +17 -4
  140. package/dest/rollup/root_rollup_public_inputs.d.ts +10 -2
  141. package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -1
  142. package/dest/rollup/root_rollup_public_inputs.js +9 -3
  143. package/dest/stats/stats.d.ts +2 -2
  144. package/dest/stats/stats.d.ts.map +1 -1
  145. package/dest/tests/factories.d.ts +7 -7
  146. package/dest/tests/factories.d.ts.map +1 -1
  147. package/dest/tests/factories.js +26 -22
  148. package/dest/tests/fixtures.d.ts +1 -1
  149. package/dest/tests/fixtures.d.ts.map +1 -1
  150. package/dest/tests/fixtures.js +2 -0
  151. package/dest/tests/mocks.d.ts +4 -2
  152. package/dest/tests/mocks.d.ts.map +1 -1
  153. package/dest/tests/mocks.js +4 -7
  154. package/dest/tx/state_reference.d.ts +5 -2
  155. package/dest/tx/state_reference.d.ts.map +1 -1
  156. package/dest/tx/state_reference.js +5 -5
  157. package/package.json +8 -8
  158. package/src/abi/abi.ts +7 -2
  159. package/src/abi/contract_artifact.ts +20 -23
  160. package/src/avm/avm.ts +11 -1
  161. package/src/block/l2_block.ts +2 -3
  162. package/src/block/l2_block_source.ts +2 -5
  163. package/src/block/l2_block_stream/event_driven_l2_block_stream.ts +17 -143
  164. package/src/checkpoint/checkpoint_data.ts +14 -1
  165. package/src/checkpoint/index.ts +1 -0
  166. package/src/checkpoint/previous_checkpoint_inbox_rolling_hash.ts +46 -0
  167. package/src/checkpoint/simulation_overrides.ts +11 -8
  168. package/src/config/network-consensus-config.ts +17 -4
  169. package/src/config/node-rpc-config.ts +51 -1
  170. package/src/deserialization/index.ts +18 -18
  171. package/src/gas/README.md +4 -3
  172. package/src/gas/gas_settings.ts +7 -3
  173. package/src/gas/tx_gas_limits.ts +4 -12
  174. package/src/interfaces/archiver.ts +19 -2
  175. package/src/interfaces/aztec-node.ts +33 -12
  176. package/src/interfaces/block-builder.ts +10 -1
  177. package/src/interfaces/configs.ts +6 -0
  178. package/src/interfaces/p2p.ts +21 -0
  179. package/src/interfaces/proving-job.ts +19 -70
  180. package/src/interfaces/server_circuit_prover.ts +13 -37
  181. package/src/interfaces/validator.ts +6 -5
  182. package/src/kernel/private_kernel_reset_dimensions.ts +1 -1
  183. package/src/messaging/append_l1_to_l2_messages.ts +5 -13
  184. package/src/messaging/inbox_bucket.ts +125 -0
  185. package/src/messaging/inbox_consumption.ts +74 -0
  186. package/src/messaging/inbox_rolling_hash.ts +24 -0
  187. package/src/messaging/index.ts +5 -2
  188. package/src/messaging/l1_to_l2_message_bundle.ts +65 -0
  189. package/src/messaging/l1_to_l2_message_source.ts +48 -10
  190. package/src/messaging/l1_to_l2_message_sponge.ts +69 -0
  191. package/src/noir/index.ts +1 -2
  192. package/src/p2p/block_proposal.ts +41 -28
  193. package/src/p2p/checkpoint_proposal.ts +31 -6
  194. package/src/p2p/index.ts +1 -0
  195. package/src/p2p/validated_proposal.ts +43 -0
  196. package/src/p2p/wire_compat_fixtures.ts +23 -0
  197. package/src/parity/inbox_parity_private_inputs.ts +116 -0
  198. package/src/parity/index.ts +1 -2
  199. package/src/parity/parity_public_inputs.ts +12 -14
  200. package/src/proofs/proving_request_type.ts +2 -5
  201. package/src/rollup/block_constant_data.ts +4 -4
  202. package/src/rollup/block_rollup_public_inputs.ts +14 -5
  203. package/src/rollup/block_root_rollup_private_inputs.ts +117 -153
  204. package/src/rollup/checkpoint_header.ts +17 -13
  205. package/src/rollup/checkpoint_rollup_public_inputs.ts +15 -0
  206. package/src/rollup/checkpoint_root_rollup_private_inputs.ts +16 -3
  207. package/src/rollup/root_rollup_public_inputs.ts +10 -0
  208. package/src/stats/stats.ts +4 -5
  209. package/src/tests/factories.ts +38 -32
  210. package/src/tests/fixtures.ts +3 -0
  211. package/src/tests/mocks.ts +6 -7
  212. package/src/tx/state_reference.ts +5 -12
  213. package/dest/messaging/in_hash.d.ts +0 -6
  214. package/dest/messaging/in_hash.d.ts.map +0 -1
  215. package/dest/messaging/in_hash.js +0 -10
  216. package/dest/messaging/inbox_leaf.d.ts +0 -25
  217. package/dest/messaging/inbox_leaf.d.ts.map +0 -1
  218. package/dest/messaging/inbox_leaf.js +0 -42
  219. package/dest/parity/parity_base_private_inputs.d.ts +0 -39
  220. package/dest/parity/parity_base_private_inputs.d.ts.map +0 -1
  221. package/dest/parity/parity_base_private_inputs.js +0 -51
  222. package/dest/parity/parity_root_private_inputs.d.ts +0 -39
  223. package/dest/parity/parity_root_private_inputs.d.ts.map +0 -1
  224. package/dest/parity/parity_root_private_inputs.js +0 -46
  225. package/src/messaging/in_hash.ts +0 -12
  226. package/src/messaging/inbox_leaf.ts +0 -44
  227. package/src/parity/parity_base_private_inputs.ts +0 -71
  228. package/src/parity/parity_root_private_inputs.ts +0 -64
@@ -0,0 +1,31 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { BufferReader } from '@aztec/foundation/serialize';
3
+ /**
4
+ * A block's L1-to-L2 message bundle: the real message leaves it inserts into the L1-to-L2 message tree and the count
5
+ * that drives both the compact (unpadded) tree append and the message-sponge absorb. See the Noir
6
+ * `L1ToL2MessageBundle`.
7
+ */
8
+ export declare class L1ToL2MessageBundle {
9
+ /** The real message leaves in the leading lanes, padded with zeros to `MAX_L1_TO_L2_MSGS_PER_BLOCK`. Kept as a
10
+ * plain array (not a tuple) to avoid TS's deep-instantiation limit on the wide type. */
11
+ readonly messages: Fr[];
12
+ /** Number of real messages: drives both the compact tree append and the sponge absorb. */
13
+ readonly numMsgs: number;
14
+ constructor(
15
+ /** The real message leaves in the leading lanes, padded with zeros to `MAX_L1_TO_L2_MSGS_PER_BLOCK`. Kept as a
16
+ * plain array (not a tuple) to avoid TS's deep-instantiation limit on the wide type. */
17
+ messages: Fr[],
18
+ /** Number of real messages: drives both the compact tree append and the sponge absorb. */
19
+ numMsgs: number);
20
+ /** An empty bundle: no leaves inserted, nothing absorbed. */
21
+ static empty(): L1ToL2MessageBundle;
22
+ toBuffer(): Buffer<ArrayBufferLike>;
23
+ toString(): `0x${string}`;
24
+ static fromBuffer(buffer: Buffer | BufferReader): L1ToL2MessageBundle;
25
+ static fromString(str: string): L1ToL2MessageBundle;
26
+ toJSON(): Buffer<ArrayBufferLike>;
27
+ static get schema(): import("zod").ZodType<L1ToL2MessageBundle, string, import("zod/v4/core").$ZodTypeInternals<L1ToL2MessageBundle, string>>;
28
+ }
29
+ /** Wraps `messages` (the real leaves) into a bundle: the leaves fill the leading lanes, the count is the real count. */
30
+ export declare function makeL1ToL2MessageBundle(messages: Fr[]): L1ToL2MessageBundle;
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDFfdG9fbDJfbWVzc2FnZV9idW5kbGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXNzYWdpbmcvbDFfdG9fbDJfbWVzc2FnZV9idW5kbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQXFCLE1BQU0sNkJBQTZCLENBQUM7QUFHOUU7Ozs7R0FJRztBQUNILHFCQUFhLG1CQUFtQjtJQUU1Qjs0RkFDd0Y7YUFDeEUsUUFBUSxFQUFFLEVBQUUsRUFBRTtJQUM5QiwwRkFBMEY7YUFDMUUsT0FBTyxFQUFFLE1BQU07SUFMakM7SUFDRTs0RkFDd0Y7SUFDeEUsUUFBUSxFQUFFLEVBQUUsRUFBRTtJQUM5QiwwRkFBMEY7SUFDMUUsT0FBTyxFQUFFLE1BQU0sRUFDN0I7SUFFSiw2REFBNkQ7SUFDN0QsTUFBTSxDQUFDLEtBQUssSUFBSSxtQkFBbUIsQ0FLbEM7SUFFRCxRQUFRLDRCQUVQO0lBRUQsUUFBUSxrQkFFUDtJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxZQUFZLHVCQUs5QztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sdUJBRTVCO0lBRUQsTUFBTSw0QkFFTDtJQUVELE1BQU0sS0FBSyxNQUFNLDZIQUVoQjtDQUNGO0FBRUQsd0hBQXdIO0FBQ3hILHdCQUFnQix1QkFBdUIsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEdBQUcsbUJBQW1CLENBTTNFIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"l1_to_l2_message_bundle.d.ts","sourceRoot":"","sources":["../../src/messaging/l1_to_l2_message_bundle.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAG9E;;;;GAIG;AACH,qBAAa,mBAAmB;IAE5B;4FACwF;aACxE,QAAQ,EAAE,EAAE,EAAE;IAC9B,0FAA0F;aAC1E,OAAO,EAAE,MAAM;IALjC;IACE;4FACwF;IACxE,QAAQ,EAAE,EAAE,EAAE;IAC9B,0FAA0F;IAC1E,OAAO,EAAE,MAAM,EAC7B;IAEJ,6DAA6D;IAC7D,MAAM,CAAC,KAAK,IAAI,mBAAmB,CAKlC;IAED,QAAQ,4BAEP;IAED,QAAQ,kBAEP;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,uBAK9C;IAED,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,uBAE5B;IAED,MAAM,4BAEL;IAED,MAAM,KAAK,MAAM,6HAEhB;CACF;AAED,wHAAwH;AACxH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,mBAAmB,CAM3E"}
@@ -0,0 +1,51 @@
1
+ import { MAX_L1_TO_L2_MSGS_PER_BLOCK } from '@aztec/constants';
2
+ import { padArrayEnd } from '@aztec/foundation/collection';
3
+ import { Fr } from '@aztec/foundation/curves/bn254';
4
+ import { bufferSchemaFor } from '@aztec/foundation/schemas';
5
+ import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
6
+ import { bufferToHex, hexToBuffer } from '@aztec/foundation/string';
7
+ /**
8
+ * A block's L1-to-L2 message bundle: the real message leaves it inserts into the L1-to-L2 message tree and the count
9
+ * that drives both the compact (unpadded) tree append and the message-sponge absorb. See the Noir
10
+ * `L1ToL2MessageBundle`.
11
+ */ export class L1ToL2MessageBundle {
12
+ messages;
13
+ numMsgs;
14
+ constructor(/** The real message leaves in the leading lanes, padded with zeros to `MAX_L1_TO_L2_MSGS_PER_BLOCK`. Kept as a
15
+ * plain array (not a tuple) to avoid TS's deep-instantiation limit on the wide type. */ messages, /** Number of real messages: drives both the compact tree append and the sponge absorb. */ numMsgs){
16
+ this.messages = messages;
17
+ this.numMsgs = numMsgs;
18
+ }
19
+ /** An empty bundle: no leaves inserted, nothing absorbed. */ static empty() {
20
+ return new L1ToL2MessageBundle(Array.from({
21
+ length: MAX_L1_TO_L2_MSGS_PER_BLOCK
22
+ }, ()=>Fr.ZERO), 0);
23
+ }
24
+ toBuffer() {
25
+ return serializeToBuffer(this.messages, this.numMsgs);
26
+ }
27
+ toString() {
28
+ return bufferToHex(this.toBuffer());
29
+ }
30
+ static fromBuffer(buffer) {
31
+ const reader = BufferReader.asReader(buffer);
32
+ // Array.from (not readArray with the literal cap) keeps the type `Fr[]` and avoids TS's deep-tuple instantiation.
33
+ const messages = Array.from({
34
+ length: MAX_L1_TO_L2_MSGS_PER_BLOCK
35
+ }, ()=>Fr.fromBuffer(reader));
36
+ return new L1ToL2MessageBundle(messages, reader.readNumber());
37
+ }
38
+ static fromString(str) {
39
+ return L1ToL2MessageBundle.fromBuffer(hexToBuffer(str));
40
+ }
41
+ toJSON() {
42
+ return this.toBuffer();
43
+ }
44
+ static get schema() {
45
+ return bufferSchemaFor(L1ToL2MessageBundle);
46
+ }
47
+ }
48
+ /** Wraps `messages` (the real leaves) into a bundle: the leaves fill the leading lanes, the count is the real count. */ export function makeL1ToL2MessageBundle(messages) {
49
+ // Explicit `<Fr, number>` keeps the result `Fr[]`; padding to the literal cap would otherwise infer a deep tuple.
50
+ return new L1ToL2MessageBundle(padArrayEnd(messages, Fr.ZERO, MAX_L1_TO_L2_MSGS_PER_BLOCK), messages.length);
51
+ }
@@ -1,27 +1,61 @@
1
- import type { CheckpointNumber } from '@aztec/foundation/branded-types';
2
1
  import type { Fr } from '@aztec/foundation/curves/bn254';
3
2
  import type { L2Tips } from '../block/l2_block_source.js';
3
+ import type { InboxBucket } from './inbox_bucket.js';
4
4
  /**
5
5
  * Interface of classes allowing for the retrieval of L1 to L2 messages.
6
6
  */
7
7
  export interface L1ToL2MessageSource {
8
- /**
9
- * Gets new L1 to L2 message (to be) included in a given checkpoint.
10
- * @param checkpointNumber - Checkpoint number to get messages for.
11
- * @returns The L1 to L2 messages/leaves of the messages subtree.
12
- * @throws If the message tree for the given checkpoint has not yet been sealed on L1
13
- * (i.e., checkpointNumber >= inbox treeInProgress).
14
- */
15
- getL1ToL2Messages(checkpointNumber: CheckpointNumber): Promise<Fr[]>;
16
8
  /**
17
9
  * Gets the L1 to L2 message index in the L1 to L2 message tree.
18
10
  * @param l1ToL2Message - The L1 to L2 message.
19
11
  * @returns The index of the L1 to L2 message in the L1 to L2 message tree (undefined if not found).
20
12
  */
21
13
  getL1ToL2MessageIndex(l1ToL2Message: Fr): Promise<bigint | undefined>;
14
+ /**
15
+ * Returns the latest Inbox bucket opened at or before the given L1 timestamp, or undefined if no such bucket
16
+ * exists (i.e., every synced bucket was opened strictly after the timestamp). Used by the sequencer/validator
17
+ * to resolve the censorship cutoff and message-lag boundaries.
18
+ * @param timestamp - The L1 timestamp (in seconds) to look up at-or-before.
19
+ */
20
+ getLatestInboxBucketAtOrBefore(timestamp: bigint): Promise<InboxBucket | undefined>;
21
+ /**
22
+ * Returns the Inbox bucket with the given sequence number, or undefined if it has not been synced. Validators use
23
+ * this to resolve the bucket a proposal references and check its rolling hash.
24
+ * @param seq - The bucket sequence number.
25
+ */
26
+ getInboxBucket(seq: bigint): Promise<InboxBucket | undefined>;
27
+ /**
28
+ * Returns the Inbox bucket whose cumulative message total equals `totalMsgCount`, or undefined if no synced bucket
29
+ * sits on that boundary. A block's or checkpoint's L1-to-L2 tree leaf count equals the cumulative total of the last
30
+ * bucket it consumed (messages are indexed compactly, with no padding), so validators use this to resolve the
31
+ * bucket a block consumed through from the block's leaf count, without trusting a wire hint. `totalMsgCount === 0`
32
+ * resolves the genesis sentinel bucket (sequence 0); a total that does not land on a bucket boundary returns
33
+ * undefined.
34
+ * @param totalMsgCount - The cumulative Inbox message count (leaf count) to resolve to a bucket boundary.
35
+ */
36
+ getInboxBucketByTotalMsgCount(totalMsgCount: bigint): Promise<InboxBucket | undefined>;
37
+ /**
38
+ * Returns the message leaves absorbed into buckets in the range `(fromExclusive, toInclusive]`, in insertion
39
+ * order, for streaming message-bundle derivation. Both bounds must name buckets the source
40
+ * has synced; it throws otherwise, so that an empty result means the range holds no messages instead of hiding an
41
+ * unsynced bound. Callers that can tolerate an unsynced source resolve both bounds first, or map the failure to
42
+ * their own catch-up handling.
43
+ * @param fromExclusive - The lower bucket sequence bound, exclusive (0 means from the start of the Inbox).
44
+ * @param toInclusive - The upper bucket sequence bound, inclusive.
45
+ */
46
+ getL1ToL2MessagesBetweenBuckets(fromExclusive: bigint, toInclusive: bigint): Promise<Fr[]>;
47
+ /**
48
+ * Returns the message leaves in the cumulative Inbox message-count range `[startLeafCount, endLeafCount)`, in
49
+ * insertion order. The bounds are compact L1-to-L2 tree leaf counts, which every block header
50
+ * carries, so a consumer can ask for the messages a block or checkpoint consumed without resolving Inbox buckets
51
+ * itself. Both bounds must land on a bucket boundary the source has synced; it throws otherwise.
52
+ * @param startLeafCount - The cumulative Inbox message count the range starts at, inclusive.
53
+ * @param endLeafCount - The cumulative Inbox message count the range ends at, exclusive.
54
+ */
55
+ getL1ToL2MessagesBetweenLeafCounts(startLeafCount: bigint, endLeafCount: bigint): Promise<Fr[]>;
22
56
  /**
23
57
  * Returns the tips of the L2 chain.
24
58
  */
25
59
  getL2Tips(): Promise<L2Tips>;
26
60
  }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDFfdG9fbDJfbWVzc2FnZV9zb3VyY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXNzYWdpbmcvbDFfdG9fbDJfbWVzc2FnZV9zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV6RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUxRDs7R0FFRztBQUNILE1BQU0sV0FBVyxtQkFBbUI7SUFDbEM7Ozs7OztPQU1HO0lBQ0gsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFckU7Ozs7T0FJRztJQUNILHFCQUFxQixDQUFDLGFBQWEsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQztJQUV0RTs7T0FFRztJQUNILFNBQVMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Q0FDOUIifQ==
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDFfdG9fbDJfbWVzc2FnZV9zb3VyY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXNzYWdpbmcvbDFfdG9fbDJfbWVzc2FnZV9zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFekQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFckQ7O0dBRUc7QUFDSCxNQUFNLFdBQVcsbUJBQW1CO0lBQ2xDOzs7O09BSUc7SUFDSCxxQkFBcUIsQ0FBQyxhQUFhLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFFdEU7Ozs7O09BS0c7SUFDSCw4QkFBOEIsQ0FBQyxTQUFTLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFFcEY7Ozs7T0FJRztJQUNILGNBQWMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFFOUQ7Ozs7Ozs7O09BUUc7SUFDSCw2QkFBNkIsQ0FBQyxhQUFhLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFFdkY7Ozs7Ozs7O09BUUc7SUFDSCwrQkFBK0IsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFM0Y7Ozs7Ozs7T0FPRztJQUNILGtDQUFrQyxDQUFDLGNBQWMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUVoRzs7T0FFRztJQUNILFNBQVMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Q0FDOUIifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"l1_to_l2_message_source.d.ts","sourceRoot":"","sources":["../../src/messaging/l1_to_l2_message_source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;;OAMG;IACH,iBAAiB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAErE;;;;OAIG;IACH,qBAAqB,CAAC,aAAa,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEtE;;OAEG;IACH,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9B"}
1
+ {"version":3,"file":"l1_to_l2_message_source.d.ts","sourceRoot":"","sources":["../../src/messaging/l1_to_l2_message_source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,qBAAqB,CAAC,aAAa,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEtE;;;;;OAKG;IACH,8BAA8B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAEpF;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAE9D;;;;;;;;OAQG;IACH,6BAA6B,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAEvF;;;;;;;;OAQG;IACH,+BAA+B,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAE3F;;;;;;;OAOG;IACH,kCAAkC,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAEhG;;OAEG;IACH,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9B"}
@@ -0,0 +1,40 @@
1
+ import { Poseidon2Sponge } from '@aztec/blob-lib/types';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
+ import { BufferReader, FieldReader } from '@aztec/foundation/serialize';
4
+ import type { FieldsOf } from '@aztec/foundation/types';
5
+ /**
6
+ * An absorb-only Poseidon2 sponge over L1-to-L2 message leaves.
7
+ *
8
+ * Mirrors `L1ToL2MessageSponge` in
9
+ * `noir-projects/fnd/noir-protocol-circuits/crates/rollup-lib/src/abis/l1_to_l2_message_sponge.nr`. Each block of a
10
+ * checkpoint absorbs its message bundle into the sponge it inherited from the previous block; the checkpoint root
11
+ * recomputes the sponge over the checkpoint's whole message list and asserts the accumulated states are equal.
12
+ */
13
+ export declare class L1ToL2MessageSponge {
14
+ /** Sponge accumulating the absorbed message leaves. */
15
+ readonly sponge: Poseidon2Sponge;
16
+ /** Number of message leaves absorbed so far. */
17
+ numAbsorbed: number;
18
+ constructor(
19
+ /** Sponge accumulating the absorbed message leaves. */
20
+ sponge: Poseidon2Sponge,
21
+ /** Number of message leaves absorbed so far. */
22
+ numAbsorbed: number);
23
+ /** A fresh, empty sponge (matching noir's `L1ToL2MessageSponge::new()` / `empty()`, i.e. `Poseidon2Sponge::new(0)`). */
24
+ static empty(): L1ToL2MessageSponge;
25
+ /** Absorb the given message leaves in order. */
26
+ absorb(leaves: Fr[]): Promise<void>;
27
+ clone(): L1ToL2MessageSponge;
28
+ static getFields(fields: FieldsOf<L1ToL2MessageSponge>): readonly [Poseidon2Sponge, number];
29
+ toBuffer(): Buffer<ArrayBufferLike>;
30
+ static fromBuffer(buffer: Buffer | BufferReader): L1ToL2MessageSponge;
31
+ toFields(): Fr[];
32
+ static fromFields(fields: Fr[] | FieldReader): L1ToL2MessageSponge;
33
+ }
34
+ /**
35
+ * Accumulates a fresh message sponge over `leaves`, in order. This is the value the inbox parity proof commits to and
36
+ * the checkpoint's block roots reach, starting from the empty sponge. Every leaf passed in is absorbed, so any padding
37
+ * the caller includes is part of the accumulated state.
38
+ */
39
+ export declare function accumulateL1ToL2MessageSponge(leaves: Fr[]): Promise<L1ToL2MessageSponge>;
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDFfdG9fbDJfbWVzc2FnZV9zcG9uZ2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXNzYWdpbmcvbDFfdG9fbDJfbWVzc2FnZV9zcG9uZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBd0MsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV4RDs7Ozs7OztHQU9HO0FBQ0gscUJBQWEsbUJBQW1CO0lBRTVCLHVEQUF1RDthQUN2QyxNQUFNLEVBQUUsZUFBZTtJQUN2QyxnREFBZ0Q7SUFDekMsV0FBVyxFQUFFLE1BQU07SUFKNUI7SUFDRSx1REFBdUQ7SUFDdkMsTUFBTSxFQUFFLGVBQWU7SUFDdkMsZ0RBQWdEO0lBQ3pDLFdBQVcsRUFBRSxNQUFNLEVBQ3hCO0lBRUosd0hBQXdIO0lBQ3hILE1BQU0sQ0FBQyxLQUFLLElBQUksbUJBQW1CLENBRWxDO0lBRUQsZ0RBQWdEO0lBQzFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLGlCQUd4QjtJQUVELEtBQUssd0JBRUo7SUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsbUJBQW1CLENBQUMsc0NBRXJEO0lBRUQsUUFBUSw0QkFFUDtJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxZQUFZLEdBQUcsbUJBQW1CLENBR3BFO0lBRUQsUUFBUSxJQUFJLEVBQUUsRUFBRSxDQUVmO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsV0FBVyxHQUFHLG1CQUFtQixDQUdqRTtDQUNGO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFzQiw2QkFBNkIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBSTlGIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"l1_to_l2_message_sponge.d.ts","sourceRoot":"","sources":["../../src/messaging/l1_to_l2_message_sponge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAwC,MAAM,6BAA6B,CAAC;AAC9G,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD;;;;;;;GAOG;AACH,qBAAa,mBAAmB;IAE5B,uDAAuD;aACvC,MAAM,EAAE,eAAe;IACvC,gDAAgD;IACzC,WAAW,EAAE,MAAM;IAJ5B;IACE,uDAAuD;IACvC,MAAM,EAAE,eAAe;IACvC,gDAAgD;IACzC,WAAW,EAAE,MAAM,EACxB;IAEJ,wHAAwH;IACxH,MAAM,CAAC,KAAK,IAAI,mBAAmB,CAElC;IAED,gDAAgD;IAC1C,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,iBAGxB;IAED,KAAK,wBAEJ;IAED,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,mBAAmB,CAAC,sCAErD;IAED,QAAQ,4BAEP;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,mBAAmB,CAGpE;IAED,QAAQ,IAAI,EAAE,EAAE,CAEf;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,GAAG,mBAAmB,CAGjE;CACF;AAED;;;;GAIG;AACH,wBAAsB,6BAA6B,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAI9F"}
@@ -0,0 +1,56 @@
1
+ import { Poseidon2Sponge } from '@aztec/blob-lib/types';
2
+ import { BufferReader, FieldReader, serializeToBuffer, serializeToFields } from '@aztec/foundation/serialize';
3
+ /**
4
+ * An absorb-only Poseidon2 sponge over L1-to-L2 message leaves.
5
+ *
6
+ * Mirrors `L1ToL2MessageSponge` in
7
+ * `noir-projects/fnd/noir-protocol-circuits/crates/rollup-lib/src/abis/l1_to_l2_message_sponge.nr`. Each block of a
8
+ * checkpoint absorbs its message bundle into the sponge it inherited from the previous block; the checkpoint root
9
+ * recomputes the sponge over the checkpoint's whole message list and asserts the accumulated states are equal.
10
+ */ export class L1ToL2MessageSponge {
11
+ sponge;
12
+ numAbsorbed;
13
+ constructor(/** Sponge accumulating the absorbed message leaves. */ sponge, /** Number of message leaves absorbed so far. */ numAbsorbed){
14
+ this.sponge = sponge;
15
+ this.numAbsorbed = numAbsorbed;
16
+ }
17
+ /** A fresh, empty sponge (matching noir's `L1ToL2MessageSponge::new()` / `empty()`, i.e. `Poseidon2Sponge::new(0)`). */ static empty() {
18
+ return new L1ToL2MessageSponge(Poseidon2Sponge.empty(), 0);
19
+ }
20
+ /** Absorb the given message leaves in order. */ async absorb(leaves) {
21
+ await this.sponge.absorb(leaves);
22
+ this.numAbsorbed += leaves.length;
23
+ }
24
+ clone() {
25
+ return L1ToL2MessageSponge.fromBuffer(this.toBuffer());
26
+ }
27
+ static getFields(fields) {
28
+ return [
29
+ fields.sponge,
30
+ fields.numAbsorbed
31
+ ];
32
+ }
33
+ toBuffer() {
34
+ return serializeToBuffer(...L1ToL2MessageSponge.getFields(this));
35
+ }
36
+ static fromBuffer(buffer) {
37
+ const reader = BufferReader.asReader(buffer);
38
+ return new L1ToL2MessageSponge(reader.readObject(Poseidon2Sponge), reader.readNumber());
39
+ }
40
+ toFields() {
41
+ return serializeToFields(...L1ToL2MessageSponge.getFields(this));
42
+ }
43
+ static fromFields(fields) {
44
+ const reader = FieldReader.asReader(fields);
45
+ return new L1ToL2MessageSponge(reader.readObject(Poseidon2Sponge), reader.readField().toNumber());
46
+ }
47
+ }
48
+ /**
49
+ * Accumulates a fresh message sponge over `leaves`, in order. This is the value the inbox parity proof commits to and
50
+ * the checkpoint's block roots reach, starting from the empty sponge. Every leaf passed in is absorbed, so any padding
51
+ * the caller includes is part of the accumulated state.
52
+ */ export async function accumulateL1ToL2MessageSponge(leaves) {
53
+ const sponge = L1ToL2MessageSponge.empty();
54
+ await sponge.absorb(leaves);
55
+ return sponge;
56
+ }
@@ -1,4 +1,4 @@
1
- import type { ABIParameter, ABIParameterVisibility, AbiErrorType, AbiNamedValue, AbiType, AbiValue, DebugFileMap, DebugInfo } from '../abi/abi.js';
1
+ import type { ABIParameter, ABIParameterVisibility, AbiErrorType, AbiNamedValue, AbiType, DebugFileMap, DebugInfo } from '../abi/abi.js';
2
2
  export declare const AZTEC_PRIVATE_ATTRIBUTE = "abi_private";
3
3
  export declare const AZTEC_PUBLIC_ATTRIBUTE = "abi_public";
4
4
  export declare const AZTEC_UTILITY_ATTRIBUTE = "abi_utility";
@@ -61,7 +61,7 @@ export interface NoirCompiledContract {
61
61
  /** The events of the contract */
62
62
  outputs: {
63
63
  structs: Record<string, AbiType[]>;
64
- globals: Record<string, (AbiNamedValue | AbiValue)[]>;
64
+ globals: Record<string, AbiNamedValue[]>;
65
65
  };
66
66
  /** The map of file ID to the source code and path of the file. */
67
67
  file_map: DebugFileMap;
@@ -144,4 +144,4 @@ export declare function isNoirContractCompilationArtifacts(artifact: NoirCompila
144
144
  */
145
145
  export declare function isNoirProgramCompilationArtifacts(artifact: NoirCompilationResult): artifact is NoirProgramCompilationArtifacts;
146
146
  export {};
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2lyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUNWLFlBQVksRUFDWixzQkFBc0IsRUFDdEIsWUFBWSxFQUNaLGFBQWEsRUFDYixPQUFPLEVBQ1AsUUFBUSxFQUNSLFlBQVksRUFDWixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsZUFBTyxNQUFNLHVCQUF1QixnQkFBZ0IsQ0FBQztBQUNyRCxlQUFPLE1BQU0sc0JBQXNCLGVBQWUsQ0FBQztBQUNuRCxlQUFPLE1BQU0sdUJBQXVCLGdCQUFnQixDQUFDO0FBQ3JELGVBQU8sTUFBTSx5QkFBeUIsa0JBQWtCLENBQUM7QUFDekQsZUFBTyxNQUFNLDJCQUEyQixvQkFBb0IsQ0FBQztBQUM3RCxlQUFPLE1BQU0sb0JBQW9CLGFBQWEsQ0FBQztBQUUvQyx1Q0FBdUM7QUFDdkMsTUFBTSxXQUFXLGVBQWU7SUFDOUIsc0NBQXNDO0lBQ3RDLFVBQVUsRUFBRSxZQUFZLEVBQUUsQ0FBQztJQUMzQixtRUFBbUU7SUFDbkUsV0FBVyxFQUFFO1FBQ1g7O1dBRUc7UUFDSCxRQUFRLEVBQUUsT0FBTyxDQUFDO1FBQ2xCOztXQUVHO1FBQ0gsVUFBVSxFQUFFLHNCQUFzQixDQUFDO0tBQ3BDLEdBQUcsSUFBSSxDQUFDO0lBQ1QsOENBQThDO0lBQzlDLFdBQVcsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO0NBQ3BEO0FBRUQ7O0dBRUc7QUFDSCxVQUFVLGlCQUFpQjtJQUN6QixnQ0FBZ0M7SUFDaEMsSUFBSSxFQUFFLE1BQU0sQ0FBQztJQUNiLDZDQUE2QztJQUM3QyxnQkFBZ0IsRUFBRSxPQUFPLENBQUM7SUFDMUIsNkNBQTZDO0lBQzdDLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQzVCLCtCQUErQjtJQUMvQixHQUFHLEVB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
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2lyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUNWLFlBQVksRUFDWixzQkFBc0IsRUFDdEIsWUFBWSxFQUNaLGFBQWEsRUFDYixPQUFPLEVBQ1AsWUFBWSxFQUNaLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixlQUFPLE1BQU0sdUJBQXVCLGdCQUFnQixDQUFDO0FBQ3JELGVBQU8sTUFBTSxzQkFBc0IsZUFBZSxDQUFDO0FBQ25ELGVBQU8sTUFBTSx1QkFBdUIsZ0JBQWdCLENBQUM7QUFDckQsZUFBTyxNQUFNLHlCQUF5QixrQkFBa0IsQ0FBQztBQUN6RCxlQUFPLE1BQU0sMkJBQTJCLG9CQUFvQixDQUFDO0FBQzdELGVBQU8sTUFBTSxvQkFBb0IsYUFBYSxDQUFDO0FBRS9DLHVDQUF1QztBQUN2QyxNQUFNLFdBQVcsZUFBZTtJQUM5QixzQ0FBc0M7SUFDdEMsVUFBVSxFQUFFLFlBQVksRUFBRSxDQUFDO0lBQzNCLG1FQUFtRTtJQUNuRSxXQUFXLEVBQUU7UUFDWDs7V0FFRztRQUNILFFBQVEsRUFBRSxPQUFPLENBQUM7UUFDbEI7O1dBRUc7UUFDSCxVQUFVLEVBQUUsc0JBQXNCLENBQUM7S0FDcEMsR0FBRyxJQUFJLENBQUM7SUFDVCw4Q0FBOEM7SUFDOUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7Q0FDcEQ7QUFFRDs7R0FFRztBQUNILFVBQVUsaUJBQWlCO0lBQ3pCLGdDQUFnQztJQUNoQyxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ2IsNkNBQTZDO0lBQzdDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQztJQUMxQiw2Q0FBNkM7SUFDN0MsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDNUIsK0JBQStCO0lBQy9CLEdBQUcsRUFBRSxlQUFlLENB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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/noir/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/noir/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,OAAO,EACP,YAAY,EACZ,SAAS,EACV,MAAM,eAAe,CAAC;AAEvB,eAAO,MAAM,uBAAuB,gBAAgB,CAAC;AACrD,eAAO,MAAM,sBAAsB,eAAe,CAAC;AACnD,eAAO,MAAM,uBAAuB,gBAAgB,CAAC;AACrD,eAAO,MAAM,yBAAyB,kBAAkB,CAAC;AACzD,eAAO,MAAM,2BAA2B,oBAAoB,CAAC;AAC7D,eAAO,MAAM,oBAAoB,aAAa,CAAC;AAE/C,uCAAuC;AACvC,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,mEAAmE;IACnE,WAAW,EAAE;QACX;;WAEG;QACH,QAAQ,EAAE,OAAO,CAAC;QAClB;;WAEG;QACH,UAAU,EAAE,sBAAsB,CAAC;KACpC,GAAG,IAAI,CAAC;IACT,8CAA8C;IAC9C,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;CACpD;AAED;;GAEG;AACH,UAAU,iBAAiB;IACzB,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,6CAA6C;IAC7C,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,+BAA+B;IAC/B,GAAG,EAAE,eAAe,CAAC;IACrB,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4DAA4D;IAC5D,aAAa,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qCAAqC;IACrC,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,iCAAiC;IACjC,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;KAC1C,CAAC;IACF,kEAAkE;IAClE,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,GAAG,EAAE,eAAe,CAAC;IACrB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,eAAe,EAAE;QACf,yBAAyB;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,iCAAiC;QACjC,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,4BAA4B;QAC5B,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,4DAA4D;IAC5D,aAAa,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED,MAAM,WAAW,2BAA4B,SAAQ,mBAAmB;IACtE,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,aAAa,EAAE,SAAS,EAAE,CAAC;IAC3B;;OAEG;IACH,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gCAAgC;IAC/C;;OAEG;IACH,QAAQ,EAAE,oBAAoB,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,OAAO,EAAE,mBAAmB,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,gCAAgC,GAAG,+BAA+B,CAAC;AAEvG;;GAEG;AACH,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,qBAAqB,GAC9B,QAAQ,IAAI,gCAAgC,CAE9C;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,qBAAqB,GAC9B,QAAQ,IAAI,+BAA+B,CAE7C"}
@@ -8,6 +8,7 @@ import type { TypedDataDefinition } from 'viem';
8
8
  import type { L2Block } from '../block/l2_block.js';
9
9
  import type { L2BlockInfo } from '../block/l2_block_info.js';
10
10
  import { type SigningContext } from '../ha-signing/index.js';
11
+ import { InboxBucketRef } from '../messaging/inbox_bucket.js';
11
12
  import { BlockHeader } from '../tx/block_header.js';
12
13
  import { TxHash } from '../tx/index.js';
13
14
  import type { Tx } from '../tx/tx.js';
@@ -38,8 +39,6 @@ export declare class BlockProposal extends Gossipable implements Signable {
38
39
  readonly blockHeader: BlockHeader;
39
40
  /** Index of this block within the checkpoint (0-indexed) */
40
41
  readonly indexWithinCheckpoint: IndexWithinCheckpoint;
41
- /** Hash of L1 to L2 messages for this checkpoint (constant across all blocks in checkpoint) */
42
- readonly inHash: Fr;
43
42
  /** Archive root after this block is applied */
44
43
  readonly archiveRoot: Fr;
45
44
  /** The sequence of transactions in the block */
@@ -50,6 +49,12 @@ export declare class BlockProposal extends Gossipable implements Signable {
50
49
  readonly signatureContext: CoordinationSignatureContext;
51
50
  /** The signed transactions in the block (optional, for DA guarantees) */
52
51
  readonly signedTxs?: SignedTxs | undefined;
52
+ /**
53
+ * Reference to the Inbox bucket this block proposes to consume, when the proposer commits to one. Validators
54
+ * resolve it against their own Inbox view and derive the consumed message bundle from it rather than trusting a
55
+ * proposer-supplied message list. Covered by the proposal signature (part of `getPayloadToSign`).
56
+ */
57
+ readonly bucketRef?: InboxBucketRef | undefined;
53
58
  static p2pTopic: TopicType;
54
59
  readonly primaryType: CoordinationSignatureType;
55
60
  private cachedSender;
@@ -58,8 +63,6 @@ export declare class BlockProposal extends Gossipable implements Signable {
58
63
  blockHeader: BlockHeader,
59
64
  /** Index of this block within the checkpoint (0-indexed) */
60
65
  indexWithinCheckpoint: IndexWithinCheckpoint,
61
- /** Hash of L1 to L2 messages for this checkpoint (constant across all blocks in checkpoint) */
62
- inHash: Fr,
63
66
  /** Archive root after this block is applied */
64
67
  archiveRoot: Fr,
65
68
  /** The sequence of transactions in the block */
@@ -69,7 +72,13 @@ export declare class BlockProposal extends Gossipable implements Signable {
69
72
  /** The signing domain (chainId + rollupAddress) the signature is bound to */
70
73
  signatureContext: CoordinationSignatureContext,
71
74
  /** The signed transactions in the block (optional, for DA guarantees) */
72
- signedTxs?: SignedTxs | undefined);
75
+ signedTxs?: SignedTxs | undefined,
76
+ /**
77
+ * Reference to the Inbox bucket this block proposes to consume, when the proposer commits to one. Validators
78
+ * resolve it against their own Inbox view and derive the consumed message bundle from it rather than trusting a
79
+ * proposer-supplied message list. Covered by the proposal signature (part of `getPayloadToSign`).
80
+ */
81
+ bucketRef?: InboxBucketRef | undefined);
73
82
  generateP2PMessageIdentifier(): Promise<BaseBuffer32>;
74
83
  get archive(): Fr;
75
84
  get slotNumber(): SlotNumber;
@@ -79,7 +88,9 @@ export declare class BlockProposal extends Gossipable implements Signable {
79
88
  toBlockInfo(): Omit<L2BlockInfo, 'blockNumber'>;
80
89
  /**
81
90
  * Get the payload to sign for this block proposal.
82
- * The signature is over: blockHeader + indexWithinCheckpoint + inHash + archiveRoot + txHashes
91
+ * The signature is over: blockHeader + indexWithinCheckpoint + archiveRoot + txHashes, plus the bucket reference
92
+ * when set. Appending only when set binds the reference to the signature so a relay cannot strip or inject it
93
+ * without breaking recovery.
83
94
  */
84
95
  getPayloadToSign(): Buffer;
85
96
  private getPayloadHashBuffer;
@@ -91,7 +102,7 @@ export declare class BlockProposal extends Gossipable implements Signable {
91
102
  * re-signs of the same payload do not look like equivocation.
92
103
  */
93
104
  getPayloadHash(): BlockProposalHash;
94
- static createProposalFromSigner(blockHeader: BlockHeader, checkpointNumber: CheckpointNumber, indexWithinCheckpoint: IndexWithinCheckpoint, inHash: Fr, archiveRoot: Fr, txHashes: TxHash[], txs: Tx[] | undefined, signatureContext: CoordinationSignatureContext, proposalSigner: (typedData: TypedDataDefinition, context: SigningContext) => Promise<Signature>, txsSigner?: (typedData: TypedDataDefinition, context: SigningContext) => Promise<Signature>): Promise<BlockProposal>;
105
+ static createProposalFromSigner(blockHeader: BlockHeader, checkpointNumber: CheckpointNumber, indexWithinCheckpoint: IndexWithinCheckpoint, archiveRoot: Fr, txHashes: TxHash[], txs: Tx[] | undefined, signatureContext: CoordinationSignatureContext, proposalSigner: (typedData: TypedDataDefinition, context: SigningContext) => Promise<Signature>, txsSigner?: (typedData: TypedDataDefinition, context: SigningContext) => Promise<Signature>, bucketRef?: InboxBucketRef): Promise<BlockProposal>;
95
106
  /**
96
107
  * Lazily evaluate the sender of the proposal; result is cached.
97
108
  * If there's signedTxs, also verifies that its signing domain matches this proposal's and
@@ -131,12 +142,16 @@ export declare class BlockProposal extends Gossipable implements Signable {
131
142
  totalManaUsed: bigint;
132
143
  };
133
144
  indexWithinCheckpoint: IndexWithinCheckpoint;
134
- inHash: `0x${string}`;
135
145
  archiveRoot: `0x${string}`;
136
146
  signature: `0x${string}`;
137
147
  txHashes: `0x${string}`[];
138
148
  chainId: number;
139
149
  rollupAddress: `0x${string}`;
150
+ bucketRef: {
151
+ bucketSeq: string;
152
+ bucketTimestamp: string;
153
+ inboxRollingHash: `0x${string}`;
154
+ } | undefined;
140
155
  };
141
156
  /**
142
157
  * Check if this proposal matches the given block.
@@ -151,4 +166,4 @@ export declare class BlockProposal extends Gossipable implements Signable {
151
166
  */
152
167
  withoutSignedTxs(): BlockProposal;
153
168
  }
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfcHJvcG9zYWwuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wMnAvYmxvY2tfcHJvcG9zYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsS0FBSyxnQkFBZ0IsRUFDckIscUJBQXFCLEVBQ3JCLFVBQVUsRUFDWCxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLFlBQVksRUFBWSxNQUFNLDBCQUEwQixDQUFDO0FBRXZFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBcUIsTUFBTSw2QkFBNkIsQ0FBQztBQUU5RSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoRCxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RCxPQUFPLEVBQVksS0FBSyxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUNMLEtBQUssNEJBQTRCLEVBQ2pDLEtBQUsseUJBQXlCLEVBRTlCLEtBQUssUUFBUSxFQU1kLE1BQU0sc0JBQXNCLENBQUM7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
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfcHJvcG9zYWwuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wMnAvYmxvY2tfcHJvcG9zYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsS0FBSyxnQkFBZ0IsRUFDckIscUJBQXFCLEVBQ3JCLFVBQVUsRUFDWCxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLFlBQVksRUFBWSxNQUFNLDBCQUEwQixDQUFDO0FBRXZFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBcUIsTUFBTSw2QkFBNkIsQ0FBQztBQUU5RSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoRCxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RCxPQUFPLEVBQVksS0FBSyxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFDTCxLQUFLLDRCQUE0QixFQUNqQyxLQUFLLHlC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
@@ -1 +1 @@
1
- {"version":3,"file":"block_proposal.d.ts","sourceRoot":"","sources":["../../src/p2p/block_proposal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"block_proposal.d.ts","sourceRoot":"","sources":["../../src/p2p/block_proposal.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ import { Signature } from '@aztec/foundation/eth-signature';
6
6
  import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
7
7
  import { MAX_TXS_PER_BLOCK } from '../deserialization/index.js';
8
8
  import { DutyType } from '../ha-signing/index.js';
9
+ import { InboxBucketRef } from '../messaging/inbox_bucket.js';
9
10
  import { BlockHeader } from '../tx/block_header.js';
10
11
  import { TxHash } from '../tx/index.js';
11
12
  import { Gossipable } from './gossipable.js';
@@ -19,17 +20,21 @@ import { TopicType } from './topic_type.js';
19
20
  */ export class BlockProposal extends Gossipable {
20
21
  blockHeader;
21
22
  indexWithinCheckpoint;
22
- inHash;
23
23
  archiveRoot;
24
24
  txHashes;
25
25
  signature;
26
26
  signatureContext;
27
27
  signedTxs;
28
+ bucketRef;
28
29
  static p2pTopic = TopicType.block_proposal;
29
30
  primaryType;
30
31
  cachedSender;
31
- constructor(/** The per-block header containing block state and global variables */ blockHeader, /** Index of this block within the checkpoint (0-indexed) */ indexWithinCheckpoint, /** Hash of L1 to L2 messages for this checkpoint (constant across all blocks in checkpoint) */ inHash, /** Archive root after this block is applied */ archiveRoot, /** The sequence of transactions in the block */ txHashes, /** The proposer's signature over the block data */ signature, /** The signing domain (chainId + rollupAddress) the signature is bound to */ signatureContext, /** The signed transactions in the block (optional, for DA guarantees) */ signedTxs){
32
- super(), this.blockHeader = blockHeader, this.indexWithinCheckpoint = indexWithinCheckpoint, this.inHash = inHash, this.archiveRoot = archiveRoot, this.txHashes = txHashes, this.signature = signature, this.signatureContext = signatureContext, this.signedTxs = signedTxs, this.primaryType = 'BlockProposal', this.cachedSender = undefined;
32
+ constructor(/** The per-block header containing block state and global variables */ blockHeader, /** Index of this block within the checkpoint (0-indexed) */ indexWithinCheckpoint, /** Archive root after this block is applied */ archiveRoot, /** The sequence of transactions in the block */ txHashes, /** The proposer's signature over the block data */ signature, /** The signing domain (chainId + rollupAddress) the signature is bound to */ signatureContext, /** The signed transactions in the block (optional, for DA guarantees) */ signedTxs, /**
33
+ * Reference to the Inbox bucket this block proposes to consume, when the proposer commits to one. Validators
34
+ * resolve it against their own Inbox view and derive the consumed message bundle from it rather than trusting a
35
+ * proposer-supplied message list. Covered by the proposal signature (part of `getPayloadToSign`).
36
+ */ bucketRef){
37
+ super(), this.blockHeader = blockHeader, this.indexWithinCheckpoint = indexWithinCheckpoint, this.archiveRoot = archiveRoot, this.txHashes = txHashes, this.signature = signature, this.signatureContext = signatureContext, this.signedTxs = signedTxs, this.bucketRef = bucketRef, this.primaryType = 'BlockProposal', this.cachedSender = undefined;
33
38
  }
34
39
  generateP2PMessageIdentifier() {
35
40
  return Promise.resolve(new Buffer32(this.getPayloadHashBuffer()));
@@ -57,15 +62,19 @@ import { TopicType } from './topic_type.js';
57
62
  }
58
63
  /**
59
64
  * Get the payload to sign for this block proposal.
60
- * The signature is over: blockHeader + indexWithinCheckpoint + inHash + archiveRoot + txHashes
65
+ * The signature is over: blockHeader + indexWithinCheckpoint + archiveRoot + txHashes, plus the bucket reference
66
+ * when set. Appending only when set binds the reference to the signature so a relay cannot strip or inject it
67
+ * without breaking recovery.
61
68
  */ getPayloadToSign() {
62
69
  return serializeToBuffer([
63
70
  this.blockHeader,
64
71
  this.indexWithinCheckpoint,
65
- this.inHash,
66
72
  this.archiveRoot,
67
73
  this.txHashes.length,
68
- this.txHashes
74
+ this.txHashes,
75
+ ...this.bucketRef ? [
76
+ this.bucketRef
77
+ ] : []
69
78
  ]);
70
79
  }
71
80
  getPayloadHashBuffer() {
@@ -80,9 +89,9 @@ import { TopicType } from './topic_type.js';
80
89
  */ getPayloadHash() {
81
90
  return BlockProposalHash.fromBuffer(this.getPayloadHashBuffer());
82
91
  }
83
- static async createProposalFromSigner(blockHeader, checkpointNumber, indexWithinCheckpoint, inHash, archiveRoot, txHashes, txs, signatureContext, proposalSigner, txsSigner) {
92
+ static async createProposalFromSigner(blockHeader, checkpointNumber, indexWithinCheckpoint, archiveRoot, txHashes, txs, signatureContext, proposalSigner, txsSigner, bucketRef) {
84
93
  // Create a temporary proposal to get the payload to sign
85
- const tempProposal = new BlockProposal(blockHeader, indexWithinCheckpoint, inHash, archiveRoot, txHashes, Signature.empty(), signatureContext);
94
+ const tempProposal = new BlockProposal(blockHeader, indexWithinCheckpoint, archiveRoot, txHashes, Signature.empty(), signatureContext, undefined, bucketRef);
86
95
  // Create the block signing context
87
96
  const blockContext = {
88
97
  slot: blockHeader.globalVariables.slotNumber,
@@ -104,7 +113,7 @@ import { TopicType } from './topic_type.js';
104
113
  }
105
114
  signedTxs = await SignedTxs.createFromSigner(txs, signatureContext, (typedData)=>txsSigner(typedData, txsSigningContext));
106
115
  }
107
- return new BlockProposal(blockHeader, indexWithinCheckpoint, inHash, archiveRoot, txHashes, sig, signatureContext, signedTxs);
116
+ return new BlockProposal(blockHeader, indexWithinCheckpoint, archiveRoot, txHashes, sig, signatureContext, signedTxs, bucketRef);
108
117
  }
109
118
  /**
110
119
  * Lazily evaluate the sender of the proposal; result is cached.
@@ -137,7 +146,6 @@ import { TopicType } from './topic_type.js';
137
146
  const buffer = [
138
147
  this.blockHeader,
139
148
  this.indexWithinCheckpoint,
140
- this.inHash,
141
149
  this.archiveRoot,
142
150
  this.signature,
143
151
  serializeCoordinationSignatureContext(this.signatureContext),
@@ -150,13 +158,18 @@ import { TopicType } from './topic_type.js';
150
158
  } else {
151
159
  buffer.push(0); // hasSignedTxs = false
152
160
  }
161
+ // Optional bucket-reference tail. Appended only when set, so a proposal without a reference
162
+ // serializes without the tail and a decoder that reaches EOF reads it as unset.
163
+ if (this.bucketRef) {
164
+ buffer.push(1); // hasBucketRef = true
165
+ buffer.push(this.bucketRef.toBuffer());
166
+ }
153
167
  return serializeToBuffer(buffer);
154
168
  }
155
169
  static fromBuffer(buf) {
156
170
  const reader = BufferReader.asReader(buf);
157
171
  const blockHeader = reader.readObject(BlockHeader);
158
172
  const indexWithinCheckpoint = IndexWithinCheckpoint(reader.readNumber());
159
- const inHash = reader.readObject(Fr);
160
173
  const archiveRoot = reader.readObject(Fr);
161
174
  const signature = reader.readObject(Signature);
162
175
  const signatureContext = readCoordinationSignatureContext(reader);
@@ -165,23 +178,32 @@ import { TopicType } from './topic_type.js';
165
178
  throw new Error(`txHashes count ${txHashCount} exceeds maximum ${MAX_TXS_PER_BLOCK}`);
166
179
  }
167
180
  const txHashes = reader.readArray(txHashCount, TxHash);
181
+ let signedTxs;
168
182
  if (!reader.isEmpty()) {
169
183
  const hasSignedTxs = reader.readNumber();
170
184
  if (hasSignedTxs) {
171
- const signedTxs = SignedTxs.fromBuffer(reader);
172
- return new BlockProposal(blockHeader, indexWithinCheckpoint, inHash, archiveRoot, txHashes, signature, signatureContext, signedTxs);
185
+ signedTxs = SignedTxs.fromBuffer(reader);
186
+ }
187
+ }
188
+ // Optional bucket-reference tail. A buffer that ends after the signedTxs flag decodes as
189
+ // "no reference", so proposals written without the tail round-trip cleanly.
190
+ let bucketRef;
191
+ if (!reader.isEmpty()) {
192
+ const hasBucketRef = reader.readNumber();
193
+ if (hasBucketRef) {
194
+ bucketRef = InboxBucketRef.fromBuffer(reader);
173
195
  }
174
196
  }
175
- return new BlockProposal(blockHeader, indexWithinCheckpoint, inHash, archiveRoot, txHashes, signature, signatureContext);
197
+ return new BlockProposal(blockHeader, indexWithinCheckpoint, archiveRoot, txHashes, signature, signatureContext, signedTxs, bucketRef);
176
198
  }
177
199
  getSize() {
178
- return this.blockHeader.getSize() + 4 /* indexWithinCheckpoint */ + this.inHash.size + this.archiveRoot.size + this.signature.getSize() + 4 /* chainId */ + 20 /* rollupAddress */ + 4 /* txHashes.length */ + this.txHashes.length * TxHash.SIZE + 4 /* hasSignedTxs flag */ + (this.signedTxs ? this.signedTxs.getSize() : 0);
200
+ return this.blockHeader.getSize() + 4 /* indexWithinCheckpoint */ + this.archiveRoot.size + this.signature.getSize() + 4 /* chainId */ + 20 /* rollupAddress */ + 4 /* txHashes.length */ + this.txHashes.length * TxHash.SIZE + 4 /* hasSignedTxs flag */ + (this.signedTxs ? this.signedTxs.getSize() : 0) + (this.bucketRef ? 4 /* hasBucketRef flag */ + this.bucketRef.getSize() : 0);
179
201
  }
180
202
  static empty() {
181
- return new BlockProposal(BlockHeader.empty(), IndexWithinCheckpoint(0), Fr.ZERO, Fr.ZERO, [], Signature.empty(), EMPTY_COORDINATION_SIGNATURE_CONTEXT);
203
+ return new BlockProposal(BlockHeader.empty(), IndexWithinCheckpoint(0), Fr.ZERO, [], Signature.empty(), EMPTY_COORDINATION_SIGNATURE_CONTEXT);
182
204
  }
183
205
  static random() {
184
- return new BlockProposal(BlockHeader.random(), IndexWithinCheckpoint(Math.floor(Math.random() * 5)), Fr.random(), Fr.random(), [
206
+ return new BlockProposal(BlockHeader.random(), IndexWithinCheckpoint(Math.floor(Math.random() * 5)), Fr.random(), [
185
207
  TxHash.random(),
186
208
  TxHash.random()
187
209
  ], Signature.random(), EMPTY_COORDINATION_SIGNATURE_CONTEXT);
@@ -190,12 +212,12 @@ import { TopicType } from './topic_type.js';
190
212
  return {
191
213
  blockHeader: this.blockHeader.toInspect(),
192
214
  indexWithinCheckpoint: this.indexWithinCheckpoint,
193
- inHash: this.inHash.toString(),
194
215
  archiveRoot: this.archiveRoot.toString(),
195
216
  signature: this.signature.toString(),
196
217
  txHashes: this.txHashes.map((h)=>h.toString()),
197
218
  chainId: this.signatureContext.chainId,
198
- rollupAddress: this.signatureContext.rollupAddress.toString()
219
+ rollupAddress: this.signatureContext.rollupAddress.toString(),
220
+ bucketRef: this.bucketRef?.toInspect()
199
221
  };
200
222
  }
201
223
  /**
@@ -210,6 +232,6 @@ import { TopicType } from './topic_type.js';
210
232
  * Returns a copy of this proposal without signedTxs.
211
233
  * Used when storing proposals in attestation pool to avoid storing full tx data.
212
234
  */ withoutSignedTxs() {
213
- return new BlockProposal(this.blockHeader, this.indexWithinCheckpoint, this.inHash, this.archiveRoot, this.txHashes, this.signature, this.signatureContext);
235
+ return new BlockProposal(this.blockHeader, this.indexWithinCheckpoint, this.archiveRoot, this.txHashes, this.signature, this.signatureContext, undefined, this.bucketRef);
214
236
  }
215
237
  }