@aztec/p2p 0.0.1-commit.8afd444 → 0.0.1-commit.8ee97c858

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 (410) hide show
  1. package/README.md +129 -3
  2. package/dest/client/factory.d.ts +11 -11
  3. package/dest/client/factory.d.ts.map +1 -1
  4. package/dest/client/factory.js +52 -15
  5. package/dest/client/interface.d.ts +46 -33
  6. package/dest/client/interface.d.ts.map +1 -1
  7. package/dest/client/p2p_client.d.ts +39 -51
  8. package/dest/client/p2p_client.d.ts.map +1 -1
  9. package/dest/client/p2p_client.js +157 -224
  10. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +9 -9
  11. package/dest/config.d.ts +55 -18
  12. package/dest/config.d.ts.map +1 -1
  13. package/dest/config.js +102 -38
  14. package/dest/errors/tx-pool.error.d.ts +8 -0
  15. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  16. package/dest/errors/tx-pool.error.js +9 -0
  17. package/dest/index.d.ts +2 -1
  18. package/dest/index.d.ts.map +1 -1
  19. package/dest/index.js +1 -0
  20. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +104 -88
  21. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  22. package/dest/mem_pools/attestation_pool/attestation_pool.js +445 -3
  23. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  24. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  25. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +353 -87
  26. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  27. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  28. package/dest/mem_pools/attestation_pool/index.js +1 -2
  29. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  30. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  31. package/dest/mem_pools/attestation_pool/mocks.js +2 -2
  32. package/dest/mem_pools/index.d.ts +3 -2
  33. package/dest/mem_pools/index.d.ts.map +1 -1
  34. package/dest/mem_pools/index.js +1 -1
  35. package/dest/mem_pools/instrumentation.d.ts +4 -2
  36. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  37. package/dest/mem_pools/instrumentation.js +16 -14
  38. package/dest/mem_pools/interface.d.ts +5 -5
  39. package/dest/mem_pools/interface.d.ts.map +1 -1
  40. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
  41. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  42. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +2 -1
  43. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +3 -3
  44. package/dest/mem_pools/tx_pool/priority.d.ts +2 -2
  45. package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
  46. package/dest/mem_pools/tx_pool/priority.js +4 -4
  47. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
  48. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  49. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +3 -1
  50. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  51. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  52. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  53. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  54. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  55. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  56. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  57. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  58. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  59. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  60. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  61. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  62. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  63. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  64. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +94 -0
  65. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  66. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  67. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
  68. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  69. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  70. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  71. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +180 -0
  72. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  73. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  74. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  75. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  76. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
  77. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  78. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  79. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  80. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  81. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  82. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
  83. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  84. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  85. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +75 -0
  86. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  87. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  88. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  89. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  90. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  91. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  92. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  93. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  94. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  95. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +215 -0
  96. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  97. package/dest/mem_pools/tx_pool_v2/interfaces.js +10 -0
  98. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +134 -0
  99. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  100. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +216 -0
  101. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  102. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  103. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  104. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  105. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  106. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +337 -0
  107. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +62 -0
  108. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  109. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +167 -0
  110. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +78 -0
  111. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  112. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +923 -0
  113. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +1 -1
  114. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  115. package/dest/msg_validators/attestation_validator/attestation_validator.js +5 -4
  116. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +3 -3
  117. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  118. package/dest/msg_validators/clock_tolerance.d.ts +1 -1
  119. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
  120. package/dest/msg_validators/clock_tolerance.js +4 -3
  121. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +6 -4
  122. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  123. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
  124. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +6 -4
  125. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  126. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
  127. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -8
  128. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  129. package/dest/msg_validators/proposal_validator/proposal_validator.js +53 -41
  130. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  131. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  132. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  133. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  134. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  135. package/dest/msg_validators/tx_validator/allowed_public_setup.js +24 -20
  136. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  137. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  138. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  139. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +16 -3
  140. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  141. package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
  142. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +13 -3
  143. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  144. package/dest/msg_validators/tx_validator/double_spend_validator.js +4 -4
  145. package/dest/msg_validators/tx_validator/factory.d.ts +133 -6
  146. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  147. package/dest/msg_validators/tx_validator/factory.js +240 -59
  148. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
  149. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
  150. package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
  151. package/dest/msg_validators/tx_validator/gas_validator.d.ts +67 -3
  152. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  153. package/dest/msg_validators/tx_validator/gas_validator.js +104 -37
  154. package/dest/msg_validators/tx_validator/index.d.ts +3 -1
  155. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  156. package/dest/msg_validators/tx_validator/index.js +2 -0
  157. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
  158. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  159. package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
  160. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  161. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  162. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  163. package/dest/msg_validators/tx_validator/phases_validator.d.ts +22 -2
  164. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  165. package/dest/msg_validators/tx_validator/phases_validator.js +71 -23
  166. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +20 -4
  167. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  168. package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
  169. package/dest/services/dummy_service.d.ts +13 -5
  170. package/dest/services/dummy_service.d.ts.map +1 -1
  171. package/dest/services/dummy_service.js +10 -4
  172. package/dest/services/encoding.d.ts +7 -3
  173. package/dest/services/encoding.d.ts.map +1 -1
  174. package/dest/services/encoding.js +18 -11
  175. package/dest/services/gossipsub/index.d.ts +3 -0
  176. package/dest/services/gossipsub/index.d.ts.map +1 -0
  177. package/dest/services/gossipsub/index.js +2 -0
  178. package/dest/services/gossipsub/scoring.d.ts +21 -3
  179. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  180. package/dest/services/gossipsub/scoring.js +24 -7
  181. package/dest/services/gossipsub/topic_score_params.d.ts +173 -0
  182. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  183. package/dest/services/gossipsub/topic_score_params.js +346 -0
  184. package/dest/services/libp2p/libp2p_service.d.ts +94 -49
  185. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  186. package/dest/services/libp2p/libp2p_service.js +466 -370
  187. package/dest/services/peer-manager/metrics.d.ts +3 -1
  188. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  189. package/dest/services/peer-manager/metrics.js +6 -0
  190. package/dest/services/peer-manager/peer_manager.d.ts +1 -1
  191. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  192. package/dest/services/peer-manager/peer_manager.js +6 -3
  193. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  194. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  195. package/dest/services/peer-manager/peer_scoring.js +25 -2
  196. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +14 -10
  197. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  198. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +86 -112
  199. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +4 -7
  200. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  201. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +11 -13
  202. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  203. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +31 -46
  204. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +19 -11
  205. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  206. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +52 -15
  207. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +2 -2
  208. package/dest/services/reqresp/interface.d.ts +10 -1
  209. package/dest/services/reqresp/interface.d.ts.map +1 -1
  210. package/dest/services/reqresp/interface.js +15 -1
  211. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  212. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  213. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +16 -11
  214. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +21 -10
  215. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  216. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +27 -11
  217. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  218. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  219. package/dest/services/reqresp/protocols/tx.js +20 -0
  220. package/dest/services/reqresp/reqresp.d.ts +1 -1
  221. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  222. package/dest/services/reqresp/reqresp.js +30 -14
  223. package/dest/services/service.d.ts +39 -3
  224. package/dest/services/service.d.ts.map +1 -1
  225. package/dest/services/tx_collection/config.d.ts +22 -4
  226. package/dest/services/tx_collection/config.d.ts.map +1 -1
  227. package/dest/services/tx_collection/config.js +49 -3
  228. package/dest/services/tx_collection/fast_tx_collection.d.ts +6 -8
  229. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  230. package/dest/services/tx_collection/fast_tx_collection.js +88 -88
  231. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  232. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  233. package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
  234. package/dest/services/tx_collection/file_store_tx_source.d.ts +37 -0
  235. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  236. package/dest/services/tx_collection/file_store_tx_source.js +90 -0
  237. package/dest/services/tx_collection/index.d.ts +3 -2
  238. package/dest/services/tx_collection/index.d.ts.map +1 -1
  239. package/dest/services/tx_collection/index.js +1 -0
  240. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  241. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  242. package/dest/services/tx_collection/instrumentation.js +2 -1
  243. package/dest/services/tx_collection/proposal_tx_collector.d.ts +15 -15
  244. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  245. package/dest/services/tx_collection/proposal_tx_collector.js +6 -6
  246. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  247. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  248. package/dest/services/tx_collection/request_tracker.js +84 -0
  249. package/dest/services/tx_collection/slow_tx_collection.d.ts +7 -3
  250. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  251. package/dest/services/tx_collection/slow_tx_collection.js +60 -26
  252. package/dest/services/tx_collection/tx_collection.d.ts +23 -13
  253. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  254. package/dest/services/tx_collection/tx_collection.js +75 -3
  255. package/dest/services/tx_collection/tx_collection_sink.d.ts +18 -8
  256. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  257. package/dest/services/tx_collection/tx_collection_sink.js +26 -29
  258. package/dest/services/tx_collection/tx_source.d.ts +8 -3
  259. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  260. package/dest/services/tx_collection/tx_source.js +19 -2
  261. package/dest/services/tx_file_store/config.d.ts +1 -3
  262. package/dest/services/tx_file_store/config.d.ts.map +1 -1
  263. package/dest/services/tx_file_store/config.js +0 -4
  264. package/dest/services/tx_file_store/tx_file_store.d.ts +4 -3
  265. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
  266. package/dest/services/tx_file_store/tx_file_store.js +9 -6
  267. package/dest/services/tx_provider.d.ts +4 -4
  268. package/dest/services/tx_provider.d.ts.map +1 -1
  269. package/dest/services/tx_provider.js +9 -8
  270. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  271. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  272. package/dest/test-helpers/make-test-p2p-clients.js +1 -2
  273. package/dest/test-helpers/mock-pubsub.d.ts +30 -4
  274. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  275. package/dest/test-helpers/mock-pubsub.js +105 -4
  276. package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
  277. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  278. package/dest/test-helpers/reqresp-nodes.js +4 -3
  279. package/dest/test-helpers/testbench-utils.d.ts +43 -38
  280. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  281. package/dest/test-helpers/testbench-utils.js +149 -61
  282. package/dest/testbench/p2p_client_testbench_worker.d.ts +2 -2
  283. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  284. package/dest/testbench/p2p_client_testbench_worker.js +19 -17
  285. package/dest/testbench/worker_client_manager.d.ts +3 -1
  286. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  287. package/dest/testbench/worker_client_manager.js +6 -2
  288. package/dest/util.d.ts +3 -3
  289. package/dest/util.d.ts.map +1 -1
  290. package/package.json +14 -14
  291. package/src/client/factory.ts +99 -28
  292. package/src/client/interface.ts +56 -34
  293. package/src/client/p2p_client.ts +190 -269
  294. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +22 -14
  295. package/src/config.ts +158 -44
  296. package/src/errors/tx-pool.error.ts +12 -0
  297. package/src/index.ts +1 -0
  298. package/src/mem_pools/attestation_pool/attestation_pool.ts +497 -91
  299. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +442 -102
  300. package/src/mem_pools/attestation_pool/index.ts +9 -2
  301. package/src/mem_pools/attestation_pool/mocks.ts +2 -1
  302. package/src/mem_pools/index.ts +4 -1
  303. package/src/mem_pools/instrumentation.ts +17 -13
  304. package/src/mem_pools/interface.ts +4 -4
  305. package/src/mem_pools/tx_pool/README.md +1 -1
  306. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +2 -1
  307. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +3 -3
  308. package/src/mem_pools/tx_pool/priority.ts +4 -4
  309. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +3 -1
  310. package/src/mem_pools/tx_pool_v2/README.md +283 -0
  311. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  312. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  313. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  314. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  315. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +122 -0
  316. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
  317. package/src/mem_pools/tx_pool_v2/eviction/index.ts +27 -0
  318. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +219 -0
  319. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  320. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  321. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
  322. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +99 -0
  323. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +32 -0
  324. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  325. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  326. package/src/mem_pools/tx_pool_v2/interfaces.ts +247 -0
  327. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +337 -0
  328. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  329. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +430 -0
  330. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +238 -0
  331. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1105 -0
  332. package/src/msg_validators/attestation_validator/README.md +49 -0
  333. package/src/msg_validators/attestation_validator/attestation_validator.ts +5 -4
  334. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +2 -2
  335. package/src/msg_validators/clock_tolerance.ts +4 -3
  336. package/src/msg_validators/proposal_validator/README.md +123 -0
  337. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +14 -4
  338. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +20 -7
  339. package/src/msg_validators/proposal_validator/proposal_validator.ts +69 -45
  340. package/src/msg_validators/tx_validator/README.md +119 -0
  341. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +5 -5
  342. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  343. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  344. package/src/msg_validators/tx_validator/block_header_validator.ts +15 -3
  345. package/src/msg_validators/tx_validator/double_spend_validator.ts +11 -6
  346. package/src/msg_validators/tx_validator/factory.ts +387 -78
  347. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  348. package/src/msg_validators/tx_validator/gas_validator.ts +123 -27
  349. package/src/msg_validators/tx_validator/index.ts +2 -0
  350. package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
  351. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  352. package/src/msg_validators/tx_validator/phases_validator.ts +81 -26
  353. package/src/msg_validators/tx_validator/timestamp_validator.ts +23 -18
  354. package/src/services/dummy_service.ts +18 -6
  355. package/src/services/encoding.ts +18 -10
  356. package/src/services/gossipsub/README.md +641 -0
  357. package/src/services/gossipsub/index.ts +2 -0
  358. package/src/services/gossipsub/scoring.ts +29 -5
  359. package/src/services/gossipsub/topic_score_params.ts +487 -0
  360. package/src/services/libp2p/libp2p_service.ts +492 -397
  361. package/src/services/peer-manager/metrics.ts +7 -0
  362. package/src/services/peer-manager/peer_manager.ts +7 -3
  363. package/src/services/peer-manager/peer_scoring.ts +25 -0
  364. package/src/services/reqresp/README.md +229 -0
  365. package/src/services/reqresp/batch-tx-requester/README.md +53 -14
  366. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +86 -122
  367. package/src/services/reqresp/batch-tx-requester/interface.ts +3 -6
  368. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +30 -71
  369. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +68 -24
  370. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +2 -2
  371. package/src/services/reqresp/interface.ts +26 -1
  372. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +23 -14
  373. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +38 -15
  374. package/src/services/reqresp/protocols/tx.ts +22 -0
  375. package/src/services/reqresp/reqresp.ts +35 -15
  376. package/src/services/service.ts +51 -2
  377. package/src/services/tx_collection/config.ts +74 -6
  378. package/src/services/tx_collection/fast_tx_collection.ts +94 -97
  379. package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
  380. package/src/services/tx_collection/file_store_tx_source.ts +117 -0
  381. package/src/services/tx_collection/index.ts +2 -1
  382. package/src/services/tx_collection/instrumentation.ts +7 -1
  383. package/src/services/tx_collection/proposal_tx_collector.ts +21 -27
  384. package/src/services/tx_collection/request_tracker.ts +127 -0
  385. package/src/services/tx_collection/slow_tx_collection.ts +66 -33
  386. package/src/services/tx_collection/tx_collection.ts +114 -19
  387. package/src/services/tx_collection/tx_collection_sink.ts +30 -34
  388. package/src/services/tx_collection/tx_source.ts +22 -3
  389. package/src/services/tx_file_store/config.ts +0 -6
  390. package/src/services/tx_file_store/tx_file_store.ts +10 -8
  391. package/src/services/tx_provider.ts +10 -9
  392. package/src/test-helpers/make-test-p2p-clients.ts +4 -6
  393. package/src/test-helpers/mock-pubsub.ts +146 -9
  394. package/src/test-helpers/reqresp-nodes.ts +5 -7
  395. package/src/test-helpers/testbench-utils.ts +156 -74
  396. package/src/testbench/p2p_client_testbench_worker.ts +27 -25
  397. package/src/testbench/worker_client_manager.ts +13 -5
  398. package/src/util.ts +8 -2
  399. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
  400. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  401. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
  402. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
  403. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  404. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
  405. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
  406. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  407. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
  408. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
  409. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
  410. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
