@aztec/p2p 0.0.1-commit.f2ce05ee → 0.0.1-commit.f504929

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 (326) hide show
  1. package/dest/client/factory.d.ts +8 -8
  2. package/dest/client/factory.d.ts.map +1 -1
  3. package/dest/client/factory.js +37 -13
  4. package/dest/client/interface.d.ts +39 -33
  5. package/dest/client/interface.d.ts.map +1 -1
  6. package/dest/client/p2p_client.d.ts +37 -50
  7. package/dest/client/p2p_client.d.ts.map +1 -1
  8. package/dest/client/p2p_client.js +138 -199
  9. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +6 -7
  10. package/dest/config.d.ts +29 -15
  11. package/dest/config.d.ts.map +1 -1
  12. package/dest/config.js +39 -35
  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 +21 -12
  20. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  21. package/dest/mem_pools/attestation_pool/attestation_pool.js +72 -38
  22. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
  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 +53 -53
  25. package/dest/mem_pools/attestation_pool/index.d.ts +2 -2
  26. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  27. package/dest/mem_pools/attestation_pool/index.js +1 -1
  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 +2 -1
  32. package/dest/mem_pools/index.d.ts.map +1 -1
  33. package/dest/mem_pools/instrumentation.d.ts +4 -2
  34. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  35. package/dest/mem_pools/instrumentation.js +16 -14
  36. package/dest/mem_pools/interface.d.ts +3 -3
  37. package/dest/mem_pools/interface.d.ts.map +1 -1
  38. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +3 -3
  39. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  40. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  41. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  42. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +3 -3
  43. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -1
  44. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +18 -9
  45. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
  46. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  47. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +5 -2
  48. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +3 -3
  49. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -1
  50. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +12 -4
  51. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +2 -2
  52. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
  53. package/dest/mem_pools/tx_pool_v2/eviction/index.js +1 -1
  54. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +48 -5
  55. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -1
  56. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +8 -0
  57. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +7 -5
  58. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +7 -5
  59. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +2 -2
  60. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -1
  61. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +14 -6
  62. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +4 -4
  63. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -1
  64. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +14 -4
  65. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +3 -3
  66. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -1
  67. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +2 -2
  68. package/dest/mem_pools/tx_pool_v2/index.d.ts +3 -2
  69. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -1
  70. package/dest/mem_pools/tx_pool_v2/index.js +2 -1
  71. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  72. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  73. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  74. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +22 -8
  75. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
  76. package/dest/mem_pools/tx_pool_v2/interfaces.js +4 -1
  77. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +56 -8
  78. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
  79. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +108 -10
  80. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +12 -3
  81. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
  82. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +36 -14
  83. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +9 -4
  84. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
  85. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +14 -6
  86. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +14 -5
  87. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
  88. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +344 -184
  89. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +2 -1
  90. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  91. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +2 -1
  92. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  93. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +3 -1
  94. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  95. package/dest/msg_validators/proposal_validator/proposal_validator.js +10 -0
  96. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +2 -1
  97. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -1
  98. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +166 -0
  99. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  100. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  101. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  102. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  103. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  104. package/dest/msg_validators/tx_validator/allowed_public_setup.js +25 -10
  105. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +16 -3
  106. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  107. package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
  108. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +13 -3
  109. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  110. package/dest/msg_validators/tx_validator/double_spend_validator.js +4 -4
  111. package/dest/msg_validators/tx_validator/factory.d.ts +114 -6
  112. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  113. package/dest/msg_validators/tx_validator/factory.js +219 -58
  114. package/dest/msg_validators/tx_validator/gas_validator.d.ts +58 -3
  115. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  116. package/dest/msg_validators/tx_validator/gas_validator.js +73 -36
  117. package/dest/msg_validators/tx_validator/index.d.ts +2 -1
  118. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  119. package/dest/msg_validators/tx_validator/index.js +1 -0
  120. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  121. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  122. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  123. package/dest/msg_validators/tx_validator/phases_validator.d.ts +2 -2
  124. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  125. package/dest/msg_validators/tx_validator/phases_validator.js +25 -24
  126. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +20 -4
  127. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  128. package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
  129. package/dest/services/dummy_service.d.ts +9 -5
  130. package/dest/services/dummy_service.d.ts.map +1 -1
  131. package/dest/services/dummy_service.js +7 -4
  132. package/dest/services/encoding.d.ts +3 -3
  133. package/dest/services/encoding.d.ts.map +1 -1
  134. package/dest/services/encoding.js +11 -10
  135. package/dest/services/gossipsub/topic_score_params.d.ts +18 -6
  136. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
  137. package/dest/services/gossipsub/topic_score_params.js +32 -10
  138. package/dest/services/libp2p/libp2p_service.d.ts +25 -14
  139. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  140. package/dest/services/libp2p/libp2p_service.js +143 -114
  141. package/dest/services/peer-manager/metrics.d.ts +3 -1
  142. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  143. package/dest/services/peer-manager/metrics.js +6 -0
  144. package/dest/services/peer-manager/peer_manager.d.ts +1 -1
  145. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  146. package/dest/services/peer-manager/peer_manager.js +2 -1
  147. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +4 -3
  148. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  149. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +19 -46
  150. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +2 -6
  151. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  152. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +10 -13
  153. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  154. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +25 -46
  155. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +17 -11
  156. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  157. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +49 -15
  158. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +2 -2
  159. package/dest/services/reqresp/interface.d.ts +10 -1
  160. package/dest/services/reqresp/interface.d.ts.map +1 -1
  161. package/dest/services/reqresp/interface.js +15 -1
  162. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +3 -3
  163. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  164. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +7 -1
  165. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  166. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +15 -0
  167. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  168. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  169. package/dest/services/reqresp/protocols/tx.js +20 -0
  170. package/dest/services/reqresp/reqresp.d.ts +1 -1
  171. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  172. package/dest/services/reqresp/reqresp.js +13 -5
  173. package/dest/services/service.d.ts +22 -3
  174. package/dest/services/service.d.ts.map +1 -1
  175. package/dest/services/tx_collection/config.d.ts +19 -1
  176. package/dest/services/tx_collection/config.d.ts.map +1 -1
  177. package/dest/services/tx_collection/config.js +46 -0
  178. package/dest/services/tx_collection/fast_tx_collection.d.ts +3 -1
  179. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  180. package/dest/services/tx_collection/fast_tx_collection.js +56 -36
  181. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  182. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  183. package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
  184. package/dest/services/tx_collection/file_store_tx_source.d.ts +37 -0
  185. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  186. package/dest/services/tx_collection/file_store_tx_source.js +90 -0
  187. package/dest/services/tx_collection/index.d.ts +2 -1
  188. package/dest/services/tx_collection/index.d.ts.map +1 -1
  189. package/dest/services/tx_collection/index.js +1 -0
  190. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  191. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  192. package/dest/services/tx_collection/instrumentation.js +2 -1
  193. package/dest/services/tx_collection/missing_txs_tracker.d.ts +32 -0
  194. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +1 -0
  195. package/dest/services/tx_collection/missing_txs_tracker.js +27 -0
  196. package/dest/services/tx_collection/proposal_tx_collector.d.ts +7 -6
  197. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  198. package/dest/services/tx_collection/proposal_tx_collector.js +5 -4
  199. package/dest/services/tx_collection/slow_tx_collection.d.ts +7 -3
  200. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  201. package/dest/services/tx_collection/slow_tx_collection.js +60 -26
  202. package/dest/services/tx_collection/tx_collection.d.ts +23 -10
  203. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  204. package/dest/services/tx_collection/tx_collection.js +75 -3
  205. package/dest/services/tx_collection/tx_collection_sink.d.ts +18 -8
  206. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  207. package/dest/services/tx_collection/tx_collection_sink.js +26 -29
  208. package/dest/services/tx_collection/tx_source.d.ts +8 -3
  209. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  210. package/dest/services/tx_collection/tx_source.js +19 -2
  211. package/dest/services/tx_file_store/config.d.ts +1 -3
  212. package/dest/services/tx_file_store/config.d.ts.map +1 -1
  213. package/dest/services/tx_file_store/config.js +0 -4
  214. package/dest/services/tx_file_store/tx_file_store.d.ts +4 -3
  215. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
  216. package/dest/services/tx_file_store/tx_file_store.js +9 -6
  217. package/dest/services/tx_provider.d.ts +4 -4
  218. package/dest/services/tx_provider.d.ts.map +1 -1
  219. package/dest/services/tx_provider.js +9 -8
  220. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  221. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  222. package/dest/test-helpers/make-test-p2p-clients.js +1 -2
  223. package/dest/test-helpers/mock-pubsub.d.ts +30 -4
  224. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  225. package/dest/test-helpers/mock-pubsub.js +105 -4
  226. package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
  227. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  228. package/dest/test-helpers/reqresp-nodes.js +2 -2
  229. package/dest/test-helpers/testbench-utils.d.ts +35 -24
  230. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  231. package/dest/test-helpers/testbench-utils.js +93 -35
  232. package/dest/testbench/p2p_client_testbench_worker.d.ts +2 -2
  233. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  234. package/dest/testbench/p2p_client_testbench_worker.js +14 -14
  235. package/dest/util.d.ts +2 -2
  236. package/dest/util.d.ts.map +1 -1
  237. package/package.json +14 -14
  238. package/src/client/factory.ts +71 -23
  239. package/src/client/interface.ts +43 -33
  240. package/src/client/p2p_client.ts +164 -243
  241. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +19 -10
  242. package/src/config.ts +60 -42
  243. package/src/errors/tx-pool.error.ts +12 -0
  244. package/src/index.ts +1 -0
  245. package/src/mem_pools/attestation_pool/attestation_pool.ts +100 -48
  246. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +57 -53
  247. package/src/mem_pools/attestation_pool/index.ts +3 -3
  248. package/src/mem_pools/attestation_pool/mocks.ts +2 -1
  249. package/src/mem_pools/index.ts +3 -0
  250. package/src/mem_pools/instrumentation.ts +17 -13
  251. package/src/mem_pools/interface.ts +2 -2
  252. package/src/mem_pools/tx_pool/README.md +1 -1
  253. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +3 -3
  254. package/src/mem_pools/tx_pool_v2/README.md +76 -10
  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 +21 -8
  257. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +5 -2
  258. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +18 -4
  259. package/src/mem_pools/tx_pool_v2/eviction/index.ts +4 -0
  260. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +49 -4
  261. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +5 -5
  262. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +5 -5
  263. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +14 -9
  264. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +24 -6
  265. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +3 -3
  266. package/src/mem_pools/tx_pool_v2/index.ts +2 -1
  267. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  268. package/src/mem_pools/tx_pool_v2/interfaces.ts +23 -8
  269. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +153 -17
  270. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +43 -16
  271. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +21 -7
  272. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +388 -182
  273. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +1 -1
  274. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +1 -1
  275. package/src/msg_validators/proposal_validator/proposal_validator.ts +15 -1
  276. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +144 -1
  277. package/src/msg_validators/tx_validator/README.md +115 -0
  278. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +5 -5
  279. package/src/msg_validators/tx_validator/allowed_public_setup.ts +27 -13
  280. package/src/msg_validators/tx_validator/block_header_validator.ts +15 -3
  281. package/src/msg_validators/tx_validator/double_spend_validator.ts +11 -6
  282. package/src/msg_validators/tx_validator/factory.ts +353 -77
  283. package/src/msg_validators/tx_validator/gas_validator.ts +90 -27
  284. package/src/msg_validators/tx_validator/index.ts +1 -0
  285. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  286. package/src/msg_validators/tx_validator/phases_validator.ts +25 -29
  287. package/src/msg_validators/tx_validator/timestamp_validator.ts +23 -18
  288. package/src/services/dummy_service.ts +12 -6
  289. package/src/services/encoding.ts +9 -9
  290. package/src/services/gossipsub/README.md +29 -14
  291. package/src/services/gossipsub/topic_score_params.ts +49 -13
  292. package/src/services/libp2p/libp2p_service.ts +153 -123
  293. package/src/services/peer-manager/metrics.ts +7 -0
  294. package/src/services/peer-manager/peer_manager.ts +2 -1
  295. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +20 -48
  296. package/src/services/reqresp/batch-tx-requester/interface.ts +1 -5
  297. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +23 -71
  298. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +63 -24
  299. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +2 -2
  300. package/src/services/reqresp/interface.ts +26 -1
  301. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +2 -2
  302. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +17 -0
  303. package/src/services/reqresp/protocols/tx.ts +22 -0
  304. package/src/services/reqresp/reqresp.ts +16 -4
  305. package/src/services/service.ts +31 -2
  306. package/src/services/tx_collection/config.ts +68 -0
  307. package/src/services/tx_collection/fast_tx_collection.ts +65 -32
  308. package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
  309. package/src/services/tx_collection/file_store_tx_source.ts +117 -0
  310. package/src/services/tx_collection/index.ts +1 -0
  311. package/src/services/tx_collection/instrumentation.ts +7 -1
  312. package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
  313. package/src/services/tx_collection/proposal_tx_collector.ts +8 -7
  314. package/src/services/tx_collection/slow_tx_collection.ts +66 -33
  315. package/src/services/tx_collection/tx_collection.ts +113 -16
  316. package/src/services/tx_collection/tx_collection_sink.ts +30 -34
  317. package/src/services/tx_collection/tx_source.ts +22 -3
  318. package/src/services/tx_file_store/config.ts +0 -6
  319. package/src/services/tx_file_store/tx_file_store.ts +10 -8
  320. package/src/services/tx_provider.ts +10 -9
  321. package/src/test-helpers/make-test-p2p-clients.ts +3 -5
  322. package/src/test-helpers/mock-pubsub.ts +146 -9
  323. package/src/test-helpers/reqresp-nodes.ts +2 -5
  324. package/src/test-helpers/testbench-utils.ts +108 -40
  325. package/src/testbench/p2p_client_testbench_worker.ts +23 -20
  326. package/src/util.ts +7 -1
