@aztec/p2p 0.0.1-commit.c80b6263 → 0.0.1-commit.cd76b27

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 (330) hide show
  1. package/dest/client/factory.d.ts +7 -6
  2. package/dest/client/factory.d.ts.map +1 -1
  3. package/dest/client/factory.js +47 -10
  4. package/dest/client/interface.d.ts +43 -23
  5. package/dest/client/interface.d.ts.map +1 -1
  6. package/dest/client/p2p_client.d.ts +40 -42
  7. package/dest/client/p2p_client.d.ts.map +1 -1
  8. package/dest/client/p2p_client.js +156 -145
  9. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +7 -7
  10. package/dest/config.d.ts +29 -4
  11. package/dest/config.d.ts.map +1 -1
  12. package/dest/config.js +19 -2
  13. package/dest/errors/tx-pool.error.d.ts +8 -0
  14. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  15. package/dest/errors/tx-pool.error.js +9 -0
  16. package/dest/index.d.ts +2 -1
  17. package/dest/index.d.ts.map +1 -1
  18. package/dest/index.js +1 -0
  19. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +104 -88
  20. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  21. package/dest/mem_pools/attestation_pool/attestation_pool.js +441 -3
  22. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  23. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  24. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +353 -87
  25. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  26. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  27. package/dest/mem_pools/attestation_pool/index.js +1 -2
  28. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  29. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  30. package/dest/mem_pools/attestation_pool/mocks.js +2 -2
  31. package/dest/mem_pools/index.d.ts +3 -2
  32. package/dest/mem_pools/index.d.ts.map +1 -1
  33. package/dest/mem_pools/index.js +1 -1
  34. package/dest/mem_pools/interface.d.ts +5 -5
  35. package/dest/mem_pools/interface.d.ts.map +1 -1
  36. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +3 -3
  37. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  38. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  39. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  40. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  41. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  42. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  43. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  44. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  45. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  46. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  47. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  48. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  49. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  50. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  51. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +93 -0
  52. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  53. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  54. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +95 -0
  55. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  56. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  57. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  58. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +174 -0
  59. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  60. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  61. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  62. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  63. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
  64. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  65. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  66. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  67. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  68. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  69. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +74 -0
  70. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  71. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  72. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +73 -0
  73. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  74. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  75. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  76. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  77. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  78. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  79. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  80. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  81. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  82. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +209 -0
  83. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  84. package/dest/mem_pools/tx_pool_v2/interfaces.js +8 -0
  85. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +97 -0
  86. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  87. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +152 -0
  88. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  89. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  90. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  91. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  92. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  93. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +355 -0
  94. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +60 -0
  95. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  96. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +161 -0
  97. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +77 -0
  98. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  99. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +878 -0
  100. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +3 -3
  101. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  102. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +3 -3
  103. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  104. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  105. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  106. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  107. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +18 -5
  108. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  109. package/dest/msg_validators/tx_validator/block_header_validator.js +2 -2
  110. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +13 -3
  111. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  112. package/dest/msg_validators/tx_validator/double_spend_validator.js +4 -4
  113. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +20 -4
  114. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  115. package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
  116. package/dest/services/data_store.d.ts +1 -1
  117. package/dest/services/data_store.d.ts.map +1 -1
  118. package/dest/services/data_store.js +10 -6
  119. package/dest/services/dummy_service.d.ts +12 -3
  120. package/dest/services/dummy_service.d.ts.map +1 -1
  121. package/dest/services/dummy_service.js +9 -0
  122. package/dest/services/encoding.d.ts +2 -2
  123. package/dest/services/encoding.d.ts.map +1 -1
  124. package/dest/services/encoding.js +4 -3
  125. package/dest/services/gossipsub/index.d.ts +3 -0
  126. package/dest/services/gossipsub/index.d.ts.map +1 -0
  127. package/dest/services/gossipsub/index.js +2 -0
  128. package/dest/services/gossipsub/scoring.d.ts +21 -3
  129. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  130. package/dest/services/gossipsub/scoring.js +24 -7
  131. package/dest/services/gossipsub/topic_score_params.d.ts +173 -0
  132. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  133. package/dest/services/gossipsub/topic_score_params.js +346 -0
  134. package/dest/services/index.d.ts +2 -1
  135. package/dest/services/index.d.ts.map +1 -1
  136. package/dest/services/index.js +1 -0
  137. package/dest/services/libp2p/libp2p_service.d.ts +85 -35
  138. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  139. package/dest/services/libp2p/libp2p_service.js +379 -280
  140. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  141. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  142. package/dest/services/peer-manager/peer_scoring.js +25 -2
  143. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +6 -5
  144. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  145. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +13 -17
  146. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +2 -6
  147. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  148. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +10 -13
  149. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  150. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +25 -46
  151. package/dest/services/reqresp/interface.d.ts +10 -1
  152. package/dest/services/reqresp/interface.d.ts.map +1 -1
  153. package/dest/services/reqresp/interface.js +15 -1
  154. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  155. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  156. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +17 -12
  157. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +25 -14
  158. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  159. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +40 -24
  160. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  161. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  162. package/dest/services/reqresp/protocols/tx.js +20 -0
  163. package/dest/services/reqresp/reqresp.d.ts +1 -1
  164. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  165. package/dest/services/reqresp/reqresp.js +11 -4
  166. package/dest/services/service.d.ts +38 -2
  167. package/dest/services/service.d.ts.map +1 -1
  168. package/dest/services/tx_collection/config.d.ts +22 -4
  169. package/dest/services/tx_collection/config.d.ts.map +1 -1
  170. package/dest/services/tx_collection/config.js +49 -3
  171. package/dest/services/tx_collection/fast_tx_collection.d.ts +6 -5
  172. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  173. package/dest/services/tx_collection/fast_tx_collection.js +64 -48
  174. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  175. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  176. package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
  177. package/dest/services/tx_collection/file_store_tx_source.d.ts +37 -0
  178. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  179. package/dest/services/tx_collection/file_store_tx_source.js +90 -0
  180. package/dest/services/tx_collection/index.d.ts +3 -2
  181. package/dest/services/tx_collection/index.d.ts.map +1 -1
  182. package/dest/services/tx_collection/index.js +1 -0
  183. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  184. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  185. package/dest/services/tx_collection/instrumentation.js +2 -1
  186. package/dest/services/tx_collection/missing_txs_tracker.d.ts +32 -0
  187. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +1 -0
  188. package/dest/services/tx_collection/missing_txs_tracker.js +27 -0
  189. package/dest/services/tx_collection/proposal_tx_collector.d.ts +15 -14
  190. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  191. package/dest/services/tx_collection/proposal_tx_collector.js +6 -6
  192. package/dest/services/tx_collection/slow_tx_collection.d.ts +7 -3
  193. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  194. package/dest/services/tx_collection/slow_tx_collection.js +60 -26
  195. package/dest/services/tx_collection/tx_collection.d.ts +23 -10
  196. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  197. package/dest/services/tx_collection/tx_collection.js +75 -3
  198. package/dest/services/tx_collection/tx_collection_sink.d.ts +18 -8
  199. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  200. package/dest/services/tx_collection/tx_collection_sink.js +26 -29
  201. package/dest/services/tx_collection/tx_source.d.ts +8 -3
  202. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  203. package/dest/services/tx_collection/tx_source.js +19 -2
  204. package/dest/services/tx_file_store/config.d.ts +16 -0
  205. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  206. package/dest/services/tx_file_store/config.js +22 -0
  207. package/dest/services/tx_file_store/index.d.ts +4 -0
  208. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  209. package/dest/services/tx_file_store/index.js +3 -0
  210. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  211. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  212. package/dest/services/tx_file_store/instrumentation.js +29 -0
  213. package/dest/services/tx_file_store/tx_file_store.d.ts +48 -0
  214. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  215. package/dest/services/tx_file_store/tx_file_store.js +152 -0
  216. package/dest/services/tx_provider.d.ts +3 -3
  217. package/dest/services/tx_provider.d.ts.map +1 -1
  218. package/dest/services/tx_provider.js +5 -4
  219. package/dest/test-helpers/make-test-p2p-clients.d.ts +3 -3
  220. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  221. package/dest/test-helpers/mock-pubsub.d.ts +29 -2
  222. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  223. package/dest/test-helpers/mock-pubsub.js +103 -2
  224. package/dest/test-helpers/reqresp-nodes.d.ts +1 -1
  225. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  226. package/dest/test-helpers/reqresp-nodes.js +2 -1
  227. package/dest/test-helpers/testbench-utils.d.ts +45 -38
  228. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  229. package/dest/test-helpers/testbench-utils.js +130 -60
  230. package/dest/testbench/p2p_client_testbench_worker.d.ts +2 -2
  231. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  232. package/dest/testbench/p2p_client_testbench_worker.js +11 -11
  233. package/dest/util.d.ts +2 -2
  234. package/dest/util.d.ts.map +1 -1
  235. package/package.json +14 -14
  236. package/src/client/factory.ts +89 -14
  237. package/src/client/interface.ts +59 -23
  238. package/src/client/p2p_client.ts +196 -167
  239. package/src/client/test/tx_proposal_collector/README.md +4 -4
  240. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +20 -10
  241. package/src/config.ts +41 -2
  242. package/src/errors/tx-pool.error.ts +12 -0
  243. package/src/index.ts +1 -0
  244. package/src/mem_pools/attestation_pool/attestation_pool.ts +496 -91
  245. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +442 -102
  246. package/src/mem_pools/attestation_pool/index.ts +9 -2
  247. package/src/mem_pools/attestation_pool/mocks.ts +2 -1
  248. package/src/mem_pools/index.ts +4 -1
  249. package/src/mem_pools/interface.ts +4 -4
  250. package/src/mem_pools/tx_pool/README.md +1 -1
  251. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +3 -3
  252. package/src/mem_pools/tx_pool_v2/README.md +275 -0
  253. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  254. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  255. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  256. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  257. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +121 -0
  258. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +122 -0
  259. package/src/mem_pools/tx_pool_v2/eviction/index.ts +27 -0
  260. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +209 -0
  261. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  262. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  263. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +87 -0
  264. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +90 -0
  265. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +31 -0
  266. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  267. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  268. package/src/mem_pools/tx_pool_v2/interfaces.ts +239 -0
  269. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +242 -0
  270. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  271. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +444 -0
  272. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +223 -0
  273. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1052 -0
  274. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +2 -2
  275. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +2 -2
  276. package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
  277. package/src/msg_validators/tx_validator/block_header_validator.ts +18 -8
  278. package/src/msg_validators/tx_validator/double_spend_validator.ts +11 -6
  279. package/src/msg_validators/tx_validator/timestamp_validator.ts +23 -18
  280. package/src/services/data_store.ts +10 -7
  281. package/src/services/dummy_service.ts +17 -1
  282. package/src/services/encoding.ts +4 -3
  283. package/src/services/gossipsub/README.md +641 -0
  284. package/src/services/gossipsub/index.ts +2 -0
  285. package/src/services/gossipsub/scoring.ts +29 -5
  286. package/src/services/gossipsub/topic_score_params.ts +487 -0
  287. package/src/services/index.ts +1 -0
  288. package/src/services/libp2p/libp2p_service.ts +382 -282
  289. package/src/services/peer-manager/peer_scoring.ts +25 -0
  290. package/src/services/reqresp/batch-tx-requester/README.md +14 -14
  291. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +18 -18
  292. package/src/services/reqresp/batch-tx-requester/interface.ts +1 -5
  293. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +23 -71
  294. package/src/services/reqresp/interface.ts +26 -1
  295. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +24 -15
  296. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +47 -24
  297. package/src/services/reqresp/protocols/tx.ts +22 -0
  298. package/src/services/reqresp/reqresp.ts +13 -3
  299. package/src/services/service.ts +50 -1
  300. package/src/services/tx_collection/config.ts +74 -6
  301. package/src/services/tx_collection/fast_tx_collection.ts +74 -51
  302. package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
  303. package/src/services/tx_collection/file_store_tx_source.ts +117 -0
  304. package/src/services/tx_collection/index.ts +2 -1
  305. package/src/services/tx_collection/instrumentation.ts +7 -1
  306. package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
  307. package/src/services/tx_collection/proposal_tx_collector.ts +20 -21
  308. package/src/services/tx_collection/slow_tx_collection.ts +66 -33
  309. package/src/services/tx_collection/tx_collection.ts +113 -16
  310. package/src/services/tx_collection/tx_collection_sink.ts +30 -34
  311. package/src/services/tx_collection/tx_source.ts +22 -3
  312. package/src/services/tx_file_store/config.ts +37 -0
  313. package/src/services/tx_file_store/index.ts +3 -0
  314. package/src/services/tx_file_store/instrumentation.ts +36 -0
  315. package/src/services/tx_file_store/tx_file_store.ts +175 -0
  316. package/src/services/tx_provider.ts +8 -7
  317. package/src/test-helpers/make-test-p2p-clients.ts +3 -3
  318. package/src/test-helpers/mock-pubsub.ts +143 -3
  319. package/src/test-helpers/reqresp-nodes.ts +2 -1
  320. package/src/test-helpers/testbench-utils.ts +129 -71
  321. package/src/testbench/p2p_client_testbench_worker.ts +23 -16
  322. package/src/util.ts +7 -1
  323. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
  324. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  325. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
  326. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
  327. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  328. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
  329. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
  330. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