@@ -38,6 +38,8 @@ declare class WorkerClientManager {
38
38
  * Note: We send the raw peerIdPrivateKey string instead of SecretValue
39
39
  * because SecretValue.toJSON() returns '[Redacted]', losing the value.
40
40
  * The worker must re-wrap it in SecretValue.
41
+ * We also omit priceBumpPercentage since it's a bigint and can't be
42
+ * serialized over IPC (which uses JSON under the hood).
41
43
  */
42
44
  private createClientConfig;
43
45
  /**
@@ -93,4 +95,4 @@ declare class WorkerClientManager {
93
95
  export { WorkerClientManager, testChainConfig };
94
96
  export type { DistributionPattern, CollectorType } from './p2p_client_testbench_worker.js';
95
97
  export { COLLECTOR_DISPLAY_NAMES } from './p2p_client_testbench_worker.js';
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyX2NsaWVudF9tYW5hZ2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGJlbmNoL3dvcmtlcl9jbGllbnRfbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFLeEQsT0FBTyxFQUFFLEtBQUssU0FBUyxFQUF1QixNQUFNLGNBQWMsQ0FBQztBQUtuRSxPQUFPLEtBQUssRUFHVixhQUFhLEVBQ2IsbUJBQW1CLEVBQ3BCLE1BQU0sa0NBQWtDLENBQUM7QUFRMUMsUUFBQSxNQUFNLGVBQWUsRUFBRSxXQU10QixDQUFDO0FBRUYsTUFBTSxXQUFXLHNCQUFzQjtJQUNyQyxPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ2hCLFlBQVksRUFBRSxtQkFBbUIsQ0FBQztJQUNsQyxhQUFhLEVBQUUsYUFBYSxDQUFDO0lBQzdCLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsZUFBZSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3pCLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNyQixJQUFJLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDZjtBQUVELE1BQU0sV0FBVyxzQkFBc0I7SUFDckMsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUNoQixZQUFZLEVBQUUsbUJBQW1CLENBQUM7SUFDbEMsU0FBUyxFQUFFLGFBQWEsQ0FBQztJQUN6QixVQUFVLEVBQUUsTUFBTSxDQUFDO0lBQ25CLFlBQVksRUFBRSxNQUFNLENBQUM7SUFDckIsT0FBTyxFQUFFLE9BQU8sQ0FBQztJQUNqQixLQUFLLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDaEI7QUFFRCxjQUFNLG1CQUFtQjtJQUNoQixTQUFTLEVBQUUsWUFBWSxFQUFFLENBQU07SUFDL0IsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLENBQU07SUFDakMsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFNO0lBQ3hCLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBTTtJQUNyQixPQUFPLEVBQUUsTUFBTSxFQUFFLENBQU07SUFDOUIsT0FBTyxDQUFDLFNBQVMsQ0FBcUI7SUFDdEMsT0FBTyxDQUFDLE1BQU0sQ0FBUztJQUN2QixPQUFPLENBQUMsdUJBQXVCLENBQWdCO0lBRS9DLFlBQVksTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUd4RDtJQUVELE9BQU8sU0FLTjtJQUVEOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLGtCQUFrQjtJQWlCMUI7OztPQUdHO0lBQ0gsT0FBTyxDQUFDLGtCQUFrQjtJQWdHMUI7Ozs7Ozs7T0FPRztJQUNHLGlCQUFpQixDQUNyQixlQUFlLEVBQUUsTUFBTSxFQUN2QixPQUFPLEdBQUU7UUFDUCxhQUFhLENBQUMsRUFBRSxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUN2QixTQUFTLENBQUMsRUFBRSxNQUFNLENBQUM7UUFDbkIsWUFBWSxDQUFDLEVBQUUsTUFBTSxDQUFDO0tBQ2xCLHFCQStEUDtJQUVELDRCQUE0QixTQUUzQjtJQUVELGtDQUFrQyxXQUVqQztJQUVEOzs7OztPQUtHO0lBQ0csVUFBVSxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBOENwRDtJQUVEOztPQUVHO0lBQ0gsT0FBTyxDQUFDLGdCQUFnQjtJQXFDeEI7O09BRUc7SUFDRyxPQUFPLGtCQWdDWjtJQUVEOzs7Ozs7Ozs7T0FTRztJQUNHLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxzQkFBc0IsR0FBRyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FzRXpGO0lBRUQsT0FBTyxDQUFDLGlCQUFpQjtJQWtDekIsT0FBTyxDQUFDLGtCQUFrQjtDQWlDM0I7QUFFRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLENBQUM7QUFDaEQsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzNGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDIn0=
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyX2NsaWVudF9tYW5hZ2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGJlbmNoL3dvcmtlcl9jbGllbnRfbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFLeEQsT0FBTyxFQUFFLEtBQUssU0FBUyxFQUF1QixNQUFNLGNBQWMsQ0FBQztBQUtuRSxPQUFPLEtBQUssRUFHVixhQUFhLEVBQ2IsbUJBQW1CLEVBQ3BCLE1BQU0sa0NBQWtDLENBQUM7QUFRMUMsUUFBQSxNQUFNLGVBQWUsRUFBRSxXQU10QixDQUFDO0FBRUYsTUFBTSxXQUFXLHNCQUFzQjtJQUNyQyxPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ2hCLFlBQVksRUFBRSxtQkFBbUIsQ0FBQztJQUNsQyxhQUFhLEVBQUUsYUFBYSxDQUFDO0lBQzdCLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsZUFBZSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3pCLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNyQixJQUFJLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDZjtBQUVELE1BQU0sV0FBVyxzQkFBc0I7SUFDckMsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUNoQixZQUFZLEVBQUUsbUJBQW1CLENBQUM7SUFDbEMsU0FBUyxFQUFFLGFBQWEsQ0FBQztJQUN6QixVQUFVLEVBQUUsTUFBTSxDQUFDO0lBQ25CLFlBQVksRUFBRSxNQUFNLENBQUM7SUFDckIsT0FBTyxFQUFFLE9BQU8sQ0FBQztJQUNqQixLQUFLLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDaEI7QUFFRCxjQUFNLG1CQUFtQjtJQUNoQixTQUFTLEVBQUUsWUFBWSxFQUFFLENBQU07SUFDL0IsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLENBQU07SUFDakMsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFNO0lBQ3hCLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBTTtJQUNyQixPQUFPLEVBQUUsTUFBTSxFQUFFLENBQU07SUFDOUIsT0FBTyxDQUFDLFNBQVMsQ0FBcUI7SUFDdEMsT0FBTyxDQUFDLE1BQU0sQ0FBUztJQUN2QixPQUFPLENBQUMsdUJBQXVCLENBQWdCO0lBRS9DLFlBQVksTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUd4RDtJQUVELE9BQU8sU0FLTjtJQUVEOzs7Ozs7O09BT0c7SUFDSCxPQUFPLENBQUMsa0JBQWtCO0lBb0IxQjs7O09BR0c7SUFDSCxPQUFPLENBQUMsa0JBQWtCO0lBa0cxQjs7Ozs7OztPQU9HO0lBQ0csaUJBQWlCLENBQ3JCLGVBQWUsRUFBRSxNQUFNLEVBQ3ZCLE9BQU8sR0FBRTtRQUNQLGFBQWEsQ0FBQyxFQUFFLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakMsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQ3ZCLFNBQVMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUNuQixZQUFZLENBQUMsRUFBRSxNQUFNLENBQUM7S0FDbEIscUJBK0RQO0lBRUQsNEJBQTRCLFNBRTNCO0lBRUQsa0NBQWtDLFdBRWpDO0lBRUQ7Ozs7O09BS0c7SUFDRyxVQUFVLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkE4Q3BEO0lBRUQ7O09BRUc7SUFDSCxPQUFPLENBQUMsZ0JBQWdCO0lBcUN4Qjs7T0FFRztJQUNHLE9BQU8sa0JBZ0NaO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0csbUJBQW1CLENBQUMsTUFBTSxFQUFFLHNCQUFzQixHQUFHLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQXVFekY7SUFFRCxPQUFPLENBQUMsaUJBQWlCO0lBa0N6QixPQUFPLENBQUMsa0JBQWtCO0NBaUMzQjtBQUVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsQ0FBQztBQUNoRCxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDM0YsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0NBQWtDLENBQUMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"worker_client_manager.d.ts","sourceRoot":"","sources":["../../src/testbench/worker_client_manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,KAAK,YAAY,EAAQ,MAAM,eAAe,CAAC;AAKxD,OAAO,EAAE,KAAK,SAAS,EAAuB,MAAM,cAAc,CAAC;AAKnE,OAAO,KAAK,EAGV,aAAa,EACb,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAQ1C,QAAA,MAAM,eAAe,EAAE,WAMtB,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,mBAAmB,CAAC;IAClC,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,mBAAmB,CAAC;IAClC,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,cAAM,mBAAmB;IAChB,SAAS,EAAE,YAAY,EAAE,CAAM;IAC/B,iBAAiB,EAAE,MAAM,EAAE,CAAM;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAM;IACxB,KAAK,EAAE,MAAM,EAAE,CAAM;IACrB,OAAO,EAAE,MAAM,EAAE,CAAM;IAC9B,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,uBAAuB,CAAgB;IAE/C,YAAY,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,EAGxD;IAED,OAAO,SAKN;IAED;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAgG1B;;;;;;;OAOG;IACG,iBAAiB,CACrB,eAAe,EAAE,MAAM,EACvB,OAAO,GAAE;QACP,aAAa,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;QACjC,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;KAClB,qBA+DP;IAED,4BAA4B,SAE3B;IAED,kCAAkC,WAEjC;IAED;;;;;OAKG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,iBA8CpD;IAED;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqCxB;;OAEG;IACG,OAAO,kBAgCZ;IAED;;;;;;;;;OASG;IACG,mBAAmB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAsEzF;IAED,OAAO,CAAC,iBAAiB;IAkCzB,OAAO,CAAC,kBAAkB;CAiC3B;AAED,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,CAAC;AAChD,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAC3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC"}
1
+ {"version":3,"file":"worker_client_manager.d.ts","sourceRoot":"","sources":["../../src/testbench/worker_client_manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,KAAK,YAAY,EAAQ,MAAM,eAAe,CAAC;AAKxD,OAAO,EAAE,KAAK,SAAS,EAAuB,MAAM,cAAc,CAAC;AAKnE,OAAO,KAAK,EAGV,aAAa,EACb,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAQ1C,QAAA,MAAM,eAAe,EAAE,WAMtB,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,mBAAmB,CAAC;IAClC,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,mBAAmB,CAAC;IAClC,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,cAAM,mBAAmB;IAChB,SAAS,EAAE,YAAY,EAAE,CAAM;IAC/B,iBAAiB,EAAE,MAAM,EAAE,CAAM;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAM;IACxB,KAAK,EAAE,MAAM,EAAE,CAAM;IACrB,OAAO,EAAE,MAAM,EAAE,CAAM;IAC9B,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,uBAAuB,CAAgB;IAE/C,YAAY,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,EAGxD;IAED,OAAO,SAKN;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;IAoB1B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAkG1B;;;;;;;OAOG;IACG,iBAAiB,CACrB,eAAe,EAAE,MAAM,EACvB,OAAO,GAAE;QACP,aAAa,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;QACjC,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;KAClB,qBA+DP;IAED,4BAA4B,SAE3B;IAED,kCAAkC,WAEjC;IAED;;;;;OAKG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,iBA8CpD;IAED;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqCxB;;OAEG;IACG,OAAO,kBAgCZ;IAED;;;;;;;;;OASG;IACG,mBAAmB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAuEzF;IAED,OAAO,CAAC,iBAAiB;IAkCzB,OAAO,CAAC,kBAAkB;CAiC3B;AAED,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,CAAC;AAChD,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAC3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC"}
@@ -45,8 +45,10 @@ class WorkerClientManager {
45
45
  * Note: We send the raw peerIdPrivateKey string instead of SecretValue
46
46
  * because SecretValue.toJSON() returns '[Redacted]', losing the value.
47
47
  * The worker must re-wrap it in SecretValue.
48
+ * We also omit priceBumpPercentage since it's a bigint and can't be
49
+ * serialized over IPC (which uses JSON under the hood).
48
50
  */ createClientConfig(clientIndex, port, otherNodes) {
49
- return {
51
+ const { priceBumpPercentage: _, ...config } = {
50
52
  ...getP2PDefaultConfig(),
51
53
  p2pEnabled: true,
52
54
  peerIdPrivateKey: this.peerIdPrivateKeys[clientIndex],
@@ -58,6 +60,7 @@ class WorkerClientManager {
58
60
  ],
59
61
  ...this.p2pConfig
60
62
  };
63
+ return config;
61
64
  }
62
65
  /**
63
66
  * Spawns a worker process and returns a promise that resolves when the worker is ready.
@@ -368,7 +371,8 @@ class WorkerClientManager {
368
371
  seed
369
372
  };
370
373
  this.processes[0].send(aggregatorCmd);
371
- const result = await this.waitForBenchResult(0, config.timeoutMs + 30000);
374
+ const aggregatorBudgetMs = config.timeoutMs + BENCHMARK_CONSTANTS.MAX_PEER_WAIT_MS + 30000;
375
+ const result = await this.waitForBenchResult(0, aggregatorBudgetMs);
372
376
  this.logger.info(`Benchmark complete: fetched=${result.fetchedCount}/${config.txCount}, duration=${result.durationMs.toFixed(0)}ms, success=${result.success}`);
373
377
  return {
374
378
  txCount: config.txCount,
package/dest/util.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { SecretValue } from '@aztec/foundation/config';
2
2
  import type { Logger } from '@aztec/foundation/log';
3
3
  import type { AztecAsyncKVStore } from '@aztec/kv-store';
4
- import type { DataStoreConfig } from '@aztec/kv-store/config';
4
+ import type { DataStoreConfig } from '@aztec/stdlib/kv-store';
5
5
  import type { GossipSub } from '@chainsafe/libp2p-gossipsub';
6
6
  import type { Identify } from '@libp2p/identify';
7
7
  import type { PeerId } from '@libp2p/interface';
@@ -10,7 +10,7 @@ import type { Libp2p } from 'libp2p';
10
10
  import type { P2PConfig } from './config.js';
11
11
  export interface PubSubLibp2p extends Pick<Libp2p, 'status' | 'start' | 'stop' | 'peerId'> {
12
12
  services: {
13
- pubsub: Pick<GossipSub, 'addEventListener' | 'removeEventListener' | 'publish' | 'subscribe' | 'reportMessageValidationResult' | 'direct'> & {
13
+ pubsub: Pick<GossipSub, 'addEventListener' | 'removeEventListener' | 'publish' | 'subscribe' | 'reportMessageValidationResult' | 'direct' | 'getMeshPeers'> & {
14
14
  score: Pick<GossipSub['score'], 'score'>;
15
15
  };
16
16
  };
@@ -58,4 +58,4 @@ export declare function getPeerIdPrivateKey(config: {
58
58
  * @returns The peer ID.
59
59
  */
60
60
  export declare function createLibP2PPeerIdFromPrivateKey(privateKey: string): Promise<PeerId>;
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUF1QixNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTdELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBYyxNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJcEUsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBSXJDLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUk3QyxNQUFNLFdBQVcsWUFBYSxTQUFRLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxHQUFHLE9BQU8sR0FBRyxNQUFNLEdBQUcsUUFBUSxDQUFDO0lBQ3hGLFFBQVEsRUFBRTtRQUNSLE1BQU0sRUFBRSxJQUFJLENBQ1YsU0FBUyxFQUNULGtCQUFrQixHQUFHLHFCQUFxQixHQUFHLFNBQVMsR0FBRyxXQUFXLEdBQUcsK0JBQStCLEdBQUcsUUFBUSxDQUNsSCxHQUFHO1lBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUE7U0FBRSxDQUFDO0tBQ2xELENBQUM7Q0FDSDtBQUVELE1BQU0sTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDO0lBQzlCLFFBQVEsRUFBRSxRQUFRLENBQUM7SUFDbkIsTUFBTSxFQUFFLFNBQVMsQ0FBQztJQUNsQixVQUFVLEVBQUU7UUFDVixpQkFBaUIsRUFBRSxpQkFBaUIsQ0FBQztLQUN0QyxDQUFDO0NBQ0gsQ0FBQyxDQUFDO0FBRUg7Ozs7Ozs7NkNBTzZDO0FBQzdDLHdCQUFnQixrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssR0FBRyxLQUFLLEdBQUcsTUFBTSxDQU9qRztBQUVEOztHQUVHO0FBQ0gsd0JBQXNCLFdBQVcsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBUW5EO0FBRUQsd0JBQWdCLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUd6RDtBQUVELHdCQUFzQix5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQVc5RjtBQWNELHdCQUFzQiwyQkFBMkIsQ0FDL0MsT0FBTyxFQUFFLFNBQVMsR0FBRyxlQUFlLEdBQ25DLE9BQU8sQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDLENBbUJ0QztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQXNCLG1CQUFtQixDQUN2QyxNQUFNLEVBQUU7SUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUFDLG9CQUFvQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQUMsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFBO0NBQUUsRUFDekcsS0FBSyxFQUFFLGlCQUFpQixFQUN4QixNQUFNLEVBQUUsTUFBTSxHQUNiLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0EyRDlCO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFzQixnQ0FBZ0MsQ0FBQyxVQUFVLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FTMUYifQ==
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUF1QixNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTdELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBYyxNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJcEUsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBSXJDLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUk3QyxNQUFNLFdBQVcsWUFBYSxTQUFRLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxHQUFHLE9BQU8sR0FBRyxNQUFNLEdBQUcsUUFBUSxDQUFDO0lBQ3hGLFFBQVEsRUFBRTtRQUNSLE1BQU0sRUFBRSxJQUFJLENBQ1YsU0FBUyxFQUNQLGtCQUFrQixHQUNsQixxQkFBcUIsR0FDckIsU0FBUyxHQUNULFdBQVcsR0FDWCwrQkFBK0IsR0FDL0IsUUFBUSxHQUNSLGNBQWMsQ0FDakIsR0FBRztZQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1NBQUUsQ0FBQztLQUNsRCxDQUFDO0NBQ0g7QUFFRCxNQUFNLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQztJQUM5QixRQUFRLEVBQUUsUUFBUSxDQUFDO0lBQ25CLE1BQU0sRUFBRSxTQUFTLENBQUM7SUFDbEIsVUFBVSxFQUFFO1FBQ1YsaUJBQWlCLEVBQUUsaUJBQWlCLENBQUM7S0FDdEMsQ0FBQztDQUNILENBQUMsQ0FBQztBQUVIOzs7Ozs7OzZDQU82QztBQUM3Qyx3QkFBZ0Isa0JBQWtCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEdBQUcsS0FBSyxHQUFHLE1BQU0sQ0FPakc7QUFFRDs7R0FFRztBQUNILHdCQUFzQixXQUFXLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQVFuRDtBQUVELHdCQUFnQixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FHekQ7QUFFRCx3QkFBc0IseUJBQXlCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FXOUY7QUFjRCx3QkFBc0IsMkJBQTJCLENBQy9DLE9BQU8sRUFBRSxTQUFTLEdBQUcsZUFBZSxHQUNuQyxPQUFPLENBQUMsU0FBUyxHQUFHLGVBQWUsQ0FBQyxDQW1CdEM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILHdCQUFzQixtQkFBbUIsQ0FDdkMsTUFBTSxFQUFFO0lBQUUsZ0JBQWdCLENBQUMsRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFBQyxvQkFBb0IsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUFDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sQ0FBQTtDQUFFLEVBQ3pHLEtBQUssRUFBRSxpQkFBaUIsRUFDeEIsTUFBTSxFQUFFLE1BQU0sR0FDYixPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBMkQ5QjtBQUVEOzs7O0dBSUc7QUFDSCx3QkFBc0IsZ0NBQWdDLENBQUMsVUFBVSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBUzFGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAuB,MAAM,iBAAiB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAIpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IACxF,QAAQ,EAAE;QACR,MAAM,EAAE,IAAI,CACV,SAAS,EACT,kBAAkB,GAAG,qBAAqB,GAAG,SAAS,GAAG,WAAW,GAAG,+BAA+B,GAAG,QAAQ,CAClH,GAAG;YAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAA;SAAE,CAAC;KAClD,CAAC;CACH;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE;QACV,iBAAiB,EAAE,iBAAiB,CAAC;KACtC,CAAC;CACH,CAAC,CAAC;AAEH;;;;;;;6CAO6C;AAC7C,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAOjG;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAQnD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGzD;AAED,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAW9F;AAcD,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,SAAS,GAAG,eAAe,GACnC,OAAO,CAAC,SAAS,GAAG,eAAe,CAAC,CAmBtC;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE;IAAE,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,EACzG,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CA2D9B;AAED;;;;GAIG;AACH,wBAAsB,gCAAgC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS1F"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAuB,MAAM,iBAAiB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAIpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IACxF,QAAQ,EAAE;QACR,MAAM,EAAE,IAAI,CACV,SAAS,EACP,kBAAkB,GAClB,qBAAqB,GACrB,SAAS,GACT,WAAW,GACX,+BAA+B,GAC/B,QAAQ,GACR,cAAc,CACjB,GAAG;YAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAA;SAAE,CAAC;KAClD,CAAC;CACH;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE;QACV,iBAAiB,EAAE,iBAAiB,CAAC;KACtC,CAAC;CACH,CAAC,CAAC;AAEH;;;;;;;6CAO6C;AAC7C,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAOjG;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAQnD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGzD;AAED,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAW9F;AAcD,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,SAAS,GAAG,eAAe,GACnC,OAAO,CAAC,SAAS,GAAG,eAAe,CAAC,CAmBtC;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE;IAAE,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,EACzG,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CA2D9B;AAED;;;;GAIG;AACH,wBAAsB,gCAAgC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS1F"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/p2p",
3
- "version": "0.0.1-commit.8afd444",
3
+ "version": "0.0.1-commit.8ee97c858",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -67,17 +67,17 @@
67
67
  ]
68
68
  },
