@aztec/p2p 0.0.0-test.1 → 0.0.1-commit.03f7ef2

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 (387) hide show
  1. package/dest/bootstrap/bootstrap.d.ts +1 -1
  2. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  3. package/dest/bootstrap/bootstrap.js +22 -9
  4. package/dest/client/factory.d.ts +15 -5
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +60 -25
  7. package/dest/client/index.d.ts +2 -1
  8. package/dest/client/index.d.ts.map +1 -1
  9. package/dest/client/index.js +1 -0
  10. package/dest/client/interface.d.ts +157 -0
  11. package/dest/client/interface.d.ts.map +1 -0
  12. package/dest/client/interface.js +9 -0
  13. package/dest/client/p2p_client.d.ts +75 -190
  14. package/dest/client/p2p_client.d.ts.map +1 -1
  15. package/dest/client/p2p_client.js +381 -183
  16. package/dest/config.d.ts +151 -125
  17. package/dest/config.d.ts.map +1 -1
  18. package/dest/config.js +183 -34
  19. package/dest/enr/generate-enr.d.ts +11 -3
  20. package/dest/enr/generate-enr.d.ts.map +1 -1
  21. package/dest/enr/generate-enr.js +27 -5
  22. package/dest/enr/index.d.ts +1 -1
  23. package/dest/errors/attestation-pool.error.d.ts +7 -0
  24. package/dest/errors/attestation-pool.error.d.ts.map +1 -0
  25. package/dest/errors/attestation-pool.error.js +12 -0
  26. package/dest/errors/reqresp.error.d.ts +1 -1
  27. package/dest/errors/reqresp.error.d.ts.map +1 -1
  28. package/dest/index.d.ts +4 -1
  29. package/dest/index.d.ts.map +1 -1
  30. package/dest/index.js +2 -0
  31. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +68 -8
  32. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  33. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
  34. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  35. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +216 -65
  36. package/dest/mem_pools/attestation_pool/index.d.ts +1 -1
  37. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +21 -6
  38. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
  39. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +127 -26
  40. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +19 -6
  41. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
  42. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +111 -21
  43. package/dest/mem_pools/attestation_pool/mocks.d.ts +227 -7
  44. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  45. package/dest/mem_pools/attestation_pool/mocks.js +10 -16
  46. package/dest/mem_pools/index.d.ts +1 -1
  47. package/dest/mem_pools/instrumentation.d.ts +16 -12
  48. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  49. package/dest/mem_pools/instrumentation.js +57 -35
  50. package/dest/mem_pools/interface.d.ts +3 -4
  51. package/dest/mem_pools/interface.d.ts.map +1 -1
  52. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +64 -14
  53. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  54. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +472 -97
  55. package/dest/mem_pools/tx_pool/index.d.ts +1 -1
  56. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +36 -11
  57. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +1 -1
  58. package/dest/mem_pools/tx_pool/memory_tx_pool.js +137 -36
  59. package/dest/mem_pools/tx_pool/priority.d.ts +1 -1
  60. package/dest/mem_pools/tx_pool/priority.js +1 -1
  61. package/dest/mem_pools/tx_pool/tx_pool.d.ts +67 -10
  62. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
  63. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
  64. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  65. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +273 -42
  66. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +4 -2
  67. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  68. package/dest/msg_validators/attestation_validator/attestation_validator.js +45 -9
  69. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +20 -0
  70. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -0
  71. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +67 -0
  72. package/dest/msg_validators/attestation_validator/index.d.ts +2 -1
  73. package/dest/msg_validators/attestation_validator/index.d.ts.map +1 -1
  74. package/dest/msg_validators/attestation_validator/index.js +1 -0
  75. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +6 -2
  76. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +1 -1
  77. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +73 -12
  78. package/dest/msg_validators/block_proposal_validator/index.d.ts +1 -1
  79. package/dest/msg_validators/index.d.ts +1 -1
  80. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts +10 -0
  81. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts.map +1 -0
  82. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.js +36 -0
  83. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +1 -1
  84. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  85. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +3 -0
  86. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -0
  87. package/dest/msg_validators/tx_validator/allowed_public_setup.js +27 -0
  88. package/dest/msg_validators/tx_validator/archive_cache.d.ts +14 -0
  89. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -0
  90. package/dest/msg_validators/tx_validator/archive_cache.js +22 -0
  91. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +2 -2
  92. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  93. package/dest/msg_validators/tx_validator/block_header_validator.js +4 -4
  94. package/dest/msg_validators/tx_validator/data_validator.d.ts +1 -1
  95. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  96. package/dest/msg_validators/tx_validator/data_validator.js +56 -86
  97. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +1 -3
  98. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  99. package/dest/msg_validators/tx_validator/double_spend_validator.js +21 -27
  100. package/dest/msg_validators/tx_validator/factory.d.ts +16 -0
  101. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -0
  102. package/dest/msg_validators/tx_validator/factory.js +74 -0
  103. package/dest/msg_validators/tx_validator/gas_validator.d.ts +11 -0
  104. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -0
  105. package/dest/msg_validators/tx_validator/gas_validator.js +115 -0
  106. package/dest/msg_validators/tx_validator/index.d.ts +8 -1
  107. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  108. package/dest/msg_validators/tx_validator/index.js +7 -0
  109. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +9 -5
  110. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  111. package/dest/msg_validators/tx_validator/metadata_validator.js +39 -20
  112. package/dest/msg_validators/tx_validator/phases_validator.d.ts +14 -0
  113. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -0
  114. package/dest/msg_validators/tx_validator/phases_validator.js +93 -0
  115. package/dest/msg_validators/tx_validator/test_utils.d.ts +17 -0
  116. package/dest/msg_validators/tx_validator/test_utils.d.ts.map +1 -0
  117. package/dest/msg_validators/tx_validator/test_utils.js +22 -0
  118. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +13 -0
  119. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -0
  120. package/dest/msg_validators/tx_validator/timestamp_validator.js +32 -0
  121. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +8 -0
  122. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -0
  123. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +24 -0
  124. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +1 -1
  125. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  126. package/dest/msg_validators/tx_validator/tx_proof_validator.js +6 -5
  127. package/dest/services/data_store.d.ts +1 -1
  128. package/dest/services/data_store.d.ts.map +1 -1
  129. package/dest/services/discv5/discV5_service.d.ts +10 -9
  130. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  131. package/dest/services/discv5/discV5_service.js +63 -36
  132. package/dest/services/dummy_service.d.ts +50 -11
  133. package/dest/services/dummy_service.d.ts.map +1 -1
  134. package/dest/services/dummy_service.js +88 -5
  135. package/dest/services/encoding.d.ts +26 -7
  136. package/dest/services/encoding.d.ts.map +1 -1
  137. package/dest/services/encoding.js +74 -6
  138. package/dest/services/gossipsub/scoring.d.ts +1 -1
  139. package/dest/services/index.d.ts +5 -1
  140. package/dest/services/index.d.ts.map +1 -1
  141. package/dest/services/index.js +4 -0
  142. package/dest/services/libp2p/instrumentation.d.ts +20 -0
  143. package/dest/services/libp2p/instrumentation.d.ts.map +1 -0
  144. package/dest/services/libp2p/instrumentation.js +164 -0
  145. package/dest/services/libp2p/libp2p_service.d.ts +78 -89
  146. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  147. package/dest/services/libp2p/libp2p_service.js +695 -248
  148. package/dest/services/peer-manager/interface.d.ts +23 -0
  149. package/dest/services/peer-manager/interface.d.ts.map +1 -0
  150. package/dest/services/peer-manager/interface.js +1 -0
  151. package/dest/services/peer-manager/metrics.d.ts +6 -2
  152. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  153. package/dest/services/peer-manager/metrics.js +22 -2
  154. package/dest/services/peer-manager/peer_manager.d.ts +102 -22
  155. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  156. package/dest/services/peer-manager/peer_manager.js +549 -72
  157. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  158. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  159. package/dest/services/peer-manager/peer_scoring.js +40 -2
  160. package/dest/services/reqresp/config.d.ts +11 -9
  161. package/dest/services/reqresp/config.d.ts.map +1 -1
  162. package/dest/services/reqresp/config.js +18 -4
  163. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +2 -2
  164. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  165. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +10 -6
  166. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +31 -17
  167. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  168. package/dest/services/reqresp/connection-sampler/connection_sampler.js +142 -84
  169. package/dest/services/reqresp/index.d.ts +3 -2
  170. package/dest/services/reqresp/index.d.ts.map +1 -1
  171. package/dest/services/reqresp/index.js +2 -1
  172. package/dest/services/reqresp/interface.d.ts +73 -24
  173. package/dest/services/reqresp/interface.d.ts.map +1 -1
  174. package/dest/services/reqresp/interface.js +46 -27
  175. package/dest/services/reqresp/metrics.d.ts +1 -1
  176. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  177. package/dest/services/reqresp/protocols/auth.d.ts +43 -0
  178. package/dest/services/reqresp/protocols/auth.d.ts.map +1 -0
  179. package/dest/services/reqresp/protocols/auth.js +71 -0
  180. package/dest/services/reqresp/protocols/block.d.ts +6 -1
  181. package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
  182. package/dest/services/reqresp/protocols/block.js +30 -6
  183. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +30 -0
  184. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -0
  185. package/dest/services/reqresp/protocols/block_txs/bitvector.js +75 -0
  186. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +11 -0
  187. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -0
  188. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +39 -0
  189. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +47 -0
  190. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -0
  191. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +75 -0
  192. package/dest/services/reqresp/protocols/block_txs/index.d.ts +4 -0
  193. package/dest/services/reqresp/protocols/block_txs/index.d.ts.map +1 -0
  194. package/dest/services/reqresp/protocols/block_txs/index.js +3 -0
  195. package/dest/services/reqresp/protocols/goodbye.d.ts +3 -5
  196. package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
  197. package/dest/services/reqresp/protocols/goodbye.js +7 -7
  198. package/dest/services/reqresp/protocols/index.d.ts +3 -1
  199. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  200. package/dest/services/reqresp/protocols/index.js +2 -0
  201. package/dest/services/reqresp/protocols/ping.d.ts +1 -3
  202. package/dest/services/reqresp/protocols/ping.d.ts.map +1 -1
  203. package/dest/services/reqresp/protocols/status.d.ts +40 -7
  204. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  205. package/dest/services/reqresp/protocols/status.js +73 -5
  206. package/dest/services/reqresp/protocols/tx.d.ts +14 -4
  207. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  208. package/dest/services/reqresp/protocols/tx.js +34 -6
  209. package/dest/services/reqresp/rate-limiter/index.d.ts +1 -1
  210. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +6 -4
  211. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  212. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -2
  213. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  214. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  215. package/dest/services/reqresp/rate-limiter/rate_limits.js +21 -1
  216. package/dest/services/reqresp/reqresp.d.ts +24 -66
  217. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  218. package/dest/services/reqresp/reqresp.js +298 -207
  219. package/dest/services/reqresp/status.d.ts +10 -4
  220. package/dest/services/reqresp/status.d.ts.map +1 -1
  221. package/dest/services/reqresp/status.js +9 -2
  222. package/dest/services/service.d.ts +23 -19
  223. package/dest/services/service.d.ts.map +1 -1
  224. package/dest/services/tx_collection/config.d.ts +25 -0
  225. package/dest/services/tx_collection/config.d.ts.map +1 -0
  226. package/dest/services/tx_collection/config.js +58 -0
  227. package/dest/services/tx_collection/fast_tx_collection.d.ts +51 -0
  228. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -0
  229. package/dest/services/tx_collection/fast_tx_collection.js +300 -0
  230. package/dest/services/tx_collection/index.d.ts +3 -0
  231. package/dest/services/tx_collection/index.d.ts.map +1 -0
  232. package/dest/services/tx_collection/index.js +2 -0
  233. package/dest/services/tx_collection/instrumentation.d.ts +10 -0
  234. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -0
  235. package/dest/services/tx_collection/instrumentation.js +34 -0
  236. package/dest/services/tx_collection/slow_tx_collection.d.ts +53 -0
  237. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -0
  238. package/dest/services/tx_collection/slow_tx_collection.js +177 -0
  239. package/dest/services/tx_collection/tx_collection.d.ts +110 -0
  240. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -0
  241. package/dest/services/tx_collection/tx_collection.js +128 -0
  242. package/dest/services/tx_collection/tx_collection_sink.d.ts +30 -0
  243. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -0
  244. package/dest/services/tx_collection/tx_collection_sink.js +111 -0
  245. package/dest/services/tx_collection/tx_source.d.ts +18 -0
  246. package/dest/services/tx_collection/tx_source.d.ts.map +1 -0
  247. package/dest/services/tx_collection/tx_source.js +31 -0
  248. package/dest/services/tx_provider.d.ts +51 -0
  249. package/dest/services/tx_provider.d.ts.map +1 -0
  250. package/dest/services/tx_provider.js +217 -0
  251. package/dest/services/tx_provider_instrumentation.d.ts +16 -0
  252. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -0
  253. package/dest/services/tx_provider_instrumentation.js +47 -0
  254. package/dest/test-helpers/generate-peer-id-private-keys.d.ts +1 -1
  255. package/dest/test-helpers/get-ports.d.ts +1 -1
  256. package/dest/test-helpers/get-ports.d.ts.map +1 -1
  257. package/dest/test-helpers/index.d.ts +2 -1
  258. package/dest/test-helpers/index.d.ts.map +1 -1
  259. package/dest/test-helpers/index.js +1 -0
  260. package/dest/test-helpers/make-enrs.d.ts +1 -1
  261. package/dest/test-helpers/make-enrs.d.ts.map +1 -1
  262. package/dest/test-helpers/make-enrs.js +4 -5
  263. package/dest/test-helpers/make-test-p2p-clients.d.ts +33 -5
  264. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  265. package/dest/test-helpers/make-test-p2p-clients.js +86 -16
  266. package/dest/test-helpers/mock-pubsub.d.ts +59 -0
  267. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -0
  268. package/dest/test-helpers/mock-pubsub.js +130 -0
  269. package/dest/test-helpers/mock-tx-helpers.d.ts +12 -0
  270. package/dest/test-helpers/mock-tx-helpers.d.ts.map +1 -0
  271. package/dest/test-helpers/mock-tx-helpers.js +19 -0
  272. package/dest/test-helpers/reqresp-nodes.d.ts +15 -11
  273. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  274. package/dest/test-helpers/reqresp-nodes.js +62 -28
  275. package/dest/testbench/p2p_client_testbench_worker.d.ts +1 -1
  276. package/dest/testbench/p2p_client_testbench_worker.js +103 -29
  277. package/dest/testbench/parse_log_file.d.ts +1 -1
  278. package/dest/testbench/parse_log_file.js +4 -4
  279. package/dest/testbench/testbench.d.ts +1 -1
  280. package/dest/testbench/testbench.js +4 -4
  281. package/dest/testbench/worker_client_manager.d.ts +1 -6
  282. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  283. package/dest/testbench/worker_client_manager.js +11 -19
  284. package/dest/types/index.d.ts +4 -2
  285. package/dest/types/index.d.ts.map +1 -1
  286. package/dest/types/index.js +2 -0
  287. package/dest/util.d.ts +24 -16
  288. package/dest/util.d.ts.map +1 -1
  289. package/dest/util.js +75 -69
  290. package/dest/versioning.d.ts +4 -4
  291. package/dest/versioning.d.ts.map +1 -1
  292. package/dest/versioning.js +8 -3
  293. package/package.json +32 -27
  294. package/src/bootstrap/bootstrap.ts +27 -11
  295. package/src/client/factory.ts +139 -53
  296. package/src/client/index.ts +1 -0
  297. package/src/client/interface.ts +198 -0
  298. package/src/client/p2p_client.ts +484 -348
  299. package/src/config.ts +305 -134
  300. package/src/enr/generate-enr.ts +39 -6
  301. package/src/errors/attestation-pool.error.ts +13 -0
  302. package/src/index.ts +4 -0
  303. package/src/mem_pools/attestation_pool/attestation_pool.ts +75 -7
  304. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +266 -67
  305. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +174 -35
  306. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +156 -30
  307. package/src/mem_pools/attestation_pool/mocks.ts +13 -12
  308. package/src/mem_pools/instrumentation.ts +70 -40
  309. package/src/mem_pools/interface.ts +2 -4
  310. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +555 -110
  311. package/src/mem_pools/tx_pool/memory_tx_pool.ts +160 -46
  312. package/src/mem_pools/tx_pool/priority.ts +1 -1
  313. package/src/mem_pools/tx_pool/tx_pool.ts +69 -9
  314. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +224 -35
  315. package/src/msg_validators/attestation_validator/attestation_validator.ts +54 -11
  316. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +91 -0
  317. package/src/msg_validators/attestation_validator/index.ts +1 -0
  318. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +82 -14
  319. package/src/msg_validators/msg_seen_validator/msg_seen_validator.ts +36 -0
  320. package/src/msg_validators/tx_validator/allowed_public_setup.ts +35 -0
  321. package/src/msg_validators/tx_validator/archive_cache.ts +28 -0
  322. package/src/msg_validators/tx_validator/block_header_validator.ts +5 -5
  323. package/src/msg_validators/tx_validator/data_validator.ts +81 -69
  324. package/src/msg_validators/tx_validator/double_spend_validator.ts +19 -17
  325. package/src/msg_validators/tx_validator/factory.ts +110 -0
  326. package/src/msg_validators/tx_validator/gas_validator.ts +134 -0
  327. package/src/msg_validators/tx_validator/index.ts +7 -0
  328. package/src/msg_validators/tx_validator/metadata_validator.ts +59 -22
  329. package/src/msg_validators/tx_validator/phases_validator.ts +116 -0
  330. package/src/msg_validators/tx_validator/test_utils.ts +43 -0
  331. package/src/msg_validators/tx_validator/timestamp_validator.ts +47 -0
  332. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +17 -0
  333. package/src/msg_validators/tx_validator/tx_proof_validator.ts +6 -5
  334. package/src/services/discv5/discV5_service.ts +84 -38
  335. package/src/services/dummy_service.ts +147 -9
  336. package/src/services/encoding.ts +81 -6
  337. package/src/services/index.ts +4 -0
  338. package/src/services/libp2p/instrumentation.ts +167 -0
  339. package/src/services/libp2p/libp2p_service.ts +865 -298
  340. package/src/services/peer-manager/interface.ts +29 -0
  341. package/src/services/peer-manager/metrics.ts +26 -1
  342. package/src/services/peer-manager/peer_manager.ts +654 -78
  343. package/src/services/peer-manager/peer_scoring.ts +46 -3
  344. package/src/services/reqresp/config.ts +26 -9
  345. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +12 -6
  346. package/src/services/reqresp/connection-sampler/connection_sampler.ts +148 -95
  347. package/src/services/reqresp/index.ts +2 -0
  348. package/src/services/reqresp/interface.ts +92 -37
  349. package/src/services/reqresp/metrics.ts +4 -1
  350. package/src/services/reqresp/protocols/auth.ts +83 -0
  351. package/src/services/reqresp/protocols/block.ts +26 -4
  352. package/src/services/reqresp/protocols/block_txs/bitvector.ts +90 -0
  353. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +53 -0
  354. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +79 -0
  355. package/src/services/reqresp/protocols/block_txs/index.ts +3 -0
  356. package/src/services/reqresp/protocols/goodbye.ts +9 -7
  357. package/src/services/reqresp/protocols/index.ts +2 -0
  358. package/src/services/reqresp/protocols/status.ts +118 -5
  359. package/src/services/reqresp/protocols/tx.ts +36 -8
  360. package/src/services/reqresp/rate-limiter/rate_limiter.ts +12 -3
  361. package/src/services/reqresp/rate-limiter/rate_limits.ts +21 -1
  362. package/src/services/reqresp/reqresp.ts +387 -256
  363. package/src/services/reqresp/status.ts +12 -3
  364. package/src/services/service.ts +45 -21
  365. package/src/services/tx_collection/config.ts +84 -0
  366. package/src/services/tx_collection/fast_tx_collection.ts +341 -0
  367. package/src/services/tx_collection/index.ts +2 -0
  368. package/src/services/tx_collection/instrumentation.ts +43 -0
  369. package/src/services/tx_collection/slow_tx_collection.ts +233 -0
  370. package/src/services/tx_collection/tx_collection.ts +216 -0
  371. package/src/services/tx_collection/tx_collection_sink.ts +129 -0
  372. package/src/services/tx_collection/tx_source.ts +37 -0
  373. package/src/services/tx_provider.ts +229 -0
  374. package/src/services/tx_provider_instrumentation.ts +61 -0
  375. package/src/test-helpers/index.ts +1 -0
  376. package/src/test-helpers/make-enrs.ts +4 -5
  377. package/src/test-helpers/make-test-p2p-clients.ts +111 -21
  378. package/src/test-helpers/mock-pubsub.ts +188 -0
  379. package/src/test-helpers/mock-tx-helpers.ts +24 -0
  380. package/src/test-helpers/reqresp-nodes.ts +87 -36
  381. package/src/testbench/p2p_client_testbench_worker.ts +151 -25
  382. package/src/testbench/parse_log_file.ts +4 -4
  383. package/src/testbench/testbench.ts +4 -4
  384. package/src/testbench/worker_client_manager.ts +17 -23
  385. package/src/types/index.ts +2 -0
  386. package/src/util.ts +105 -91
  387. package/src/versioning.ts +11 -4