@@ -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';
@@ -14,6 +15,7 @@ import type {
14
15
  ReqRespSubProtocolValidators,
15
16
  } from '../services/reqresp/interface.js';
16
17
  import type {
18
+ DuplicateAttestationInfo,
17
19
  DuplicateProposalInfo,
18
20
  P2PBlockReceivedCallback,
19
21
  P2PCheckpointReceivedCallback,
@@ -46,7 +48,7 @@ export interface P2PSyncState {
46
48
  /**
47
49
  * Interface of a P2P client.
48
50
  **/
49
- export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> & {
51
+ export type P2P = P2PClient & {
50
52
  /**
51
53
  * Broadcasts a block proposal to other peers.
52
54
  *
@@ -91,12 +93,13 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
91
93
  registerDuplicateProposalCallback(callback: (info: DuplicateProposalInfo) => void): void;
92
94
 
93
95
  /**
94
- * Request a list of transactions from another peer by their tx hashes.
95
- * @param txHashes - Hashes of the txs to query.
96
- * @param pinnedPeerId - An optional peer id that will be used to request the tx from (in addition to other random peers).
97
- * @returns A list of transactions or undefined if the transactions are not found.
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
98
101
  */
99
- requestTxsByHash(txHashes: TxHash[], pinnedPeerId: PeerId): Promise<Tx[]>;
102
+ registerDuplicateAttestationCallback(callback: (info: DuplicateAttestationInfo) => void): void;
100
103
 
101
104
  /**
102
105
  * Verifies the 'tx' and, if valid, adds it to local tx pool and forwards it to other peers.
@@ -105,18 +108,10 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
105
108
  sendTx(tx: Tx): Promise<void>;
106
109
 
107
110
  /**
108
- * Adds transactions to the pool. Does not send to peers or validate the tx.
109
- * @param txs - The transactions.
110
- * @returns The number of txs added to the pool. Note if the transaction already exists, it will not be added again.
111
- **/
112
- addTxsToPool(txs: Tx[]): Promise<number>;
113
-
114
- /**
115
- * Deletes 'txs' from the pool, given hashes.
116
- * NOT used if we use sendTx as reconcileTxPool will handle this.
117
- * @param txHashes - Hashes to check.
111
+ * Handles failed transaction execution by removing txs from the pool.
112
+ * @param txHashes - Hashes of the transactions that failed execution.
118
113
  **/
119
- deleteTxs(txHashes: TxHash[]): Promise<void>;
114
+ handleFailedExecution(txHashes: TxHash[]): Promise<void>;
120
115
 
121
116
  /**
122
117
  * Returns a transaction in the transaction pool by its hash.
@@ -139,14 +134,6 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
139
134
  */
140
135
  hasTxsInPool(txHashes: TxHash[]): Promise<boolean[]>;
141
136
 
142
- /**
143
- * Returns transactions in the transaction pool by hash, requesting from the network if not found.
144
- * @param txHashes - Hashes of tx to return.
145
- * @param pinnedPeerId - An optional peer id that will be used to request the tx from (in addition to other random peers).
146
- * @returns An array of tx or undefined.
147
- */
148
- getTxsByHash(txHashes: TxHash[], pinnedPeerId: PeerId | undefined): Promise<(Tx | undefined)[]>;
149
-
150
137
  /**
151
138
  * Returns an archived transaction from the transaction pool by its hash.
152
139
  * @param txHash - Hash of tx to return.
@@ -164,14 +151,28 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
164
151
  /** Returns an iterator over pending txs on the mempool. */
165
152
  iteratePendingTxs(): AsyncIterableIterator<Tx>;
166
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
+
167
157
  /** Returns the number of pending txs in the mempool. */
168
158
  getPendingTxCount(): Promise<number>;
169
159
 
170
160
  /**
171
- * Marks transactions as non-evictable in the pool.
172
- * @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.
166
+ */
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
173
174
  */
174
- markTxsAsNonEvictable(txHashes: TxHash[]): Promise<void>;
175
+ prepareForSlot(slotNumber: SlotNumber): Promise<void>;
175
176
 
176
177
  /**
177
178
  * Starts the p2p client.
@@ -204,10 +205,13 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
204
205
  /** Identifies a p2p client. */
205
206
  isP2PClient(): true;
206
207
 
208
+ /** Returns the tx provider used for fetching transactions. */
209
+ getTxProvider(): ITxProvider;
210
+
207
211
  updateP2PConfig(config: Partial<P2PConfig>): Promise<void>;
208
212
 
209
- /** Validates a set of txs. */
210
- validate(txs: Tx[]): Promise<void>;
213
+ /** Validates a set of txs received in a block proposal. */
214
+ validateTxsReceivedInBlockProposal(txs: Tx[]): Promise<void>;
211
215
 
212
216
  /** Clears the db. */
213
217
  clear(): Promise<void>;
@@ -220,6 +224,12 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
220
224
 
221
225
  handleAuthRequestFromPeer(authRequest: AuthRequest, peerId: PeerId): Promise<StatusMessage>;
222
226
 
227
+ /** Checks if any block proposals exist for the given slot. */
228
+ hasBlockProposalsForSlot(slot: SlotNumber): Promise<boolean>;
229
+
223
230
  /** If node running this P2P stack is validator, passes in validator address to P2P layer */
224
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>;
225
235
  };