69
69
  "dependencies": {
70
- "@aztec/constants": "0.0.1-commit.8afd444",
71
- "@aztec/epoch-cache": "0.0.1-commit.8afd444",
72
- "@aztec/ethereum": "0.0.1-commit.8afd444",
73
- "@aztec/foundation": "0.0.1-commit.8afd444",
74
- "@aztec/kv-store": "0.0.1-commit.8afd444",
75
- "@aztec/noir-contracts.js": "0.0.1-commit.8afd444",
76
- "@aztec/noir-protocol-circuits-types": "0.0.1-commit.8afd444",
77
- "@aztec/protocol-contracts": "0.0.1-commit.8afd444",
78
- "@aztec/simulator": "0.0.1-commit.8afd444",
79
- "@aztec/stdlib": "0.0.1-commit.8afd444",
80
- "@aztec/telemetry-client": "0.0.1-commit.8afd444",
70
+ "@aztec/constants": "0.0.1-commit.8ee97c858",
71
+ "@aztec/epoch-cache": "0.0.1-commit.8ee97c858",
72
+ "@aztec/ethereum": "0.0.1-commit.8ee97c858",
73
+ "@aztec/foundation": "0.0.1-commit.8ee97c858",
74
+ "@aztec/kv-store": "0.0.1-commit.8ee97c858",
75
+ "@aztec/noir-contracts.js": "0.0.1-commit.8ee97c858",
76
+ "@aztec/noir-protocol-circuits-types": "0.0.1-commit.8ee97c858",
77
+ "@aztec/protocol-contracts": "0.0.1-commit.8ee97c858",
78
+ "@aztec/simulator": "0.0.1-commit.8ee97c858",
79
+ "@aztec/stdlib": "0.0.1-commit.8ee97c858",
80
+ "@aztec/telemetry-client": "0.0.1-commit.8ee97c858",
81
81
  "@chainsafe/libp2p-gossipsub": "13.0.0",
82
82
  "@chainsafe/libp2p-noise": "^15.0.0",
83
83
  "@chainsafe/libp2p-yamux": "^6.0.2",
@@ -104,8 +104,8 @@
104
104
  "xxhash-wasm": "^1.1.0"
105
105
  },