@@ -1,6 +1,7 @@
1
1
  import type { EpochCacheInterface } from '@aztec/epoch-cache';
2
- import { type BlockNumber, EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
2
+ import { EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
3
3
  import type { Logger } from '@aztec/foundation/log';
4
+ import type { L2Block, L2BlockId } from '@aztec/stdlib/block';
4
5
  import type { WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
5
6
  import type {
6
7
  BlockProposal,
@@ -12,15 +13,17 @@ import { type BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
12
13
 
13
14
  import EventEmitter from 'events';
14
15
 
15
- import type { AttestationPool } from '../mem_pools/attestation_pool/attestation_pool.js';
16
- import type { TxPool } from '../mem_pools/tx_pool/index.js';
16
+ import type { TryAddResult } from '../mem_pools/attestation_pool/attestation_pool.js';
17
+ import type { AddTxsResult, TxPoolV2, TxPoolV2Config } from '../mem_pools/tx_pool_v2/interfaces.js';
18
+ import type { TxState } from '../mem_pools/tx_pool_v2/tx_metadata.js';
17
19
  import { RateLimitStatus } from '../services/reqresp/rate-limiter/rate_limiter.js';
18
20
 
19
21
  /**
20
22
  * In-memory TxPool implementation for testing.
21
23
  * Provides basic tx storage without persistence.
24
+ * Implements TxPoolV2 interface with stub implementations for testing.
22
25
  */
23
- export class InMemoryTxPool extends EventEmitter implements TxPool {
26
+ export class InMemoryTxPool extends EventEmitter implements TxPoolV2 {
24
27
  private txsByHash = new Map<string, Tx>();
25
28
  private logger: Logger | null = null;
26
29
 
@@ -54,133 +57,189 @@ export class InMemoryTxPool extends EventEmitter implements TxPool {
54
57
  this.removeAllListeners();
55
58
  }
56
59
 
57
- addTxs(txs: Tx[], opts?: { source?: string }): Promise<number> {
60
+ // === Core Operations (TxPoolV2) ===
61
+
62
+ addPendingTxs(txs: Tx[], opts?: { source?: string; feeComparisonOnly?: boolean }): Promise<AddTxsResult> {
63
+ const accepted: TxHash[] = [];
58
64
  const newTxs: Tx[] = [];
59
- let added = 0;
60
65
  for (const tx of txs) {
61
66
  const key = tx.getTxHash().toString();
62
67
  if (!this.txsByHash.has(key)) {
63
68
  newTxs.push(tx);
64
- added += 1;
69
+ accepted.push(tx.getTxHash());
65
70
  }
66
71
  this.txsByHash.set(key, tx);
67
72
  }
68
73
  if (newTxs.length > 0) {
69
74
  this.emit('txs-added', { txs: newTxs, source: opts?.source });
70
75
  }
71
- return Promise.resolve(added);
76
+ return Promise.resolve({ accepted, ignored: [], rejected: [] });
72
77
  }
73
78
 
74
- getTxByHash(hash: TxHash): Promise<Tx | undefined> {
75
- return Promise.resolve(this.txsByHash.get(hash.toString()));
79
+ canAddPendingTx(tx: Tx): Promise<'accepted' | 'ignored' | 'rejected'> {
80
+ const key = tx.getTxHash().toString();
81
+ if (this.txsByHash.has(key)) {
82
+ return Promise.resolve('ignored');
83
+ }
84
+ return Promise.resolve('accepted');
76
85
  }
77
86
 
78
- getTxsByHash(hashes: TxHash[]): Promise<(Tx | undefined)[]> {
79
- const result = hashes.map(h => this.txsByHash.get(h.toString()));
80
- const found = result.filter(tx => tx !== undefined).length;
81
- this.logger?.debug(`[TxPool] getTxsByHash: requested ${hashes.length}, found ${found}`);
82
- return Promise.resolve(result);
87
+ addProtectedTxs(txs: Tx[], _block: BlockHeader, opts?: { source?: string }): Promise<void> {
88
+ for (const tx of txs) {
89
+ const key = tx.getTxHash().toString();
90
+ this.txsByHash.set(key, tx);
91
+ }
92
+ if (txs.length > 0) {
93
+ this.emit('txs-added', { txs, source: opts?.source });
94
+ }
95
+ return Promise.resolve();
83
96
  }
84
97
 
85
- hasTxs(hashes: TxHash[]): Promise<boolean[]> {
86
- return Promise.resolve(hashes.map(h => this.txsByHash.has(h.toString())));
98
+ protectTxs(txHashes: TxHash[], _block: BlockHeader): Promise<TxHash[]> {
99
+ const notFound: TxHash[] = [];
100
+ for (const txHash of txHashes) {
101
+ if (!this.txsByHash.has(txHash.toString())) {
102
+ notFound.push(txHash);
103
+ }
104
+ }
105
+ return Promise.resolve(notFound);
87
106
  }
88
107
 
89
- hasTx(hash: TxHash): Promise<boolean> {
90
- return Promise.resolve(this.txsByHash.has(hash.toString()));
108
+ addMinedTxs(txs: Tx[], _block: BlockHeader, _opts?: { source?: string }): Promise<void> {
109
+ for (const tx of txs) {
110
+ const key = tx.getTxHash().toString();
111
+ this.txsByHash.set(key, tx);
112
+ }
113
+ return Promise.resolve();
91
114
  }
92
115
 
93
- getArchivedTxByHash(_hash: TxHash): Promise<Tx | undefined> {
94
- return Promise.resolve(undefined);
116
+ // === State Transition Handlers (TxPoolV2) ===
117
+
118
+ handleMinedBlock(_block: L2Block): Promise<void> {
119
+ return Promise.resolve();
95
120
  }
96
121
 
97
- async markAsMined(_txHashes: TxHash[], _blockHeader: BlockHeader): Promise<void> {}
122
+ prepareForSlot(_slotNumber: SlotNumber): Promise<void> {
123
+ return Promise.resolve();
124
+ }
98
125
 
99
- async markMinedAsPending(_txHashes: TxHash[], _latestBlock: BlockNumber): Promise<void> {}
126
+ handlePrunedBlocks(_latestBlock: L2BlockId, _options?: { deleteAllTxs?: boolean }): Promise<void> {
127
+ return Promise.resolve();
128
+ }
100
129
 
101
- deleteTxs(txHashes: TxHash[], _opts?: { permanently?: boolean }): Promise<void> {
130
+ handleFailedExecution(txHashes: TxHash[]): Promise<void> {
102
131
  for (const txHash of txHashes) {
103
132
  this.txsByHash.delete(txHash.toString());
104
133
  }
105
134
  return Promise.resolve();
106
135
  }
107
136
 
108
- getAllTxs(): Promise<Tx[]> {
109
- return Promise.resolve([...this.txsByHash.values()]);
137
+ handleFinalizedBlock(_block: BlockHeader): Promise<void> {
138
+ return Promise.resolve();
110
139
  }
111
140
 
112
- getAllTxHashes(): Promise<TxHash[]> {
113
- return Promise.resolve([...this.txsByHash.keys()].map(key => TxHash.fromString(key)));
141
+ // === Query Operations (TxPoolV2) ===
142
+
143
+ getTxByHash(hash: TxHash): Promise<Tx | undefined> {
144
+ return Promise.resolve(this.txsByHash.get(hash.toString()));
145
+ }
146
+
147
+ getTxsByHash(hashes: TxHash[]): Promise<(Tx | undefined)[]> {
148
+ const result = hashes.map(h => this.txsByHash.get(h.toString()));
149
+ const found = result.filter(tx => tx !== undefined).length;
150
+ this.logger?.debug(`[TxPool] getTxsByHash: requested ${hashes.length}, found ${found}`);
151
+ return Promise.resolve(result);
152
+ }
153
+
154
+ hasTxs(hashes: TxHash[]): Promise<boolean[]> {
155
+ return Promise.resolve(hashes.map(h => this.txsByHash.has(h.toString())));
156
+ }
157
+
158
+ getArchivedTxByHash(_hash: TxHash): Promise<Tx | undefined> {
159
+ return Promise.resolve(undefined);
114
160
  }
115
161
 
116
162
  getPendingTxHashes(): Promise<TxHash[]> {
117
163
  return Promise.resolve([...this.txsByHash.keys()].map(key => TxHash.fromString(key)));
118
164
  }
119
165
 
166
+ getEligiblePendingTxHashes(): Promise<TxHash[]> {
167
+ return this.getPendingTxHashes();
168
+ }
169
+
120
170
  getPendingTxCount(): Promise<number> {
121
171
  return Promise.resolve(this.txsByHash.size);
122
172
  }
123
173
 
124
- getMinedTxHashes(): Promise<[tx: TxHash, blockNumber: BlockNumber][]> {
174
+ getMinedTxHashes(): Promise<[TxHash, L2BlockId][]> {
125
175
  return Promise.resolve([]);
126
176
  }
127
177
 
128
- getTxStatus(hash: TxHash): Promise<'pending' | 'mined' | 'deleted' | undefined> {
129
- return Promise.resolve(this.txsByHash.has(hash.toString()) ? 'pending' : undefined);
178
+ getMinedTxCount(): Promise<number> {
179
+ return Promise.resolve(0);
130
180
  }
131
181
 
132
- updateConfig(_config: { maxPendingTxCount?: number; archivedTxLimit?: number }): void {}
182
+ getTxStatus(hash: TxHash): Promise<TxState | 'deleted' | undefined> {
183
+ return Promise.resolve(this.txsByHash.has(hash.toString()) ? 'pending' : undefined);
184
+ }
133
185
 
134
186
  isEmpty(): Promise<boolean> {
135
187
  return Promise.resolve(this.txsByHash.size === 0);
136
188
  }
137
189
 
138
- async markTxsAsNonEvictable(_txHashes: TxHash[]): Promise<void> {}
190
+ getLowestPriorityPending(_limit: number): Promise<TxHash[]> {
191
+ return Promise.resolve([]);
192
+ }
139
193
 
140
- async clearNonEvictableTxs(): Promise<void> {}
194
+ // === Configuration (TxPoolV2) ===
141
195
 
142
- cleanupDeletedMinedTxs(_blockNumber: BlockNumber): Promise<number> {
143
- return Promise.resolve(0);
196
+ updateConfig(_config: Partial<TxPoolV2Config>): Promise<void> {
197
+ return Promise.resolve();
198
+ }
199
+
200
+ // === Lifecycle (TxPoolV2) ===
201
+
202
+ start(): Promise<void> {
203
+ return Promise.resolve();
204
+ }
205
+
206
+ stop(): Promise<void> {
207
+ return Promise.resolve();
144
208
  }
145
209
  }
146
210
 
147
211
  /**
148
- * In-memory AttestationPool implementation for testing.
212
+ * In-memory AttestationPool mock for testing/benchmarking.
213
+ * Provides minimal implementation without persistence.
149
214
  */
150
- export class InMemoryAttestationPool implements AttestationPool {
215
+ export class InMemoryAttestationPool {
151
216
  private proposals = new Map<string, BlockProposal>();
152
217
 
153
- addBlockProposal(blockProposal: BlockProposal): Promise<void> {
154
- this.proposals.set(blockProposal.archive.toString(), blockProposal);
155
- return Promise.resolve();
218
+ tryAddBlockProposal(blockProposal: BlockProposal): Promise<TryAddResult> {
219
+ const id = blockProposal.archive.toString();
220
+ const alreadyExists = this.proposals.has(id);
221
+ if (alreadyExists) {
222
+ return Promise.resolve({ added: false, alreadyExists: true, count: 1 });
223
+ }
224
+ this.proposals.set(id, blockProposal);
225
+ return Promise.resolve({ added: true, alreadyExists: false, count: 1 });
156
226
  }
157
227
 
158
228
  getBlockProposal(id: string): Promise<BlockProposal | undefined> {
159
229
  return Promise.resolve(this.proposals.get(id));
160
230
  }
161
231
 
162
- hasBlockProposal(idOrProposal: string | BlockProposal): Promise<boolean> {
163
- const id = typeof idOrProposal === 'string' ? idOrProposal : idOrProposal.archive.toString();
164
- return Promise.resolve(this.proposals.has(id));
232
+ tryAddCheckpointProposal(_proposal: CheckpointProposal): Promise<TryAddResult> {
233
+ return Promise.resolve({ added: true, alreadyExists: false, count: 1 });
165
234
  }
166
235
 
167
- canAddProposal(_block: BlockProposal): Promise<boolean> {
168
- return Promise.resolve(true);
169
- }
170
-
171
- async addCheckpointProposal(_proposal: CheckpointProposal): Promise<void> {}
172
-
173
236
  getCheckpointProposal(_id: string): Promise<CheckpointProposalCore | undefined> {
174
237
  return Promise.resolve(undefined);
175
238
  }
176
239
 
177
- hasCheckpointProposal(_idOrProposal: string | CheckpointProposal): Promise<boolean> {
178
- return Promise.resolve(false);
179
- }
180
-
181
- async addCheckpointAttestations(_attestations: CheckpointAttestation[]): Promise<void> {}
240
+ async addOwnCheckpointAttestations(_attestations: CheckpointAttestation[]): Promise<void> {}
182
241
 
183
- async deleteCheckpointAttestationsOlderThan(_slot: SlotNumber): Promise<void> {}
242
+ async deleteOlderThan(_slot: SlotNumber): Promise<void> {}
184
243
 
185
244
  getCheckpointAttestationsForSlot(_slot: SlotNumber): Promise<CheckpointAttestation[]> {
186
245
  return Promise.resolve([]);
@@ -193,23 +252,11 @@ export class InMemoryAttestationPool implements AttestationPool {
193
252
  return Promise.resolve([]);
194
253
  }
195
254
 
196
- hasCheckpointAttestation(_attestation: CheckpointAttestation): Promise<boolean> {
197
- return Promise.resolve(false);
198
- }
199
-
200
- canAddCheckpointProposal(_proposal: CheckpointProposal): Promise<boolean> {
201
- return Promise.resolve(true);
202
- }
203
-
204
- canAddCheckpointAttestation(_attestation: CheckpointAttestation, _committeeSize: number): Promise<boolean> {
205
- return Promise.resolve(true);
206
- }
207
-
208
- hasReachedCheckpointProposalCap(_slot: SlotNumber): Promise<boolean> {
209
- return Promise.resolve(false);
255
+ tryAddCheckpointAttestation(_attestation: CheckpointAttestation): Promise<TryAddResult> {
256
+ return Promise.resolve({ added: true, alreadyExists: false, count: 1 });
210
257
  }
211
258
 
212
- hasReachedCheckpointAttestationCap(_slot: SlotNumber, _proposalId: string, _committeeSize: number): Promise<boolean> {
259
+ hasBlockProposalsForSlot(_slot: SlotNumber): Promise<boolean> {
213
260
  return Promise.resolve(false);
214
261
  }
215
262
 
@@ -237,6 +284,15 @@ export function createMockEpochCache(): EpochCacheInterface {
237
284
  isInCommittee: () => Promise.resolve(false),
238
285
  getRegisteredValidators: () => Promise.resolve([]),
239
286
  filterInCommittee: () => Promise.resolve([]),
287
+ getL1Constants: () => ({
288
+ l1StartBlock: 0n,
289
+ l1GenesisTime: 0n,
290
+ epochDuration: 1,
291
+ slotDuration: 1,
292
+ ethereumSlotDuration: 1,
293
+ proofSubmissionEpochs: 1,
294
+ targetCommitteeSize: 48,
295
+ }),
240
296
  };
241
297
  }
242
298
 
@@ -321,6 +377,8 @@ export const BENCHMARK_CONSTANTS = {
321
377
  FIXED_MAX_PEERS: 10,
322
378
  /** Fixed max retry attempts for fair benchmarking */
323
379
  FIXED_MAX_RETRY_ATTEMPTS: 3,
380
+ /** LMDB map size for temp stores used in benchmarks (in KB). */
381
+ KV_STORE_MAP_SIZE_KB: 256 * 1024,
324
382
  } as const;
325
383
 
326
384
  /**
@@ -29,22 +29,19 @@ import type { Message, PeerId } from '@libp2p/interface';
29
29
  import { TopicValidatorResult } from '@libp2p/interface';
30
30
  import { peerIdFromString } from '@libp2p/peer-id';
31
31
 
32
- import type { P2PClient } from '../client/p2p_client.js';
32
+ import type { P2PClient } from '../client/index.js';
33
33
  import type { P2PConfig } from '../config.js';
34
34
  import { createP2PClient } from '../index.js';
35
- import type { MemPools } from '../mem_pools/interface.js';
36
- import { LibP2PService } from '../services/libp2p/libp2p_service.js';
35
+ import type { MemPools } from '../mem_pools/index.js';
36
+ import { BatchTxRequesterCollector, LibP2PService, SendBatchRequestCollector } from '../services/index.js';
37
37
  import type { PeerManager } from '../services/peer-manager/peer_manager.js';
38
38
  import type { BatchTxRequesterLibP2PService } from '../services/reqresp/batch-tx-requester/interface.js';
39
39
  import type { IBatchRequestTxValidator } from '../services/reqresp/batch-tx-requester/tx_validator.js';
40
40
  import { RateLimitStatus } from '../services/reqresp/rate-limiter/rate_limiter.js';
41
41
  import type { ReqResp } from '../services/reqresp/reqresp.js';
42
42
  import type { PeerDiscoveryService } from '../services/service.js';
43
- import {
44
- BatchTxRequesterCollector,
45
- SendBatchRequestCollector,
46
- } from '../services/tx_collection/proposal_tx_collector.js';
47
- import { AlwaysTrueCircuitVerifier } from '../test-helpers/reqresp-nodes.js';
43
+ import { MissingTxsTracker } from '../services/tx_collection/missing_txs_tracker.js';
44
+ import { AlwaysTrueCircuitVerifier } from '../test-helpers/index.js';
48
45
  import {
49
46
  BENCHMARK_CONSTANTS,
50
47
  type CollectorType,
@@ -55,7 +52,7 @@ import {
55
52
  createMockEpochCache,
56
53
  createMockWorldStateSynchronizer,
57
54
  filterTxsByDistribution,
58
- } from '../test-helpers/testbench-utils.js';
55
+ } from '../test-helpers/index.js';
59
56
  import type { PubSubLibp2p } from '../util.js';
60
57
 
61
58
  export type { DistributionPattern, CollectorType } from '../test-helpers/testbench-utils.js';
@@ -144,7 +141,7 @@ class TestLibP2PService<T extends P2PClientType = P2PClientType.Full> extends Li
144
141
  const txHash = tx.getTxHash();
145
142
  const txHashString = txHash.toString();
146
143
  this.logger.verbose(`Received tx ${txHashString} from external peer ${source.toString()}.`);
147
- await this.mempools.txPool.addTxs([tx]);
144
+ await this.mempools.txPool.addPendingTxs([tx]);
148
145
  } else {
149
146
  await super.handleGossipedTx(payload, msgId, source);
150
147
  }
@@ -166,7 +163,7 @@ async function generateDeterministicTxs(txCount: number, seed: number, config: P
166
163
  return cached.slice(0, txCount);
167
164
  }
168
165
 
169
- const includeByTimestampBase = BigInt(seed);
166
+ const expirationTimestampBase = BigInt(seed);
170
167
  for (let i = cached.length; i < txCount; i++) {
171
168
  const txSeed = seed * 10000 + i;
172
169
  const tx = await mockTx(txSeed, {
@@ -182,7 +179,7 @@ async function generateDeterministicTxs(txCount: number, seed: number, config: P
182
179
  hasPublicTeardownCallRequest: false,
183
180
  publicCalldataSize: 0,
184
181
  });
185
- tx.data.includeByTimestamp = includeByTimestampBase + BigInt(i);
182
+ tx.data.expirationTimestamp = expirationTimestampBase + BigInt(i);
186
183
  await tx.recomputeHash();
187
184
  cached.push(tx);
188
185
  }
@@ -277,7 +274,12 @@ async function runAggregatorBenchmark(
277
274
  new DateProvider(),
278
275
  noopTxValidator,
279
276
  );
280
- const fetchedTxs = await collector.collectTxs(txHashes, blockProposal, pinnedPeer, timeoutMs);
277
+ const fetchedTxs = await collector.collectTxs(
278
+ MissingTxsTracker.fromArray(txHashes),
279
+ blockProposal,
280
+ pinnedPeer,
281
+ timeoutMs,
282
+ );
281
283
  const durationMs = timer.ms();
282
284
  return {
283
285
  type: 'BENCH_RESULT',
@@ -292,7 +294,12 @@ async function runAggregatorBenchmark(
292
294
  BENCHMARK_CONSTANTS.FIXED_MAX_PEERS,
293
295
  BENCHMARK_CONSTANTS.FIXED_MAX_RETRY_ATTEMPTS,
294
296
  );
295
- const fetchedTxs = await collector.collectTxs(txHashes, blockProposal, pinnedPeer, timeoutMs);
297
+ const fetchedTxs = await collector.collectTxs(
298
+ MissingTxsTracker.fromArray(txHashes),
299
+ blockProposal,
300
+ pinnedPeer,
301
+ timeoutMs,
302
+ );
296
303
  const durationMs = timer.ms();
297
304
  return {
298
305
  type: 'BENCH_RESULT',
@@ -345,7 +352,7 @@ process.on('message', async msg => {
345
352
  const l2BlockSource = new MockL2BlockSource();
346
353
 
347
354
  const proofVerifier = new AlwaysTrueCircuitVerifier();
348
- kvStore = await openTmpStore(`test-${clientIndex}`);
355
+ kvStore = await openTmpStore(`test-${clientIndex}`, true, BENCHMARK_CONSTANTS.KV_STORE_MAP_SIZE_KB);
349
356
  workerLogger = createLogger(`p2p:${clientIndex}`);
350
357
  workerTxPool.setLogger(workerLogger);
351
358
  const telemetry = getTelemetryClient();
@@ -447,7 +454,7 @@ process.on('message', async msg => {
447
454
  const txHashes = allTxs.map(tx => tx.getTxHash());
448
455
  const blockProposal = await createBlockProposal(benchCmd.blockNumber, txHashes, benchCmd.seed);
449
456
 
450
- await workerAttestationPool.addBlockProposal(blockProposal);
457
+ await workerAttestationPool.tryAddBlockProposal(blockProposal);
451
458
  workerLogger.debug(
452
459
  `[BENCH] Added block proposal with archive ${blockProposal.archive.toString().slice(0, 10)}...`,
453
460
  );
package/src/util.ts CHANGED
@@ -23,7 +23,13 @@ export interface PubSubLibp2p extends Pick<Libp2p, 'status' | 'start' | 'stop' |
23
23
  services: {
24
24
  pubsub: Pick<
25
25
  GossipSub,
26
- 'addEventListener' | 'removeEventListener' | 'publish' | 'subscribe' | 'reportMessageValidationResult' | 'direct'
26
+ | 'addEventListener'
27
+ | 'removeEventListener'
28
+ | 'publish'
29
+ | 'subscribe'
30
+ | 'reportMessageValidationResult'
31
+ | 'direct'
32
+ | 'getMeshPeers'
27
33
  > & { score: Pick<GossipSub['score'], 'score'> };
28
34
  };
29
35
  }
@@ -1,40 +0,0 @@
1
- import { SlotNumber } from '@aztec/foundation/branded-types';
2
- import type { AztecAsyncKVStore } from '@aztec/kv-store';
3
- import { BlockProposal, CheckpointAttestation, CheckpointProposal, type CheckpointProposalCore } from '@aztec/stdlib/p2p';
4
- import { type TelemetryClient } from '@aztec/telemetry-client';
5
- import type { AttestationPool } from './attestation_pool.js';
6
- export declare const MAX_PROPOSALS_PER_SLOT = 5;
7
- export declare const ATTESTATION_CAP_BUFFER = 10;
8
- export declare class KvAttestationPool implements AttestationPool {
9
- private store;
10
- private log;
11
- private metrics;
12
- private proposals;
13
- private checkpointAttestations;
14
- private checkpointProposals;
15
- private checkpointProposalsForSlot;
16
- private checkpointAttestationsForProposal;
17
- constructor(store: AztecAsyncKVStore, telemetry?: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
18
- private poolStats;
19
- isEmpty(): Promise<boolean>;
20
- private getProposalKey;
21
- private getAttestationKey;
22
- addBlockProposal(blockProposal: BlockProposal): Promise<void>;
23
- getBlockProposal(id: string): Promise<BlockProposal | undefined>;
24
- hasBlockProposal(idOrProposal: string | BlockProposal): Promise<boolean>;
25
- addCheckpointProposal(proposal: CheckpointProposal): Promise<void>;
26
- getCheckpointProposal(id: string): Promise<CheckpointProposalCore | undefined>;
27
- hasCheckpointProposal(idOrProposal: string | CheckpointProposal): Promise<boolean>;
28
- addCheckpointAttestations(attestations: CheckpointAttestation[]): Promise<void>;
29
- getCheckpointAttestationsForSlot(slot: SlotNumber): Promise<CheckpointAttestation[]>;
30
- getCheckpointAttestationsForSlotAndProposal(slot: SlotNumber, proposalId: string): Promise<CheckpointAttestation[]>;
31
- deleteCheckpointAttestationsOlderThan(oldestSlot: SlotNumber): Promise<void>;
32
- private deleteCheckpointAttestationsForSlot;
33
- hasCheckpointAttestation(attestation: CheckpointAttestation): Promise<boolean>;
34
- canAddProposal(_block: BlockProposal): Promise<boolean>;
35
- canAddCheckpointProposal(proposal: CheckpointProposal): Promise<boolean>;
36
- canAddCheckpointAttestation(attestation: CheckpointAttestation, committeeSize: number): Promise<boolean>;
37
- hasReachedCheckpointProposalCap(slot: SlotNumber): Promise<boolean>;
38
- hasReachedCheckpointAttestationCap(slot: SlotNumber, proposalId: string, committeeSize: number): Promise<boolean>;
39
- }
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3ZfYXR0ZXN0YXRpb25fcG9vbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21lbV9wb29scy9hdHRlc3RhdGlvbl9wb29sL2t2X2F0dGVzdGF0aW9uX3Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSTdELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFxQyxNQUFNLGlCQUFpQixDQUFDO0FBQzVGLE9BQU8sRUFDTCxhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLGtCQUFrQixFQUNsQixLQUFLLHNCQUFzQixFQUM1QixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUluRixPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU3RCxlQUFPLE1BQU0sc0JBQXNCLElBQUksQ0FBQztBQUN4QyxlQUFPLE1BQU0sc0JBQXNCLEtBQUssQ0FBQztBQUV6QyxxQkFBYSxpQkFBa0IsWUFBVyxlQUFlO0lBZXJELE9BQU8sQ0FBQyxLQUFLO0lBRWIsT0FBTyxDQUFDLEdBQUc7SUFoQmIsT0FBTyxDQUFDLE9BQU8sQ0FBNkM7SUFFNUQsT0FBTyxDQUFDLFNBQVMsQ0FHZjtJQUdGLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBZ0M7SUFDOUQsT0FBTyxDQUFDLG1CQUFtQixDQUFnQztJQUMzRCxPQUFPLENBQUMsMEJBQTBCLENBQXFDO0lBQ3ZFLE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBcUM7SUFFOUUsWUFDVSxLQUFLLEVBQUUsaUJBQWlCLEVBQ2hDLFNBQVMsR0FBRSxlQUFzQyxFQUN6QyxHQUFHLHlDQUF5QyxFQVdyRDtJQUVELE9BQU8sQ0FBQyxTQUFTLENBSWY7SUFFVyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQVF2QztJQUVELE9BQU8sQ0FBQyxjQUFjO0lBWXRCLE9BQU8sQ0FBQyxpQkFBaUI7SUFJWixnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsYUFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FNekU7SUFFWSxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLENBVzVFO0lBRVksZ0JBQWdCLENBQUMsWUFBWSxFQUFFLE1BQU0sR0FBRyxhQUFhLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUdwRjtJQUVZLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBNEI5RTtJQUVZLHFCQUFxQixDQUFDLEVBQUUsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixHQUFHLFNBQVMsQ0FBQyxDQVcxRjtJQUVZLHFCQUFxQixDQUFDLFlBQVksRUFBRSxNQUFNLEdBQUcsa0JBQWtCLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUc5RjtJQUVZLHlCQUF5QixDQUFDLFlBQVksRUFBRSxxQkFBcUIsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FzQzNGO0lBRVksZ0NBQWdDLENBQUMsSUFBSSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQVNoRztJQUVZLDJDQUEyQyxDQUN0RCxJQUFJLEVBQUUsVUFBVSxFQUNoQixVQUFVLEVBQUUsTUFBTSxHQUNqQixPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQWtCbEM7SUFFWSxxQ0FBcUMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FLeEY7WUFFYSxtQ0FBbUM7SUF3QnBDLHdCQUF3QixDQUFDLFdBQVcsRUFBRSxxQkFBcUIsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBYzFGO0lBRU0sY0FBYyxDQUFDLE1BQU0sRUFBRSxhQUFhLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUc3RDtJQUVZLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBTXBGO0lBRVksMkJBQTJCLENBQ3RDLFdBQVcsRUFBRSxxQkFBcUIsRUFDbEMsYUFBYSxFQUFFLE1BQU0sR0FDcEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQVNsQjtJQUVZLCtCQUErQixDQUFDLElBQUksRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUcvRTtJQUVZLGtDQUFrQyxDQUM3QyxJQUFJLEVBQUUsVUFBVSxFQUNoQixVQUFVLEVBQUUsTUFBTSxFQUNsQixhQUFhLEVBQUUsTUFBTSxHQUNwQixPQUFPLENBQUMsT0FBTyxDQUFDLENBS2xCO0NBQ0YifQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"kv_attestation_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/kv_attestation_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAI7D,OAAO,KAAK,EAAE,iBAAiB,EAAqC,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,kBAAkB,EAClB,KAAK,sBAAsB,EAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAInF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,qBAAa,iBAAkB,YAAW,eAAe;IAerD,OAAO,CAAC,KAAK;IAEb,OAAO,CAAC,GAAG;IAhBb,OAAO,CAAC,OAAO,CAA6C;IAE5D,OAAO,CAAC,SAAS,CAGf;IAGF,OAAO,CAAC,sBAAsB,CAAgC;IAC9D,OAAO,CAAC,mBAAmB,CAAgC;IAC3D,OAAO,CAAC,0BAA0B,CAAqC;IACvE,OAAO,CAAC,iCAAiC,CAAqC;IAE9E,YACU,KAAK,EAAE,iBAAiB,EAChC,SAAS,GAAE,eAAsC,EACzC,GAAG,yCAAyC,EAWrD;IAED,OAAO,CAAC,SAAS,CAIf;IAEW,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAQvC;IAED,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,iBAAiB;IAIZ,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAMzE;IAEY,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAW5E;IAEY,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAGpF;IAEY,qBAAqB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B9E;IAEY,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAW1F;IAEY,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAG9F;IAEY,yBAAyB,CAAC,YAAY,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC3F;IAEY,gCAAgC,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAShG;IAEY,2CAA2C,CACtD,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAkBlC;IAEY,qCAAqC,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAKxF;YAEa,mCAAmC;IAwBpC,wBAAwB,CAAC,WAAW,EAAE,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,CAc1F;IAEM,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAG7D;IAEY,wBAAwB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAMpF;IAEY,2BAA2B,CACtC,WAAW,EAAE,qBAAqB,EAClC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,CAAC,CASlB;IAEY,+BAA+B,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAG/E;IAEY,kCAAkC,CAC7C,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,CAAC,CAKlB;CACF"}