@aztec/stdlib 3.0.0-canary.a9708bd → 3.0.0-devnet.2

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 (633) hide show
  1. package/dest/abi/abi.d.ts +8 -8
  2. package/dest/abi/abi.js +1 -1
  3. package/dest/abi/contract_artifact.js +3 -0
  4. package/dest/abi/event_metadata_definition.d.ts +8 -0
  5. package/dest/abi/event_metadata_definition.d.ts.map +1 -0
  6. package/dest/abi/event_metadata_definition.js +1 -0
  7. package/dest/abi/function_call.d.ts +7 -2
  8. package/dest/abi/function_call.d.ts.map +1 -1
  9. package/dest/abi/function_call.js +6 -2
  10. package/dest/abi/index.d.ts +1 -0
  11. package/dest/abi/index.d.ts.map +1 -1
  12. package/dest/abi/index.js +1 -0
  13. package/dest/avm/avm.d.ts +132 -73
  14. package/dest/avm/avm.d.ts.map +1 -1
  15. package/dest/avm/avm.js +10 -6
  16. package/dest/avm/avm_accumulated_data.d.ts +10 -21
  17. package/dest/avm/avm_accumulated_data.d.ts.map +1 -1
  18. package/dest/avm/avm_accumulated_data.js +19 -22
  19. package/dest/avm/avm_circuit_public_inputs.d.ts +30 -13
  20. package/dest/avm/avm_circuit_public_inputs.d.ts.map +1 -1
  21. package/dest/avm/avm_circuit_public_inputs.js +17 -6
  22. package/dest/avm/avm_proving_request.d.ts +96 -48
  23. package/dest/avm/avm_proving_request.d.ts.map +1 -1
  24. package/dest/avm/index.d.ts +1 -1
  25. package/dest/avm/index.d.ts.map +1 -1
  26. package/dest/avm/index.js +1 -1
  27. package/dest/avm/message_pack.d.ts +1 -0
  28. package/dest/avm/message_pack.d.ts.map +1 -1
  29. package/dest/avm/message_pack.js +28 -5
  30. package/dest/block/attestation_info.d.ts +30 -0
  31. package/dest/block/attestation_info.d.ts.map +1 -0
  32. package/dest/block/attestation_info.js +39 -0
  33. package/dest/block/body.d.ts +4 -1
  34. package/dest/block/body.d.ts.map +1 -1
  35. package/dest/block/body.js +17 -15
  36. package/dest/block/in_block.d.ts +5 -5
  37. package/dest/block/in_block.d.ts.map +1 -1
  38. package/dest/block/index.d.ts +4 -0
  39. package/dest/block/index.d.ts.map +1 -1
  40. package/dest/block/index.js +4 -0
  41. package/dest/block/l2_block.d.ts +21 -13
  42. package/dest/block/l2_block.d.ts.map +1 -1
  43. package/dest/block/l2_block.js +33 -10
  44. package/dest/block/l2_block_code_to_purge.d.ts +3 -14
  45. package/dest/block/l2_block_code_to_purge.d.ts.map +1 -1
  46. package/dest/block/l2_block_code_to_purge.js +23 -13
  47. package/dest/block/l2_block_header.d.ts +100 -0
  48. package/dest/block/l2_block_header.d.ts.map +1 -0
  49. package/dest/block/l2_block_header.js +146 -0
  50. package/dest/block/l2_block_info.d.ts +41 -0
  51. package/dest/block/l2_block_info.d.ts.map +1 -0
  52. package/dest/block/l2_block_info.js +40 -0
  53. package/dest/block/l2_block_source.d.ts +30 -428
  54. package/dest/block/l2_block_source.d.ts.map +1 -1
  55. package/dest/block/l2_block_source.js +0 -28
  56. package/dest/block/l2_block_stream/l2_tips_memory_store.js +1 -1
  57. package/dest/block/proposal/attestations_and_signers.d.ts +48 -0
  58. package/dest/block/proposal/attestations_and_signers.d.ts.map +1 -0
  59. package/dest/block/proposal/attestations_and_signers.js +99 -0
  60. package/dest/block/proposal/index.d.ts +1 -0
  61. package/dest/block/proposal/index.d.ts.map +1 -1
  62. package/dest/block/proposal/index.js +1 -0
  63. package/dest/block/published_l2_block.d.ts +27 -5
  64. package/dest/block/published_l2_block.d.ts.map +1 -1
  65. package/dest/block/published_l2_block.js +20 -7
  66. package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -1
  67. package/dest/block/test/l2_tips_store_test_suite.js +3 -4
  68. package/dest/block/validate_block_result.d.ts +222 -0
  69. package/dest/block/validate_block_result.d.ts.map +1 -0
  70. package/dest/block/validate_block_result.js +83 -0
  71. package/dest/checkpoint/checkpoint_body.d.ts +4 -0
  72. package/dest/checkpoint/checkpoint_body.d.ts.map +1 -0
  73. package/dest/checkpoint/checkpoint_body.js +9 -0
  74. package/dest/checkpoint/index.d.ts +2 -0
  75. package/dest/checkpoint/index.d.ts.map +1 -0
  76. package/dest/checkpoint/index.js +1 -0
  77. package/dest/config/node-rpc-config.d.ts +2 -0
  78. package/dest/config/node-rpc-config.d.ts.map +1 -1
  79. package/dest/config/node-rpc-config.js +6 -0
  80. package/dest/contract/contract_address.d.ts +1 -1
  81. package/dest/contract/contract_address.js +1 -1
  82. package/dest/contract/contract_class_metadata.d.ts +8 -0
  83. package/dest/contract/contract_class_metadata.d.ts.map +1 -0
  84. package/dest/contract/contract_class_metadata.js +1 -0
  85. package/dest/contract/contract_instance.d.ts +9 -8
  86. package/dest/contract/contract_instance.d.ts.map +1 -1
  87. package/dest/contract/contract_instance.js +1 -2
  88. package/dest/contract/contract_metadata.d.ts +7 -0
  89. package/dest/contract/contract_metadata.d.ts.map +1 -0
  90. package/dest/contract/contract_metadata.js +1 -0
  91. package/dest/contract/index.d.ts +2 -0
  92. package/dest/contract/index.d.ts.map +1 -1
  93. package/dest/contract/index.js +2 -0
  94. package/dest/contract/interfaces/contract_class.d.ts +4 -4
  95. package/dest/contract/interfaces/contract_instance.d.ts +2 -2
  96. package/dest/epoch-helpers/index.d.ts +8 -2
  97. package/dest/epoch-helpers/index.d.ts.map +1 -1
  98. package/dest/epoch-helpers/index.js +9 -0
  99. package/dest/fees/transaction_fee.d.ts.map +1 -1
  100. package/dest/fees/transaction_fee.js +3 -0
  101. package/dest/file-store/factory.d.ts.map +1 -1
  102. package/dest/file-store/factory.js +18 -0
  103. package/dest/file-store/interface.d.ts +8 -2
  104. package/dest/file-store/interface.d.ts.map +1 -1
  105. package/dest/file-store/s3.d.ts +26 -0
  106. package/dest/file-store/s3.d.ts.map +1 -0
  107. package/dest/file-store/s3.js +252 -0
  108. package/dest/hash/hash.d.ts.map +1 -1
  109. package/dest/hash/hash.js +0 -3
  110. package/dest/interfaces/archiver.d.ts +43 -0
  111. package/dest/interfaces/archiver.d.ts.map +1 -1
  112. package/dest/interfaces/archiver.js +17 -1
  113. package/dest/interfaces/aztec-node-admin.d.ts +87 -40
  114. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  115. package/dest/interfaces/aztec-node-admin.js +7 -1
  116. package/dest/interfaces/aztec-node.d.ts +35 -2
  117. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  118. package/dest/interfaces/aztec-node.js +8 -1
  119. package/dest/interfaces/block-builder.d.ts +7 -8
  120. package/dest/interfaces/block-builder.d.ts.map +1 -1
  121. package/dest/interfaces/client.d.ts +0 -1
  122. package/dest/interfaces/client.d.ts.map +1 -1
  123. package/dest/interfaces/client.js +0 -1
  124. package/dest/interfaces/configs.d.ts +10 -0
  125. package/dest/interfaces/configs.d.ts.map +1 -1
  126. package/dest/interfaces/configs.js +3 -1
  127. package/dest/interfaces/epoch-prover.d.ts +26 -9
  128. package/dest/interfaces/epoch-prover.d.ts.map +1 -1
  129. package/dest/interfaces/merkle_tree_operations.d.ts +5 -0
  130. package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
  131. package/dest/interfaces/p2p.d.ts +2 -0
  132. package/dest/interfaces/p2p.d.ts.map +1 -1
  133. package/dest/interfaces/p2p.js +2 -1
  134. package/dest/interfaces/private_kernel_prover.d.ts +2 -2
  135. package/dest/interfaces/private_kernel_prover.d.ts.map +1 -1
  136. package/dest/interfaces/proving-job.d.ts +349 -200
  137. package/dest/interfaces/proving-job.d.ts.map +1 -1
  138. package/dest/interfaces/proving-job.js +131 -113
  139. package/dest/interfaces/server.d.ts +1 -0
  140. package/dest/interfaces/server.d.ts.map +1 -1
  141. package/dest/interfaces/server.js +1 -0
  142. package/dest/interfaces/server_circuit_prover.d.ts +34 -34
  143. package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
  144. package/dest/interfaces/slasher.d.ts +4 -0
  145. package/dest/interfaces/slasher.d.ts.map +1 -1
  146. package/dest/interfaces/slasher.js +1 -0
  147. package/dest/interfaces/tx_provider.d.ts +1 -1
  148. package/dest/interfaces/tx_provider.d.ts.map +1 -1
  149. package/dest/interfaces/validator.d.ts +163 -0
  150. package/dest/interfaces/validator.d.ts.map +1 -0
  151. package/dest/interfaces/validator.js +18 -0
  152. package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts +3 -2
  153. package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts.map +1 -1
  154. package/dest/kernel/hints/nullifier_read_request_hints.d.ts +4 -3
  155. package/dest/kernel/hints/nullifier_read_request_hints.d.ts.map +1 -1
  156. package/dest/kernel/nullifier.d.ts +2 -2
  157. package/dest/kernel/nullifier.d.ts.map +1 -1
  158. package/dest/kernel/nullifier.js +11 -11
  159. package/dest/kernel/private_call_data.d.ts +4 -24
  160. package/dest/kernel/private_call_data.d.ts.map +1 -1
  161. package/dest/kernel/private_call_data.js +4 -16
  162. package/dest/kernel/private_circuit_public_inputs.d.ts +5 -5
  163. package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
  164. package/dest/kernel/private_circuit_public_inputs.js +7 -7
  165. package/dest/kernel/private_context_inputs.d.ts +2 -2
  166. package/dest/kernel/private_context_inputs.d.ts.map +1 -1
  167. package/dest/kernel/private_context_inputs.js +4 -4
  168. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts +3 -3
  169. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts.map +1 -1
  170. package/dest/kernel/private_kernel_circuit_public_inputs.js +3 -3
  171. package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts +5 -4
  172. package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts.map +1 -1
  173. package/dest/kernel/private_kernel_init_circuit_private_inputs.js +7 -6
  174. package/dest/kernel/private_kernel_prover_output.d.ts +1 -1
  175. package/dest/kernel/private_kernel_prover_output.d.ts.map +1 -1
  176. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts +1 -0
  177. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts.map +1 -1
  178. package/dest/kernel/private_kernel_tail_circuit_public_inputs.js +4 -1
  179. package/dest/kernel/private_to_public_accumulated_data.d.ts +1 -1
  180. package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts +2 -0
  181. package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts.map +1 -1
  182. package/dest/kernel/private_to_public_kernel_circuit_public_inputs.js +7 -0
  183. package/dest/kernel/private_to_rollup_accumulated_data.d.ts +1 -1
  184. package/dest/keys/derivation.d.ts +0 -2
  185. package/dest/keys/derivation.d.ts.map +1 -1
  186. package/dest/keys/derivation.js +1 -21
  187. package/dest/logs/contract_class_log.d.ts +1 -1
  188. package/dest/logs/contract_class_log.d.ts.map +1 -1
  189. package/dest/logs/contract_class_log.js +1 -3
  190. package/dest/logs/debug_log.d.ts +13 -0
  191. package/dest/logs/debug_log.d.ts.map +1 -0
  192. package/dest/logs/debug_log.js +26 -0
  193. package/dest/logs/directional_app_tagging_secret.d.ts +40 -0
  194. package/dest/logs/directional_app_tagging_secret.d.ts.map +1 -0
  195. package/dest/logs/directional_app_tagging_secret.js +64 -0
  196. package/dest/logs/index.d.ts +3 -1
  197. package/dest/logs/index.d.ts.map +1 -1
  198. package/dest/logs/index.js +3 -1
  199. package/dest/logs/log_with_tx_data.d.ts +9 -12
  200. package/dest/logs/log_with_tx_data.d.ts.map +1 -1
  201. package/dest/logs/log_with_tx_data.js +18 -23
  202. package/dest/logs/pre_tag.d.ts +34 -0
  203. package/dest/logs/pre_tag.d.ts.map +1 -0
  204. package/dest/logs/pre_tag.js +7 -0
  205. package/dest/logs/public_log.d.ts +23 -10
  206. package/dest/logs/public_log.d.ts.map +1 -1
  207. package/dest/logs/public_log.js +117 -42
  208. package/dest/messaging/inbox_leaf.d.ts +2 -0
  209. package/dest/messaging/inbox_leaf.d.ts.map +1 -1
  210. package/dest/messaging/inbox_leaf.js +3 -0
  211. package/dest/messaging/l2_to_l1_membership.d.ts +1 -1
  212. package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
  213. package/dest/messaging/l2_to_l1_membership.js +16 -18
  214. package/dest/noir/index.d.ts +11 -0
  215. package/dest/noir/index.d.ts.map +1 -1
  216. package/dest/note/index.d.ts +1 -1
  217. package/dest/note/index.d.ts.map +1 -1
  218. package/dest/note/index.js +1 -1
  219. package/dest/note/notes_filter.d.ts +0 -5
  220. package/dest/note/notes_filter.d.ts.map +1 -1
  221. package/dest/note/notes_filter.js +0 -3
  222. package/dest/note/unique_note.d.ts +43 -0
  223. package/dest/note/unique_note.d.ts.map +1 -0
  224. package/dest/note/{extended_note.js → unique_note.js} +9 -48
  225. package/dest/p2p/block_attestation.d.ts +45 -9
  226. package/dest/p2p/block_attestation.d.ts.map +1 -1
  227. package/dest/p2p/block_attestation.js +37 -15
  228. package/dest/p2p/block_proposal.d.ts +7 -9
  229. package/dest/p2p/block_proposal.d.ts.map +1 -1
  230. package/dest/p2p/block_proposal.js +13 -14
  231. package/dest/p2p/consensus_payload.d.ts +35 -6
  232. package/dest/p2p/consensus_payload.d.ts.map +1 -1
  233. package/dest/p2p/consensus_payload.js +21 -8
  234. package/dest/p2p/gossipable.d.ts +2 -4
  235. package/dest/p2p/gossipable.d.ts.map +1 -1
  236. package/dest/p2p/gossipable.js +5 -14
  237. package/dest/p2p/signature_utils.d.ts +2 -1
  238. package/dest/p2p/signature_utils.d.ts.map +1 -1
  239. package/dest/p2p/signature_utils.js +1 -0
  240. package/dest/parity/index.d.ts +2 -3
  241. package/dest/parity/index.d.ts.map +1 -1
  242. package/dest/parity/index.js +2 -3
  243. package/dest/parity/{base_parity_inputs.d.ts → parity_base_private_inputs.d.ts} +7 -7
  244. package/dest/parity/parity_base_private_inputs.d.ts.map +1 -0
  245. package/dest/parity/{base_parity_inputs.js → parity_base_private_inputs.js} +10 -6
  246. package/dest/parity/parity_root_private_inputs.d.ts +39 -0
  247. package/dest/parity/parity_root_private_inputs.d.ts.map +1 -0
  248. package/dest/parity/{root_parity_inputs.js → parity_root_private_inputs.js} +12 -13
  249. package/dest/proofs/client_ivc_proof.d.ts +17 -7
  250. package/dest/proofs/client_ivc_proof.d.ts.map +1 -1
  251. package/dest/proofs/client_ivc_proof.js +78 -19
  252. package/dest/proofs/index.d.ts +1 -0
  253. package/dest/proofs/index.d.ts.map +1 -1
  254. package/dest/proofs/index.js +1 -0
  255. package/dest/proofs/proof_data.d.ts +21 -0
  256. package/dest/proofs/proof_data.d.ts.map +1 -0
  257. package/dest/proofs/proof_data.js +22 -0
  258. package/dest/proofs/proving_request_type.d.ts +17 -13
  259. package/dest/proofs/proving_request_type.d.ts.map +1 -1
  260. package/dest/proofs/proving_request_type.js +17 -12
  261. package/dest/rollup/avm_proof_data.d.ts +2 -12
  262. package/dest/rollup/avm_proof_data.d.ts.map +1 -1
  263. package/dest/rollup/avm_proof_data.js +0 -24
  264. package/dest/rollup/base_rollup_hints.d.ts +17 -17
  265. package/dest/rollup/base_rollup_hints.d.ts.map +1 -1
  266. package/dest/rollup/base_rollup_hints.js +26 -26
  267. package/dest/rollup/block_constant_data.d.ts +24 -10
  268. package/dest/rollup/block_constant_data.d.ts.map +1 -1
  269. package/dest/rollup/block_constant_data.js +18 -10
  270. package/dest/rollup/{block_merge_rollup.d.ts → block_merge_rollup_private_inputs.d.ts} +17 -10
  271. package/dest/rollup/block_merge_rollup_private_inputs.d.ts.map +1 -0
  272. package/dest/rollup/{block_merge_rollup.js → block_merge_rollup_private_inputs.js} +14 -13
  273. package/dest/rollup/block_rollup_public_inputs.d.ts +124 -0
  274. package/dest/rollup/block_rollup_public_inputs.d.ts.map +1 -0
  275. package/dest/rollup/block_rollup_public_inputs.js +85 -0
  276. package/dest/rollup/block_root_rollup_private_inputs.d.ts +236 -0
  277. package/dest/rollup/block_root_rollup_private_inputs.d.ts.map +1 -0
  278. package/dest/rollup/block_root_rollup_private_inputs.js +257 -0
  279. package/dest/rollup/checkpoint_constant_data.d.ts +54 -0
  280. package/dest/rollup/checkpoint_constant_data.d.ts.map +1 -0
  281. package/dest/rollup/checkpoint_constant_data.js +55 -0
  282. package/dest/{tx/proposed_block_header.d.ts → rollup/checkpoint_header.d.ts} +12 -11
  283. package/dest/rollup/checkpoint_header.d.ts.map +1 -0
  284. package/dest/{tx/proposed_block_header.js → rollup/checkpoint_header.js} +14 -8
  285. package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts +30 -0
  286. package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts.map +1 -0
  287. package/dest/rollup/checkpoint_merge_rollup_private_inputs.js +37 -0
  288. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +106 -0
  289. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -0
  290. package/dest/rollup/checkpoint_rollup_public_inputs.js +108 -0
  291. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts +123 -0
  292. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts.map +1 -0
  293. package/dest/rollup/checkpoint_root_rollup_private_inputs.js +178 -0
  294. package/dest/rollup/epoch_constant_data.d.ts +23 -6
  295. package/dest/rollup/epoch_constant_data.d.ts.map +1 -1
  296. package/dest/rollup/epoch_constant_data.js +25 -12
  297. package/dest/rollup/index.d.ts +17 -16
  298. package/dest/rollup/index.d.ts.map +1 -1
  299. package/dest/rollup/index.js +17 -16
  300. package/dest/rollup/private_tx_base_rollup_private_inputs.d.ts +21 -0
  301. package/dest/rollup/private_tx_base_rollup_private_inputs.d.ts.map +1 -0
  302. package/dest/rollup/private_tx_base_rollup_private_inputs.js +42 -0
  303. package/dest/rollup/public_tube_private_inputs.d.ts +21 -0
  304. package/dest/rollup/public_tube_private_inputs.d.ts.map +1 -0
  305. package/dest/rollup/public_tube_private_inputs.js +42 -0
  306. package/dest/rollup/public_tube_public_inputs.d.ts +20 -0
  307. package/dest/rollup/public_tube_public_inputs.d.ts.map +1 -0
  308. package/dest/rollup/public_tube_public_inputs.js +41 -0
  309. package/dest/rollup/public_tx_base_rollup_private_inputs.d.ts +23 -0
  310. package/dest/rollup/public_tx_base_rollup_private_inputs.d.ts.map +1 -0
  311. package/dest/rollup/public_tx_base_rollup_private_inputs.js +46 -0
  312. package/dest/rollup/root_rollup_private_inputs.d.ts +67 -0
  313. package/dest/rollup/root_rollup_private_inputs.d.ts.map +1 -0
  314. package/dest/rollup/root_rollup_private_inputs.js +69 -0
  315. package/dest/rollup/root_rollup_public_inputs.d.ts +46 -0
  316. package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -0
  317. package/dest/rollup/root_rollup_public_inputs.js +71 -0
  318. package/dest/rollup/{state_diff_hints.d.ts → tree_snapshot_diff_hints.d.ts} +22 -38
  319. package/dest/rollup/tree_snapshot_diff_hints.d.ts.map +1 -0
  320. package/dest/rollup/tree_snapshot_diff_hints.js +75 -0
  321. package/dest/rollup/{merge_rollup.d.ts → tx_merge_rollup_private_inputs.d.ts} +11 -10
  322. package/dest/rollup/tx_merge_rollup_private_inputs.d.ts.map +1 -0
  323. package/dest/rollup/{merge_rollup.js → tx_merge_rollup_private_inputs.js} +14 -13
  324. package/dest/rollup/{base_or_merge_rollup_public_inputs.d.ts → tx_rollup_public_inputs.d.ts} +14 -14
  325. package/dest/rollup/tx_rollup_public_inputs.d.ts.map +1 -0
  326. package/dest/rollup/{base_or_merge_rollup_public_inputs.js → tx_rollup_public_inputs.js} +15 -15
  327. package/dest/slashing/types.d.ts +1 -0
  328. package/dest/slashing/types.d.ts.map +1 -1
  329. package/dest/slashing/types.js +22 -0
  330. package/dest/snapshots/download.d.ts.map +1 -1
  331. package/dest/snapshots/download.js +58 -2
  332. package/dest/snapshots/upload.d.ts.map +1 -1
  333. package/dest/snapshots/upload.js +1 -0
  334. package/dest/stats/stats.d.ts +1 -1
  335. package/dest/stats/stats.d.ts.map +1 -1
  336. package/dest/tests/factories.d.ts +42 -74
  337. package/dest/tests/factories.d.ts.map +1 -1
  338. package/dest/tests/factories.js +144 -167
  339. package/dest/tests/mocks.d.ts +14 -8
  340. package/dest/tests/mocks.d.ts.map +1 -1
  341. package/dest/tests/mocks.js +53 -31
  342. package/dest/trees/index.d.ts +0 -1
  343. package/dest/trees/index.d.ts.map +1 -1
  344. package/dest/trees/index.js +0 -1
  345. package/dest/trees/merkle_tree_id.d.ts +4 -4
  346. package/dest/trees/nullifier_membership_witness.d.ts +3 -3
  347. package/dest/tx/block_header.d.ts +12 -13
  348. package/dest/tx/block_header.d.ts.map +1 -1
  349. package/dest/tx/block_header.js +16 -21
  350. package/dest/tx/content_commitment.d.ts +1 -0
  351. package/dest/tx/content_commitment.d.ts.map +1 -1
  352. package/dest/tx/content_commitment.js +3 -0
  353. package/dest/tx/global_variables.d.ts.map +1 -1
  354. package/dest/tx/global_variables.js +0 -1
  355. package/dest/tx/index.d.ts +2 -1
  356. package/dest/tx/index.d.ts.map +1 -1
  357. package/dest/tx/index.js +2 -1
  358. package/dest/tx/indexed_tx_effect.d.ts +3 -3
  359. package/dest/tx/partial_state_reference.d.ts +1 -0
  360. package/dest/tx/partial_state_reference.d.ts.map +1 -1
  361. package/dest/tx/partial_state_reference.js +3 -0
  362. package/dest/tx/private_execution_result.d.ts +7 -2
  363. package/dest/tx/private_execution_result.d.ts.map +1 -1
  364. package/dest/tx/private_execution_result.js +10 -6
  365. package/dest/tx/private_tx_constant_data.d.ts +60 -0
  366. package/dest/tx/private_tx_constant_data.d.ts.map +1 -0
  367. package/dest/tx/private_tx_constant_data.js +69 -0
  368. package/dest/tx/processed_tx.d.ts +0 -1
  369. package/dest/tx/processed_tx.d.ts.map +1 -1
  370. package/dest/tx/processed_tx.js +1 -6
  371. package/dest/tx/profiling.d.ts.map +1 -1
  372. package/dest/tx/profiling.js +0 -2
  373. package/dest/tx/protocol_contracts.d.ts +29 -0
  374. package/dest/tx/protocol_contracts.d.ts.map +1 -0
  375. package/dest/tx/protocol_contracts.js +49 -0
  376. package/dest/tx/simulated_tx.d.ts +3 -3
  377. package/dest/tx/state_reference.d.ts +1 -0
  378. package/dest/tx/state_reference.d.ts.map +1 -1
  379. package/dest/tx/state_reference.js +4 -1
  380. package/dest/tx/tx.d.ts +6 -9
  381. package/dest/tx/tx.d.ts.map +1 -1
  382. package/dest/tx/tx.js +10 -11
  383. package/dest/tx/tx_constant_data.d.ts +6 -38
  384. package/dest/tx/tx_constant_data.d.ts.map +1 -1
  385. package/dest/tx/tx_constant_data.js +11 -20
  386. package/dest/tx/tx_effect.d.ts +3 -36
  387. package/dest/tx/tx_effect.d.ts.map +1 -1
  388. package/dest/tx/tx_effect.js +63 -202
  389. package/dest/tx/validator/error_texts.d.ts +1 -1
  390. package/dest/tx/validator/error_texts.d.ts.map +1 -1
  391. package/dest/tx/validator/error_texts.js +1 -1
  392. package/dest/update-checker/update-checker.d.ts +1 -1
  393. package/dest/update-checker/update-checker.d.ts.map +1 -1
  394. package/dest/update-checker/update-checker.js +1 -1
  395. package/dest/validators/schemas.d.ts +42 -4
  396. package/dest/validators/schemas.d.ts.map +1 -1
  397. package/dest/validators/schemas.js +5 -4
  398. package/dest/validators/types.d.ts +8 -10
  399. package/dest/validators/types.d.ts.map +1 -1
  400. package/dest/versioning/versioning.d.ts +2 -2
  401. package/dest/versioning/versioning.d.ts.map +1 -1
  402. package/dest/versioning/versioning.js +18 -13
  403. package/dest/world-state/index.d.ts +2 -0
  404. package/dest/world-state/index.d.ts.map +1 -0
  405. package/dest/world-state/index.js +1 -0
  406. package/dest/world-state/world_state_revision.d.ts +22 -0
  407. package/dest/world-state/world_state_revision.d.ts.map +1 -0
  408. package/dest/world-state/world_state_revision.js +21 -0
  409. package/dest/zkpassport/index.d.ts +17 -11
  410. package/dest/zkpassport/index.d.ts.map +1 -1
  411. package/dest/zkpassport/index.js +21 -15
  412. package/package.json +15 -11
  413. package/src/abi/abi.ts +1 -1
  414. package/src/abi/contract_artifact.ts +3 -0
  415. package/src/abi/event_metadata_definition.ts +8 -0
  416. package/src/abi/function_call.ts +5 -1
  417. package/src/abi/index.ts +1 -0
  418. package/src/avm/avm.ts +15 -7
  419. package/src/avm/avm_accumulated_data.ts +25 -29
  420. package/src/avm/avm_circuit_public_inputs.ts +21 -0
  421. package/src/avm/index.ts +1 -1
  422. package/src/avm/message_pack.ts +25 -1
  423. package/src/block/attestation_info.ts +62 -0
  424. package/src/block/body.ts +25 -23
  425. package/src/block/index.ts +4 -0
  426. package/src/block/l2_block.ts +39 -19
  427. package/src/block/l2_block_code_to_purge.ts +30 -31
  428. package/src/block/l2_block_header.ts +232 -0
  429. package/src/block/l2_block_info.ts +63 -0
  430. package/src/block/l2_block_source.ts +33 -51
  431. package/src/block/l2_block_stream/l2_tips_memory_store.ts +1 -1
  432. package/src/block/proposal/attestations_and_signers.ts +121 -0
  433. package/src/block/proposal/index.ts +1 -0
  434. package/src/block/published_l2_block.ts +37 -15
  435. package/src/block/test/l2_tips_store_test_suite.ts +7 -7
  436. package/src/block/validate_block_result.ts +122 -0
  437. package/src/checkpoint/checkpoint_body.ts +10 -0
  438. package/src/checkpoint/index.ts +1 -0
  439. package/src/config/node-rpc-config.ts +9 -0
  440. package/src/contract/contract_address.ts +1 -1
  441. package/src/contract/contract_class_metadata.ts +8 -0
  442. package/src/contract/contract_instance.ts +11 -10
  443. package/src/contract/contract_metadata.ts +7 -0
  444. package/src/contract/index.ts +2 -0
  445. package/src/contract/interfaces/contract_class.ts +1 -1
  446. package/src/epoch-helpers/index.ts +24 -2
  447. package/src/fees/transaction_fee.ts +11 -0
  448. package/src/file-store/factory.ts +15 -0
  449. package/src/file-store/interface.ts +8 -2
  450. package/src/file-store/s3.ts +254 -0
  451. package/src/hash/hash.ts +0 -4
  452. package/src/interfaces/archiver.ts +46 -1
  453. package/src/interfaces/aztec-node-admin.ts +17 -1
  454. package/src/interfaces/aztec-node.ts +53 -2
  455. package/src/interfaces/block-builder.ts +11 -12
  456. package/src/interfaces/client.ts +0 -1
  457. package/src/interfaces/configs.ts +6 -0
  458. package/src/interfaces/epoch-prover.ts +35 -11
  459. package/src/interfaces/merkle_tree_operations.ts +6 -0
  460. package/src/interfaces/p2p.ts +4 -0
  461. package/src/interfaces/private_kernel_prover.ts +2 -2
  462. package/src/interfaces/proving-job.ts +215 -134
  463. package/src/interfaces/server.ts +1 -0
  464. package/src/interfaces/server_circuit_prover.ts +87 -61
  465. package/src/interfaces/slasher.ts +2 -0
  466. package/src/interfaces/tx_provider.ts +1 -0
  467. package/src/interfaces/validator.ts +95 -0
  468. package/src/kernel/hints/build_nullifier_read_request_hints.ts +3 -2
  469. package/src/kernel/hints/nullifier_read_request_hints.ts +3 -3
  470. package/src/kernel/nullifier.ts +8 -8
  471. package/src/kernel/private_call_data.ts +2 -21
  472. package/src/kernel/private_circuit_public_inputs.ts +5 -5
  473. package/src/kernel/private_context_inputs.ts +2 -2
  474. package/src/kernel/private_kernel_circuit_public_inputs.ts +4 -4
  475. package/src/kernel/private_kernel_init_circuit_private_inputs.ts +5 -4
  476. package/src/kernel/private_kernel_prover_output.ts +1 -1
  477. package/src/kernel/private_kernel_tail_circuit_public_inputs.ts +8 -2
  478. package/src/kernel/private_to_public_kernel_circuit_public_inputs.ts +9 -0
  479. package/src/keys/derivation.ts +1 -26
  480. package/src/logs/contract_class_log.ts +2 -3
  481. package/src/logs/debug_log.ts +32 -0
  482. package/src/logs/directional_app_tagging_secret.ts +78 -0
  483. package/src/logs/index.ts +3 -1
  484. package/src/logs/log_with_tx_data.ts +14 -24
  485. package/src/logs/pre_tag.ts +25 -0
  486. package/src/logs/public_log.ts +120 -58
  487. package/src/messaging/inbox_leaf.ts +5 -0
  488. package/src/messaging/l2_to_l1_membership.ts +20 -26
  489. package/src/noir/index.ts +11 -0
  490. package/src/note/index.ts +1 -1
  491. package/src/note/notes_filter.ts +0 -7
  492. package/src/note/{extended_note.ts → unique_note.ts} +14 -75
  493. package/src/p2p/block_attestation.ts +46 -15
  494. package/src/p2p/block_proposal.ts +15 -18
  495. package/src/p2p/consensus_payload.ts +30 -10
  496. package/src/p2p/gossipable.ts +6 -16
  497. package/src/p2p/signature_utils.ts +1 -0
  498. package/src/parity/index.ts +2 -3
  499. package/src/parity/{base_parity_inputs.ts → parity_base_private_inputs.ts} +13 -11
  500. package/src/parity/{root_parity_inputs.ts → parity_root_private_inputs.ts} +16 -18
  501. package/src/proofs/client_ivc_proof.ts +86 -20
  502. package/src/proofs/index.ts +1 -0
  503. package/src/proofs/proof_data.ts +36 -0
  504. package/src/proofs/proving_request_type.ts +14 -10
  505. package/src/rollup/avm_proof_data.ts +2 -31
  506. package/src/rollup/base_rollup_hints.ts +22 -22
  507. package/src/rollup/block_constant_data.ts +16 -6
  508. package/src/rollup/{block_merge_rollup.ts → block_merge_rollup_private_inputs.ts} +15 -11
  509. package/src/rollup/block_rollup_public_inputs.ts +123 -0
  510. package/src/rollup/block_root_rollup_private_inputs.ts +312 -0
  511. package/src/rollup/checkpoint_constant_data.ts +84 -0
  512. package/src/{tx/proposed_block_header.ts → rollup/checkpoint_header.ts} +40 -15
  513. package/src/rollup/checkpoint_merge_rollup_private_inputs.ts +49 -0
  514. package/src/rollup/{block_root_or_block_merge_public_inputs.ts → checkpoint_rollup_public_inputs.ts} +30 -52
  515. package/src/rollup/checkpoint_root_rollup_private_inputs.ts +218 -0
  516. package/src/rollup/epoch_constant_data.ts +28 -10
  517. package/src/rollup/index.ts +17 -16
  518. package/src/rollup/private_tx_base_rollup_private_inputs.ts +53 -0
  519. package/src/rollup/public_tube_private_inputs.ts +53 -0
  520. package/src/rollup/public_tube_public_inputs.ts +52 -0
  521. package/src/rollup/public_tx_base_rollup_private_inputs.ts +57 -0
  522. package/src/rollup/root_rollup_private_inputs.ts +90 -0
  523. package/src/rollup/root_rollup_public_inputs.ts +99 -0
  524. package/src/rollup/{state_diff_hints.ts → tree_snapshot_diff_hints.ts} +26 -41
  525. package/src/rollup/{merge_rollup.ts → tx_merge_rollup_private_inputs.ts} +13 -9
  526. package/src/rollup/{base_or_merge_rollup_public_inputs.ts → tx_rollup_public_inputs.ts} +13 -13
  527. package/src/slashing/types.ts +23 -0
  528. package/src/snapshots/download.ts +66 -2
  529. package/src/snapshots/upload.ts +1 -0
  530. package/src/stats/stats.ts +19 -13
  531. package/src/tests/factories.ts +217 -275
  532. package/src/tests/mocks.ts +87 -57
  533. package/src/trees/index.ts +0 -1
  534. package/src/tx/block_header.ts +17 -32
  535. package/src/tx/content_commitment.ts +4 -0
  536. package/src/tx/global_variables.ts +0 -1
  537. package/src/tx/index.ts +2 -1
  538. package/src/tx/partial_state_reference.ts +8 -0
  539. package/src/tx/private_execution_result.ts +9 -3
  540. package/src/tx/private_tx_constant_data.ts +94 -0
  541. package/src/tx/processed_tx.ts +1 -7
  542. package/src/tx/profiling.ts +0 -2
  543. package/src/tx/protocol_contracts.ts +70 -0
  544. package/src/tx/state_reference.ts +5 -1
  545. package/src/tx/tx.ts +12 -13
  546. package/src/tx/tx_constant_data.ts +8 -21
  547. package/src/tx/tx_effect.ts +64 -213
  548. package/src/tx/validator/error_texts.ts +1 -1
  549. package/src/update-checker/update-checker.ts +1 -1
  550. package/src/validators/schemas.ts +6 -4
  551. package/src/validators/types.ts +9 -10
  552. package/src/versioning/versioning.ts +20 -15
  553. package/src/world-state/index.ts +1 -0
  554. package/src/world-state/world_state_revision.ts +21 -0
  555. package/src/zkpassport/index.ts +42 -30
  556. package/dest/avm/public_data_hint.d.ts +0 -16
  557. package/dest/avm/public_data_hint.d.ts.map +0 -1
  558. package/dest/avm/public_data_hint.js +0 -27
  559. package/dest/interfaces/pxe.d.ts +0 -329
  560. package/dest/interfaces/pxe.d.ts.map +0 -1
  561. package/dest/interfaces/pxe.js +0 -100
  562. package/dest/logs/indexed_tagging_secret.d.ts +0 -28
  563. package/dest/logs/indexed_tagging_secret.d.ts.map +0 -1
  564. package/dest/logs/indexed_tagging_secret.js +0 -50
  565. package/dest/note/extended_note.d.ts +0 -111
  566. package/dest/note/extended_note.d.ts.map +0 -1
  567. package/dest/parity/base_parity_inputs.d.ts.map +0 -1
  568. package/dest/parity/root_parity_input.d.ts +0 -52
  569. package/dest/parity/root_parity_input.d.ts.map +0 -1
  570. package/dest/parity/root_parity_input.js +0 -50
  571. package/dest/parity/root_parity_inputs.d.ts +0 -37
  572. package/dest/parity/root_parity_inputs.d.ts.map +0 -1
  573. package/dest/rollup/base_or_merge_rollup_public_inputs.d.ts.map +0 -1
  574. package/dest/rollup/block_merge_rollup.d.ts.map +0 -1
  575. package/dest/rollup/block_root_or_block_merge_public_inputs.d.ts +0 -134
  576. package/dest/rollup/block_root_or_block_merge_public_inputs.d.ts.map +0 -1
  577. package/dest/rollup/block_root_or_block_merge_public_inputs.js +0 -125
  578. package/dest/rollup/block_root_rollup.d.ts +0 -283
  579. package/dest/rollup/block_root_rollup.d.ts.map +0 -1
  580. package/dest/rollup/block_root_rollup.js +0 -306
  581. package/dest/rollup/empty_block_root_rollup_inputs.d.ts +0 -51
  582. package/dest/rollup/empty_block_root_rollup_inputs.d.ts.map +0 -1
  583. package/dest/rollup/empty_block_root_rollup_inputs.js +0 -65
  584. package/dest/rollup/merge_rollup.d.ts.map +0 -1
  585. package/dest/rollup/padding_block_root_rollup_inputs.d.ts +0 -20
  586. package/dest/rollup/padding_block_root_rollup_inputs.d.ts.map +0 -1
  587. package/dest/rollup/padding_block_root_rollup_inputs.js +0 -39
  588. package/dest/rollup/previous_rollup_block_data.d.ts +0 -47
  589. package/dest/rollup/previous_rollup_block_data.d.ts.map +0 -1
  590. package/dest/rollup/previous_rollup_block_data.js +0 -37
  591. package/dest/rollup/previous_rollup_data.d.ts +0 -47
  592. package/dest/rollup/previous_rollup_data.d.ts.map +0 -1
  593. package/dest/rollup/previous_rollup_data.js +0 -37
  594. package/dest/rollup/private_base_rollup_inputs.d.ts +0 -21
  595. package/dest/rollup/private_base_rollup_inputs.d.ts.map +0 -1
  596. package/dest/rollup/private_base_rollup_inputs.js +0 -44
  597. package/dest/rollup/private_tube_data.d.ts +0 -15
  598. package/dest/rollup/private_tube_data.d.ts.map +0 -1
  599. package/dest/rollup/private_tube_data.js +0 -25
  600. package/dest/rollup/public_base_rollup_inputs.d.ts +0 -23
  601. package/dest/rollup/public_base_rollup_inputs.d.ts.map +0 -1
  602. package/dest/rollup/public_base_rollup_inputs.js +0 -48
  603. package/dest/rollup/public_tube_data.d.ts +0 -15
  604. package/dest/rollup/public_tube_data.d.ts.map +0 -1
  605. package/dest/rollup/public_tube_data.js +0 -25
  606. package/dest/rollup/root_rollup.d.ts +0 -106
  607. package/dest/rollup/root_rollup.d.ts.map +0 -1
  608. package/dest/rollup/root_rollup.js +0 -147
  609. package/dest/rollup/state_diff_hints.d.ts.map +0 -1
  610. package/dest/rollup/state_diff_hints.js +0 -85
  611. package/dest/rollup/tube_inputs.d.ts +0 -43
  612. package/dest/rollup/tube_inputs.d.ts.map +0 -1
  613. package/dest/rollup/tube_inputs.js +0 -63
  614. package/dest/trees/protocol_contract_leaf.d.ts +0 -84
  615. package/dest/trees/protocol_contract_leaf.d.ts.map +0 -1
  616. package/dest/trees/protocol_contract_leaf.js +0 -100
  617. package/dest/tx/proposed_block_header.d.ts.map +0 -1
  618. package/src/avm/public_data_hint.ts +0 -38
  619. package/src/interfaces/pxe.ts +0 -532
  620. package/src/logs/indexed_tagging_secret.ts +0 -48
  621. package/src/parity/root_parity_input.ts +0 -71
  622. package/src/rollup/block_root_rollup.ts +0 -380
  623. package/src/rollup/empty_block_root_rollup_inputs.ts +0 -80
  624. package/src/rollup/padding_block_root_rollup_inputs.ts +0 -47
  625. package/src/rollup/previous_rollup_block_data.ts +0 -48
  626. package/src/rollup/previous_rollup_data.ts +0 -48
  627. package/src/rollup/private_base_rollup_inputs.ts +0 -53
  628. package/src/rollup/private_tube_data.ts +0 -35
  629. package/src/rollup/public_base_rollup_inputs.ts +0 -59
  630. package/src/rollup/public_tube_data.ts +0 -35
  631. package/src/rollup/root_rollup.ts +0 -195
  632. package/src/rollup/tube_inputs.ts +0 -77
  633. package/src/trees/protocol_contract_leaf.ts +0 -128