106
106
  "devDependencies": {
107
- "@aztec/archiver": "0.0.1-commit.8afd444",
108
- "@aztec/world-state": "0.0.1-commit.8afd444",
107
+ "@aztec/archiver": "0.0.1-commit.8ee97c858",
108
+ "@aztec/world-state": "0.0.1-commit.8ee97c858",
109
109
  "@jest/globals": "^30.0.0",
110
110
  "@types/jest": "^30.0.0",
111
111
  "@types/node": "^22.15.17",
@@ -1,36 +1,43 @@
1
1
  import type { EpochCacheInterface } from '@aztec/epoch-cache';
2
+ import { BlockNumber } from '@aztec/foundation/branded-types';
2
3
  import { type Logger, createLogger } from '@aztec/foundation/log';
3
4
  import { DateProvider } from '@aztec/foundation/timer';
4
5
  import type { AztecAsyncKVStore } from '@aztec/kv-store';
5
- import type { DataStoreConfig } from '@aztec/kv-store/config';
6
6
  import { AztecLMDBStoreV2, createStore } from '@aztec/kv-store/lmdb-v2';
7
7
  import type { L2BlockSource } from '@aztec/stdlib/block';
8
8
  import type { ChainConfig } from '@aztec/stdlib/config';
9
9
  import type { ContractDataSource } from '@aztec/stdlib/contract';
10
- import type { ClientProtocolCircuitVerifier, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
11
- import { P2PClientType } from '@aztec/stdlib/p2p';
10
+ import type { AztecNode, ClientProtocolCircuitVerifier, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
11
+ import type { DataStoreConfig } from '@aztec/stdlib/kv-store';
12
12
  import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
13
13
 
14
14
  import { P2PClient } from '../client/p2p_client.js';
15
15
  import type { P2PConfig } from '../config.js';
16
- import type { AttestationPool } from '../mem_pools/attestation_pool/attestation_pool.js';
17
- import { KvAttestationPool } from '../mem_pools/attestation_pool/kv_attestation_pool.js';
16
+ import { AttestationPool, type AttestationPoolApi } from '../mem_pools/attestation_pool/attestation_pool.js';
18
17
  import type { MemPools } from '../mem_pools/interface.js';
19
- import { AztecKVTxPool, type TxPool } from '../mem_pools/tx_pool/index.js';
18
+ import type { TxPoolV2 } from '../mem_pools/tx_pool_v2/interfaces.js';
19
+ import { AztecKVTxPoolV2 } from '../mem_pools/tx_pool_v2/tx_pool_v2.js';
20
+ import {
21
+ createCheckAllowedSetupCalls,
22
+ createTxValidatorForTransactionsEnteringPendingTxPool,
23
+ getDefaultAllowedSetupFunctions,
24
+ } from '../msg_validators/index.js';
20
25
  import { DummyP2PService } from '../services/dummy_service.js';
21
26
  import { LibP2PService } from '../services/index.js';
27
+ import { createFileStoreTxSources } from '../services/tx_collection/file_store_tx_source.js';
22
28
  import { TxCollection } from '../services/tx_collection/tx_collection.js';
23
- import { type TxSource, createNodeRpcTxSources } from '../services/tx_collection/tx_source.js';
29
+ import { NodeRpcTxSource, type TxSource, createNodeRpcTxSources } from '../services/tx_collection/tx_source.js';
24
30
  import { TxFileStore } from '../services/tx_file_store/tx_file_store.js';
25
31
  import { configureP2PClientAddresses, createLibP2PPeerIdFromPrivateKey, getPeerIdPrivateKey } from '../util.js';
26
32
 
27
- export type P2PClientDeps<T extends P2PClientType> = {
28
- txPool?: TxPool;
33
+ export type P2PClientDeps = {
34
+ txPool?: TxPoolV2;
29
35
  store?: AztecAsyncKVStore;
30
- attestationPool?: AttestationPool;
36
+ attestationPool?: AttestationPoolApi;
31
37
  logger?: Logger;
32
38
  txCollectionNodeSources?: TxSource[];
33
- p2pServiceFactory?: (...args: Parameters<(typeof LibP2PService)['new']>) => Promise<LibP2PService<T>>;
39
+ rpcTxProviders?: AztecNode[];
40
+ p2pServiceFactory?: (...args: Parameters<(typeof LibP2PService)['new']>) => Promise<LibP2PService>;
34
41
  };
35
42
 
36
43
  export const P2P_STORE_NAME = 'p2p';
@@ -38,8 +45,7 @@ export const P2P_ARCHIVE_STORE_NAME = 'p2p-archive';
38
45
  export const P2P_PEER_STORE_NAME = 'p2p-peers';
39
46
  export const P2P_ATTESTATION_STORE_NAME = 'p2p-attestation';
40
47
 
41
- export async function createP2PClient<T extends P2PClientType>(
42
- clientType: T,
48
+ export async function createP2PClient(
43
49
  inputConfig: P2PConfig & DataStoreConfig & ChainConfig,
44
50
  archiver: L2BlockSource & ContractDataSource,
45
51
  proofVerifier: ClientProtocolCircuitVerifier,
@@ -48,7 +54,7 @@ export async function createP2PClient<T extends P2PClientType>(
48
54
  packageVersion: string,
49
55
  dateProvider: DateProvider = new DateProvider(),
50
56
  telemetry: TelemetryClient = getTelemetryClient(),
51
- deps: P2PClientDeps<T> = {},
57
+ deps: P2PClientDeps = {},
52
58
  ) {
53
59
  const config = await configureP2PClientAddresses({
54
60
  ...inputConfig,
@@ -70,19 +76,65 @@ export async function createP2PClient<T extends P2PClientType>(
70
76
  const attestationStore = await createStore(P2P_ATTESTATION_STORE_NAME, 1, config, bindings);
71
77
  const l1Constants = await archiver.getL1Constants();
72
78
 
73
- const mempools: MemPools = {
74
- txPool:
75
- deps.txPool ??
76
- new AztecKVTxPool(store, archive, worldStateSynchronizer, telemetry, {
79
+ const rollupAddress = inputConfig.l1Contracts.rollupAddress.toString().toLowerCase().replace(/^0x/, '');
80
+ const txFileStoreBasePath = `aztec-${inputConfig.l1ChainId}-${inputConfig.rollupVersion}-0x${rollupAddress}`;
81
+
82
+ const allowedInSetup = [
83
+ ...(await getDefaultAllowedSetupFunctions()),
84
+ ...(inputConfig.txPublicSetupAllowListExtend ?? []),
85
+ ];
86
+ const checkAllowedSetupCalls = createCheckAllowedSetupCalls(
87
+ archiver,
88
+ allowedInSetup,
89
+ () => epochCache.getEpochAndSlotInNextL1Slot().ts,
90
+ );
91
+
92
+ const createTxValidator = async () => {
93
+ // We accept transactions if they are not expired by the next slot and block number (checked based on the ExpirationTimestamp field)
94
+ const currentBlockNumber = await archiver.getBlockNumber();
95
+ const { ts: nextSlotTimestamp } = epochCache.getEpochAndSlotInNextL1Slot();
96
+ const l1Constants = await archiver.getL1Constants();
97
+ return createTxValidatorForTransactionsEnteringPendingTxPool(
98
+ worldStateSynchronizer,
99
+ nextSlotTimestamp,
100
+ BlockNumber(currentBlockNumber + 1),
101
+ {
102
+ rollupManaLimit: l1Constants.rollupManaLimit,
103
+ maxBlockL2Gas: config.validateMaxL2BlockGas,
104
+ maxBlockDAGas: config.validateMaxDABlockGas,
105
+ },
106
+ );
107
+ };
108
+
109
+ const txPool =
110
+ deps.txPool ??
111
+ new AztecKVTxPoolV2(
112
+ store,
113
+ archive,
114
+ {
115
+ l2BlockSource: archiver,
116
+ worldStateSynchronizer,
117
+ checkAllowedSetupCalls,
118
+ createTxValidator,
119
+ },
120
+ telemetry,
121
+ {
77
122
  maxPendingTxCount: config.maxPendingTxCount,
78
123
  archivedTxLimit: config.archivedTxLimit,
79
- }),
80
- attestationPool: deps.attestationPool ?? new KvAttestationPool(attestationStore, telemetry),
124
+ minTxPoolAgeMs: config.minTxPoolAgeMs,
125
+ dropTransactionsProbability: config.dropTransactionsProbability,
126
+ priceBumpPercentage: config.priceBumpPercentage,
127
+ },
128
+ dateProvider,
129
+ );
130
+
131
+ const mempools: MemPools = {
132
+ txPool,
133
+ attestationPool: deps.attestationPool ?? new AttestationPool(attestationStore, telemetry),
81
134
  };
82
135
 
83
- const p2pService = await createP2PService<T>(
136
+ const p2pService = await createP2PService(
84
137
  config,
85
- clientType,
86
138
  archiver,
87
139
  proofVerifier,
88
140
  worldStateSynchronizer,
@@ -98,6 +150,7 @@ export async function createP2PClient<T extends P2PClientType>(
98
150
 
99
151
  const nodeSources = [
100
152
  ...createNodeRpcTxSources(config.txCollectionNodeRpcUrls, config),
153
+ ...(deps.rpcTxProviders ?? []).map((node, i) => new NodeRpcTxSource(node, `node-rpc-provider-${i}`)),
101
154
  ...(deps.txCollectionNodeSources ?? []),
102
155
  ];
103
156
  if (nodeSources.length > 0) {
@@ -106,36 +159,54 @@ export async function createP2PClient<T extends P2PClientType>(
106
159
  });
107
160
  }
108
161
 
162
+ const fileStoreSources = await createFileStoreTxSources(
163
+ config.txCollectionFileStoreUrls,
164
+ txFileStoreBasePath,
165
+ logger.createChild('file-store-tx-source'),
166
+ telemetry,
167
+ );
168
+ if (fileStoreSources.length > 0) {
169
+ logger.info(`Using ${fileStoreSources.length} file store sources for tx collection.`, {
170
+ stores: fileStoreSources.map(s => s.getInfo()),
171
+ });
172
+ }
173
+
109
174
  const txCollection = new TxCollection(
110
175
  p2pService.getBatchTxRequesterService(),
111
176
  nodeSources,
112
177
  l1Constants,
113
178
  mempools.txPool,
114
179
  config,
180
+ fileStoreSources,
115
181
  dateProvider,
116
182
  telemetry,
117
183
  logger.createChild('tx-collection'),
118
184
  );
119
185
 
120
- const txFileStore = await TxFileStore.create(mempools.txPool, config, logger.createChild('tx-file-store'), telemetry);
186
+ const txFileStore = await TxFileStore.create(
187
+ mempools.txPool,
188
+ config,
189
+ txFileStoreBasePath,
190
+ logger.createChild('tx-file-store'),
191
+ telemetry,
192
+ );
121
193
 
122
194
  return new P2PClient(
123
- clientType,
124
195
  store,
125
196
  archiver,
126
197
  mempools,
127
198
  p2pService,
128
199
  txCollection,
129
200
  txFileStore,
201
+ epochCache,
130
202
  config,
131
203
  dateProvider,
132
204
  telemetry,
133
205
  );
134
206
  }
135
207
 
136
- async function createP2PService<T extends P2PClientType>(
208
+ async function createP2PService(
137
209
  config: P2PConfig & DataStoreConfig,
138
- clientType: T,
139
210
  archiver: L2BlockSource & ContractDataSource,
140
211
  proofVerifier: ClientProtocolCircuitVerifier,
141
212
  worldStateSynchronizer: WorldStateSynchronizer,
@@ -143,7 +214,7 @@ async function createP2PService<T extends P2PClientType>(
143
214
  store: AztecAsyncKVStore,
144
215
  peerStore: AztecLMDBStoreV2,
145
216
  mempools: MemPools,
146
- p2pServiceFactory: P2PClientDeps<T>['p2pServiceFactory'],
217
+ p2pServiceFactory: P2PClientDeps['p2pServiceFactory'],
147
218
  packageVersion: string,
148
219
  logger: Logger,
149
220
  telemetry: TelemetryClient,
@@ -159,7 +230,7 @@ async function createP2PService<T extends P2PClientType>(
159
230
  const peerIdPrivateKey = await getPeerIdPrivateKey(config, store, logger);
160
231
  const peerId = await createLibP2PPeerIdFromPrivateKey(peerIdPrivateKey.getValue());
161
232
 
162
- const p2pService = await (p2pServiceFactory ?? LibP2PService.new<T>)(clientType, config, peerId, {
233
+ const p2pService = await (p2pServiceFactory ?? LibP2PService.new)(config, peerId, {
163
234
  packageVersion,
164
235
  mempools,
165
236
  l2BlockSource: archiver,
@@ -1,7 +1,8 @@
1
+ import type { SlotNumber } from '@aztec/foundation/branded-types';
1
2
  import type { EthAddress, L2BlockId } from '@aztec/stdlib/block';
2
- import type { P2PApiFull } from '@aztec/stdlib/interfaces/server';
3
- import type { BlockProposal, CheckpointAttestation, CheckpointProposal, P2PClientType } from '@aztec/stdlib/p2p';
4
- import type { Tx, TxHash } from '@aztec/stdlib/tx';
3
+ import type { ITxProvider, P2PClient } from '@aztec/stdlib/interfaces/server';
4
+ import type { BlockProposal, CheckpointAttestation, CheckpointProposal, TopicType } from '@aztec/stdlib/p2p';
5
+ import type { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
5
6
 
6
7
  import type { PeerId } from '@libp2p/interface';
7
8
  import type { ENR } from '@nethermindeth/enr';
@@ -13,7 +14,12 @@ import type {
13
14
  ReqRespSubProtocolHandler,
14
15
  ReqRespSubProtocolValidators,
15
16
  } from '../services/reqresp/interface.js';
16
- import type { P2PBlockReceivedCallback, P2PCheckpointReceivedCallback } from '../services/service.js';
17
+ import type {
18
+ DuplicateAttestationInfo,
19
+ DuplicateProposalInfo,
20
+ P2PBlockReceivedCallback,
21
+ P2PCheckpointReceivedCallback,
22
+ } from '../services/service.js';
17
23
 
18
24
  /**
19
25
  * Enum defining the possible states of the p2p client.
@@ -42,7 +48,7 @@ export interface P2PSyncState {
42
48
  /**
43
49
  * Interface of a P2P client.
44
50
  **/
45
- export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> & {
51
+ export type P2P = P2PClient & {
46
52
  /**
47
53
  * Broadcasts a block proposal to other peers.
48
54
  *
@@ -79,12 +85,21 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
79
85
  registerCheckpointProposalHandler(callback: P2PCheckpointReceivedCallback): void;
80
86
 
81
87
  /**
82
- * Request a list of transactions from another peer by their tx hashes.
83
- * @param txHashes - Hashes of the txs to query.
84
- * @param pinnedPeerId - An optional peer id that will be used to request the tx from (in addition to other random peers).
85
- * @returns A list of transactions or undefined if the transactions are not found.
88
+ * Registers a callback invoked when a duplicate proposal is detected (equivocation).
89
+ * The callback is triggered on the first duplicate (when count goes from 1 to 2).
90
+ *
91
+ * @param callback - Function called with info about the duplicate proposal
92
+ */
93
+ registerDuplicateProposalCallback(callback: (info: DuplicateProposalInfo) => void): void;
94
+
95
+ /**
96
+ * Registers a callback invoked when a duplicate attestation is detected (equivocation).
97
+ * A validator signing attestations for different proposals at the same slot.
98
+ * The callback is triggered on the first duplicate (when count goes from 1 to 2).
99
+ *
100
+ * @param callback - Function called with info about the duplicate attestation
86
101
  */
87
- requestTxsByHash(txHashes: TxHash[], pinnedPeerId: PeerId): Promise<Tx[]>;
102
+ registerDuplicateAttestationCallback(callback: (info: DuplicateAttestationInfo) => void): void;
88
103
 
89
104
  /**
90
105
  * Verifies the 'tx' and, if valid, adds it to local tx pool and forwards it to other peers.
@@ -93,18 +108,10 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
93
108
  sendTx(tx: Tx): Promise<void>;
94
109
 
95
110
  /**
96
- * Adds transactions to the pool. Does not send to peers or validate the tx.
97
- * @param txs - The transactions.
98
- * @returns The number of txs added to the pool. Note if the transaction already exists, it will not be added again.
111
+ * Handles failed transaction execution by removing txs from the pool.
112
+ * @param txHashes - Hashes of the transactions that failed execution.
99
113
  **/
100
- addTxsToPool(txs: Tx[]): Promise<number>;
101
-
102
- /**
103
- * Deletes 'txs' from the pool, given hashes.
104
- * NOT used if we use sendTx as reconcileTxPool will handle this.
105
- * @param txHashes - Hashes to check.
106
- **/
107
- deleteTxs(txHashes: TxHash[]): Promise<void>;
114
+ handleFailedExecution(txHashes: TxHash[]): Promise<void>;
108
115
 
109
116
  /**
110
117
  * Returns a transaction in the transaction pool by its hash.
@@ -127,14 +134,6 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
127
134
  */
128
135
  hasTxsInPool(txHashes: TxHash[]): Promise<boolean[]>;
129
136
 
130
- /**
131
- * Returns transactions in the transaction pool by hash, requesting from the network if not found.
132
- * @param txHashes - Hashes of tx to return.
133
- * @param pinnedPeerId - An optional peer id that will be used to request the tx from (in addition to other random peers).
134
- * @returns An array of tx or undefined.
135
- */
136
- getTxsByHash(txHashes: TxHash[], pinnedPeerId: PeerId | undefined): Promise<(Tx | undefined)[]>;
137
-
138
137
  /**
139
138
  * Returns an archived transaction from the transaction pool by its hash.
140
139
  * @param txHash - Hash of tx to return.
@@ -152,14 +151,28 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
152
151
  /** Returns an iterator over pending txs on the mempool. */
153
152
  iteratePendingTxs(): AsyncIterableIterator<Tx>;
154
153
 
154
+ /** Returns an iterator over pending txs that have been in the pool long enough to be eligible for block building. */
155
+ iterateEligiblePendingTxs(): AsyncIterableIterator<Tx>;
156
+
155
157
  /** Returns the number of pending txs in the mempool. */
156
158
  getPendingTxCount(): Promise<number>;
157
159
 
158
160
  /**
159
- * Marks transactions as non-evictable in the pool.
160
- * @param txHashes - Hashes of the transactions to mark as non-evictable.
161
+ * Protects existing transactions by hash for a given slot.
162
+ * Returns hashes of transactions that weren't found in the pool.
163
+ * @param txHashes - Hashes of the transactions to protect.
164
+ * @param blockHeader - The block header providing slot context.
165
+ * @returns Hashes of transactions not found in the pool.
161
166
  */
162
- markTxsAsNonEvictable(txHashes: TxHash[]): Promise<void>;
167
+ protectTxs(txHashes: TxHash[], blockHeader: BlockHeader): Promise<TxHash[]>;
168
+
169
+ /**
170
+ * Prepares the pool for a new slot.
171
+ * Unprotects transactions from earlier slots and validates them before
172
+ * returning to pending state.
173
+ * @param slotNumber - The slot number to prepare for
174
+ */
175
+ prepareForSlot(slotNumber: SlotNumber): Promise<void>;
163
176
 
164
177
  /**
165
178
  * Starts the p2p client.
@@ -192,10 +205,13 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
192
205
  /** Identifies a p2p client. */
193
206
  isP2PClient(): true;
194
207
 
208
+ /** Returns the tx provider used for fetching transactions. */
209
+ getTxProvider(): ITxProvider;
210
+
195
211
  updateP2PConfig(config: Partial<P2PConfig>): Promise<void>;
196
212
 
197
- /** Validates a set of txs. */
198
- validate(txs: Tx[]): Promise<void>;
213
+ /** Validates a set of txs received in a block proposal. */
214
+ validateTxsReceivedInBlockProposal(txs: Tx[]): Promise<void>;
199
215
 
200
216
  /** Clears the db. */
201
217
  clear(): Promise<void>;
@@ -208,6 +224,12 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
208
224
 
209
225
  handleAuthRequestFromPeer(authRequest: AuthRequest, peerId: PeerId): Promise<StatusMessage>;
210
226
 
227
+ /** Checks if any block proposals exist for the given slot. */
228
+ hasBlockProposalsForSlot(slot: SlotNumber): Promise<boolean>;
229
+
211
230
  /** If node running this P2P stack is validator, passes in validator address to P2P layer */
212
231
  registerThisValidatorAddresses(address: EthAddress[]): void;
232
+
233
+ /** Returns the number of peers in the GossipSub mesh for a given topic type. */
234
+ getGossipMeshPeerCount(topicType: TopicType): Promise<number>;
213
235
  };