@aztec/p2p 0.0.1-commit.24de95ac → 0.0.1-commit.2e2504e2

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 (538) hide show
  1. package/dest/bootstrap/bootstrap.d.ts +4 -3
  2. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  3. package/dest/bootstrap/bootstrap.js +4 -4
  4. package/dest/client/factory.d.ts +2 -2
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +11 -9
  7. package/dest/client/index.d.ts +1 -1
  8. package/dest/client/interface.d.ts +18 -3
  9. package/dest/client/interface.d.ts.map +1 -1
  10. package/dest/client/p2p_client.d.ts +18 -37
  11. package/dest/client/p2p_client.d.ts.map +1 -1
  12. package/dest/client/p2p_client.js +477 -128
  13. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +2 -0
  14. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +1 -0
  15. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +305 -0
  16. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +73 -0
  17. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +1 -0
  18. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +8 -0
  19. package/dest/config.d.ts +75 -60
  20. package/dest/config.d.ts.map +1 -1
  21. package/dest/config.js +26 -15
  22. package/dest/enr/generate-enr.d.ts +1 -1
  23. package/dest/enr/index.d.ts +1 -1
  24. package/dest/errors/attestation-pool.error.d.ts +7 -0
  25. package/dest/errors/attestation-pool.error.d.ts.map +1 -0
  26. package/dest/errors/attestation-pool.error.js +12 -0
  27. package/dest/errors/reqresp.error.d.ts +1 -1
  28. package/dest/errors/reqresp.error.d.ts.map +1 -1
  29. package/dest/index.d.ts +1 -1
  30. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +77 -36
  31. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  32. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
  33. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  34. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +241 -266
  35. package/dest/mem_pools/attestation_pool/index.d.ts +1 -1
  36. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +24 -14
  37. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
  38. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +123 -95
  39. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +18 -12
  40. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
  41. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +91 -108
  42. package/dest/mem_pools/attestation_pool/mocks.d.ts +234 -10
  43. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  44. package/dest/mem_pools/attestation_pool/mocks.js +17 -13
  45. package/dest/mem_pools/index.d.ts +1 -1
  46. package/dest/mem_pools/instrumentation.d.ts +9 -1
  47. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  48. package/dest/mem_pools/instrumentation.js +37 -10
  49. package/dest/mem_pools/interface.d.ts +3 -4
  50. package/dest/mem_pools/interface.d.ts.map +1 -1
  51. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +33 -58
  52. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  53. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +314 -335
  54. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +32 -0
  55. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -0
  56. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +112 -0
  57. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +157 -0
  58. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -0
  59. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +52 -0
  60. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +16 -0
  61. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  62. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +122 -0
  63. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +17 -0
  64. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  65. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +84 -0
  66. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +19 -0
  67. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  68. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +78 -0
  69. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +26 -0
  70. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  71. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +84 -0
  72. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
  73. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
  74. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
  75. package/dest/mem_pools/tx_pool/index.d.ts +1 -2
  76. package/dest/mem_pools/tx_pool/index.d.ts.map +1 -1
  77. package/dest/mem_pools/tx_pool/index.js +0 -1
  78. package/dest/mem_pools/tx_pool/priority.d.ts +5 -1
  79. package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
  80. package/dest/mem_pools/tx_pool/priority.js +6 -1
  81. package/dest/mem_pools/tx_pool/tx_pool.d.ts +11 -6
  82. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
  83. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
  84. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  85. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +30 -24
  86. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  87. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  88. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  89. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  90. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  91. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  92. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  93. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  94. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +119 -0
  95. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  96. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  97. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +90 -0
  98. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  99. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  100. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +89 -0
  101. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  102. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  103. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  104. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +131 -0
  105. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  106. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +17 -0
  107. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  108. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  109. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +63 -0
  110. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  111. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  112. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +91 -0
  113. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  114. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  115. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +70 -0
  116. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  117. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  118. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +63 -0
  119. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  120. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  121. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  122. package/dest/mem_pools/tx_pool_v2/index.d.ts +5 -0
  123. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  124. package/dest/mem_pools/tx_pool_v2/index.js +4 -0
  125. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +193 -0
  126. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  127. package/dest/mem_pools/tx_pool_v2/interfaces.js +6 -0
  128. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +71 -0
  129. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  130. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +94 -0
  131. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  132. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  133. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  134. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +55 -0
  135. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  136. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +150 -0
  137. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +69 -0
  138. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  139. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +1041 -0
  140. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +7 -6
  141. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  142. package/dest/msg_validators/attestation_validator/attestation_validator.js +57 -24
  143. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +20 -0
  144. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -0
  145. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +76 -0
  146. package/dest/msg_validators/attestation_validator/index.d.ts +2 -1
  147. package/dest/msg_validators/attestation_validator/index.d.ts.map +1 -1
  148. package/dest/msg_validators/attestation_validator/index.js +1 -0
  149. package/dest/msg_validators/clock_tolerance.d.ts +21 -0
  150. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
  151. package/dest/msg_validators/clock_tolerance.js +37 -0
  152. package/dest/msg_validators/index.d.ts +2 -2
  153. package/dest/msg_validators/index.d.ts.map +1 -1
  154. package/dest/msg_validators/index.js +1 -1
  155. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts +1 -1
  156. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts.map +1 -1
  157. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +9 -0
  158. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
  159. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +6 -0
  160. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +9 -0
  161. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
  162. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +6 -0
  163. package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
  164. package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
  165. package/dest/msg_validators/proposal_validator/index.js +3 -0
  166. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -0
  167. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
  168. package/dest/msg_validators/proposal_validator/proposal_validator.js +104 -0
  169. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +23 -0
  170. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -0
  171. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +212 -0
  172. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +1 -1
  173. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  174. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +1 -1
  175. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  176. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  177. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  178. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +5 -4
  179. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  180. package/dest/msg_validators/tx_validator/block_header_validator.js +3 -2
  181. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  182. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  183. package/dest/msg_validators/tx_validator/data_validator.js +4 -1
  184. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +3 -2
  185. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  186. package/dest/msg_validators/tx_validator/double_spend_validator.js +3 -2
  187. package/dest/msg_validators/tx_validator/factory.d.ts +10 -4
  188. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  189. package/dest/msg_validators/tx_validator/factory.js +22 -12
  190. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
  191. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
  192. package/dest/msg_validators/tx_validator/fee_payer_balance.js +20 -0
  193. package/dest/msg_validators/tx_validator/gas_validator.d.ts +3 -2
  194. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  195. package/dest/msg_validators/tx_validator/gas_validator.js +11 -16
  196. package/dest/msg_validators/tx_validator/index.d.ts +2 -1
  197. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  198. package/dest/msg_validators/tx_validator/index.js +1 -0
  199. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +4 -3
  200. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  201. package/dest/msg_validators/tx_validator/metadata_validator.js +2 -2
  202. package/dest/msg_validators/tx_validator/phases_validator.d.ts +3 -2
  203. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  204. package/dest/msg_validators/tx_validator/phases_validator.js +6 -4
  205. package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
  206. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
  207. package/dest/msg_validators/tx_validator/size_validator.js +23 -0
  208. package/dest/msg_validators/tx_validator/test_utils.d.ts +2 -2
  209. package/dest/msg_validators/tx_validator/test_utils.d.ts.map +1 -1
  210. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +5 -3
  211. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  212. package/dest/msg_validators/tx_validator/timestamp_validator.js +2 -2
  213. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  214. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  215. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  216. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  217. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  218. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
  219. package/dest/services/data_store.d.ts +1 -1
  220. package/dest/services/data_store.d.ts.map +1 -1
  221. package/dest/services/data_store.js +10 -6
  222. package/dest/services/discv5/discV5_service.d.ts +1 -1
  223. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  224. package/dest/services/discv5/discV5_service.js +1 -1
  225. package/dest/services/dummy_service.d.ts +18 -2
  226. package/dest/services/dummy_service.d.ts.map +1 -1
  227. package/dest/services/dummy_service.js +42 -0
  228. package/dest/services/encoding.d.ts +1 -1
  229. package/dest/services/encoding.d.ts.map +1 -1
  230. package/dest/services/encoding.js +7 -6
  231. package/dest/services/gossipsub/scoring.d.ts +1 -1
  232. package/dest/services/index.d.ts +2 -1
  233. package/dest/services/index.d.ts.map +1 -1
  234. package/dest/services/index.js +1 -0
  235. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  236. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  237. package/dest/services/libp2p/instrumentation.js +36 -71
  238. package/dest/services/libp2p/libp2p_service.d.ts +48 -81
  239. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  240. package/dest/services/libp2p/libp2p_service.js +926 -193
  241. package/dest/services/peer-manager/interface.d.ts +1 -1
  242. package/dest/services/peer-manager/metrics.d.ts +9 -2
  243. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  244. package/dest/services/peer-manager/metrics.js +39 -16
  245. package/dest/services/peer-manager/peer_manager.d.ts +2 -33
  246. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  247. package/dest/services/peer-manager/peer_manager.js +6 -12
  248. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  249. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  250. package/dest/services/peer-manager/peer_scoring.js +43 -2
  251. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +47 -0
  252. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  253. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +566 -0
  254. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  255. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  256. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  257. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +50 -0
  258. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  259. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  260. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +37 -0
  261. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  262. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +151 -0
  263. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +54 -0
  264. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  265. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +139 -0
  266. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
  267. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  268. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
  269. package/dest/services/reqresp/config.d.ts +1 -1
  270. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +22 -3
  271. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  272. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +63 -4
  273. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -4
  274. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  275. package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
  276. package/dest/services/reqresp/constants.d.ts +12 -0
  277. package/dest/services/reqresp/constants.d.ts.map +1 -0
  278. package/dest/services/reqresp/constants.js +7 -0
  279. package/dest/services/reqresp/index.d.ts +1 -1
  280. package/dest/services/reqresp/interface.d.ts +4 -2
  281. package/dest/services/reqresp/interface.d.ts.map +1 -1
  282. package/dest/services/reqresp/interface.js +1 -1
  283. package/dest/services/reqresp/metrics.d.ts +6 -5
  284. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  285. package/dest/services/reqresp/metrics.js +17 -21
  286. package/dest/services/reqresp/protocols/auth.d.ts +2 -2
  287. package/dest/services/reqresp/protocols/auth.d.ts.map +1 -1
  288. package/dest/services/reqresp/protocols/auth.js +2 -2
  289. package/dest/services/reqresp/protocols/block.d.ts +1 -1
  290. package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
  291. package/dest/services/reqresp/protocols/block.js +3 -2
  292. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
  293. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  294. package/dest/services/reqresp/protocols/block_txs/bitvector.js +12 -0
  295. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +1 -1
  296. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  297. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +16 -3
  298. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +19 -9
  299. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  300. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +44 -14
  301. package/dest/services/reqresp/protocols/block_txs/index.d.ts +1 -1
  302. package/dest/services/reqresp/protocols/goodbye.d.ts +1 -1
  303. package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
  304. package/dest/services/reqresp/protocols/index.d.ts +1 -1
  305. package/dest/services/reqresp/protocols/ping.d.ts +1 -1
  306. package/dest/services/reqresp/protocols/status.d.ts +6 -5
  307. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  308. package/dest/services/reqresp/protocols/status.js +7 -3
  309. package/dest/services/reqresp/protocols/tx.d.ts +2 -3
  310. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  311. package/dest/services/reqresp/rate-limiter/index.d.ts +1 -1
  312. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +2 -2
  313. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  314. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  315. package/dest/services/reqresp/reqresp.d.ts +6 -41
  316. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  317. package/dest/services/reqresp/reqresp.js +460 -46
  318. package/dest/services/reqresp/status.d.ts +2 -2
  319. package/dest/services/reqresp/status.d.ts.map +1 -1
  320. package/dest/services/service.d.ts +19 -3
  321. package/dest/services/service.d.ts.map +1 -1
  322. package/dest/services/tx_collection/config.d.ts +4 -1
  323. package/dest/services/tx_collection/config.d.ts.map +1 -1
  324. package/dest/services/tx_collection/config.js +10 -2
  325. package/dest/services/tx_collection/fast_tx_collection.d.ts +9 -12
  326. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  327. package/dest/services/tx_collection/fast_tx_collection.js +16 -5
  328. package/dest/services/tx_collection/index.d.ts +2 -1
  329. package/dest/services/tx_collection/index.d.ts.map +1 -1
  330. package/dest/services/tx_collection/index.js +1 -0
  331. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  332. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  333. package/dest/services/tx_collection/instrumentation.js +10 -13
  334. package/dest/services/tx_collection/proposal_tx_collector.d.ts +48 -0
  335. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
  336. package/dest/services/tx_collection/proposal_tx_collector.js +50 -0
  337. package/dest/services/tx_collection/slow_tx_collection.d.ts +4 -5
  338. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  339. package/dest/services/tx_collection/slow_tx_collection.js +2 -1
  340. package/dest/services/tx_collection/tx_collection.d.ts +10 -10
  341. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  342. package/dest/services/tx_collection/tx_collection.js +5 -5
  343. package/dest/services/tx_collection/tx_collection_sink.d.ts +3 -3
  344. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  345. package/dest/services/tx_collection/tx_source.d.ts +1 -1
  346. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  347. package/dest/services/tx_file_store/config.d.ts +18 -0
  348. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  349. package/dest/services/tx_file_store/config.js +26 -0
  350. package/dest/services/tx_file_store/index.d.ts +4 -0
  351. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  352. package/dest/services/tx_file_store/index.js +3 -0
  353. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  354. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  355. package/dest/services/tx_file_store/instrumentation.js +29 -0
  356. package/dest/services/tx_file_store/tx_file_store.d.ts +47 -0
  357. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  358. package/dest/services/tx_file_store/tx_file_store.js +149 -0
  359. package/dest/services/tx_provider.d.ts +4 -2
  360. package/dest/services/tx_provider.d.ts.map +1 -1
  361. package/dest/services/tx_provider.js +11 -2
  362. package/dest/services/tx_provider_instrumentation.d.ts +5 -2
  363. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  364. package/dest/services/tx_provider_instrumentation.js +14 -14
  365. package/dest/test-helpers/generate-peer-id-private-keys.d.ts +1 -1
  366. package/dest/test-helpers/get-ports.d.ts +1 -1
  367. package/dest/test-helpers/get-ports.d.ts.map +1 -1
  368. package/dest/test-helpers/index.d.ts +3 -1
  369. package/dest/test-helpers/index.d.ts.map +1 -1
  370. package/dest/test-helpers/index.js +2 -0
  371. package/dest/test-helpers/make-enrs.d.ts +1 -1
  372. package/dest/test-helpers/make-test-p2p-clients.d.ts +2 -2
  373. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  374. package/dest/test-helpers/mock-pubsub.d.ts +4 -4
  375. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  376. package/dest/test-helpers/mock-tx-helpers.d.ts +2 -2
  377. package/dest/test-helpers/mock-tx-helpers.d.ts.map +1 -1
  378. package/dest/test-helpers/mock-tx-helpers.js +1 -1
  379. package/dest/test-helpers/reqresp-nodes.d.ts +2 -2
  380. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  381. package/dest/test-helpers/test_tx_provider.d.ts +40 -0
  382. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  383. package/dest/test-helpers/test_tx_provider.js +41 -0
  384. package/dest/test-helpers/testbench-utils.d.ts +158 -0
  385. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  386. package/dest/test-helpers/testbench-utils.js +297 -0
  387. package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
  388. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  389. package/dest/testbench/p2p_client_testbench_worker.js +218 -120
  390. package/dest/testbench/parse_log_file.d.ts +1 -1
  391. package/dest/testbench/testbench.d.ts +1 -1
  392. package/dest/testbench/worker_client_manager.d.ts +51 -6
  393. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  394. package/dest/testbench/worker_client_manager.js +226 -39
  395. package/dest/types/index.d.ts +1 -1
  396. package/dest/util.d.ts +2 -1
  397. package/dest/util.d.ts.map +1 -1
  398. package/dest/util.js +11 -2
  399. package/dest/versioning.d.ts +1 -1
  400. package/package.json +19 -18
  401. package/src/bootstrap/bootstrap.ts +7 -4
  402. package/src/client/factory.ts +15 -20
  403. package/src/client/interface.ts +20 -2
  404. package/src/client/p2p_client.ts +121 -156
  405. package/src/client/test/tx_proposal_collector/README.md +227 -0
  406. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +336 -0
  407. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
  408. package/src/config.ts +43 -20
  409. package/src/errors/attestation-pool.error.ts +13 -0
  410. package/src/mem_pools/attestation_pool/attestation_pool.ts +86 -35
  411. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +243 -278
  412. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +175 -111
  413. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +147 -136
  414. package/src/mem_pools/attestation_pool/mocks.ts +21 -15
  415. package/src/mem_pools/instrumentation.ts +48 -10
  416. package/src/mem_pools/interface.ts +2 -4
  417. package/src/mem_pools/tx_pool/README.md +270 -0
  418. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +367 -371
  419. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +132 -0
  420. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +208 -0
  421. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +162 -0
  422. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +104 -0
  423. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +93 -0
  424. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +106 -0
  425. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
  426. package/src/mem_pools/tx_pool/index.ts +0 -1
  427. package/src/mem_pools/tx_pool/priority.ts +8 -1
  428. package/src/mem_pools/tx_pool/tx_pool.ts +11 -5
  429. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +23 -17
  430. package/src/mem_pools/tx_pool_v2/README.md +188 -0
  431. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  432. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  433. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +147 -0
  434. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +118 -0
  435. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +111 -0
  436. package/src/mem_pools/tx_pool_v2/eviction/index.ts +23 -0
  437. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +164 -0
  438. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  439. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  440. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +86 -0
  441. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +72 -0
  442. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +31 -0
  443. package/src/mem_pools/tx_pool_v2/index.ts +11 -0
  444. package/src/mem_pools/tx_pool_v2/interfaces.ts +225 -0
  445. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +160 -0
  446. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  447. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +209 -0
  448. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1265 -0
  449. package/src/msg_validators/attestation_validator/attestation_validator.ts +45 -32
  450. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +94 -0
  451. package/src/msg_validators/attestation_validator/index.ts +1 -0
  452. package/src/msg_validators/clock_tolerance.ts +51 -0
  453. package/src/msg_validators/index.ts +1 -1
  454. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +10 -0
  455. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +13 -0
  456. package/src/msg_validators/proposal_validator/index.ts +3 -0
  457. package/src/msg_validators/proposal_validator/proposal_validator.ts +92 -0
  458. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +230 -0
  459. package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
  460. package/src/msg_validators/tx_validator/block_header_validator.ts +6 -5
  461. package/src/msg_validators/tx_validator/data_validator.ts +18 -6
  462. package/src/msg_validators/tx_validator/double_spend_validator.ts +4 -3
  463. package/src/msg_validators/tx_validator/factory.ts +67 -25
  464. package/src/msg_validators/tx_validator/fee_payer_balance.ts +40 -0
  465. package/src/msg_validators/tx_validator/gas_validator.ts +17 -28
  466. package/src/msg_validators/tx_validator/index.ts +1 -0
  467. package/src/msg_validators/tx_validator/metadata_validator.ts +19 -8
  468. package/src/msg_validators/tx_validator/phases_validator.ts +8 -4
  469. package/src/msg_validators/tx_validator/size_validator.ts +22 -0
  470. package/src/msg_validators/tx_validator/test_utils.ts +1 -1
  471. package/src/msg_validators/tx_validator/timestamp_validator.ts +11 -5
  472. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  473. package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
  474. package/src/services/data_store.ts +10 -7
  475. package/src/services/discv5/discV5_service.ts +1 -1
  476. package/src/services/dummy_service.ts +51 -0
  477. package/src/services/encoding.ts +6 -5
  478. package/src/services/index.ts +1 -0
  479. package/src/services/libp2p/instrumentation.ts +39 -71
  480. package/src/services/libp2p/libp2p_service.ts +629 -195
  481. package/src/services/peer-manager/metrics.ts +44 -16
  482. package/src/services/peer-manager/peer_manager.ts +7 -4
  483. package/src/services/peer-manager/peer_scoring.ts +45 -3
  484. package/src/services/reqresp/batch-tx-requester/README.md +305 -0
  485. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +706 -0
  486. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  487. package/src/services/reqresp/batch-tx-requester/interface.ts +57 -0
  488. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +209 -0
  489. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +205 -0
  490. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
  491. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +65 -4
  492. package/src/services/reqresp/connection-sampler/connection_sampler.ts +19 -1
  493. package/src/services/reqresp/constants.ts +14 -0
  494. package/src/services/reqresp/interface.ts +4 -1
  495. package/src/services/reqresp/metrics.ts +36 -27
  496. package/src/services/reqresp/protocols/auth.ts +2 -2
  497. package/src/services/reqresp/protocols/block.ts +3 -2
  498. package/src/services/reqresp/protocols/block_txs/bitvector.ts +16 -0
  499. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +18 -4
  500. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +52 -10
  501. package/src/services/reqresp/protocols/status.ts +16 -12
  502. package/src/services/reqresp/protocols/tx.ts +1 -2
  503. package/src/services/reqresp/reqresp.ts +66 -19
  504. package/src/services/service.ts +23 -4
  505. package/src/services/tx_collection/config.ts +16 -2
  506. package/src/services/tx_collection/fast_tx_collection.ts +39 -15
  507. package/src/services/tx_collection/index.ts +5 -0
  508. package/src/services/tx_collection/instrumentation.ts +5 -13
  509. package/src/services/tx_collection/proposal_tx_collector.ts +114 -0
  510. package/src/services/tx_collection/slow_tx_collection.ts +5 -4
  511. package/src/services/tx_collection/tx_collection.ts +10 -9
  512. package/src/services/tx_file_store/config.ts +43 -0
  513. package/src/services/tx_file_store/index.ts +3 -0
  514. package/src/services/tx_file_store/instrumentation.ts +36 -0
  515. package/src/services/tx_file_store/tx_file_store.ts +173 -0
  516. package/src/services/tx_provider.ts +19 -3
  517. package/src/services/tx_provider_instrumentation.ts +24 -14
  518. package/src/test-helpers/index.ts +2 -0
  519. package/src/test-helpers/mock-pubsub.ts +1 -1
  520. package/src/test-helpers/mock-tx-helpers.ts +1 -1
  521. package/src/test-helpers/reqresp-nodes.ts +1 -1
  522. package/src/test-helpers/test_tx_provider.ts +64 -0
  523. package/src/test-helpers/testbench-utils.ts +374 -0
  524. package/src/testbench/p2p_client_testbench_worker.ts +338 -116
  525. package/src/testbench/worker_client_manager.ts +304 -42
  526. package/src/util.ts +12 -2
  527. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +0 -80
  528. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +0 -1
  529. package/dest/mem_pools/tx_pool/memory_tx_pool.js +0 -238
  530. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -12
  531. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
  532. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +0 -70
  533. package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
  534. package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
  535. package/dest/msg_validators/block_proposal_validator/index.js +0 -1
  536. package/src/mem_pools/tx_pool/memory_tx_pool.ts +0 -283
  537. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -81
  538. package/src/msg_validators/block_proposal_validator/index.ts +0 -1