@@ -0,0 +1,57 @@
1
+ import { bufferSchemaFor } from '@aztec/foundation/schemas';
2
+ import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
3
+ import { bufferToHex, hexToBuffer } from '@aztec/foundation/string';
4
+ import type { FieldsOf } from '@aztec/foundation/types';
5
+
6
+ import { AvmCircuitPublicInputs } from '../avm/avm_circuit_public_inputs.js';
7
+ import { ProofData, type RollupHonkProofData } from '../proofs/proof_data.js';
8
+ import type { AvmProofData } from './avm_proof_data.js';
9
+ import { PublicBaseRollupHints } from './base_rollup_hints.js';
10
+ import { PublicTubePublicInputs } from './public_tube_public_inputs.js';
11
+
12
+ export class PublicTxBaseRollupPrivateInputs {
13
+ constructor(
14
+ public publicTubeProofData: RollupHonkProofData<PublicTubePublicInputs>,
15
+ public avmProofData: AvmProofData,
16
+ public hints: PublicBaseRollupHints,
17
+ ) {}
18
+
19
+ static from(fields: FieldsOf<PublicTxBaseRollupPrivateInputs>): PublicTxBaseRollupPrivateInputs {
20
+ return new PublicTxBaseRollupPrivateInputs(...PublicTxBaseRollupPrivateInputs.getFields(fields));
21
+ }
22
+
23
+ static getFields(fields: FieldsOf<PublicTxBaseRollupPrivateInputs>) {
24
+ return [fields.publicTubeProofData, fields.avmProofData, fields.hints] as const;
25
+ }
26
+
27
+ static fromBuffer(buffer: Buffer | BufferReader): PublicTxBaseRollupPrivateInputs {
28
+ const reader = BufferReader.asReader(buffer);
29
+ return new PublicTxBaseRollupPrivateInputs(
30
+ ProofData.fromBuffer(reader, PublicTubePublicInputs),
31
+ ProofData.fromBuffer(reader, AvmCircuitPublicInputs),
32
+ reader.readObject(PublicBaseRollupHints),
33
+ );
34
+ }
35
+
36
+ toBuffer() {
37
+ return serializeToBuffer(...PublicTxBaseRollupPrivateInputs.getFields(this));
38
+ }
39
+
40
+ static fromString(str: string) {
41
+ return PublicTxBaseRollupPrivateInputs.fromBuffer(hexToBuffer(str));
42
+ }
43
+
44
+ toString() {
45
+ return bufferToHex(this.toBuffer());
46
+ }
47
+
48
+ /** Returns a representation for JSON serialization. */
49
+ toJSON() {
50
+ return this.toBuffer();
51
+ }
52
+
53
+ /** Creates an instance from a string. */
54
+ static get schema() {
55
+ return bufferSchemaFor(PublicTxBaseRollupPrivateInputs);
56
+ }
57
+ }
@@ -0,0 +1,90 @@
1
+ import { bufferSchemaFor } from '@aztec/foundation/schemas';
2
+ import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
3
+ import { bufferToHex, hexToBuffer } from '@aztec/foundation/string';
4
+ import type { FieldsOf } from '@aztec/foundation/types';
5
+
6
+ import { ProofData, type RollupHonkProofData } from '../proofs/proof_data.js';
7
+ import { CheckpointRollupPublicInputs } from './checkpoint_rollup_public_inputs.js';
8
+
9
+ /**
10
+ * Represents inputs of the root rollup circuit.
11
+ */
12
+ export class RootRollupPrivateInputs {
13
+ constructor(
14
+ /**
15
+ * The previous rollup data.
16
+ * Note: Root rollup circuit is the latest circuit the chain of circuits and the previous rollup data is the data
17
+ * from 2 checkpoint root/merge/padding circuits.
18
+ */
19
+ public previousRollups: [
20
+ RollupHonkProofData<CheckpointRollupPublicInputs>,
21
+ RollupHonkProofData<CheckpointRollupPublicInputs>,
22
+ ],
23
+ ) {}
24
+
25
+ /**
26
+ * Serializes the inputs to a buffer.
27
+ * @returns - The inputs serialized to a buffer.
28
+ */
29
+ toBuffer() {
30
+ return serializeToBuffer(...RootRollupPrivateInputs.getFields(this));
31
+ }
32
+
33
+ /**
34
+ * Serializes the inputs to a hex string.
35
+ * @returns The instance serialized to a hex string.
36
+ */
37
+ toString() {
38
+ return bufferToHex(this.toBuffer());
39
+ }
40
+
41
+ /**
42
+ * Creates a new instance from fields.
43
+ * @param fields - Fields to create the instance from.
44
+ * @returns A new RootRollupPrivateInputs instance.
45
+ */
46
+ static from(fields: FieldsOf<RootRollupPrivateInputs>) {
47
+ return new RootRollupPrivateInputs(...RootRollupPrivateInputs.getFields(fields));
48
+ }
49
+
50
+ /**
51
+ * Extracts fields from an instance.
52
+ * @param fields - Fields to create the instance from.
53
+ * @returns An array of fields.
54
+ */
55
+ static getFields(fields: FieldsOf<RootRollupPrivateInputs>) {
56
+ return [fields.previousRollups] as const;
57
+ }
58
+
59
+ /**
60
+ * Deserializes the inputs from a buffer.
61
+ * @param buffer - A buffer to deserialize from.
62
+ * @returns A new RootRollupPrivateInputs instance.
63
+ */
64
+ static fromBuffer(buffer: Buffer | BufferReader) {
65
+ const reader = BufferReader.asReader(buffer);
66
+ return new RootRollupPrivateInputs([
67
+ ProofData.fromBuffer(reader, CheckpointRollupPublicInputs),
68
+ ProofData.fromBuffer(reader, CheckpointRollupPublicInputs),
69
+ ]);
70
+ }
71
+
72
+ /**
73
+ * Deserializes the inputs from a hex string.
74
+ * @param str - A hex string to deserialize from.
75
+ * @returns A new RootRollupPrivateInputs instance.
76
+ */
77
+ static fromString(str: string) {
78
+ return RootRollupPrivateInputs.fromBuffer(hexToBuffer(str));
79
+ }
80
+
81
+ /** Returns a representation for JSON serialization. */
82
+ toJSON() {
83
+ return this.toBuffer();
84
+ }
85
+
86
+ /** Creates an instance from a string. */
87
+ static get schema() {
88
+ return bufferSchemaFor(RootRollupPrivateInputs);
89
+ }
90
+ }
@@ -0,0 +1,99 @@
1
+ import { FinalBlobAccumulator } from '@aztec/blob-lib/types';
2
+ import { AZTEC_MAX_EPOCH_DURATION } from '@aztec/constants';
3
+ import { makeTuple } from '@aztec/foundation/array';
4
+ import { Fr } from '@aztec/foundation/fields';
5
+ import { bufferSchemaFor } from '@aztec/foundation/schemas';
6
+ import { BufferReader, type Tuple, serializeToBuffer, serializeToFields } from '@aztec/foundation/serialize';
7
+ import { bufferToHex, hexToBuffer } from '@aztec/foundation/string';
8
+ import type { FieldsOf } from '@aztec/foundation/types';
9
+
10
+ import { FeeRecipient } from './checkpoint_rollup_public_inputs.js';
11
+ import { EpochConstantData } from './epoch_constant_data.js';
12
+
13
+ /**
14
+ * Represents public inputs of the root rollup circuit.
15
+ *
16
+ * NOTE: in practice, we'll hash all of this up into a single public input, for cheap onchain verification.
17
+ */
18
+ export class RootRollupPublicInputs {
19
+ constructor(
20
+ /** Root of the archive tree before this rollup is processed */
21
+ public previousArchiveRoot: Fr,
22
+ /** Root of the archive tree after this rollup is processed */
23
+ public endArchiveRoot: Fr,
24
+ public checkpointHeaderHashes: Tuple<Fr, typeof AZTEC_MAX_EPOCH_DURATION>,
25
+ public fees: Tuple<FeeRecipient, typeof AZTEC_MAX_EPOCH_DURATION>,
26
+ public constants: EpochConstantData,
27
+ public blobPublicInputs: FinalBlobAccumulator,
28
+ ) {}
29
+
30
+ static getFields(fields: FieldsOf<RootRollupPublicInputs>) {
31
+ return [
32
+ fields.previousArchiveRoot,
33
+ fields.endArchiveRoot,
34
+ fields.checkpointHeaderHashes,
35
+ fields.fees,
36
+ fields.constants,
37
+ fields.blobPublicInputs,
38
+ ] as const;
39
+ }
40
+
41
+ toBuffer() {
42
+ return serializeToBuffer(...RootRollupPublicInputs.getFields(this));
43
+ }
44
+
45
+ toFields(): Fr[] {
46
+ return serializeToFields(...RootRollupPublicInputs.getFields(this));
47
+ }
48
+
49
+ static from(fields: FieldsOf<RootRollupPublicInputs>): RootRollupPublicInputs {
50
+ return new RootRollupPublicInputs(...RootRollupPublicInputs.getFields(fields));
51
+ }
52
+
53
+ /**
54
+ * Deserializes a buffer into a `RootRollupPublicInputs` object.
55
+ * @param buffer - The buffer to deserialize.
56
+ * @returns The deserialized `RootRollupPublicInputs` object.
57
+ */
58
+ public static fromBuffer(buffer: Buffer | BufferReader): RootRollupPublicInputs {
59
+ const reader = BufferReader.asReader(buffer);
60
+ return new RootRollupPublicInputs(
61
+ Fr.fromBuffer(reader),
62
+ Fr.fromBuffer(reader),
63
+ reader.readArray(AZTEC_MAX_EPOCH_DURATION, Fr),
64
+ reader.readArray(AZTEC_MAX_EPOCH_DURATION, FeeRecipient),
65
+ EpochConstantData.fromBuffer(reader),
66
+ reader.readObject(FinalBlobAccumulator),
67
+ );
68
+ }
69
+
70
+ toString() {
71
+ return bufferToHex(this.toBuffer());
72
+ }
73
+
74
+ static fromString(str: string) {
75
+ return RootRollupPublicInputs.fromBuffer(hexToBuffer(str));
76
+ }
77
+
78
+ /** Returns a representation for JSON serialization. */
79
+ toJSON() {
80
+ return this.toBuffer();
81
+ }
82
+
83
+ /** Creates an instance from a string. */
84
+ static get schema() {
85
+ return bufferSchemaFor(RootRollupPublicInputs);
86
+ }
87
+
88
+ /** Creates a random instance. Used for testing only - will not prove/verify. */
89
+ static random() {
90
+ return new RootRollupPublicInputs(
91
+ Fr.random(),
92
+ Fr.random(),
93
+ makeTuple(AZTEC_MAX_EPOCH_DURATION, Fr.random),
94
+ makeTuple(AZTEC_MAX_EPOCH_DURATION, FeeRecipient.random),
95
+ new EpochConstantData(Fr.random(), Fr.random(), Fr.random(), Fr.random(), Fr.random()),
96
+ FinalBlobAccumulator.random(),
97
+ );
98
+ }
99
+ }
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  MAX_NULLIFIERS_PER_TX,
3
- NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH,
4
- NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH,
3
+ NOTE_HASH_SUBTREE_ROOT_SIBLING_PATH_LENGTH,
4
+ NULLIFIER_SUBTREE_ROOT_SIBLING_PATH_LENGTH,
5
5
  NULLIFIER_TREE_HEIGHT,
