@aztec/p2p 0.0.1-commit.c2eed6949 → 0.0.1-commit.c52d6e7

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 (427) hide show
  1. package/README.md +7 -6
  2. package/dest/bootstrap/bootstrap.d.ts +1 -1
  3. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  4. package/dest/bootstrap/bootstrap.js +22 -6
  5. package/dest/client/factory.d.ts +4 -3
  6. package/dest/client/factory.d.ts.map +1 -1
  7. package/dest/client/factory.js +36 -26
  8. package/dest/client/interface.d.ts +52 -12
  9. package/dest/client/interface.d.ts.map +1 -1
  10. package/dest/client/p2p_client.d.ts +34 -19
  11. package/dest/client/p2p_client.d.ts.map +1 -1
  12. package/dest/client/p2p_client.js +105 -46
  13. package/dest/config.d.ts +143 -107
  14. package/dest/config.d.ts.map +1 -1
  15. package/dest/config.js +72 -26
  16. package/dest/errors/p2p-service.error.d.ts +9 -0
  17. package/dest/errors/p2p-service.error.d.ts.map +1 -0
  18. package/dest/errors/p2p-service.error.js +10 -0
  19. package/dest/errors/reqresp.error.d.ts +9 -16
  20. package/dest/errors/reqresp.error.d.ts.map +1 -1
  21. package/dest/errors/reqresp.error.js +10 -17
  22. package/dest/index.d.ts +1 -2
  23. package/dest/index.d.ts.map +1 -1
  24. package/dest/index.js +0 -1
  25. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +98 -56
  26. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  27. package/dest/mem_pools/attestation_pool/attestation_pool.js +269 -196
  28. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
  29. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  30. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +218 -59
  31. package/dest/mem_pools/attestation_pool/mocks.d.ts +1 -1
  32. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  33. package/dest/mem_pools/attestation_pool/mocks.js +6 -4
  34. package/dest/mem_pools/index.d.ts +1 -2
  35. package/dest/mem_pools/index.d.ts.map +1 -1
  36. package/dest/mem_pools/instrumentation.d.ts +9 -4
  37. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  38. package/dest/mem_pools/instrumentation.js +28 -9
  39. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +1 -5
  40. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -1
  41. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +1 -7
  42. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +3 -3
  43. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -1
  44. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +6 -6
  45. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
  46. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  47. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +3 -3
  48. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +1 -1
  49. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -1
  50. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +3 -1
  51. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +2 -1
  52. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
  53. package/dest/mem_pools/tx_pool_v2/eviction/index.js +1 -0
  54. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
  55. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
  56. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +64 -0
  57. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +1 -1
  58. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -1
  59. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +3 -4
  60. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +1 -1
  61. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -1
  62. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +6 -7
  63. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +1 -1
  64. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -1
  65. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +6 -5
  66. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +33 -5
  67. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
  68. package/dest/mem_pools/tx_pool_v2/interfaces.js +2 -1
  69. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +5 -2
  70. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
  71. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +13 -6
  72. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +15 -1
  73. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
  74. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +31 -0
  75. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +9 -3
  76. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
  77. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +19 -8
  78. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +17 -4
  79. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
  80. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +208 -118
  81. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +10 -3
  82. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  83. package/dest/msg_validators/attestation_validator/attestation_validator.js +38 -16
  84. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +7 -3
  85. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  86. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +4 -5
  87. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +8 -3
  88. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  89. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +2 -2
  90. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +8 -3
  91. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  92. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +8 -2
  93. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +25 -3
  94. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  95. package/dest/msg_validators/proposal_validator/proposal_validator.js +85 -15
  96. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +1 -1
  97. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  98. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +8 -15
  99. package/dest/msg_validators/tx_validator/allowed_public_setup.js +3 -3
  100. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  101. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts +15 -0
  102. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts.map +1 -0
  103. package/dest/msg_validators/tx_validator/cached_tx_validator.js +19 -0
  104. package/dest/msg_validators/tx_validator/data_validator.d.ts +2 -1
  105. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  106. package/dest/msg_validators/tx_validator/data_validator.js +1 -0
  107. package/dest/msg_validators/tx_validator/factory.d.ts +14 -15
  108. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  109. package/dest/msg_validators/tx_validator/factory.js +29 -16
  110. package/dest/msg_validators/tx_validator/gas_validator.d.ts +47 -10
  111. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  112. package/dest/msg_validators/tx_validator/gas_validator.js +65 -48
  113. package/dest/msg_validators/tx_validator/index.d.ts +3 -1
  114. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  115. package/dest/msg_validators/tx_validator/index.js +2 -0
  116. package/dest/msg_validators/tx_validator/phases_validator.js +2 -2
  117. package/dest/msg_validators/tx_validator/timestamp_validator.js +1 -1
  118. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +2 -1
  119. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  120. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -0
  121. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts +48 -0
  122. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts.map +1 -0
  123. package/dest/msg_validators/tx_validator/tx_validation_cache.js +68 -0
  124. package/dest/services/data_store.d.ts +1 -1
  125. package/dest/services/data_store.d.ts.map +1 -1
  126. package/dest/services/data_store.js +5 -5
  127. package/dest/services/discv5/discV5_service.d.ts +13 -2
  128. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  129. package/dest/services/discv5/discV5_service.js +119 -25
  130. package/dest/services/discv5/persisted_enr_store.d.ts +38 -0
  131. package/dest/services/discv5/persisted_enr_store.d.ts.map +1 -0
  132. package/dest/services/discv5/persisted_enr_store.js +145 -0
  133. package/dest/services/dummy_service.d.ts +15 -15
  134. package/dest/services/dummy_service.d.ts.map +1 -1
  135. package/dest/services/dummy_service.js +15 -16
  136. package/dest/services/encoding.d.ts +19 -6
  137. package/dest/services/encoding.d.ts.map +1 -1
  138. package/dest/services/encoding.js +25 -15
  139. package/dest/services/gossipsub/topic_score_params.d.ts +6 -12
  140. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
  141. package/dest/services/gossipsub/topic_score_params.js +4 -14
  142. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  143. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  144. package/dest/services/libp2p/instrumentation.js +14 -0
  145. package/dest/services/libp2p/libp2p_service.d.ts +41 -40
  146. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  147. package/dest/services/libp2p/libp2p_service.js +323 -275
  148. package/dest/services/peer-manager/peer_manager.d.ts +20 -3
  149. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  150. package/dest/services/peer-manager/peer_manager.js +77 -23
  151. package/dest/services/peer-manager/peer_scoring.d.ts +34 -2
  152. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  153. package/dest/services/peer-manager/peer_scoring.js +102 -13
  154. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +1 -8
  155. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  156. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +35 -44
  157. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +8 -5
  158. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  159. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +5 -14
  160. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -1
  161. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +6 -20
  162. package/dest/services/reqresp/config.d.ts +15 -3
  163. package/dest/services/reqresp/config.d.ts.map +1 -1
  164. package/dest/services/reqresp/config.js +11 -0
  165. package/dest/services/reqresp/interface.d.ts +16 -18
  166. package/dest/services/reqresp/interface.d.ts.map +1 -1
  167. package/dest/services/reqresp/interface.js +10 -20
  168. package/dest/services/reqresp/metrics.d.ts +1 -1
  169. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  170. package/dest/services/reqresp/metrics.js +0 -1
  171. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +4 -3
  172. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  173. package/dest/services/reqresp/protocols/block_txs/bitvector.js +3 -2
  174. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +1 -1
  175. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  176. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +31 -28
  177. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +12 -7
  178. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  179. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +42 -24
  180. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  181. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  182. package/dest/services/reqresp/protocols/index.js +0 -1
  183. package/dest/services/reqresp/protocols/tx.d.ts +1 -1
  184. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  185. package/dest/services/reqresp/protocols/tx.js +1 -3
  186. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  187. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  188. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  189. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  190. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  191. package/dest/services/reqresp/rate-limiter/rate_limits.js +3 -13
  192. package/dest/services/reqresp/reqresp.d.ts +7 -29
  193. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  194. package/dest/services/reqresp/reqresp.js +59 -209
  195. package/dest/services/service.d.ts +27 -16
  196. package/dest/services/service.d.ts.map +1 -1
  197. package/dest/services/tx_collection/config.d.ts +2 -23
  198. package/dest/services/tx_collection/config.d.ts.map +1 -1
  199. package/dest/services/tx_collection/config.js +2 -55
  200. package/dest/services/tx_collection/file_store_tx_collection.d.ts +12 -28
  201. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -1
  202. package/dest/services/tx_collection/file_store_tx_collection.js +43 -83
  203. package/dest/services/tx_collection/file_store_tx_source.d.ts +5 -4
  204. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
  205. package/dest/services/tx_collection/file_store_tx_source.js +39 -29
  206. package/dest/services/tx_collection/index.d.ts +2 -3
  207. package/dest/services/tx_collection/index.d.ts.map +1 -1
  208. package/dest/services/tx_collection/index.js +0 -1
  209. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  210. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  211. package/dest/services/tx_collection/instrumentation.js +0 -2
  212. package/dest/services/tx_collection/tx_collection.d.ts +35 -51
  213. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  214. package/dest/services/tx_collection/tx_collection.js +275 -119
  215. package/dest/services/tx_collection/tx_collection_sink.d.ts +1 -1
  216. package/dest/services/tx_collection/tx_collection_sink.js +2 -2
  217. package/dest/services/tx_collection/tx_source.d.ts +6 -5
  218. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  219. package/dest/services/tx_collection/tx_source.js +13 -8
  220. package/dest/services/tx_file_store/tx_file_store.d.ts +1 -3
  221. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
  222. package/dest/services/tx_file_store/tx_file_store.js +4 -14
  223. package/dest/services/tx_provider.d.ts +3 -1
  224. package/dest/services/tx_provider.d.ts.map +1 -1
  225. package/dest/services/tx_provider.js +3 -0
  226. package/dest/test-helpers/make-test-p2p-clients.d.ts +1 -1
  227. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  228. package/dest/test-helpers/make-test-p2p-clients.js +5 -2
  229. package/dest/test-helpers/mock-pubsub.d.ts +21 -12
  230. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  231. package/dest/test-helpers/mock-pubsub.js +39 -47
  232. package/dest/test-helpers/reqresp-nodes.d.ts +4 -5
  233. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  234. package/dest/test-helpers/reqresp-nodes.js +16 -18
  235. package/dest/test-helpers/test_tx_provider.d.ts +3 -1
  236. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -1
  237. package/dest/test-helpers/test_tx_provider.js +3 -0
  238. package/dest/test-helpers/testbench-utils.d.ts +15 -14
  239. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  240. package/dest/test-helpers/testbench-utils.js +30 -14
  241. package/dest/testbench/p2p_client_testbench_worker.d.ts +3 -5
  242. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  243. package/dest/testbench/p2p_client_testbench_worker.js +101 -39
  244. package/dest/testbench/worker_client_manager.d.ts +10 -6
  245. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  246. package/dest/testbench/worker_client_manager.js +51 -9
  247. package/dest/util.d.ts +8 -8
  248. package/dest/util.d.ts.map +1 -1
  249. package/dest/util.js +38 -10
  250. package/dest/versioning.d.ts +3 -6
  251. package/dest/versioning.d.ts.map +1 -1
  252. package/dest/versioning.js +3 -24
  253. package/package.json +15 -16
  254. package/src/bootstrap/bootstrap.ts +17 -3
  255. package/src/client/factory.ts +54 -25
  256. package/src/client/interface.ts +48 -18
  257. package/src/client/p2p_client.ts +125 -79
  258. package/src/client/test/{tx_proposal_collector/README.md → p2p_client.batch_tx_requester.bench.README.md} +23 -53
  259. package/src/config.ts +146 -34
  260. package/src/errors/p2p-service.error.ts +11 -0
  261. package/src/errors/reqresp.error.ts +13 -19
  262. package/src/index.ts +0 -1
  263. package/src/mem_pools/attestation_pool/attestation_pool.ts +324 -239
  264. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +238 -63
  265. package/src/mem_pools/attestation_pool/mocks.ts +13 -8
  266. package/src/mem_pools/index.ts +0 -3
  267. package/src/mem_pools/instrumentation.ts +18 -12
  268. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +1 -9
  269. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +7 -7
  270. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +2 -4
  271. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +3 -2
  272. package/src/mem_pools/tx_pool_v2/eviction/index.ts +1 -0
  273. package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +67 -0
  274. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +1 -3
  275. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +5 -7
  276. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +5 -6
  277. package/src/mem_pools/tx_pool_v2/interfaces.ts +31 -4
  278. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +20 -8
  279. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +35 -0
  280. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +22 -8
  281. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +233 -123
  282. package/src/msg_validators/attestation_validator/attestation_validator.ts +46 -15
  283. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +15 -7
  284. package/src/msg_validators/proposal_validator/README.md +1 -1
  285. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +15 -3
  286. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +26 -3
  287. package/src/msg_validators/proposal_validator/proposal_validator.ts +94 -12
  288. package/src/msg_validators/tx_validator/README.md +13 -3
  289. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +3 -12
  290. package/src/msg_validators/tx_validator/allowed_public_setup.ts +3 -3
  291. package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
  292. package/src/msg_validators/tx_validator/cached_tx_validator.ts +31 -0
  293. package/src/msg_validators/tx_validator/data_validator.ts +2 -0
  294. package/src/msg_validators/tx_validator/factory.ts +37 -20
  295. package/src/msg_validators/tx_validator/gas_validator.ts +99 -54
  296. package/src/msg_validators/tx_validator/index.ts +2 -0
  297. package/src/msg_validators/tx_validator/phases_validator.ts +2 -2
  298. package/src/msg_validators/tx_validator/timestamp_validator.ts +1 -1
  299. package/src/msg_validators/tx_validator/tx_proof_validator.ts +2 -0
  300. package/src/msg_validators/tx_validator/tx_validation_cache.ts +101 -0
  301. package/src/services/data_store.ts +5 -13
  302. package/src/services/discv5/discV5_service.ts +126 -16
  303. package/src/services/discv5/persisted_enr_store.ts +158 -0
  304. package/src/services/dummy_service.ts +20 -39
  305. package/src/services/encoding.ts +28 -20
  306. package/src/services/gossipsub/README.md +33 -11
  307. package/src/services/gossipsub/topic_score_params.ts +9 -18
  308. package/src/services/libp2p/instrumentation.ts +14 -0
  309. package/src/services/libp2p/libp2p_service.ts +371 -301
  310. package/src/services/peer-manager/peer_manager.ts +84 -22
  311. package/src/services/peer-manager/peer_scoring.ts +102 -8
  312. package/src/services/reqresp/README.md +2 -37
  313. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +39 -52
  314. package/src/services/reqresp/batch-tx-requester/interface.ts +11 -4
  315. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +12 -25
  316. package/src/services/reqresp/config.ts +19 -2
  317. package/src/services/reqresp/interface.ts +21 -47
  318. package/src/services/reqresp/metrics.ts +0 -1
  319. package/src/services/reqresp/protocols/block_txs/bitvector.ts +3 -2
  320. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +34 -30
  321. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +47 -20
  322. package/src/services/reqresp/protocols/index.ts +0 -1
  323. package/src/services/reqresp/protocols/tx.ts +1 -3
  324. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  325. package/src/services/reqresp/rate-limiter/rate_limits.ts +3 -13
  326. package/src/services/reqresp/reqresp.ts +69 -252
  327. package/src/services/service.ts +32 -32
  328. package/src/services/tx_collection/config.ts +3 -80
  329. package/src/services/tx_collection/file_store_tx_collection.ts +54 -103
  330. package/src/services/tx_collection/file_store_tx_source.ts +43 -31
  331. package/src/services/tx_collection/index.ts +1 -6
  332. package/src/services/tx_collection/instrumentation.ts +1 -7
  333. package/src/services/tx_collection/tx_collection.ts +330 -173
  334. package/src/services/tx_collection/tx_collection_sink.ts +2 -2
  335. package/src/services/tx_collection/tx_source.ts +10 -8
  336. package/src/services/tx_file_store/tx_file_store.ts +5 -17
  337. package/src/services/tx_provider.ts +5 -0
  338. package/src/test-helpers/make-test-p2p-clients.ts +3 -0
  339. package/src/test-helpers/mock-pubsub.ts +41 -64
  340. package/src/test-helpers/reqresp-nodes.ts +12 -22
  341. package/src/test-helpers/test_tx_provider.ts +5 -0
  342. package/src/test-helpers/testbench-utils.ts +36 -26
  343. package/src/testbench/p2p_client_testbench_worker.ts +108 -53
  344. package/src/testbench/worker_client_manager.ts +59 -20
  345. package/src/util.ts +33 -14
  346. package/src/versioning.ts +3 -33
  347. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +0 -2
  348. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +0 -1
  349. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +0 -304
  350. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +0 -73
  351. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +0 -1
  352. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +0 -8
  353. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  354. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  355. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  356. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  357. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  358. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  359. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  360. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  361. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  362. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  363. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  364. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -123
  365. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  366. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  367. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +0 -84
  368. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  369. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  370. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  371. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  372. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  373. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  374. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  375. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  376. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  377. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  378. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  379. package/dest/mem_pools/tx_pool/index.js +0 -2
  380. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  381. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  382. package/dest/mem_pools/tx_pool/priority.js +0 -15
  383. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  384. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  385. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  386. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  387. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  388. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -402
  389. package/dest/msg_validators/clock_tolerance.d.ts +0 -21
  390. package/dest/msg_validators/clock_tolerance.d.ts.map +0 -1
  391. package/dest/msg_validators/clock_tolerance.js +0 -38
  392. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +0 -64
  393. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +0 -1
  394. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +0 -151
  395. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  396. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  397. package/dest/services/reqresp/protocols/block.js +0 -32
  398. package/dest/services/tx_collection/fast_tx_collection.d.ts +0 -51
  399. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +0 -1
  400. package/dest/services/tx_collection/fast_tx_collection.js +0 -311
  401. package/dest/services/tx_collection/proposal_tx_collector.d.ts +0 -48
  402. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +0 -1
  403. package/dest/services/tx_collection/proposal_tx_collector.js +0 -50
  404. package/dest/services/tx_collection/slow_tx_collection.d.ts +0 -57
  405. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +0 -1
  406. package/dest/services/tx_collection/slow_tx_collection.js +0 -211
  407. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +0 -343
  408. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +0 -43
  409. package/src/mem_pools/tx_pool/README.md +0 -270
  410. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  411. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  412. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  413. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -163
  414. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  415. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  416. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  417. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  418. package/src/mem_pools/tx_pool/index.ts +0 -2
  419. package/src/mem_pools/tx_pool/priority.ts +0 -20
  420. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  421. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -321
  422. package/src/msg_validators/clock_tolerance.ts +0 -52
  423. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +0 -161
  424. package/src/services/reqresp/protocols/block.ts +0 -37
  425. package/src/services/tx_collection/fast_tx_collection.ts +0 -361
  426. package/src/services/tx_collection/proposal_tx_collector.ts +0 -108
  427. package/src/services/tx_collection/slow_tx_collection.ts +0 -266