@@ -1,20 +1,399 @@
1
- function _ts_decorate(decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
1
+ function applyDecs2203RFactory() {
2
+ function createAddInitializerMethod(initializers, decoratorFinishedRef) {
3
+ return function addInitializer(initializer) {
4
+ assertNotFinished(decoratorFinishedRef, "addInitializer");
5
+ assertCallable(initializer, "An initializer");
6
+ initializers.push(initializer);
7
+ };
8
+ }
9
+ function memberDec(dec, name, desc, initializers, kind, isStatic, isPrivate, metadata, value) {
10
+ var kindStr;
11
+ switch(kind){
12
+ case 1:
13
+ kindStr = "accessor";
14
+ break;
15
+ case 2:
16
+ kindStr = "method";
17
+ break;
18
+ case 3:
19
+ kindStr = "getter";
20
+ break;
21
+ case 4:
22
+ kindStr = "setter";
23
+ break;
24
+ default:
25
+ kindStr = "field";
26
+ }
27
+ var ctx = {
28
+ kind: kindStr,
29
+ name: isPrivate ? "#" + name : name,
30
+ static: isStatic,
31
+ private: isPrivate,
32
+ metadata: metadata
33
+ };
34
+ var decoratorFinishedRef = {
35
+ v: false
36
+ };
37
+ ctx.addInitializer = createAddInitializerMethod(initializers, decoratorFinishedRef);
38
+ var get, set;
39
+ if (kind === 0) {
40
+ if (isPrivate) {
41
+ get = desc.get;
42
+ set = desc.set;
43
+ } else {
44
+ get = function() {
45
+ return this[name];
46
+ };
47
+ set = function(v) {
48
+ this[name] = v;
49
+ };
50
+ }
51
+ } else if (kind === 2) {
52
+ get = function() {
53
+ return desc.value;
54
+ };
55
+ } else {
56
+ if (kind === 1 || kind === 3) {
57
+ get = function() {
58
+ return desc.get.call(this);
59
+ };
60
+ }
61
+ if (kind === 1 || kind === 4) {
62
+ set = function(v) {
63
+ desc.set.call(this, v);
64
+ };
65
+ }
66
+ }
67
+ ctx.access = get && set ? {
68
+ get: get,
69
+ set: set
70
+ } : get ? {
71
+ get: get
72
+ } : {
73
+ set: set
74
+ };
75
+ try {
76
+ return dec(value, ctx);
77
+ } finally{
78
+ decoratorFinishedRef.v = true;
79
+ }
80
+ }
81
+ function assertNotFinished(decoratorFinishedRef, fnName) {
82
+ if (decoratorFinishedRef.v) {
83
+ throw new Error("attempted to call " + fnName + " after decoration was finished");
84
+ }
85
+ }
86
+ function assertCallable(fn, hint) {
87
+ if (typeof fn !== "function") {
88
+ throw new TypeError(hint + " must be a function");
89
+ }
90
+ }
91
+ function assertValidReturnValue(kind, value) {
92
+ var type = typeof value;
93
+ if (kind === 1) {
94
+ if (type !== "object" || value === null) {
95
+ throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
96
+ }
97
+ if (value.get !== undefined) {
98
+ assertCallable(value.get, "accessor.get");
99
+ }
100
+ if (value.set !== undefined) {
101
+ assertCallable(value.set, "accessor.set");
102
+ }
103
+ if (value.init !== undefined) {
104
+ assertCallable(value.init, "accessor.init");
105
+ }
106
+ } else if (type !== "function") {
107
+ var hint;
108
+ if (kind === 0) {
109
+ hint = "field";
110
+ } else if (kind === 10) {
111
+ hint = "class";
112
+ } else {
113
+ hint = "method";
114
+ }
115
+ throw new TypeError(hint + " decorators must return a function or void 0");
116
+ }
117
+ }
118
+ function applyMemberDec(ret, base, decInfo, name, kind, isStatic, isPrivate, initializers, metadata) {
119
+ var decs = decInfo[0];
120
+ var desc, init, value;
121
+ if (isPrivate) {
122
+ if (kind === 0 || kind === 1) {
123
+ desc = {
124
+ get: decInfo[3],
125
+ set: decInfo[4]
126
+ };
127
+ } else if (kind === 3) {
128
+ desc = {
129
+ get: decInfo[3]
130
+ };
131
+ } else if (kind === 4) {
132
+ desc = {
133
+ set: decInfo[3]
134
+ };
135
+ } else {
136
+ desc = {
137
+ value: decInfo[3]
138
+ };
139
+ }
140
+ } else if (kind !== 0) {
141
+ desc = Object.getOwnPropertyDescriptor(base, name);
142
+ }
143
+ if (kind === 1) {
144
+ value = {
145
+ get: desc.get,
146
+ set: desc.set
147
+ };
148
+ } else if (kind === 2) {
149
+ value = desc.value;
150
+ } else if (kind === 3) {
151
+ value = desc.get;
152
+ } else if (kind === 4) {
153
+ value = desc.set;
154
+ }
155
+ var newValue, get, set;
156
+ if (typeof decs === "function") {
157
+ newValue = memberDec(decs, name, desc, initializers, kind, isStatic, isPrivate, metadata, value);
158
+ if (newValue !== void 0) {
159
+ assertValidReturnValue(kind, newValue);
160
+ if (kind === 0) {
161
+ init = newValue;
162
+ } else if (kind === 1) {
163
+ init = newValue.init;
164
+ get = newValue.get || value.get;
165
+ set = newValue.set || value.set;
166
+ value = {
167
+ get: get,
168
+ set: set
169
+ };
170
+ } else {
171
+ value = newValue;
172
+ }
173
+ }
174
+ } else {
175
+ for(var i = decs.length - 1; i >= 0; i--){
176
+ var dec = decs[i];
177
+ newValue = memberDec(dec, name, desc, initializers, kind, isStatic, isPrivate, metadata, value);
178
+ if (newValue !== void 0) {
179
+ assertValidReturnValue(kind, newValue);
180
+ var newInit;
181
+ if (kind === 0) {
182
+ newInit = newValue;
183
+ } else if (kind === 1) {
184
+ newInit = newValue.init;
185
+ get = newValue.get || value.get;
186
+ set = newValue.set || value.set;
187
+ value = {
188
+ get: get,
189
+ set: set
190
+ };
191
+ } else {
192
+ value = newValue;
193
+ }
194
+ if (newInit !== void 0) {
195
+ if (init === void 0) {
196
+ init = newInit;
197
+ } else if (typeof init === "function") {
198
+ init = [
199
+ init,
200
+ newInit
201
+ ];
202
+ } else {
203
+ init.push(newInit);
204
+ }
205
+ }
206
+ }
207
+ }
208
+ }
209
+ if (kind === 0 || kind === 1) {
210
+ if (init === void 0) {
211
+ init = function(instance, init) {
212
+ return init;
213
+ };
214
+ } else if (typeof init !== "function") {
215
+ var ownInitializers = init;
216
+ init = function(instance, init) {
217
+ var value = init;
218
+ for(var i = 0; i < ownInitializers.length; i++){
219
+ value = ownInitializers[i].call(instance, value);
220
+ }
221
+ return value;
222
+ };
223
+ } else {
224
+ var originalInitializer = init;
225
+ init = function(instance, init) {
226
+ return originalInitializer.call(instance, init);
227
+ };
228
+ }
229
+ ret.push(init);
230
+ }
231
+ if (kind !== 0) {
232
+ if (kind === 1) {
233
+ desc.get = value.get;
234
+ desc.set = value.set;
235
+ } else if (kind === 2) {
236
+ desc.value = value;
237
+ } else if (kind === 3) {
238
+ desc.get = value;
239
+ } else if (kind === 4) {
240
+ desc.set = value;
241
+ }
242
+ if (isPrivate) {
243
+ if (kind === 1) {
244
+ ret.push(function(instance, args) {
245
+ return value.get.call(instance, args);
246
+ });
247
+ ret.push(function(instance, args) {
248
+ return value.set.call(instance, args);
249
+ });
250
+ } else if (kind === 2) {
251
+ ret.push(value);
252
+ } else {
253
+ ret.push(function(instance, args) {
254
+ return value.call(instance, args);
255
+ });
256
+ }
257
+ } else {
258
+ Object.defineProperty(base, name, desc);
259
+ }
260
+ }
261
+ }
262
+ function applyMemberDecs(Class, decInfos, metadata) {
263
+ var ret = [];
264
+ var protoInitializers;
265
+ var staticInitializers;
266
+ var existingProtoNonFields = new Map();
267
+ var existingStaticNonFields = new Map();
268
+ for(var i = 0; i < decInfos.length; i++){
269
+ var decInfo = decInfos[i];
270
+ if (!Array.isArray(decInfo)) continue;
271
+ var kind = decInfo[1];
272
+ var name = decInfo[2];
273
+ var isPrivate = decInfo.length > 3;
274
+ var isStatic = kind >= 5;
275
+ var base;
276
+ var initializers;
277
+ if (isStatic) {
278
+ base = Class;
279
+ kind = kind - 5;
280
+ staticInitializers = staticInitializers || [];
281
+ initializers = staticInitializers;
282
+ } else {
283
+ base = Class.prototype;
284
+ protoInitializers = protoInitializers || [];
285
+ initializers = protoInitializers;
286
+ }
287
+ if (kind !== 0 && !isPrivate) {
288
+ var existingNonFields = isStatic ? existingStaticNonFields : existingProtoNonFields;
289
+ var existingKind = existingNonFields.get(name) || 0;
290
+ if (existingKind === true || existingKind === 3 && kind !== 4 || existingKind === 4 && kind !== 3) {
291
+ throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + name);
292
+ } else if (!existingKind && kind > 2) {
293
+ existingNonFields.set(name, kind);
294
+ } else {
295
+ existingNonFields.set(name, true);
296
+ }
297
+ }
298
+ applyMemberDec(ret, base, decInfo, name, kind, isStatic, isPrivate, initializers, metadata);
299
+ }
300
+ pushInitializers(ret, protoInitializers);
301
+ pushInitializers(ret, staticInitializers);
302
+ return ret;
303
+ }
304
+ function pushInitializers(ret, initializers) {
305
+ if (initializers) {
306
+ ret.push(function(instance) {
307
+ for(var i = 0; i < initializers.length; i++){
308
+ initializers[i].call(instance);
309
+ }
310
+ return instance;
311
+ });
312
+ }
313
+ }
314
+ function applyClassDecs(targetClass, classDecs, metadata) {
315
+ if (classDecs.length > 0) {
316
+ var initializers = [];
317
+ var newClass = targetClass;
318
+ var name = targetClass.name;
319
+ for(var i = classDecs.length - 1; i >= 0; i--){
320
+ var decoratorFinishedRef = {
321
+ v: false
322
+ };
323
+ try {
324
+ var nextNewClass = classDecs[i](newClass, {
325
+ kind: "class",
326
+ name: name,
327
+ addInitializer: createAddInitializerMethod(initializers, decoratorFinishedRef),
328
+ metadata
329
+ });
330
+ } finally{
331
+ decoratorFinishedRef.v = true;
332
+ }
333
+ if (nextNewClass !== undefined) {
334
+ assertValidReturnValue(10, nextNewClass);
335
+ newClass = nextNewClass;
336
+ }
337
+ }
338
+ return [
339
+ defineMetadata(newClass, metadata),
340
+ function() {
341
+ for(var i = 0; i < initializers.length; i++){
342
+ initializers[i].call(newClass);
343
+ }
344
+ }
345
+ ];
346
+ }
347
+ }
348
+ function defineMetadata(Class, metadata) {
349
+ return Object.defineProperty(Class, Symbol.metadata || Symbol.for("Symbol.metadata"), {
350
+ configurable: true,
351
+ enumerable: true,
352
+ value: metadata
353
+ });
354
+ }
355
+ return function applyDecs2203R(targetClass, memberDecs, classDecs, parentClass) {
356
+ if (parentClass !== void 0) {
357
+ var parentMetadata = parentClass[Symbol.metadata || Symbol.for("Symbol.metadata")];
358
+ }
359
+ var metadata = Object.create(parentMetadata === void 0 ? null : parentMetadata);
360
+ var e = applyMemberDecs(targetClass, memberDecs, metadata);
361
+ if (!classDecs.length) defineMetadata(targetClass, metadata);
362
+ return {
363
+ e: e,
364
+ get c () {
365
+ return applyClassDecs(targetClass, classDecs, metadata);
366
+ }
367
+ };
368
+ };
369
+ }
370
+ function _apply_decs_2203_r(targetClass, memberDecs, classDecs, parentClass) {
371
+ return (_apply_decs_2203_r = applyDecs2203RFactory())(targetClass, memberDecs, classDecs, parentClass);
6
372
  }