6
6
  PUBLIC_DATA_TREE_HEIGHT,
7
7
  } from '@aztec/constants';
@@ -11,13 +11,17 @@ import { BufferReader, type Tuple, serializeToBuffer } from '@aztec/foundation/s
11
11
  import { MembershipWitness } from '@aztec/foundation/trees';
12
12
  import type { FieldsOf } from '@aztec/foundation/types';
13
13
 
14
- import { NullifierLeafPreimage, PublicDataTreeLeafPreimage } from '../trees/index.js';
14
+ import { NullifierLeafPreimage } from '../trees/index.js';
15
15
 
16
16
  /**
17
17
  * Hints used while proving state diff validity for the private base rollup.
18
18
  */
19
- export class PrivateBaseStateDiffHints {
19
+ export class TreeSnapshotDiffHints {
20
20
  constructor(
21
+ /**
22
+ * Sibling path "pointing to" where the new note hash subtree should be inserted into the note hash tree.
23
+ */
24
+ public noteHashSubtreeRootSiblingPath: Tuple<Fr, typeof NOTE_HASH_SUBTREE_ROOT_SIBLING_PATH_LENGTH>,
21
25
  /**
22
26
  * The nullifiers which need to be updated to perform the batch insertion of the new nullifiers.
23
27
  * See `StandardIndexedTree.batchInsert` function for more details.
@@ -39,44 +43,29 @@ export class PrivateBaseStateDiffHints {
39
43
  * The indexes of the sorted nullifiers to the original ones.
40
44
  */
41
45
  public sortedNullifierIndexes: Tuple<number, typeof MAX_NULLIFIERS_PER_TX>,
42
- /**
43
- * Sibling path "pointing to" where the new note hash subtree should be inserted into the note hash tree.
44
- */
45
- public noteHashSubtreeSiblingPath: Tuple<Fr, typeof NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH>,
46
46
  /**
47
47
  * Sibling path "pointing to" where the new nullifiers subtree should be inserted into the nullifier tree.
48
48
  */
49
- public nullifierSubtreeSiblingPath: Tuple<Fr, typeof NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH>,
50
-
51
- /**
52
- * Low leaf for the fee write in the public data tree.
53
- */
54
- public feeWriteLowLeafPreimage: PublicDataTreeLeafPreimage,
55
- /**
56
- * Membership witness for the low leaf for the fee write in the public data tree.
57
- */
58
- public feeWriteLowLeafMembershipWitness: MembershipWitness<typeof PUBLIC_DATA_TREE_HEIGHT>,
49
+ public nullifierSubtreeRootSiblingPath: Tuple<Fr, typeof NULLIFIER_SUBTREE_ROOT_SIBLING_PATH_LENGTH>,
59
50
  /**
60
- * Sibling path "pointing to" where the fee write should be inserted into the public data tree.
51
+ * Membership witness for the fee payer's balance leaf in the public data tree.
61
52
  */
62
- public feeWriteSiblingPath: Tuple<Fr, typeof PUBLIC_DATA_TREE_HEIGHT>,
53
+ public feePayerBalanceMembershipWitness: MembershipWitness<typeof PUBLIC_DATA_TREE_HEIGHT>,
63
54
  ) {}
64
55
 
65
- static from(fields: FieldsOf<PrivateBaseStateDiffHints>): PrivateBaseStateDiffHints {
66
- return new PrivateBaseStateDiffHints(...PrivateBaseStateDiffHints.getFields(fields));
56
+ static from(fields: FieldsOf<TreeSnapshotDiffHints>): TreeSnapshotDiffHints {
57
+ return new TreeSnapshotDiffHints(...TreeSnapshotDiffHints.getFields(fields));
67
58
  }
68
59
 
69
- static getFields(fields: FieldsOf<PrivateBaseStateDiffHints>) {
60
+ static getFields(fields: FieldsOf<TreeSnapshotDiffHints>) {
70
61
  return [
62
+ fields.noteHashSubtreeRootSiblingPath,
71
63
  fields.nullifierPredecessorPreimages,
72
64
  fields.nullifierPredecessorMembershipWitnesses,
73
65
  fields.sortedNullifiers,
74
66
  fields.sortedNullifierIndexes,
75
- fields.noteHashSubtreeSiblingPath,
76
- fields.nullifierSubtreeSiblingPath,
77
- fields.feeWriteLowLeafPreimage,
78
- fields.feeWriteLowLeafMembershipWitness,
79
- fields.feeWriteSiblingPath,
67
+ fields.nullifierSubtreeRootSiblingPath,
68
+ fields.feePayerBalanceMembershipWitness,
80
69
  ] as const;
81
70
  }
82
71
 
@@ -85,42 +74,38 @@ export class PrivateBaseStateDiffHints {
85
74
  * @returns A buffer of the serialized state diff hints.
86
75
  */
87
76
  toBuffer(): Buffer {
88
- return serializeToBuffer(...PrivateBaseStateDiffHints.getFields(this));
77
+ return serializeToBuffer(...TreeSnapshotDiffHints.getFields(this));
89
78
  }
90
79
 
91
80
  /**
92
81
  * Deserializes the state diff hints from a buffer.
93
82
  * @param buffer - A buffer to deserialize from.
94
- * @returns A new PrivateBaseStateDiffHints instance.
83
+ * @returns A new TreeSnapshotDiffHints instance.
95
84
  */
96
- static fromBuffer(buffer: Buffer | BufferReader): PrivateBaseStateDiffHints {
85
+ static fromBuffer(buffer: Buffer | BufferReader): TreeSnapshotDiffHints {
97
86
  const reader = BufferReader.asReader(buffer);
98
- return new PrivateBaseStateDiffHints(
87
+ return new TreeSnapshotDiffHints(
88
+ reader.readArray(NOTE_HASH_SUBTREE_ROOT_SIBLING_PATH_LENGTH, Fr),
99
89
  reader.readArray(MAX_NULLIFIERS_PER_TX, NullifierLeafPreimage),
100
90
  reader.readArray(MAX_NULLIFIERS_PER_TX, {
101
91
  fromBuffer: buffer => MembershipWitness.fromBuffer(buffer, NULLIFIER_TREE_HEIGHT),
102
92
  }),
103
93
  reader.readArray(MAX_NULLIFIERS_PER_TX, Fr),
104
94
  reader.readNumbers(MAX_NULLIFIERS_PER_TX),
105
- reader.readArray(NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH, Fr),
106
- reader.readArray(NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, Fr),
107
- reader.readObject(PublicDataTreeLeafPreimage),
95
+ reader.readArray(NULLIFIER_SUBTREE_ROOT_SIBLING_PATH_LENGTH, Fr),
108
96
  MembershipWitness.fromBuffer(reader, PUBLIC_DATA_TREE_HEIGHT),
109
- reader.readArray(PUBLIC_DATA_TREE_HEIGHT, Fr),
110
97
  );
111
98
  }
112
99
 
113
100
  static empty() {
114
- return new PrivateBaseStateDiffHints(
101
+ return new TreeSnapshotDiffHints(
102
+ makeTuple(NOTE_HASH_SUBTREE_ROOT_SIBLING_PATH_LENGTH, Fr.zero),
115
103
  makeTuple(MAX_NULLIFIERS_PER_TX, NullifierLeafPreimage.empty),
116
104
  makeTuple(MAX_NULLIFIERS_PER_TX, () => MembershipWitness.empty(NULLIFIER_TREE_HEIGHT)),
117
105
  makeTuple(MAX_NULLIFIERS_PER_TX, Fr.zero),
118
106
  makeTuple(MAX_NULLIFIERS_PER_TX, () => 0),
119
- makeTuple(NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH, Fr.zero),
120
- makeTuple(NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, Fr.zero),
121
- PublicDataTreeLeafPreimage.empty(),
107
+ makeTuple(NULLIFIER_SUBTREE_ROOT_SIBLING_PATH_LENGTH, Fr.zero),
122
108
  MembershipWitness.empty(PUBLIC_DATA_TREE_HEIGHT),
123
- makeTuple(PUBLIC_DATA_TREE_HEIGHT, Fr.zero),
124
109
  );
125
110
  }
126
111
  }
@@ -2,17 +2,18 @@ import { bufferSchemaFor } from '@aztec/foundation/schemas';
2
2
  import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
3
3
  import { bufferToHex, hexToBuffer } from '@aztec/foundation/string';
4
4
 
5
- import { PreviousRollupData } from './previous_rollup_data.js';
5
+ import { ProofData, type RollupHonkProofData } from '../proofs/proof_data.js';
6
+ import { TxRollupPublicInputs } from './tx_rollup_public_inputs.js';
6
7
 
7
8
  /**
8
9
  * Represents inputs of the merge rollup circuit.
9
10
  */
10
- export class MergeRollupInputs {
11
+ export class TxMergeRollupPrivateInputs {
11
12
  constructor(
12
13
  /**
13
14
  * Previous rollup data from the 2 merge or base rollup circuits that preceded this merge rollup circuit.
14
15
  */
15
- public previousRollupData: [PreviousRollupData, PreviousRollupData],
16
+ public previousRollups: [RollupHonkProofData<TxRollupPublicInputs>, RollupHonkProofData<TxRollupPublicInputs>],
16
17
  ) {}
17
18
 
18
19
  /**
@@ -20,7 +21,7 @@ export class MergeRollupInputs {
20
21
  * @returns The inputs serialized to a buffer.
21
22
  */
22
23
  toBuffer() {
23
- return serializeToBuffer(this.previousRollupData);
24
+ return serializeToBuffer(this.previousRollups);
24
25
  }
25
26
 
26
27
  /**
@@ -34,20 +35,23 @@ export class MergeRollupInputs {
34
35
  /**
35
36
  * Deserializes the inputs from a buffer.
36
37
  * @param buffer - The buffer to deserialize from.
37
- * @returns A new MergeRollupInputs instance.
38
+ * @returns A new TxMergeRollupPrivateInputs instance.
38
39
  */
39
40
  static fromBuffer(buffer: Buffer | BufferReader) {
40
41
  const reader = BufferReader.asReader(buffer);
41
- return new MergeRollupInputs([reader.readObject(PreviousRollupData), reader.readObject(PreviousRollupData)]);
42
+ return new TxMergeRollupPrivateInputs([
43
+ ProofData.fromBuffer(reader, TxRollupPublicInputs),
44
+ ProofData.fromBuffer(reader, TxRollupPublicInputs),
45
+ ]);
42
46
  }
43
47
 
44
48
  /**
45
49
  * Deserializes the inputs from a hex string.
46
50
  * @param str - A hex string to deserialize from.
47
- * @returns A new MergeRollupInputs instance.
51
+ * @returns A new TxMergeRollupPrivateInputs instance.
48
52
  */
49
53
  static fromString(str: string) {
50
- return MergeRollupInputs.fromBuffer(hexToBuffer(str));
54
+ return TxMergeRollupPrivateInputs.fromBuffer(hexToBuffer(str));
51
55
  }
52
56
 
53
57
  /** Returns a buffer representation for JSON serialization. */
@@ -57,6 +61,6 @@ export class MergeRollupInputs {
57
61
 
58
62
  /** Creates an instance from a string. */
59
63
  static get schema() {
60
- return bufferSchemaFor(MergeRollupInputs);
64
+ return bufferSchemaFor(TxMergeRollupPrivateInputs);
61
65
  }
62
66
  }
@@ -1,4 +1,4 @@
1
- import { SpongeBlob } from '@aztec/blob-lib';
1
+ import { SpongeBlob } from '@aztec/blob-lib/types';
2
2
  import { Fr } from '@aztec/foundation/fields';
3
3
  import { bufferSchemaFor } from '@aztec/foundation/schemas';
4
4
  import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
@@ -10,7 +10,7 @@ import { BlockConstantData } from './block_constant_data.js';
10
10
  /**
11
11
  * Output of the base and merge rollup circuits.
12
12
  */
13
- export class BaseOrMergeRollupPublicInputs {
13
+ export class TxRollupPublicInputs {
14
14
  constructor(
15
15
  /**
16
16
  * Number of txs in this rollup.
@@ -23,11 +23,11 @@ export class BaseOrMergeRollupPublicInputs {
23
23
  /**
24
24
  * Partial state reference at the start of the rollup circuit.
25
25
  */
26
- public start: PartialStateReference,
26
+ public startTreeSnapshots: PartialStateReference,
27
27
  /**
28
28
  * Partial state reference at the end of the rollup circuit.
29
29
  */
30
- public end: PartialStateReference,
30
+ public endTreeSnapshots: PartialStateReference,
31
31
  /**
32
32
  * Sponge state to absorb blob inputs at the start of the rollup circuit.
33
33
  */
@@ -37,7 +37,7 @@ export class BaseOrMergeRollupPublicInputs {
37
37
  */
38
38
  public endSpongeBlob: SpongeBlob,
39
39
  /**
40
- * SHA256 hash of L2 to L1 messages. Used to make public inputs constant-sized (to then be opened on-chain).
40
+ * SHA256 hash of L2 to L1 messages. Used to make public inputs constant-sized (to then be opened onchain).
41
41
  * Note: Truncated to 31 bytes to fit in Fr.
42
42
  */
43
43
  public outHash: Fr,
@@ -53,7 +53,7 @@ export class BaseOrMergeRollupPublicInputs {
53
53
 
54
54
  /** Returns an empty instance. */
55
55
  static empty() {
56
- return new BaseOrMergeRollupPublicInputs(
56
+ return new TxRollupPublicInputs(
57
57
  0,
58
58
  BlockConstantData.empty(),
59
59
  PartialStateReference.empty(),
@@ -72,9 +72,9 @@ export class BaseOrMergeRollupPublicInputs {
72
72
  * @param buffer - Buffer or reader to read from.
73
73
  * @returns The deserialized public inputs.
74
74
  */
75
- static fromBuffer(buffer: Buffer | BufferReader): BaseOrMergeRollupPublicInputs {
75
+ static fromBuffer(buffer: Buffer | BufferReader): TxRollupPublicInputs {
76
76
  const reader = BufferReader.asReader(buffer);
77
- return new BaseOrMergeRollupPublicInputs(
77
+ return new TxRollupPublicInputs(
78
78
  reader.readNumber(),
79
79
  reader.readObject(BlockConstantData),
80
80
  reader.readObject(PartialStateReference),
@@ -96,8 +96,8 @@ export class BaseOrMergeRollupPublicInputs {
96
96
  this.numTxs,
97
97
  this.constants,
98
98
 
99
- this.start,
100
- this.end,
99
+ this.startTreeSnapshots,
100
+ this.endTreeSnapshots,
101
101
 
102
102
  this.startSpongeBlob,
103
103
  this.endSpongeBlob,
@@ -120,10 +120,10 @@ export class BaseOrMergeRollupPublicInputs {
120
120
  /**
121
121
  * Deserializes from a hex string.
122
122
  * @param str - A hex string to deserialize from.
123
- * @returns A new BaseOrMergeRollupPublicInputs instance.
123
+ * @returns A new TxRollupPublicInputs instance.
124
124
  */
125
125
  static fromString(str: string) {
126
- return BaseOrMergeRollupPublicInputs.fromBuffer(hexToBuffer(str));
126
+ return TxRollupPublicInputs.fromBuffer(hexToBuffer(str));
127
127
  }
128
128
 
129
129
  /** Returns a buffer representation for JSON serialization. */
@@ -133,6 +133,6 @@ export class BaseOrMergeRollupPublicInputs {
133
133
 
134
134
  /** Creates an instance from a hex string. */
135
135
  static get schema() {
136
- return bufferSchemaFor(BaseOrMergeRollupPublicInputs);
136
+ return bufferSchemaFor(TxRollupPublicInputs);
137
137
  }
138
138
  }
@@ -22,6 +22,29 @@ export enum OffenseType {
22
22
  ATTESTED_DESCENDANT_OF_INVALID = 7,
23
23
  }
24
24
 
25
+ export function getOffenseTypeName(offense: OffenseType) {
26
+ switch (offense) {
27
+ case OffenseType.UNKNOWN:
28
+ return 'unknown';
29
+ case OffenseType.DATA_WITHHOLDING:
30
+ return 'data_withholding';
31
+ case OffenseType.VALID_EPOCH_PRUNED:
32
+ return 'valid_epoch_pruned';
33
+ case OffenseType.INACTIVITY:
34
+ return 'inactivity';
35
+ case OffenseType.BROADCASTED_INVALID_BLOCK_PROPOSAL:
36
+ return 'broadcasted_invalid_block_proposal';
37
+ case OffenseType.PROPOSED_INSUFFICIENT_ATTESTATIONS:
38
+ return 'proposed_insufficient_attestations';
39
+ case OffenseType.PROPOSED_INCORRECT_ATTESTATIONS:
40
+ return 'proposed_incorrect_attestations';
41
+ case OffenseType.ATTESTED_DESCENDANT_OF_INVALID:
42
+ return 'attested_descendant_of_invalid';
43
+ default:
44
+ throw new Error(`Unknown offense type: ${offense}`);
45
+ }
46
+ }
47
+
25
48
  export const OffenseTypeSchema = z.nativeEnum(OffenseType);
26
49
 
27
50
  export const OffenseToBigInt: Record<OffenseType, bigint> = {
@@ -2,6 +2,12 @@ import { fromEntries, getEntries, maxBy } from '@aztec/foundation/collection';
2
2
  import { jsonParseWithSchema } from '@aztec/foundation/json-rpc';
3
3
  import type { ReadOnlyFileStore } from '@aztec/stdlib/file-store';
4
4
 
5
+ import { createReadStream, createWriteStream } from 'fs';
6
+ import fs from 'fs/promises';
7
+ import pathMod from 'path';
8
+ import { pipeline } from 'stream/promises';
9
+ import { createGunzip, gunzipSync } from 'zlib';
10
+
5
11
  import {
6
12
  SnapshotDataKeys,
7
13
  type SnapshotDataUrls,
@@ -20,7 +26,8 @@ export async function getSnapshotIndex(
20
26
  try {
21
27
  if (await store.exists(snapshotIndexPath)) {
22
28
  const snapshotIndexData = await store.read(snapshotIndexPath);
23
- return jsonParseWithSchema(snapshotIndexData.toString(), SnapshotsIndexSchema);
29
+ const buf = maybeGunzip(snapshotIndexData);
30
+ return jsonParseWithSchema(buf.toString('utf-8'), SnapshotsIndexSchema);
24
31
  } else {
25
32
  return undefined;
26
33
  }
@@ -50,10 +57,67 @@ export function makeSnapshotPaths(baseDir: string): SnapshotDataUrls {
50
57
  return fromEntries(SnapshotDataKeys.map(key => [key, `${baseDir}/${key}.db`]));
51
58
  }
52
59
 
60
+ function isGzipMagic(data: Buffer): boolean {
61
+ return data.length >= 2 && data[0] === 0x1f && data[1] === 0x8b;
62
+ }
63
+
64
+ function maybeGunzip(data: Buffer): Buffer {
65
+ const magicNumberIndicatesGzip = isGzipMagic(data);
66
+
67
+ if (magicNumberIndicatesGzip) {
68
+ try {
69
+ const out = gunzipSync(data);
70
+ return out;
71
+ } catch (err) {
72
+ throw new Error(`Decompression of gzipped data failed: ${(err as Error).message}`);
73
+ }
74
+ }
75
+ return data;
76
+ }
77
+
78
+ async function detectGzip(localFilePathToPeek: string): Promise<boolean> {
79
+ // Peek the actual bytes we downloaded.
80
+ try {
81
+ const fd = await fs.open(localFilePathToPeek, 'r');
82
+ try {
83
+ const header = Buffer.alloc(2);
84
+ const { bytesRead } = await fd.read(header, 0, 2, 0);
85
+ return bytesRead >= 2 && isGzipMagic(header);
86
+ } finally {
87
+ await fd.close();
88
+ }
89
+ } catch {
90
+ return false;
91
+ }
92
+ }
93
+
53
94
  export async function downloadSnapshot(
54
95
  snapshot: Pick<SnapshotMetadata, 'dataUrls'>,
55
96
  localPaths: Record<SnapshotDataKeys, string>,
56
97
  store: ReadOnlyFileStore,
57
98
  ): Promise<void> {
58
- await Promise.all(getEntries(localPaths).map(([key, path]) => store.download(snapshot.dataUrls[key], path)));
99
+ await Promise.all(
100
+ getEntries(localPaths).map(async ([key, path]) => {
101
+ await fs.mkdir(pathMod.dirname(path), { recursive: true });
102
+
103
+ const tmpPath = `${path}.download`;
104
+ try {
105
+ const url = snapshot.dataUrls[key];
106
+ await store.download(url, tmpPath);
107
+
108
+ const isGzip = await detectGzip(tmpPath);
109
+
110
+ const read = createReadStream(tmpPath);
111
+ const write = createWriteStream(path);
112
+ if (isGzip) {
113
+ const gunzip = createGunzip();
114
+ await pipeline(read, gunzip, write);
115
+ } else {
116
+ await pipeline(read, write);
117
+ }
118
+ } finally {
119
+ await fs.unlink(tmpPath).catch(() => undefined);
120
+ }
121
+ }),
122
+ );
59
123
  }
@@ -48,6 +48,7 @@ export async function uploadSnapshotToIndex(
48
48
 
49
49
  await store.save(getSnapshotIndexPath(metadata), Buffer.from(jsonStringify(snapshotsIndex, true)), {
50
50
  public: true, // Make the index publicly accessible
51
+ compress: false, // Ensure index.json is not gzipped
51
52
  metadata: { ['Cache-control']: 'no-store' }, // Do not cache object versions
52
53
  });
53
54
  return newSnapshotMetadata;