@@ -1,20 +1,21 @@
1
1
  import type { EpochCacheInterface } from '@aztec/epoch-cache';
2
- import { BlockNumber, SlotNumber } from '@aztec/foundation/branded-types';
2
+ import { BlockNumber, type CheckpointProposalHash, SlotNumber } from '@aztec/foundation/branded-types';
3
3
  import { DateProvider } from '@aztec/foundation/timer';
4
4
  import type { AztecAsyncKVStore } from '@aztec/kv-store';
5
- import { type EthAddress, type L2BlockSource, type L2BlockStreamEvent, type L2Tips } from '@aztec/stdlib/block';
5
+ import { type BlockHash, type EthAddress, type L2BlockSource, type L2BlockStreamEvent, type LocalL2Tips } from '@aztec/stdlib/block';
6
6
  import type { ContractDataSource } from '@aztec/stdlib/contract';
7
- import { type PeerInfo } from '@aztec/stdlib/interfaces/server';
7
+ import { type GetTxByHashOptions, type PeerInfo } from '@aztec/stdlib/interfaces/server';
8
8
  import { type BlockProposal, CheckpointAttestation, type CheckpointProposal, type TopicType } from '@aztec/stdlib/p2p';
9
9
  import type { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
10
10
  import { type TelemetryClient, WithTracer } from '@aztec/telemetry-client';
11
11
  import type { PeerId } from '@libp2p/interface';
12
12
  import type { ENR } from '@nethermindeth/enr';
13
13
  import { type P2PConfig } from '../config.js';
14
+ import type { ProposalsForSlot } from '../mem_pools/attestation_pool/attestation_pool.js';
14
15
  import type { MemPools } from '../mem_pools/interface.js';
15
16
  import type { AuthRequest, StatusMessage } from '../services/index.js';
16
- import { ReqRespSubProtocol, type ReqRespSubProtocolHandler, type ReqRespSubProtocolValidators } from '../services/reqresp/interface.js';
17
- import type { DuplicateAttestationInfo, DuplicateProposalInfo, P2PBlockReceivedCallback, P2PCheckpointReceivedCallback, P2PService } from '../services/service.js';
17
+ import { ReqRespSubProtocol, type ReqRespSubProtocolHandler } from '../services/reqresp/interface.js';
18
+ import type { DuplicateAttestationInfo, DuplicateProposalInfo, OversizedProposalInfo, P2PBlockReceivedCallback, P2PCheckpointReceivedCallback, P2PService } from '../services/service.js';
18
19
  import { TxCollection } from '../services/tx_collection/tx_collection.js';
19
20
  import type { TxFileStore } from '../services/tx_file_store/tx_file_store.js';
20
21
  import { TxProvider } from '../services/tx_provider.js';
@@ -51,9 +52,7 @@ export declare class P2PClient extends WithTracer implements P2P {
51
52
  private validatorAddresses;
52
53
  /** Tracks the last slot for which we called prepareForSlot */
53
54
  private lastSlotProcessed;
54
- /** Polls for slot changes and calls prepareForSlot on the tx pool */
55
- private slotMonitor;
56
- constructor(store: AztecAsyncKVStore, l2BlockSource: L2BlockSource & ContractDataSource, mempools: MemPools, p2pService: P2PService, txCollection: TxCollection, txFileStore: TxFileStore | undefined, epochCache: EpochCacheInterface, config?: Partial<P2PConfig>, _dateProvider?: DateProvider, telemetry?: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
55
+ constructor(store: AztecAsyncKVStore, l2BlockSource: L2BlockSource & ContractDataSource, mempools: MemPools, p2pService: P2PService, txCollection: TxCollection, txFileStore: TxFileStore | undefined, epochCache: EpochCacheInterface, config: Partial<P2PConfig> | undefined, _dateProvider: DateProvider | undefined, telemetry: TelemetryClient | undefined, log: import("@aztec/foundation/log").Logger | undefined, initialBlockHash: BlockHash);
57
56
  registerThisValidatorAddresses(addresses: EthAddress[]): void;
58
57
  clear(): Promise<void>;
59
58
  isP2PClient(): true;
@@ -62,14 +61,14 @@ export declare class P2PClient extends WithTracer implements P2P {
62
61
  getGossipMeshPeerCount(topicType: TopicType): Promise<number>;
63
62
  getL2BlockHash(number: BlockNumber): Promise<string | undefined>;
64
63
  updateP2PConfig(config: Partial<P2PConfig>): Promise<void>;
65
- getL2Tips(): Promise<L2Tips>;
64
+ getL2Tips(): Promise<LocalL2Tips>;
66
65
  handleBlockStreamEvent(event: L2BlockStreamEvent): Promise<void>;
67
66
  /**
68
67
  * Starts the P2P client.
69
68
  * @returns An empty promise signalling the synching process.
70
69
  */
71
70
  start(): Promise<void>;
72
- addReqRespSubProtocol(subProtocol: ReqRespSubProtocol, handler: ReqRespSubProtocolHandler, validator: ReqRespSubProtocolValidators[ReqRespSubProtocol]): Promise<void>;
71
+ addReqRespSubProtocol(subProtocol: ReqRespSubProtocol, handler: ReqRespSubProtocolHandler): Promise<void>;
73
72
  private initBlockStream;
74
73
  /**
75
74
  * Allows consumers to stop the instance of the P2P client.
@@ -81,29 +80,45 @@ export declare class P2PClient extends WithTracer implements P2P {
81
80
  broadcastProposal(proposal: BlockProposal): Promise<void>;
82
81
  broadcastCheckpointProposal(proposal: CheckpointProposal): Promise<void>;
83
82
  broadcastCheckpointAttestations(attestations: CheckpointAttestation[]): Promise<void>;
84
- getCheckpointAttestationsForSlot(slot: SlotNumber, proposalId?: string): Promise<CheckpointAttestation[]>;
83
+ getCheckpointAttestationsForSlot(slot: SlotNumber, proposalPayloadHash?: CheckpointProposalHash): Promise<CheckpointAttestation[]>;
85
84
  addOwnCheckpointAttestations(attestations: CheckpointAttestation[]): Promise<void>;
85
+ getProposalsForSlot(slot: SlotNumber): Promise<ProposalsForSlot>;
86
86
  hasBlockProposalsForSlot(slot: SlotNumber): Promise<boolean>;
87
+ hasCheckpointProposalForSlot(slot: SlotNumber): Promise<boolean>;
87
88
  registerBlockProposalHandler(handler: P2PBlockReceivedCallback): void;
88
- registerCheckpointProposalHandler(handler: P2PCheckpointReceivedCallback): void;
89
+ registerValidatorCheckpointProposalHandler(handler: P2PCheckpointReceivedCallback): void;
90
+ registerAllNodesCheckpointProposalHandler(handler: P2PCheckpointReceivedCallback): void;
89
91
  registerDuplicateProposalCallback(callback: (info: DuplicateProposalInfo) => void): void;
92
+ registerOversizedProposalCallback(callback: (info: OversizedProposalInfo) => void): void;
90
93
  registerDuplicateAttestationCallback(callback: (info: DuplicateAttestationInfo) => void): void;
91
- getPendingTxs(limit?: number, after?: TxHash): Promise<Tx[]>;
94
+ registerCheckpointAttestationCallback(callback: (attestation: CheckpointAttestation) => void): void;
95
+ getPendingTxs(limit?: number, after?: TxHash, options?: GetTxByHashOptions): Promise<Tx[]>;
92
96
  getPendingTxCount(): Promise<number>;
93
- iteratePendingTxs(): AsyncIterableIterator<Tx>;
94
- iterateEligiblePendingTxs(): AsyncIterableIterator<Tx>;
97
+ hasEligiblePendingTxs(minCount: number): Promise<boolean>;
98
+ iteratePendingTxs(opts?: {
99
+ includeProof?: boolean;
100
+ }): AsyncIterableIterator<Tx>;
101
+ iterateEligiblePendingTxs(opts?: {
102
+ includeProof?: boolean;
103
+ }): AsyncIterableIterator<Tx>;
95
104
  /**
96
105
  * Returns a transaction in the transaction pool by its hash.
97
106
  * @param txHash - Hash of the transaction to look for in the pool.
107
+ * @param opts - Set `includeProof: false` to skip loading the tx proof from the DB.
98
108
  * @returns A single tx or undefined.
99
109
  */
100
- getTxByHashFromPool(txHash: TxHash): Promise<Tx | undefined>;
110
+ getTxByHashFromPool(txHash: TxHash, opts?: {
111
+ includeProof?: boolean;
112
+ }): Promise<Tx | undefined>;
101
113
  /**
102
114
  * Returns transactions in the transaction pool by hash.
103
115
  * @param txHashes - Hashes of the transactions to look for.
116
+ * @param opts - Set `includeProof: false` to skip loading tx proofs from the DB.
104
117
  * @returns The txs found, in the same order as the requested hashes. If a tx is not found, it will be undefined.
105
118
  */
106
- getTxsByHashFromPool(txHashes: TxHash[]): Promise<(Tx | undefined)[]>;
119
+ getTxsByHashFromPool(txHashes: TxHash[], opts?: {
120
+ includeProof?: boolean;
121
+ }): Promise<(Tx | undefined)[]>;
107
122
  hasTxsInPool(txHashes: TxHash[]): Promise<boolean[]>;
108
123
  /**
109
124
  * Returns an archived transaction in the transaction pool by its hash.
@@ -155,7 +170,7 @@ export declare class P2PClient extends WithTracer implements P2P {
155
170
  getStatus(): Promise<P2PSyncState>;
156
171
  private handleMinedBlocks;
157
172
  private handleLatestL2Blocks;
158
- private startCollectingMissingTxs;
173
+ private collectingMissingTxs;
159
174
  private handleFinalizedL2Blocks;
160
175
  private handlePruneL2Blocks;
161
176
  private isEpochPrune;
@@ -183,4 +198,4 @@ export declare class P2PClient extends WithTracer implements P2P {
183
198
  prepareForSlot(slotNumber: SlotNumber): Promise<void>;
184
199
  handleAuthRequestFromPeer(authRequest: AuthRequest, peerId: PeerId): Promise<StatusMessage>;
185
200
  }
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJwX2NsaWVudC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9wMnBfY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBb0IsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHNUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUF1QixNQUFNLGlCQUFpQixDQUFDO0FBRTlFLE9BQU8sRUFFTCxLQUFLLFVBQVUsRUFHZixLQUFLLGFBQWEsRUFFbEIsS0FBSyxrQkFBa0IsRUFDdkIsS0FBSyxNQUFNLEVBRVosTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBVyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxLQUFLLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxLQUFLLGtCQUFrQixFQUFFLEtBQUssU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkgsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRSxPQUFPLEVBQWMsS0FBSyxlQUFlLEVBQUUsVUFBVSxFQUFpQyxNQUFNLHlCQUF5QixDQUFDO0FBRXRILE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBdUIsTUFBTSxjQUFjLENBQUM7QUFHbkUsT0FBTyxLQUFLLEVBQUUsUUFB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
201
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJwX2NsaWVudC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9wMnBfY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUNMLFdBQVcsRUFFWCxLQUFLLHNCQUFzQixFQUMzQixVQUFVLEVBQ1gsTUFBTSxpQ0FBaUMsQ0FBQztBQUV6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQXVCLE1BQU0saUJBQWlCLENBQUM7QUFFOUUsT0FBTyxFQUVMLEtBQUssU0FBUyxFQUVkLEtBQUssVUFBVSxFQUlmLEtBQUssYUFBYSxFQUNsQixLQUFLLGtCQUFrQixFQUV2QixLQUFLLFdBQVcsRUFDakIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpFLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUFFLEtBQUssUUFBUSxFQUFXLE1BQU0saUNBQWlDLENBQUM7QUFDbEcsT0FBTyxFQUFFLEtBQUssYUFBYSxFQUFFLHFCQUFxQixFQUFFLEtBQUssa0JBQWtCLEVBQUUsS0FBSyxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2SCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hFLE9BQU8sRUFBYyxLQUFLLGVBQWUsRUFBRSxVQUFVLEVBQWlDLE1BQU0seUJBQXlCLENBQUM7QUFFdEgsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFOUMsT0FBTyxFQUFFLEtBQUss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
@@ -1 +1 @@
1
- {"version":3,"file":"p2p_client.d.ts","sourceRoot":"","sources":["../../src/client/p2p_client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAoB,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG5F,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAuB,MAAM,iBAAiB,CAAC;AAE9E,OAAO,EAEL,KAAK,UAAU,EAGf,KAAK,aAAa,EAElB,KAAK,kBAAkB,EACvB,KAAK,MAAM,EAEZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,KAAK,QAAQ,EAAW,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,KAAK,aAAa,EAAE,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACvH,OAAO,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAc,KAAK,eAAe,EAAE,UAAU,EAAiC,MAAM,yBAAyB,CAAC;AAEtH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,KAAK,SAAS,EAAuB,MAAM,cAAc,CAAC;AAGnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,EAC9B,KAAK,4BAA4B,EAClC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EACV,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,6BAA6B,EAC7B,UAAU,EACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,KAAK,GAAG,EAAkB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE7E;;GAEG;AACH,qBAAa,SAAU,SAAQ,UAAW,YAAW,GAAG;;IAgCpD,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,aAAa;IAErB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,UAAU;IAElB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,GAAG;IAzCb,0HAA0H;IAC1H,OAAO,CAAC,cAAc,CAAiB;IAEvC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,WAAW,CAAC,CAAyB;IAC7C,OAAO,CAAC,wBAAwB,CAAM;IACtC,OAAO,CAAC,wBAAwB,CAAM;IACtC,OAAO,CAAC,2BAA2B,CAAM;IAEzC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,iBAAiB,CAA8B;IAEvD,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,eAAe,CAAqB;IAE5C,OAAO,CAAC,MAAM,CAAY;IAE1B,OAAO,CAAC,WAAW,CAA4B;IAE/C,OAAO,CAAC,UAAU,CAAa;IAE/B,OAAO,CAAC,kBAAkB,CAAoB;IAE9C,8DAA8D;IAC9D,OAAO,CAAC,iBAAiB,CAA+B;IAExD,qEAAqE;IACrE,OAAO,CAAC,WAAW,CAA6B;IAEhD,YACU,KAAK,EAAE,iBAAiB,EACxB,aAAa,EAAE,aAAa,GAAG,kBAAkB,EACzD,QAAQ,EAAE,QAAQ,EACV,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,WAAW,GAAG,SAAS,EACpC,UAAU,EAAE,mBAAmB,EACvC,MAAM,GAAE,OAAO,CAAC,SAAS,CAAM,EACvB,aAAa,GAAE,YAAiC,EAChD,SAAS,GAAE,eAAsC,EACjD,GAAG,yCAAsB,EAkBlC;IAEM,8BAA8B,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG,IAAI,CAGnE;IAEM,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE5B;IAEM,WAAW,IAAI,IAAI,CAEzB;IAEM,aAAa,IAAI,UAAU,CAEjC;IAEM,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAE7D;IAEM,sBAAsB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAEnE;IAEM,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAEtE;IAEY,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAGtE;IAEM,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAElC;IAEY,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmC5E;IAQD;;;OAGG;IACU,KAAK,kBAuEjB;IAED,qBAAqB,CACnB,WAAW,EAAE,kBAAkB,EAC/B,OAAO,EAAE,yBAAyB,EAClC,SAAS,EAAE,4BAA4B,CAAC,kBAAkB,CAAC,GAC1D,OAAO,CAAC,IAAI,CAAC,CAEf;IAED,OAAO,CAAC,eAAe;IAavB;;;OAGG;IACU,IAAI,kBAiBhB;IAED,yDAAyD;IAC5C,IAAI,kBAGhB;IAOY,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBrE;IAOY,2BAA2B,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQpF;IAEY,+BAA+B,CAAC,YAAY,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjG;IAEY,gCAAgC,CAC3C,IAAI,EAAE,UAAU,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAIlC;IAEM,4BAA4B,CAAC,YAAY,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAExF;IAEM,wBAAwB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAElE;IAIM,4BAA4B,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAE3E;IAEM,iCAAiC,CAAC,OAAO,EAAE,6BAA6B,GAAG,IAAI,CAErF;IAEM,iCAAiC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,GAAG,IAAI,CAE9F;IAEM,oCAAoC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,IAAI,GAAG,IAAI,CAEpG;IAEY,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAqBxE;IAEM,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAE1C;IAEa,iBAAiB,IAAI,qBAAqB,CAAC,EAAE,CAAC,CAO3D;IAEa,yBAAyB,IAAI,qBAAqB,CAAC,EAAE,CAAC,CAOnE;IAED;;;;OAIG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAE3D;IAED;;;;OAIG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAEpE;IAED,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAEnD;IAED;;;;OAIG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAE3D;IAED;;;;QAII;IACS,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBzC;IAED;;;;OAIG;IACU,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC,CAG7F;IAEM,MAAM,IAAI,GAAG,GAAG,SAAS,CAE/B;IAEM,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAElD;IAED;;;QAGI;IACS,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpE;IAED;;;OAGG;IACI,OAAO,YAEb;IAED;;;OAGG;IACU,uBAAuB,IAAI,OAAO,CAAC,WAAW,CAAC,CAG3D;IAED;;;OAGG;IACU,uBAAuB,IAAI,OAAO,CAAC,WAAW,CAAC,CAG3D;IAEY,0BAA0B,IAAI,OAAO,CAAC,WAAW,CAAC,CAG9D;IAED,iEAAiE;IACpD,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAElD;IAED;;;OAGG;IACU,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC,CAc9C;YAOa,iBAAiB;YAWjB,oBAAoB;YAapB,yBAAyB;YAiCzB,uBAAuB;YAiBvB,mBAAmB;YASnB,YAAY;YAuBZ,uBAAuB;YAWvB,qBAAqB;IA2BnC;;;OAGG;IACH,OAAO,CAAC,eAAe;IAMhB,kCAAkC,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE;IAED;;;;;;OAMG;IACI,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAEjF;IAED;;;;OAIG;IACU,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjE;IAEM,yBAAyB,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAEjG;CACF"}
1
+ {"version":3,"file":"p2p_client.d.ts","sourceRoot":"","sources":["../../src/client/p2p_client.ts"],"names":[],"mappings":"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"}
@@ -371,13 +371,12 @@ function _apply_decs_2203_r(targetClass, memberDecs, classDecs, parentClass) {
371
371
  return (_apply_decs_2203_r = applyDecs2203RFactory())(targetClass, memberDecs, classDecs, parentClass);
372
372
  }
373
373
  var _dec, _dec1, _initProto;
374
- import { GENESIS_BLOCK_HEADER_HASH } from '@aztec/constants';
375
374
  import { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
376
375
  import { createLogger } from '@aztec/foundation/log';
377
- import { RunningPromise } from '@aztec/foundation/promise';
378
376
  import { DateProvider } from '@aztec/foundation/timer';
379
377
  import { L2TipsKVStore } from '@aztec/kv-store/stores';
380
- import { L2BlockStream } from '@aztec/stdlib/block';
378
+ import { EventDrivenL2BlockStream } from '@aztec/stdlib/block';
379
+ import { getTimestampForSlot } from '@aztec/stdlib/epoch-helpers';
381
380
  import { tryStop } from '@aztec/stdlib/interfaces/server';
382
381
  import { Attributes, WithTracer, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
383
382
  import { getP2PDefaultConfig } from '../config.js';
@@ -435,8 +434,7 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
435
434
  txProvider;
436
435
  validatorAddresses;
437
436
  /** Tracks the last slot for which we called prepareForSlot */ lastSlotProcessed;
438
- /** Polls for slot changes and calls prepareForSlot on the tx pool */ slotMonitor;
439
- constructor(store, l2BlockSource, mempools, p2pService, txCollection, txFileStore, epochCache, config = {}, _dateProvider = new DateProvider(), telemetry = getTelemetryClient(), log = createLogger('p2p')){
437
+ constructor(store, l2BlockSource, mempools, p2pService, txCollection, txFileStore, epochCache, config = {}, _dateProvider = new DateProvider(), telemetry = getTelemetryClient(), log = createLogger('p2p'), initialBlockHash){
440
438
  super(telemetry, 'P2PClient'), this.store = store, this.l2BlockSource = l2BlockSource, this.p2pService = p2pService, this.txCollection = txCollection, this.txFileStore = txFileStore, this.epochCache = epochCache, this._dateProvider = _dateProvider, this.telemetry = telemetry, this.log = log, this.currentState = (_initProto(this), P2PClientState.IDLE), this.syncPromise = Promise.resolve(), this.syncResolve = undefined, this.latestBlockNumberAtStart = -1, this.provenBlockNumberAtStart = -1, this.finalizedBlockNumberAtStart = -1, this.validatorAddresses = [], this.lastSlotProcessed = SlotNumber.ZERO;
441
439
  this.config = {
442
440
  ...getP2PDefaultConfig(),
@@ -445,7 +443,7 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
445
443
  this.txPool = mempools.txPool;
446
444
  this.attestationPool = mempools.attestationPool;
447
445
  this.txProvider = new TxProvider(this.txCollection, this.txPool, this, this.log.createChild('tx-provider'), this.telemetry);
448
- this.l2Tips = new L2TipsKVStore(store, 'p2p_client');
446
+ this.l2Tips = new L2TipsKVStore(store, 'p2p_client', initialBlockHash);
449
447
  this.synchedLatestSlot = store.openSingleton('p2p_pool_last_l2_slot');
450
448
  }
451
449
  registerThisValidatorAddresses(addresses) {
@@ -491,7 +489,10 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
491
489
  const from = BlockNumber(oldFinalizedBlockNum + 1);
492
490
  const limit = event.block.number - from + 1;
493
491
  if (limit > 0) {
494
- const oldBlocks = await this.l2BlockSource.getBlocks(from, limit);
492
+ const oldBlocks = await this.l2BlockSource.getBlocksData({
493
+ from,
494
+ limit
495
+ });
495
496
  await this.handleFinalizedL2Blocks(oldBlocks);
496
497
  }
497
498
  break;
@@ -501,10 +502,12 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
501
502
  break;
502
503
  case 'chain-pruned':
503
504
  this.txCollection.stopCollectingForBlocksAfter(event.block.number);
504
- await this.handlePruneL2Blocks(event.block, event.checkpoint);
505
+ await this.handlePruneL2Blocks(event.block, event.checkpointed.checkpoint);
505
506
  break;
506
507
  case 'chain-checkpointed':
507
508
  break;
509
+ case 'chain-proposed':
510
+ break;
508
511
  default:
509
512
  {
510
513
  const _ = event;
@@ -572,21 +575,21 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
572
575
  syncedFinalizedBlock
573
576
  });
574
577
  }
578
+ // Should never happen: all branches above call initBlockStream()
579
+ if (!this.blockStream) {
580
+ throw new Error('Block stream not initialized');
581
+ }
575
582
  this.blockStream.start();
576
- await this.txCollection.start();
577
583
  this.txFileStore?.start();
578
- // Start slot monitor to call prepareForSlot when the slot changes
579
- this.slotMonitor = new RunningPromise(()=>this.maybeCallPrepareForSlot(), this.log, this.config.slotCheckIntervalMS);
580
- this.slotMonitor.start();
581
584
  return this.syncPromise;
582
585
  }
583
- addReqRespSubProtocol(subProtocol, handler, validator) {
584
- return this.p2pService.addReqRespSubProtocol(subProtocol, handler, validator);
586
+ addReqRespSubProtocol(subProtocol, handler) {
587
+ return this.p2pService.addReqRespSubProtocol(subProtocol, handler);
585
588
  }
586
589
  initBlockStream(startingBlock) {
587
590
  if (!this.blockStream) {
588
591
  const { blockRequestBatchSize: batchSize, blockCheckIntervalMS: pollIntervalMS } = this.config;
589
- this.blockStream = new L2BlockStream(this.l2BlockSource, this, this, createLogger(`${this.log.module}:l2-block-stream`), {
592
+ this.blockStream = new EventDrivenL2BlockStream(this.l2BlockSource, this, this, createLogger(`${this.log.module}:l2-block-stream`), {
590
593
  batchSize,
591
594
  pollIntervalMS,
592
595
  startingBlock
@@ -598,8 +601,6 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
598
601
  * 'ready' will now return 'false' and the running promise that keeps the client synced is interrupted.
599
602
  */ async stop() {
600
603
  this.log.debug('Stopping p2p client...');
601
- await this.slotMonitor?.stop();
602
- this.log.debug('Stopped slot monitor');
603
604
  await tryStop(this.txCollection);
604
605
  this.log.debug('Stopped tx collection service');
605
606
  await this.txFileStore?.stop();
@@ -616,6 +617,10 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
616
617
  }
617
618
  /** Triggers a sync to the archiver. Used for testing. */ async sync() {
618
619
  this.initBlockStream();
620
+ // Should never happen: initBlockStream() creates blockStream if absent
621
+ if (!this.blockStream) {
622
+ throw new Error('Block stream not initialized');
623
+ }
619
624
  await this.blockStream.sync();
620
625
  }
621
626
  async broadcastProposal(proposal) {
@@ -642,36 +647,64 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
642
647
  // Store our own last-block proposal so we can respond to req/resp requests for it.
643
648
  await this.attestationPool.tryAddBlockProposal(blockProposal);
644
649
  }
650
+ const checkpointCore = proposal.toCore();
651
+ const { count } = await this.attestationPool.tryAddCheckpointProposal(checkpointCore);
652
+ if (count > 1) {
653
+ if (this.config.broadcastEquivocatedProposals) {
654
+ this.log.warn(`Broadcasting equivocated checkpoint proposal for slot ${proposal.slotNumber}`, {
655
+ slot: proposal.slotNumber,
656
+ archive: proposal.archive.toString(),
657
+ count
658
+ });
659
+ } else {
660
+ throw new Error(`Attempted to broadcast a duplicate checkpoint proposal for slot ${proposal.slotNumber}`);
661
+ }
662
+ }
645
663
  return this.p2pService.propagate(proposal);
646
664
  }
647
665
  async broadcastCheckpointAttestations(attestations) {
648
666
  this.log.verbose(`Broadcasting ${attestations.length} checkpoint attestations to peers`);
649
667
  await Promise.all(attestations.map((att)=>this.p2pService.propagate(att)));
650
668
  }
651
- async getCheckpointAttestationsForSlot(slot, proposalId) {
652
- return await (proposalId ? this.attestationPool.getCheckpointAttestationsForSlotAndProposal(slot, proposalId) : this.attestationPool.getCheckpointAttestationsForSlot(slot));
669
+ async getCheckpointAttestationsForSlot(slot, proposalPayloadHash) {
670
+ return await (proposalPayloadHash ? this.attestationPool.getCheckpointAttestationsForSlotAndProposal(slot, proposalPayloadHash) : this.attestationPool.getCheckpointAttestationsForSlot(slot));
653
671
  }
654
672
  addOwnCheckpointAttestations(attestations) {
655
673
  return this.attestationPool.addOwnCheckpointAttestations(attestations);
656
674
  }
675
+ getProposalsForSlot(slot) {
676
+ return this.attestationPool.getProposalsForSlot(slot);
677
+ }
657
678
  hasBlockProposalsForSlot(slot) {
658
679
  return this.attestationPool.hasBlockProposalsForSlot(slot);
659
680
  }
681
+ hasCheckpointProposalForSlot(slot) {
682
+ return this.attestationPool.hasCheckpointProposalForSlot(slot);
683
+ }
660
684
  // REVIEW: https://github.com/AztecProtocol/aztec-packages/issues/7963
661
685
  // ^ This pattern is not my favorite (md)
662
686
  registerBlockProposalHandler(handler) {
663
687
  this.p2pService.registerBlockReceivedCallback(handler);
664
688
  }
665
- registerCheckpointProposalHandler(handler) {
666
- this.p2pService.registerCheckpointReceivedCallback(handler);
689
+ registerValidatorCheckpointProposalHandler(handler) {
690
+ this.p2pService.registerValidatorCheckpointReceivedCallback(handler);
691
+ }
692
+ registerAllNodesCheckpointProposalHandler(handler) {
693
+ this.p2pService.registerAllNodesCheckpointReceivedCallback(handler);
667
694
  }
668
695
  registerDuplicateProposalCallback(callback) {
669
696
  this.p2pService.registerDuplicateProposalCallback(callback);
670
697
  }
698
+ registerOversizedProposalCallback(callback) {
699
+ this.p2pService.registerOversizedProposalCallback(callback);
700
+ }
671
701
  registerDuplicateAttestationCallback(callback) {
672
702
  this.p2pService.registerDuplicateAttestationCallback(callback);
673
703
  }
674
- async getPendingTxs(limit, after) {
704
+ registerCheckpointAttestationCallback(callback) {
705
+ this.p2pService.registerCheckpointAttestationCallback(callback);
706
+ }
707
+ async getPendingTxs(limit, after, options) {
675
708
  if (limit !== undefined && limit <= 0) {
676
709
  throw new TypeError('limit must be greater than 0');
677
710
  }
@@ -686,23 +719,30 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
686
719
  }
687
720
  const endIndex = limit !== undefined ? startIndex + limit : undefined;
688
721
  txHashes = txHashes.slice(startIndex, endIndex);
689
- const maybeTxs = await Promise.all(txHashes.map((txHash)=>this.txPool.getTxByHash(txHash)));
722
+ // This is a public-facing API (exposed via both the node and the p2p RPC), so proofs are opt-in.
723
+ const includeProof = !!options?.includeProof;
724
+ const maybeTxs = await Promise.all(txHashes.map((txHash)=>this.txPool.getTxByHash(txHash, {
725
+ includeProof
726
+ })));
690
727
  return maybeTxs.filter((tx)=>!!tx);
691
728
  }
692
729
  getPendingTxCount() {
693
730
  return this.txPool.getPendingTxCount();
694
731
  }
695
- async *iteratePendingTxs() {
732
+ hasEligiblePendingTxs(minCount) {
733
+ return this.txPool.hasEligiblePendingTxs(minCount);
734
+ }
735
+ async *iteratePendingTxs(opts) {
696
736
  for (const txHash of (await this.txPool.getPendingTxHashes())){
697
- const tx = await this.txPool.getTxByHash(txHash);
737
+ const tx = await this.txPool.getTxByHash(txHash, opts);
698
738
  if (tx) {
699
739
  yield tx;
700
740
  }
701
741
  }
702
742
  }
703
- async *iterateEligiblePendingTxs() {
743
+ async *iterateEligiblePendingTxs(opts) {
704
744
  for (const txHash of (await this.txPool.getEligiblePendingTxHashes())){
705
- const tx = await this.txPool.getTxByHash(txHash);
745
+ const tx = await this.txPool.getTxByHash(txHash, opts);
706
746
  if (tx) {
707
747
  yield tx;
708
748
  }
@@ -711,16 +751,18 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
711
751
  /**
712
752
  * Returns a transaction in the transaction pool by its hash.
713
753
  * @param txHash - Hash of the transaction to look for in the pool.
754
+ * @param opts - Set `includeProof: false` to skip loading the tx proof from the DB.
714
755
  * @returns A single tx or undefined.
715
- */ getTxByHashFromPool(txHash) {
716
- return this.txPool.getTxByHash(txHash);
756
+ */ getTxByHashFromPool(txHash, opts) {
757
+ return this.txPool.getTxByHash(txHash, opts);
717
758
  }
718
759
  /**
719
760
  * Returns transactions in the transaction pool by hash.
720
761
  * @param txHashes - Hashes of the transactions to look for.
762
+ * @param opts - Set `includeProof: false` to skip loading tx proofs from the DB.
721
763
  * @returns The txs found, in the same order as the requested hashes. If a tx is not found, it will be undefined.
722
- */ getTxsByHashFromPool(txHashes) {
723
- return this.txPool.getTxsByHash(txHashes);
764
+ */ getTxsByHashFromPool(txHashes, opts) {
765
+ return this.txPool.getTxsByHash(txHashes, opts);
724
766
  }
725
767
  hasTxsInPool(txHashes) {
726
768
  return this.txPool.hasTxs(txHashes);
@@ -808,7 +850,9 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
808
850
  * @returns Information about p2p client status: state & syncedToBlockNum.
809
851
  */ async getStatus() {
810
852
  const blockNumber = await this.getSyncedLatestBlockNum();
811
- const blockHash = blockNumber === 0 ? GENESIS_BLOCK_HEADER_HASH.toString() : await this.l2BlockSource.getBlockHeader(blockNumber).then((header)=>header?.hash()).then((hash)=>hash?.toString());
853
+ const blockHash = await this.l2BlockSource.getBlockData({
854
+ number: blockNumber
855
+ }).then((data)=>data?.header.hash()).then((hash)=>hash?.toString());
812
856
  return {
813
857
  state: this.currentState,
814
858
  syncedToL2Block: {
@@ -834,13 +878,17 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
834
878
  if (!blocks.length) {
835
879
  return;
836
880
  }
837
- await this.handleMinedBlocks(blocks);
838
- await this.maybeCallPrepareForSlot();
839
- await this.startCollectingMissingTxs(blocks);
840
881
  const lastBlock = blocks.at(-1);
841
- await this.synchedLatestSlot.set(BigInt(lastBlock.header.getSlot()));
882
+ const lastSlot = lastBlock.header.getSlot();
883
+ // Mark txs mined before releasing protections: a block landing at this slot supersedes any
884
+ // protection for txs it includes, so mined-marking must run first to keep just-landed txs from
885
+ // being unprotected into pending where they could be evicted before they are recorded as mined.
886
+ await this.handleMinedBlocks(blocks);
887
+ await this.maybeCallPrepareForSlot(lastSlot);
888
+ await this.collectingMissingTxs(blocks);
889
+ await this.synchedLatestSlot.set(BigInt(lastSlot));
842
890
  }
843
- /** Request txs for unproven blocks so the prover node has more chances to get them. */ async startCollectingMissingTxs(blocks) {
891
+ /** Request txs for unproven blocks so the prover node can prove. */ async collectingMissingTxs(blocks) {
844
892
  try {
845
893
  // TODO(#15435): If the archiver has lagged behind L1, the reported proven block number may
846
894
  // be much lower than the actual one, and it does not update until the pending chain is
@@ -848,7 +896,9 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
848
896
  // are already proven, but the archiver has not yet updated its state. Until this is properly
849
897
  // fixed, it is mitigated by the expiration date of collection requests, which depends on
850
898
  // the slot number of the block.
851
- const provenBlockNumber = await this.l2BlockSource.getProvenBlockNumber();
899
+ const provenBlockNumber = await this.l2BlockSource.getBlockNumber({
900
+ tag: 'proven'
901
+ }) ?? BlockNumber.ZERO;
852
902
  const unprovenBlocks = blocks.filter((block)=>block.number > provenBlockNumber);
853
903
  for (const block of unprovenBlocks){
854
904
  const txHashes = block.body.txEffects.map((txEffect)=>txEffect.txHash);
@@ -859,7 +909,19 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
859
909
  blockNumber: block.number,
860
910
  blockHash: await block.hash().then((h)=>h.toString())
861
911
  });
862
- this.txCollection.startCollecting(block, missingTxHashes);
912
+ // Both `slashDataWithholdingToleranceSlots` and `p2pMissingTxCollectionDeadlineSlots`
913
+ // count *full slots after the block slot* — value N means collection runs until
914
+ // `slotStart(block.slot + N + 1)`. Take the larger of the two so collection never
915
+ // gives up before the data-withholding slash verdict is rendered.
916
+ const blockSlot = block.header.getSlot();
917
+ const toleranceSlots = this.config.slashDataWithholdingToleranceSlots;
918
+ const configuredSlots = this.config.p2pMissingTxCollectionDeadlineSlots ?? 0;
919
+ const deadlineSlot = SlotNumber(blockSlot + Math.max(toleranceSlots, configuredSlots) + 1);
920
+ const deadlineSeconds = getTimestampForSlot(deadlineSlot, this.epochCache.getL1Constants());
921
+ const deadline = new Date(Number(deadlineSeconds) * 1000);
922
+ await this.txCollection.collectFastForBlock(block, missingTxHashes, {
923
+ deadline
924
+ });
863
925
  }
864
926
  }
865
927
  } catch (err) {
@@ -914,15 +976,12 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
914
976
  }
915
977
  return isEpochPrune;
916
978
  }
917
- /** Checks if the slot has changed and calls prepareForSlot if so. */ async maybeCallPrepareForSlot() {
918
- // If we have a pending checkpoint available, we want to prepare the target slot - otherwise we prepare the current slot
919
- // Knowledege of pending checkpoints is in the PR above
920
- const { targetSlot } = this.epochCache.getTargetAndNextSlot();
921
- if (targetSlot <= this.lastSlotProcessed) {
979
+ /** Calls prepareForSlot for the given slot if it advances past the last slot we prepared for. */ async maybeCallPrepareForSlot(slot) {
980
+ if (slot <= this.lastSlotProcessed) {
922
981
  return;
923
982
  }
924
- this.lastSlotProcessed = targetSlot;
925
- await this.txPool.prepareForSlot(targetSlot);
983
+ this.lastSlotProcessed = slot;
984
+ await this.txPool.prepareForSlot(slot);
926
985
  }
927
986
  async startServiceIfSynched() {
928
987
  if (this.currentState !== P2PClientState.SYNCHING) {