7
- import { INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
373
+ var _dec, _dec1, _initProto;
374
+ import { GENESIS_BLOCK_HEADER_HASH } from '@aztec/constants';
375
+ import { BlockNumber, SlotNumber } from '@aztec/foundation/branded-types';
8
376
  import { createLogger } from '@aztec/foundation/log';
9
377
  import { DateProvider } from '@aztec/foundation/timer';
378
+ import { L2TipsKVStore } from '@aztec/kv-store/stores';
379
+ import { L2BlockStream } from '@aztec/stdlib/block';
10
380
  import { getTimestampForSlot } from '@aztec/stdlib/epoch-helpers';
11
381
  import { tryStop } from '@aztec/stdlib/interfaces/server';
12
- import { Attributes, TraceableL2BlockStream, WithTracer, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
382
+ import { Attributes, WithTracer, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
13
383
  import { getP2PDefaultConfig } from '../config.js';
14
384
  import { ReqRespSubProtocol } from '../services/reqresp/interface.js';
15
385
  import { chunkTxHashesRequest } from '../services/reqresp/protocols/tx.js';
16
386
  import { TxProvider } from '../services/tx_provider.js';
17
387
  import { P2PClientState } from './interface.js';
388
+ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
389
+ [Attributes.SLOT_NUMBER]: proposal.slotNumber,
390
+ [Attributes.BLOCK_ARCHIVE]: proposal.archive.toString(),
391
+ [Attributes.P2P_ID]: (await proposal.p2pMessageLoggingIdentifier()).toString()
392
+ })), _dec1 = trackSpan('p2pClient.broadcastCheckpointProposal', async (proposal)=>({
393
+ [Attributes.SLOT_NUMBER]: proposal.slotNumber,
394
+ [Attributes.BLOCK_ARCHIVE]: proposal.archive.toString(),
395
+ [Attributes.P2P_ID]: (await proposal.p2pMessageLoggingIdentifier()).toString()
396
+ }));
18
397
  /**
19
398
  * The P2P client implementation.
20
399
  */ export class P2PClient extends WithTracer {
@@ -22,9 +401,24 @@ import { P2PClientState } from './interface.js';
22
401
  l2BlockSource;
23
402
  p2pService;
24
403
  txCollection;
404
+ txFileStore;
25
405
  _dateProvider;
26
406
  telemetry;
27
407
  log;
408
+ static{
409
+ ({ e: [_initProto] } = _apply_decs_2203_r(this, [
410
+ [
411
+ _dec,
412
+ 2,
413
+ "broadcastProposal"
414
+ ],
415
+ [
416
+ _dec1,
417
+ 2,
418
+ "broadcastCheckpointProposal"
419
+ ]
420
+ ], []));
421
+ }
28
422
  /** The JS promise that will be running to keep the client's data in sync. Can be interrupted if the client is stopped. */ runningPromise;
29
423
  currentState;
30
424
  syncPromise;
@@ -32,10 +426,7 @@ import { P2PClientState } from './interface.js';
32
426
  latestBlockNumberAtStart;
33
427
  provenBlockNumberAtStart;
34
428
  finalizedBlockNumberAtStart;
35
- synchedBlockHashes;
36
- synchedLatestBlockNumber;
37
- synchedProvenBlockNumber;
38
- synchedFinalizedBlockNumber;
429
+ l2Tips;
39
430
  synchedLatestSlot;
40
431
  txPool;
41
432
  attestationPool;
@@ -50,8 +441,8 @@ import { P2PClientState } from './interface.js';
50
441
  * @param txPool - The client's instance of a transaction pool. Defaults to in-memory implementation.
51
442
  * @param p2pService - The concrete instance of p2p networking to use.
52
443
  * @param log - A logger.
53
- */ constructor(_clientType, store, l2BlockSource, mempools, p2pService, txCollection, config = {}, _dateProvider = new DateProvider(), telemetry = getTelemetryClient(), log = createLogger('p2p')){
54
- super(telemetry, 'P2PClient'), this.store = store, this.l2BlockSource = l2BlockSource, this.p2pService = p2pService, this.txCollection = txCollection, this._dateProvider = _dateProvider, this.telemetry = telemetry, this.log = log, this.currentState = P2PClientState.IDLE, this.syncPromise = Promise.resolve(), this.syncResolve = undefined, this.latestBlockNumberAtStart = -1, this.provenBlockNumberAtStart = -1, this.finalizedBlockNumberAtStart = -1, this.validatorAddresses = [];
444
+ */ constructor(_clientType, store, l2BlockSource, mempools, p2pService, txCollection, txFileStore, config = {}, _dateProvider = new DateProvider(), telemetry = getTelemetryClient(), log = createLogger('p2p')){
445
+ super(telemetry, 'P2PClient'), this.store = store, this.l2BlockSource = l2BlockSource, this.p2pService = p2pService, this.txCollection = txCollection, this.txFileStore = txFileStore, 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 = [];
55
446
  this.config = {
56
447
  ...getP2PDefaultConfig(),
57
448
  ...config
@@ -60,32 +451,29 @@ import { P2PClientState } from './interface.js';
60
451
  this.attestationPool = mempools.attestationPool;
61
452
  this.txProvider = new TxProvider(this.txCollection, this.txPool, this, this.log.createChild('tx-provider'), this.telemetry);
62
453
  // Default to collecting all txs when we see a valid proposal
63
- // This can be overridden by the validator client to attest, and it will call getTxsForBlockProposal on its own
454
+ // This can be overridden by the validator client to validate, and it will call getTxsForBlockProposal on its own
455
+ // Note: Validators do NOT attest to individual blocks - attestations are only for checkpoint proposals.
64
456
  // TODO(palla/txs): We should not trigger a request for txs on a proposal before fully validating it. We need to bring
65
457
  // validator-client code into here so we can validate a proposal is reasonable.
66
458
  this.registerBlockProposalHandler(async (block, sender)=>{
67
459
  this.log.debug(`Received block proposal from ${sender.toString()}`);
68
460
  // TODO(palla/txs): Need to subtract validatorReexecuteDeadlineMs from this deadline (see ValidatorClient.getReexecutionDeadline)
69
461
  const constants = this.txCollection.getConstants();
70
- const nextSlotTimestampSeconds = Number(getTimestampForSlot(block.slotNumber.toBigInt() + 1n, constants));
462
+ const nextSlotTimestampSeconds = Number(getTimestampForSlot(SlotNumber(block.slotNumber + 1), constants));
71
463
  const deadline = new Date(nextSlotTimestampSeconds * 1000);
72
- const parentBlock = await this.l2BlockSource.getBlockHeaderByArchive(block.payload.header.lastArchiveRoot);
464
+ const parentBlock = await this.l2BlockSource.getBlockHeaderByArchive(block.blockHeader.lastArchive.root);
73
465
  if (!parentBlock) {
74
466
  this.log.debug(`Cannot collect txs for proposal as parent block not found`);
75
- return;
467
+ return false;
76
468
  }
77
- const blockNumber = parentBlock.getBlockNumber() + 1;
469
+ const blockNumber = BlockNumber(parentBlock.getBlockNumber() + 1);
78
470
  await this.txProvider.getTxsForBlockProposal(block, blockNumber, {
79
471
  pinnedPeer: sender,
80
472
  deadline
81
473
  });
82
- return undefined;
474
+ return true;
83
475
  });
84
- // REFACTOR: Try replacing these with an L2TipsStore
85
- this.synchedBlockHashes = store.openMap('p2p_pool_block_hashes');
86
- this.synchedLatestBlockNumber = store.openSingleton('p2p_pool_last_l2_block');
87
- this.synchedProvenBlockNumber = store.openSingleton('p2p_pool_last_proven_l2_block');
88
- this.synchedFinalizedBlockNumber = store.openSingleton('p2p_pool_last_finalized_l2_block');
476
+ this.l2Tips = new L2TipsKVStore(store, 'p2p_client');
89
477
  this.synchedLatestSlot = store.openSingleton('p2p_pool_last_l2_slot');
90
478
  }
91
479
  registerThisValidatorAddresses(addresses) {
@@ -107,52 +495,15 @@ import { P2PClientState } from './interface.js';
107
495
  return Promise.resolve(this.p2pService.getPeers(includePending));
108
496
  }
109
497
  getL2BlockHash(number) {
110
- return this.synchedBlockHashes.getAsync(number);
498
+ return this.l2Tips.getL2BlockHash(number);
111
499
  }
112
500
  updateP2PConfig(config) {
113
501
  this.txPool.updateConfig(config);
114
502
  this.p2pService.updateConfig(config);
115
503
  return Promise.resolve();
116
504
  }
117
- async getL2Tips() {
118
- const latestBlockNumber = await this.getSyncedLatestBlockNum();
119
- let latestBlockHash;
120
- const provenBlockNumber = await this.getSyncedProvenBlockNum();
121
- let provenBlockHash;
122
- const finalizedBlockNumber = await this.getSyncedFinalizedBlockNum();
123
- let finalizedBlockHash;
124
- if (latestBlockNumber > 0) {
125
- latestBlockHash = await this.synchedBlockHashes.getAsync(latestBlockNumber);
126
- if (typeof latestBlockHash === 'undefined') {
127
- throw new Error(`Block hash for latest block ${latestBlockNumber} not found in p2p client`);
128
- }
129
- }
130
- if (provenBlockNumber > 0) {
131
- provenBlockHash = await this.synchedBlockHashes.getAsync(provenBlockNumber);
132
- if (typeof provenBlockHash === 'undefined') {
133
- throw new Error(`Block hash for proven block ${provenBlockNumber} not found in p2p client`);
134
- }
135
- }
136
- if (finalizedBlockNumber > 0) {
137
- finalizedBlockHash = await this.synchedBlockHashes.getAsync(finalizedBlockNumber);
138
- if (typeof finalizedBlockHash === 'undefined') {
139
- throw new Error(`Block hash for finalized block ${finalizedBlockNumber} not found in p2p client`);
140
- }
141
- }
142
- return {
143
- latest: {
144
- hash: latestBlockHash,
145
- number: latestBlockNumber
146
- },
147
- proven: {
148
- hash: provenBlockHash,
149
- number: provenBlockNumber
150
- },
151
- finalized: {
152
- hash: finalizedBlockHash,
153
- number: finalizedBlockNumber
154
- }
155
- };
505
+ getL2Tips() {
506
+ return this.l2Tips.getL2Tips();
156
507
  }
157
508
  async handleBlockStreamEvent(event) {
158
509
  this.log.debug(`Handling block stream event ${event.type}`);
@@ -162,38 +513,33 @@ import { P2PClientState } from './interface.js';
162
513
  break;
163
514
  case 'chain-finalized':
164
515
  {
165
- // TODO (alexg): I think we can prune the block hashes map here
166
- await this.setBlockHash(event.block);
167
- const from = await this.getSyncedFinalizedBlockNum() + 1;
516
+ const oldFinalizedBlockNum = await this.getSyncedFinalizedBlockNum();
517
+ const from = BlockNumber(oldFinalizedBlockNum + 1);
168
518
  const limit = event.block.number - from + 1;
169
519
  if (limit > 0) {
170
- await this.handleFinalizedL2Blocks(await this.l2BlockSource.getBlocks(from, limit));
520
+ const oldBlocks = await this.l2BlockSource.getBlocks(from, limit);
521
+ await this.handleFinalizedL2Blocks(oldBlocks);
171
522
  }
172
523
  break;
173
524
  }
174
525
  case 'chain-proven':
175
- {
176
- await this.setBlockHash(event.block);
177
- this.txCollection.stopCollectingForBlocksUpTo(event.block.number);
178
- await this.synchedProvenBlockNumber.set(event.block.number);
179
- break;
180
- }
526
+ this.txCollection.stopCollectingForBlocksUpTo(event.block.number);
527
+ break;
181
528
  case 'chain-pruned':
182
- await this.setBlockHash(event.block);
183
529
  this.txCollection.stopCollectingForBlocksAfter(event.block.number);
184
530
  await this.handlePruneL2Blocks(event.block.number);
185
531
  break;
532
+ case 'chain-checkpointed':
533
+ break;
186
534
  default:
187
535
  {
188
536
  const _ = event;
189
537
  break;
190
538
  }
191
539
  }
192
- }
193
- async setBlockHash(block) {
194
- if (block.hash !== undefined) {
195
- await this.synchedBlockHashes.set(block.number, block.hash.toString());
196
- }
540
+ // Pass the event through to our l2 tips store
541
+ await this.l2Tips.handleBlockStreamEvent(event);
542
+ await this.startServiceIfSynched();
197
543
  }
198
544
  #assertIsReady() {
199
545
  // this.log.info('Checking if p2p client is ready, current state: ', this.currentState);
@@ -213,15 +559,15 @@ import { P2PClientState } from './interface.js';
213
559
  }
214
560
  // get the current latest block numbers
215
561
  const latestBlockNumbers = await this.l2BlockSource.getL2Tips();
216
- this.latestBlockNumberAtStart = latestBlockNumbers.latest.number;
217
- this.provenBlockNumberAtStart = latestBlockNumbers.proven.number;
218
- this.finalizedBlockNumberAtStart = latestBlockNumbers.finalized.number;
562
+ this.latestBlockNumberAtStart = latestBlockNumbers.proposed.number;
563
+ this.provenBlockNumberAtStart = latestBlockNumbers.proven.block.number;
564
+ this.finalizedBlockNumberAtStart = latestBlockNumbers.finalized.block.number;
219
565
  const syncedLatestBlock = await this.getSyncedLatestBlockNum() + 1;
220
566
  const syncedProvenBlock = await this.getSyncedProvenBlockNum() + 1;
221
567
  const syncedFinalizedBlock = await this.getSyncedFinalizedBlockNum() + 1;
222
- if (await this.txPool.isEmpty() && (this.attestationPool === undefined || await this.attestationPool?.isEmpty())) {
568
+ if (await this.txPool.isEmpty() && await this.attestationPool.isEmpty()) {
223
569
  // if mempools are empty, we don't care about syncing prior blocks
224
- this.initBlockStream(this.latestBlockNumberAtStart);
570
+ this.initBlockStream(BlockNumber(this.latestBlockNumberAtStart));
225
571
  this.setCurrentState(P2PClientState.RUNNING);
226
572
  this.syncPromise = Promise.resolve();
227
573
  await this.p2pService.start();
@@ -253,6 +599,7 @@ import { P2PClientState } from './interface.js';
253
599
  }
254
600
  this.blockStream.start();
255
601
  await this.txCollection.start();
602
+ this.txFileStore?.start();
256
603
  return this.syncPromise;
257
604
  }
258
605
  addReqRespSubProtocol(subProtocol, handler, validator) {
@@ -261,7 +608,7 @@ import { P2PClientState } from './interface.js';
261
608
  initBlockStream(startingBlock) {
262
609
  if (!this.blockStream) {
263
610
  const { blockRequestBatchSize: batchSize, blockCheckIntervalMS: pollIntervalMS } = this.config;
264
- this.blockStream = new TraceableL2BlockStream(this.l2BlockSource, this, this, this.telemetry.getTracer('P2PL2BlockStream'), 'P2PL2BlockStream', createLogger(`${this.log.module}:l2-block-stream`), {
611
+ this.blockStream = new L2BlockStream(this.l2BlockSource, this, this, createLogger(`${this.log.module}:l2-block-stream`), {
265
612
  batchSize,
266
613
  pollIntervalMS,
267
614
  startingBlock
@@ -275,6 +622,8 @@ import { P2PClientState } from './interface.js';
275
622
  this.log.debug('Stopping p2p client...');
276
623
  await tryStop(this.txCollection);
277
624
  this.log.debug('Stopped tx collection service');
625
+ await this.txFileStore?.stop();
626
+ this.log.debug('Stopped tx file store');
278
627
  await this.p2pService.stop();
279
628
  this.log.debug('Stopped p2p service');
280
629
  await this.blockStream?.stop();
@@ -287,26 +636,39 @@ import { P2PClientState } from './interface.js';
287
636
  this.initBlockStream();
288
637
  await this.blockStream.sync();
289
638
  }
290
- broadcastProposal(proposal) {
291
- this.log.verbose(`Broadcasting proposal for slot ${proposal.slotNumber.toNumber()} to peers`);
639
+ async broadcastProposal(proposal) {
640
+ this.log.verbose(`Broadcasting proposal for slot ${proposal.slotNumber} to peers`);
641
+ // Store our own proposal so we can respond to req/resp requests for it
642
+ await this.attestationPool.addBlockProposal(proposal);
292
643
  return this.p2pService.propagate(proposal);
293
644
  }
294
- async getAttestationsForSlot(slot, proposalId) {
295
- return await (proposalId ? this.attestationPool?.getAttestationsForSlotAndProposal(slot, proposalId) : this.attestationPool?.getAttestationsForSlot(slot)) ?? [];
645
+ async broadcastCheckpointProposal(proposal) {
646
+ this.log.verbose(`Broadcasting checkpoint proposal for slot ${proposal.slotNumber} to peers`);
647
+ const blockProposal = proposal.getBlockProposal();
648
+ if (blockProposal) {
649
+ // Store our own last-block proposal so we can respond to req/resp requests for it.
650
+ await this.attestationPool.addBlockProposal(blockProposal);
651
+ }
652
+ return this.p2pService.propagate(proposal);
653
+ }
654
+ async broadcastCheckpointAttestations(attestations) {
655
+ this.log.verbose(`Broadcasting ${attestations.length} checkpoint attestations to peers`);
656
+ await Promise.all(attestations.map((att)=>this.p2pService.propagate(att)));
296
657
  }
297
- addAttestations(attestations) {
298
- return this.attestationPool?.addAttestations(attestations) ?? Promise.resolve();
658
+ async getCheckpointAttestationsForSlot(slot, proposalId) {
659
+ return await (proposalId ? this.attestationPool.getCheckpointAttestationsForSlotAndProposal(slot, proposalId) : this.attestationPool.getCheckpointAttestationsForSlot(slot));
299
660
  }
300
- deleteAttestation(attestation) {
301
- return this.attestationPool?.deleteAttestations([
302
- attestation
303
- ]) ?? Promise.resolve();
661
+ addCheckpointAttestations(attestations) {
662
+ return this.attestationPool.addCheckpointAttestations(attestations);
304
663
  }
305
664
  // REVIEW: https://github.com/AztecProtocol/aztec-packages/issues/7963
306
665
  // ^ This pattern is not my favorite (md)
307
666
  registerBlockProposalHandler(handler) {
308
667
  this.p2pService.registerBlockReceivedCallback(handler);
309
668
  }
669
+ registerCheckpointProposalHandler(handler) {
670
+ this.p2pService.registerCheckpointReceivedCallback(handler);
671
+ }
310
672
  /**
311
673
  * Uses the batched Request Response protocol to request a set of transactions from the network.
312
674
  */ async requestTxsByHash(txHashes, pinnedPeerId) {
@@ -497,16 +859,19 @@ import { P2PClientState } from './interface.js';
497
859
  * Public function to check the latest block number that the P2P client is synced to.
498
860
  * @returns Block number of latest L2 Block we've synced with.
499
861
  */ async getSyncedLatestBlockNum() {
500
- return await this.synchedLatestBlockNumber.getAsync() ?? INITIAL_L2_BLOCK_NUM - 1;
862
+ const tips = await this.l2Tips.getL2Tips();
863
+ return tips.proposed.number;
501
864
  }
502
865
  /**
503
866
  * Public function to check the latest proven block number that the P2P client is synced to.
504
867
  * @returns Block number of latest proven L2 Block we've synced with.
505
868
  */ async getSyncedProvenBlockNum() {
506
- return await this.synchedProvenBlockNumber.getAsync() ?? INITIAL_L2_BLOCK_NUM - 1;
869
+ const tips = await this.l2Tips.getL2Tips();
870
+ return tips.proven.block.number;
507
871
  }
508
872
  async getSyncedFinalizedBlockNum() {
509
- return await this.synchedFinalizedBlockNumber.getAsync() ?? INITIAL_L2_BLOCK_NUM - 1;
873
+ const tips = await this.l2Tips.getL2Tips();
874
+ return tips.finalized.block.number;
510
875
  }
511
876
  /** Returns latest L2 slot for which we have seen an L2 block. */ async getSyncedLatestSlot() {
512
877
  return await this.synchedLatestSlot.getAsync() ?? BigInt(0);
@@ -516,7 +881,7 @@ import { P2PClientState } from './interface.js';
516
881
  * @returns Information about p2p client status: state & syncedToBlockNum.
517
882
  */ async getStatus() {
518
883
  const blockNumber = await this.getSyncedLatestBlockNum();
519
- const blockHash = blockNumber === 0 ? '' : await this.l2BlockSource.getBlockHeader(blockNumber).then((header)=>header?.hash()).then((hash)=>hash?.toString());
884
+ const blockHash = blockNumber === 0 ? GENESIS_BLOCK_HEADER_HASH.toString() : await this.l2BlockSource.getBlockHeader(blockNumber).then((header)=>header?.hash()).then((hash)=>hash?.toString());
520
885
  return {
521
886
  state: this.currentState,
522
887
  syncedToL2Block: {
@@ -532,7 +897,7 @@ import { P2PClientState } from './interface.js';
532
897
  */ async markTxsAsMinedFromBlocks(blocks) {
533
898
  for (const block of blocks){
534
899
  const txHashes = block.body.txEffects.map((txEffect)=>txEffect.txHash);
535
- await this.txPool.markAsMined(txHashes, block.getBlockHeader());
900
+ await this.txPool.markAsMined(txHashes, block.header);
536
901
  }
537
902
  }
538
903
  /**
@@ -543,17 +908,12 @@ import { P2PClientState } from './interface.js';
543
908
  if (!blocks.length) {
544
909
  return Promise.resolve();
545
910
  }
546
- await this.markTxsAsMinedFromBlocks(blocks.map((b)=>b.block));
547
- await this.startCollectingMissingTxs(blocks.map((b)=>b.block));
548
- const lastBlock = blocks.at(-1).block;
549
- await Promise.all(blocks.map(async (block)=>this.setBlockHash({
550
- number: block.block.number,
551
- hash: await block.block.hash().then((h)=>h.toString())
552
- })));
553
- await this.synchedLatestBlockNumber.set(lastBlock.number);
554
- await this.synchedLatestSlot.set(lastBlock.header.getSlot());
911
+ await this.markTxsAsMinedFromBlocks(blocks);
912
+ await this.txPool.clearNonEvictableTxs();
913
+ await this.startCollectingMissingTxs(blocks);
914
+ const lastBlock = blocks.at(-1);
915
+ await this.synchedLatestSlot.set(BigInt(lastBlock.header.getSlot()));
555
916
  this.log.verbose(`Synched to latest block ${lastBlock.number}`);
556
- await this.startServiceIfSynched();
557
917
  }
558
918
  /** Request txs for unproven blocks so the prover node has more chances to get them. */ async startCollectingMissingTxs(blocks) {
559
919
  try {
@@ -598,10 +958,8 @@ import { P2PClientState } from './interface.js';
598
958
  permanently: true
599
959
  });
600
960
  await this.txPool.cleanupDeletedMinedTxs(lastBlockNum);
601
- await this.attestationPool?.deleteAttestationsOlderThan(lastBlockSlot);
602
- await this.synchedFinalizedBlockNumber.set(lastBlockNum);
961
+ await this.attestationPool.deleteCheckpointAttestationsOlderThan(lastBlockSlot);
603
962
  this.log.debug(`Synched to finalized block ${lastBlockNum} at slot ${lastBlockSlot}`);
604
- await this.startServiceIfSynched();
605
963
  }
606
964
  /**
607
965
  * Updates the tx pool after a chain prune.
@@ -640,19 +998,17 @@ import { P2PClientState } from './interface.js';
640
998
  this.log.info(`Deleting ${minedTxsFromReorg.length} mined txs from reorg`);
641
999
  await this.txPool.deleteTxs(minedTxsFromReorg);
642
1000
  } else {
643
- this.log.info(`Moving ${minedTxsFromReorg.length} mined txs from reorg back to pending`);
644
- await this.txPool.markMinedAsPending(minedTxsFromReorg);
1001
+ await this.txPool.markMinedAsPending(minedTxsFromReorg, latestBlock);
645
1002
  }
646
- await this.synchedLatestBlockNumber.set(latestBlock);
647
- // no need to update block hashes, as they will be updated as new blocks are added
648
1003
  }
649
1004
  async startServiceIfSynched() {
650
1005
  if (this.currentState !== P2PClientState.SYNCHING) {
651
1006
  return;
652
1007
  }
653
- const syncedFinalizedBlock = await this.getSyncedFinalizedBlockNum();
654
- const syncedProvenBlock = await this.getSyncedProvenBlockNum();
655
- const syncedLatestBlock = await this.getSyncedLatestBlockNum();
1008
+ const tips = await this.l2Tips.getL2Tips();
1009
+ const syncedFinalizedBlock = tips.finalized.block.number;
1010
+ const syncedProvenBlock = tips.proven.block.number;
1011
+ const syncedLatestBlock = tips.proposed.number;
656
1012
  if (syncedLatestBlock >= this.latestBlockNumberAtStart && syncedProvenBlock >= this.provenBlockNumberAtStart && syncedFinalizedBlock >= this.finalizedBlockNumberAtStart) {
657
1013
  this.log.info(`Completed P2P client sync to block ${syncedLatestBlock}. Starting service.`, {
658
1014
  syncedLatestBlock,
@@ -687,10 +1043,3 @@ import { P2PClientState } from './interface.js';
687
1043
  return this.p2pService.handleAuthRequestFromPeer(authRequest, peerId);
688
1044
  }
689
1045
  }
690
- _ts_decorate([
691
- trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
692
- [Attributes.SLOT_NUMBER]: proposal.slotNumber.toNumber(),
693
- [Attributes.BLOCK_ARCHIVE]: proposal.archive.toString(),
694
- [Attributes.P2P_ID]: (await proposal.p2pMessageIdentifier()).toString()
695
- }))
696
- ], P2PClient.prototype, "broadcastProposal", null);