@@ -1,22 +1,29 @@
1
+ import { BlockNumber } from '@aztec/foundation/branded-types';
1
2
  import { createLogger } from '@aztec/foundation/log';
3
+ import type { TypedEventEmitter } from '@aztec/foundation/types';
2
4
  import type { TxAddedToPoolStats } from '@aztec/stdlib/stats';
3
- import { Tx, TxHash } from '@aztec/stdlib/tx';
5
+ import { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
4
6
  import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
5
7
 
6
- import { PoolInstrumentation, PoolName } from '../instrumentation.js';
8
+ import EventEmitter from 'node:events';
9
+
10
+ import { PoolInstrumentation, PoolName, type PoolStatsCallback } from '../instrumentation.js';
7
11
  import { getPendingTxPriority } from './priority.js';
8
- import type { TxPool } from './tx_pool.js';
12
+ import type { TxPool, TxPoolEvents, TxPoolOptions } from './tx_pool.js';
9
13
 
10
14
  /**
11
15
  * In-memory implementation of the Transaction Pool.
12
16
  */
13
- export class InMemoryTxPool implements TxPool {
17
+ export class InMemoryTxPool extends (EventEmitter as new () => TypedEventEmitter<TxPoolEvents>) implements TxPool {
14
18
  /**
15
19
  * Our tx pool, stored as a Map in-memory, with K: tx hash and V: the transaction.
16
20
  */
17
21
  private txs: Map<bigint, Tx>;
18
- private minedTxs: Map<bigint, number>;
22
+ private minedTxs: Map<bigint, BlockNumber>;
19
23
  private pendingTxs: Set<bigint>;
24
+ private deletedMinedTxHashes: Map<bigint, BlockNumber>;
25
+ // eslint-disable-next-line aztec-custom/no-non-primitive-in-collections
26
+ private blockToDeletedMinedTxHash: Map<BlockNumber, Set<bigint>>;
20
27
 
21
28
  private metrics: PoolInstrumentation<Tx>;
22
29
 
@@ -24,21 +31,52 @@ export class InMemoryTxPool implements TxPool {
24
31
  * Class constructor for in-memory TxPool. Initiates our transaction pool as a JS Map.
25
32
  * @param log - A logger.
26
33
  */
27
- constructor(telemetry: TelemetryClient = getTelemetryClient(), private log = createLogger('p2p:tx_pool')) {
34
+ constructor(
35
+ telemetry: TelemetryClient = getTelemetryClient(),
36
+ private log = createLogger('p2p:tx_pool'),
37
+ ) {
38
+ super();
28
39
  this.txs = new Map<bigint, Tx>();
29
40
  this.minedTxs = new Map();
30
41
  this.pendingTxs = new Set();
31
- this.metrics = new PoolInstrumentation(telemetry, PoolName.TX_POOL);
42
+ this.deletedMinedTxHashes = new Map();
43
+ this.blockToDeletedMinedTxHash = new Map();
44
+ this.metrics = new PoolInstrumentation(telemetry, PoolName.TX_POOL, this.countTx);
45
+ }
46
+
47
+ private countTx: PoolStatsCallback = () => {
48
+ return Promise.resolve({
49
+ itemCount: {
50
+ mined: this.minedTxs.size,
51
+ pending: this.pendingTxs.size,
52
+ },
53
+ });
54
+ };
55
+
56
+ public isEmpty(): Promise<boolean> {
57
+ return Promise.resolve(this.txs.size === 0);
32
58
  }
33
59
 
34
- public markAsMined(txHashes: TxHash[], blockNumber: number): Promise<void> {
60
+ public markAsMined(txHashes: TxHash[], blockHeader: BlockHeader): Promise<void> {
35
61
  const keys = txHashes.map(x => x.toBigInt());
36
62
  for (const key of keys) {
37
- this.minedTxs.set(key, blockNumber);
63
+ // If this tx was previously soft-deleted, remove it from the deleted sets
64
+ if (this.deletedMinedTxHashes.has(key)) {
65
+ const originalBlock = this.deletedMinedTxHashes.get(key)!;
66
+ this.deletedMinedTxHashes.delete(key);
67
+ // Remove from block-to-hash mapping
68
+ const txHashesForBlock = this.blockToDeletedMinedTxHash.get(originalBlock);
69
+ if (txHashesForBlock) {
70
+ txHashesForBlock.delete(key);
71
+ if (txHashesForBlock.size === 0) {
72
+ this.blockToDeletedMinedTxHash.delete(originalBlock);
73
+ }
74
+ }
75
+ }
76
+ this.minedTxs.set(key, blockHeader.globalVariables.blockNumber);
38
77
  this.pendingTxs.delete(key);
39
78
  }
40
- this.metrics.recordRemovedObjects(txHashes.length, 'pending');
41
- this.metrics.recordAddedObjects(txHashes.length, 'mined');
79
+ this.metrics.transactionsRemoved(txHashes);
42
80
  return Promise.resolve();
43
81
  }
44
82
 
@@ -48,23 +86,15 @@ export class InMemoryTxPool implements TxPool {
48
86
  }
49
87
 
50
88
  const keys = txHashes.map(x => x.toBigInt());
51
- let deleted = 0;
52
- let added = 0;
53
89
  for (const key of keys) {
54
- if (this.minedTxs.delete(key)) {
55
- deleted++;
56
- }
90
+ this.minedTxs.delete(key);
57
91
 
58
92
  // only add back to the pending set if we have the tx object
59
93
  if (this.txs.has(key)) {
60
- added++;
61
94
  this.pendingTxs.add(key);
62
95
  }
63
96
  }
64
97
 
65
- this.metrics.recordRemovedObjects(deleted, 'mined');
66
- this.metrics.recordAddedObjects(added, 'pending');
67
-
68
98
  return Promise.resolve();
69
99
  }
70
100
 
@@ -73,23 +103,37 @@ export class InMemoryTxPool implements TxPool {
73
103
  (tx1, tx2) => -getPendingTxPriority(tx1).localeCompare(getPendingTxPriority(tx2)),
74
104
  );
75
105
  const txHashes = await Promise.all(txs.map(tx => tx.getTxHash()));
76
- return txHashes.filter(txHash => this.pendingTxs.has(txHash.toBigInt()));
106
+
107
+ // No need to check deleted since pending txs are never soft-deleted
108
+ return txHashes.filter(txHash => {
109
+ const key = txHash.toBigInt();
110
+ return this.pendingTxs.has(key);
111
+ });
77
112
  }
78
113
 
79
- public getMinedTxHashes(): Promise<[TxHash, number][]> {
114
+ public getMinedTxHashes(): Promise<[TxHash, BlockNumber][]> {
80
115
  return Promise.resolve(
81
116
  Array.from(this.minedTxs.entries()).map(([txHash, blockNumber]) => [TxHash.fromBigInt(txHash), blockNumber]),
82
117
  );
83
118
  }
84
119
 
85
- public getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | undefined> {
120
+ public getPendingTxCount(): Promise<number> {
121
+ // Soft-deleted transactions are always mined, never pending
122
+ return Promise.resolve(this.pendingTxs.size);
123
+ }
124
+
125
+ public getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | 'deleted' | undefined> {
86
126
  const key = txHash.toBigInt();
87
- if (this.pendingTxs.has(key)) {
88
- return Promise.resolve('pending');
127
+
128
+ if (this.deletedMinedTxHashes.has(key)) {
129
+ return Promise.resolve('deleted');
89
130
  }
90
131
  if (this.minedTxs.has(key)) {
91
132
  return Promise.resolve('mined');
92
133
  }
134
+ if (this.pendingTxs.has(key)) {
135
+ return Promise.resolve('pending');
136
+ }
93
137
  return Promise.resolve(undefined);
94
138
  }
95
139
 
@@ -103,6 +147,18 @@ export class InMemoryTxPool implements TxPool {
103
147
  return Promise.resolve(result === undefined ? undefined : Tx.clone(result));
104
148
  }
105
149
 
150
+ getTxsByHash(txHashes: TxHash[]): Promise<(Tx | undefined)[]> {
151
+ return Promise.all(txHashes.map(txHash => this.getTxByHash(txHash)));
152
+ }
153
+ hasTxs(txHashes: TxHash[]): Promise<boolean[]> {
154
+ return Promise.resolve(txHashes.map(txHash => this.txs.has(txHash.toBigInt())));
155
+ }
156
+
157
+ async hasTx(txHash: TxHash): Promise<boolean> {
158
+ const result = await this.hasTxs([txHash]);
159
+ return result[0];
160
+ }
161
+
106
162
  public getArchivedTxByHash(): Promise<Tx | undefined> {
107
163
  return Promise.resolve(undefined);
108
164
  }
@@ -112,46 +168,65 @@ export class InMemoryTxPool implements TxPool {
112
168
  * @param txs - An array of txs to be added to the pool.
113
169
  * @returns Empty promise.
114
170
  */
115
- public async addTxs(txs: Tx[]): Promise<void> {
116
- let pending = 0;
171
+ public addTxs(txs: Tx[], opts: { source?: string } = {}): Promise<number> {
172
+ const added: Tx[] = [];
117
173
  for (const tx of txs) {
118
- const txHash = await tx.getTxHash();
174
+ const txHash = tx.getTxHash();
119
175
  this.log.verbose(`Adding tx ${txHash.toString()} to pool`, {
120
176
  eventName: 'tx-added-to-pool',
121
- ...(await tx.getStats()),
177
+ ...tx.getStats(),
122
178
  } satisfies TxAddedToPoolStats);
123
179
 
124
180
  const key = txHash.toBigInt();
125
- this.txs.set(key, tx);
181
+ if (!this.txs.has(key)) {
182
+ added.push(tx as Tx);
183
+ this.txs.set(key, tx);
184
+ }
185
+
126
186
  if (!this.minedTxs.has(key)) {
127
- pending++;
128
187
  this.metrics.recordSize(tx);
129
188
  this.pendingTxs.add(key);
130
189
  }
131
190
  }
132
-
133
- this.metrics.recordAddedObjects(pending, 'pending');
134
- return;
191
+ if (added.length > 0) {
192
+ this.emit('txs-added', { ...opts, txs: added });
193
+ }
194
+ this.metrics.transactionsAdded(added);
195
+ return Promise.resolve(added.length);
135
196
  }
136
197
 
137
198
  /**
138
199
  * Deletes transactions from the pool. Tx hashes that are not present are ignored.
139
- * @param txHashes - An array of tx hashes to be removed from the tx pool.
140
- * @returns The number of transactions that was deleted from the pool.
200
+ * Mined transactions are soft-deleted with a timestamp, pending transactions are permanently deleted.
201
+ * @param txHashes - An array of tx hashes to be deleted from the tx pool.
202
+ * @returns Empty promise.
141
203
  */
142
- public deleteTxs(txHashes: TxHash[]): Promise<void> {
143
- let deletedMined = 0;
144
- let deletedPending = 0;
145
-
204
+ public deleteTxs(txHashes: TxHash[], opts?: { permanently?: boolean }): Promise<void> {
146
205
  for (const txHash of txHashes) {
147
206
  const key = txHash.toBigInt();
148
- this.txs.delete(key);
149
- deletedPending += this.pendingTxs.delete(key) ? 1 : 0;
150
- deletedMined += this.minedTxs.delete(key) ? 1 : 0;
207
+ if (this.txs.has(key)) {
208
+ if (this.minedTxs.has(key)) {
209
+ const blockNumber = this.minedTxs.get(key)!;
210
+ this.minedTxs.delete(key);
211
+ // Soft-delete mined transactions: remove from mined set but keep in storage
212
+ if (opts?.permanently) {
213
+ // Permanently delete mined transactions if specified
214
+ this.txs.delete(key);
215
+ } else {
216
+ this.deletedMinedTxHashes.set(key, blockNumber);
217
+ if (!this.blockToDeletedMinedTxHash.has(blockNumber)) {
218
+ this.blockToDeletedMinedTxHash.set(blockNumber, new Set());
219
+ }
220
+ this.blockToDeletedMinedTxHash.get(blockNumber)!.add(key);
221
+ }
222
+ } else {
223
+ // Permanently delete pending transactions
224
+ this.txs.delete(key);
225
+ this.pendingTxs.delete(key);
226
+ }
227
+ }
151
228
  }
152
-
153
- this.metrics.recordRemovedObjects(deletedPending, 'pending');
154
- this.metrics.recordRemovedObjects(deletedMined, 'mined');
229
+ this.metrics.transactionsRemoved(txHashes);
155
230
 
156
231
  return Promise.resolve();
157
232
  }
@@ -171,4 +246,43 @@ export class InMemoryTxPool implements TxPool {
171
246
  public getAllTxHashes(): Promise<TxHash[]> {
172
247
  return Promise.resolve(Array.from(this.txs.keys()).map(x => TxHash.fromBigInt(x)));
173
248
  }
249
+
250
+ updateConfig(_config: TxPoolOptions): void {}
251
+
252
+ markTxsAsNonEvictable(_: TxHash[]): Promise<void> {
253
+ return Promise.resolve();
254
+ }
255
+
256
+ /**
257
+ * Permanently deletes deleted mined transactions from blocks up to and including the specified block number.
258
+ * @param blockNumber - Block number threshold. Deleted mined txs from this block or earlier will be permanently deleted.
259
+ * @returns The number of transactions permanently deleted.
260
+ */
261
+ public cleanupDeletedMinedTxs(blockNumber: BlockNumber): Promise<number> {
262
+ let deletedCount = 0;
263
+ const blocksToDelete: BlockNumber[] = [];
264
+
265
+ // Find all blocks up to the specified block number
266
+ for (const [block, txHashes] of this.blockToDeletedMinedTxHash.entries()) {
267
+ if (block <= blockNumber) {
268
+ // Permanently delete all transactions from this block
269
+ for (const txHash of txHashes) {
270
+ this.txs.delete(txHash);
271
+ this.deletedMinedTxHashes.delete(txHash);
272
+ deletedCount++;
273
+ }
274
+ blocksToDelete.push(block);
275
+ }
276
+ }
277
+
278
+ // Clean up block-to-hash mapping
279
+ for (const block of blocksToDelete) {
280
+ this.blockToDeletedMinedTxHash.delete(block);
281
+ }
282
+
283
+ if (deletedCount > 0) {
284
+ this.log.debug(`Permanently deleted ${deletedCount} deleted mined txs from blocks up to ${blockNumber}`);
285
+ }
286
+ return Promise.resolve(deletedCount);
287
+ }
174
288
  }
@@ -8,6 +8,6 @@ import type { Tx } from '@aztec/stdlib/tx';
8
8
  */
9
9
  export function getPendingTxPriority(tx: Tx): string {
10
10
  const priorityFees = tx.getGasSettings().maxPriorityFeesPerGas;
11
- const totalFees = priorityFees.feePerDaGas.toBigInt() + priorityFees.feePerL2Gas.toBigInt();
11
+ const totalFees = priorityFees.feePerDaGas + priorityFees.feePerL2Gas;
12
12
  return Buffer32.fromBigInt(totalFees).toString();
13
13
  }
@@ -1,14 +1,27 @@
1
- import type { Tx, TxHash } from '@aztec/stdlib/tx';
1
+ import type { BlockNumber } from '@aztec/foundation/branded-types';
2
+ import type { TypedEventEmitter } from '@aztec/foundation/types';
3
+ import type { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
4
+
5
+ export type TxPoolOptions = {
6
+ maxTxPoolSize?: number;
7
+ txPoolOverflowFactor?: number;
8
+ archivedTxLimit?: number;
9
+ };
10
+
11
+ export type TxPoolEvents = {
12
+ ['txs-added']: (args: { txs: Tx[]; source?: string }) => void | Promise<void>;
13
+ };
2
14
 
3
15
  /**
4
16
  * Interface of a transaction pool. The pool includes tx requests and is kept up-to-date by a P2P client.
5
17
  */
6
- export interface TxPool {
18
+ export interface TxPool extends TypedEventEmitter<TxPoolEvents> {
7
19
  /**
8
20
  * Adds a list of transactions to the pool. Duplicates are ignored.
9
21
  * @param txs - An array of txs to be added to the pool.
22
+ * @returns The number of txs added to the pool. Note if the transaction already exists, it will not be added again.
10
23
  */
11
- addTxs(txs: Tx[]): Promise<void>;
24
+ addTxs(txs: Tx[], opts?: { source?: string }): Promise<number>;
12
25
 
13
26
  /**
14
27
  * Checks if a transaction exists in the pool and returns it.
@@ -17,6 +30,27 @@ export interface TxPool {
17
30
  */
18
31
  getTxByHash(txHash: TxHash): Promise<Tx | undefined>;
19
32
 
33
+ /**
34
+ * Checks if transactions exist in the pool and returns them.
35
+ * @param txHashes - The hashes of the transactions
36
+ * @returns The transactions, if found, 'undefined' otherwise.
37
+ */
38
+ getTxsByHash(txHashes: TxHash[]): Promise<(Tx | undefined)[]>;
39
+
40
+ /**
41
+ * Checks if transactions exist in the pool
42
+ * @param txHashes - The hashes of the transactions to check for
43
+ * @returns True or False for each tx hash
44
+ */
45
+ hasTxs(txHashes: TxHash[]): Promise<boolean[]>;
46
+
47
+ /**
48
+ * Checks if a transaction exists in the pool
49
+ * @param txHash - The hash of the transaction to check for
50
+ * @returns True if the transaction exists, false otherwise
51
+ */
52
+ hasTx(txHash: TxHash): Promise<boolean>;
53
+
20
54
  /**
21
55
  * Checks if an archived transaction exists in the pool and returns it.
22
56
  * @param txHash - The hash of the transaction, used as an ID.
@@ -27,8 +61,9 @@ export interface TxPool {
27
61
  /**
28
62
  * Marks the set of txs as mined, as opposed to pending.
29
63
  * @param txHashes - Hashes of the txs to flag as mined.
64
+ * @param blockHeader - The header of the mined block.
30
65
  */
31
- markAsMined(txHashes: TxHash[], blockNumber: number): Promise<void>;
66
+ markAsMined(txHashes: TxHash[], blockHeader: BlockHeader): Promise<void>;
32
67
 
33
68
  /**
34
69
  * Moves mined txs back to the pending set in the case of a reorg.
@@ -41,7 +76,7 @@ export interface TxPool {
41
76
  * Deletes transactions from the pool. Tx hashes that are not present are ignored.
42
77
  * @param txHashes - An array of tx hashes to be removed from the tx pool.
43
78
  */
44
- deleteTxs(txHashes: TxHash[]): Promise<void>;
79
+ deleteTxs(txHashes: TxHash[], opts?: { permanently?: boolean }): Promise<void>;
45
80
 
46
81
  /**
47
82
  * Gets all transactions currently in the tx pool.
@@ -61,16 +96,41 @@ export interface TxPool {
61
96
  */
62
97
  getPendingTxHashes(): Promise<TxHash[]>;
63
98
 
99
+ /** Returns the number of pending txs in the pool. */
100
+ getPendingTxCount(): Promise<number>;
101
+
64
102
  /**
65
103
  * Gets the hashes of mined transactions currently in the tx pool.
66
104
  * @returns An array of mined transaction hashes found in the tx pool.
67
105
  */
68
- getMinedTxHashes(): Promise<[tx: TxHash, blockNumber: number][]>;
106
+ getMinedTxHashes(): Promise<[tx: TxHash, blockNumber: BlockNumber][]>;
69
107
 
70
108
  /**
71
- * Returns whether the given tx hash is flagged as pending or mined.
109
+ * Returns whether the given tx hash is flagged as pending, mined, or deleted.
72
110
  * @param txHash - Hash of the tx to query.
73
- * @returns Pending or mined depending on its status, or undefined if not found.
111
+ * @returns Pending, mined, or deleted depending on its status, or undefined if not found.
112
+ */
113
+ getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | 'deleted' | undefined>;
114
+
115
+ /**
116
+ * Configure the maximum size of the tx pool
117
+ * @param maxSizeBytes - The maximum size in bytes of the mempool. Set to undefined to disable it
118
+ */
119
+ updateConfig(config: TxPoolOptions): void;
120
+
121
+ /** Returns whether the pool is empty. */
122
+ isEmpty(): Promise<boolean>;
123
+
124
+ /**
125
+ * Marks transactions as non-evictible in the pool.
126
+ * @param txHashes - Hashes of the transactions to mark as non-evictible.
127
+ */
128
+ markTxsAsNonEvictable(txHashes: TxHash[]): Promise<void>;
129
+
130
+ /**
131
+ * Permanently deletes deleted mined transactions from blocks up to and including the specified block number.
132
+ * @param blockNumber - Block number threshold. Deleted mined txs from this block or earlier will be permanently deleted.
133
+ * @returns The number of transactions permanently deleted.
74
134
  */
75
- getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | undefined>;
135
+ cleanupDeletedMinedTxs(blockNumber: BlockNumber): Promise<number>;
76
136
  }