@aztec/p2p 0.0.1-commit.7d4e6cd → 0.0.1-commit.9372f48

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 (298) hide show
  1. package/dest/bootstrap/bootstrap.d.ts +4 -3
  2. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  3. package/dest/bootstrap/bootstrap.js +4 -4
  4. package/dest/client/factory.d.ts +1 -1
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +6 -5
  7. package/dest/client/p2p_client.d.ts +1 -1
  8. package/dest/client/p2p_client.d.ts.map +1 -1
  9. package/dest/client/p2p_client.js +10 -3
  10. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +2 -0
  11. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +1 -0
  12. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +305 -0
  13. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +73 -0
  14. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +1 -0
  15. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +8 -0
  16. package/dest/config.d.ts +8 -2
  17. package/dest/config.d.ts.map +1 -1
  18. package/dest/config.js +4 -2
  19. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
  20. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  21. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +20 -9
  22. package/dest/mem_pools/attestation_pool/mocks.d.ts +4 -2
  23. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  24. package/dest/mem_pools/attestation_pool/mocks.js +8 -5
  25. package/dest/mem_pools/instrumentation.d.ts +1 -1
  26. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  27. package/dest/mem_pools/instrumentation.js +2 -2
  28. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +15 -10
  29. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  30. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +91 -50
  31. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +19 -5
  32. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -1
  33. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +59 -3
  34. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +79 -5
  35. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -1
  36. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +47 -0
  37. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +16 -0
  38. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  39. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +122 -0
  40. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +2 -2
  41. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -1
  42. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +4 -4
  43. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -1
  44. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +2 -0
  45. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +2 -2
  46. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -1
  47. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
  48. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
  49. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
  50. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +3 -3
  51. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  52. package/dest/msg_validators/attestation_validator/attestation_validator.js +41 -10
  53. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +3 -3
  54. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  55. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +18 -6
  56. package/dest/msg_validators/clock_tolerance.d.ts +21 -0
  57. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
  58. package/dest/msg_validators/clock_tolerance.js +37 -0
  59. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +3 -3
  60. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  61. package/dest/msg_validators/proposal_validator/proposal_validator.js +55 -31
  62. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +3 -3
  63. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -1
  64. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +93 -64
  65. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  66. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  67. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  68. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +5 -4
  69. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  70. package/dest/msg_validators/tx_validator/block_header_validator.js +3 -2
  71. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  72. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  73. package/dest/msg_validators/tx_validator/data_validator.js +4 -1
  74. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +3 -2
  75. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  76. package/dest/msg_validators/tx_validator/double_spend_validator.js +3 -2
  77. package/dest/msg_validators/tx_validator/factory.d.ts +8 -3
  78. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  79. package/dest/msg_validators/tx_validator/factory.js +21 -11
  80. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
  81. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
  82. package/dest/msg_validators/tx_validator/fee_payer_balance.js +20 -0
  83. package/dest/msg_validators/tx_validator/gas_validator.d.ts +3 -2
  84. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  85. package/dest/msg_validators/tx_validator/gas_validator.js +11 -16
  86. package/dest/msg_validators/tx_validator/index.d.ts +2 -1
  87. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  88. package/dest/msg_validators/tx_validator/index.js +1 -0
  89. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -2
  90. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  91. package/dest/msg_validators/tx_validator/metadata_validator.js +2 -2
  92. package/dest/msg_validators/tx_validator/phases_validator.d.ts +3 -2
  93. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  94. package/dest/msg_validators/tx_validator/phases_validator.js +3 -3
  95. package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
  96. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
  97. package/dest/msg_validators/tx_validator/size_validator.js +23 -0
  98. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +3 -2
  99. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  100. package/dest/msg_validators/tx_validator/timestamp_validator.js +2 -2
  101. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  102. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  103. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  104. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  105. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  106. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
  107. package/dest/services/data_store.d.ts +1 -1
  108. package/dest/services/data_store.d.ts.map +1 -1
  109. package/dest/services/data_store.js +10 -6
  110. package/dest/services/discv5/discV5_service.js +1 -1
  111. package/dest/services/dummy_service.d.ts +13 -1
  112. package/dest/services/dummy_service.d.ts.map +1 -1
  113. package/dest/services/dummy_service.js +39 -0
  114. package/dest/services/encoding.d.ts +1 -1
  115. package/dest/services/encoding.d.ts.map +1 -1
  116. package/dest/services/encoding.js +2 -3
  117. package/dest/services/libp2p/instrumentation.d.ts +1 -1
  118. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  119. package/dest/services/libp2p/instrumentation.js +19 -8
  120. package/dest/services/libp2p/libp2p_service.d.ts +13 -7
  121. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  122. package/dest/services/libp2p/libp2p_service.js +60 -51
  123. package/dest/services/peer-manager/metrics.d.ts +2 -2
  124. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  125. package/dest/services/peer-manager/metrics.js +20 -5
  126. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  127. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  128. package/dest/services/peer-manager/peer_scoring.js +8 -2
  129. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +47 -0
  130. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  131. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +566 -0
  132. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  133. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  134. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  135. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +50 -0
  136. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  137. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  138. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +37 -0
  139. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  140. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +151 -0
  141. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +54 -0
  142. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  143. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +139 -0
  144. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
  145. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  146. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
  147. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +22 -3
  148. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  149. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +63 -4
  150. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -1
  151. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  152. package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
  153. package/dest/services/reqresp/constants.d.ts +12 -0
  154. package/dest/services/reqresp/constants.d.ts.map +1 -0
  155. package/dest/services/reqresp/constants.js +7 -0
  156. package/dest/services/reqresp/interface.d.ts +3 -1
  157. package/dest/services/reqresp/interface.d.ts.map +1 -1
  158. package/dest/services/reqresp/metrics.d.ts +6 -5
  159. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  160. package/dest/services/reqresp/metrics.js +17 -5
  161. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
  162. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  163. package/dest/services/reqresp/protocols/block_txs/bitvector.js +12 -0
  164. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +1 -1
  165. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  166. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +16 -3
  167. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +18 -6
  168. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  169. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +43 -13
  170. package/dest/services/reqresp/protocols/status.d.ts +1 -1
  171. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  172. package/dest/services/reqresp/protocols/status.js +2 -1
  173. package/dest/services/reqresp/reqresp.d.ts +6 -1
  174. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  175. package/dest/services/reqresp/reqresp.js +58 -22
  176. package/dest/services/service.d.ts +4 -1
  177. package/dest/services/service.d.ts.map +1 -1
  178. package/dest/services/tx_collection/config.d.ts +4 -1
  179. package/dest/services/tx_collection/config.d.ts.map +1 -1
  180. package/dest/services/tx_collection/config.js +9 -1
  181. package/dest/services/tx_collection/fast_tx_collection.d.ts +6 -4
  182. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  183. package/dest/services/tx_collection/fast_tx_collection.js +16 -5
  184. package/dest/services/tx_collection/index.d.ts +2 -1
  185. package/dest/services/tx_collection/index.d.ts.map +1 -1
  186. package/dest/services/tx_collection/index.js +1 -0
  187. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  188. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  189. package/dest/services/tx_collection/instrumentation.js +9 -2
  190. package/dest/services/tx_collection/proposal_tx_collector.d.ts +48 -0
  191. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
  192. package/dest/services/tx_collection/proposal_tx_collector.js +50 -0
  193. package/dest/services/tx_collection/slow_tx_collection.d.ts +3 -3
  194. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  195. package/dest/services/tx_collection/tx_collection.d.ts +8 -8
  196. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  197. package/dest/services/tx_collection/tx_collection.js +5 -5
  198. package/dest/services/tx_provider.d.ts +3 -3
  199. package/dest/services/tx_provider.d.ts.map +1 -1
  200. package/dest/services/tx_provider_instrumentation.d.ts +1 -1
  201. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  202. package/dest/services/tx_provider_instrumentation.js +5 -5
  203. package/dest/test-helpers/index.d.ts +3 -1
  204. package/dest/test-helpers/index.d.ts.map +1 -1
  205. package/dest/test-helpers/index.js +2 -0
  206. package/dest/test-helpers/test_tx_provider.d.ts +40 -0
  207. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  208. package/dest/test-helpers/test_tx_provider.js +41 -0
  209. package/dest/test-helpers/testbench-utils.d.ts +158 -0
  210. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  211. package/dest/test-helpers/testbench-utils.js +297 -0
  212. package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
  213. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  214. package/dest/testbench/p2p_client_testbench_worker.js +212 -132
  215. package/dest/testbench/worker_client_manager.d.ts +51 -6
  216. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  217. package/dest/testbench/worker_client_manager.js +226 -44
  218. package/package.json +16 -16
  219. package/src/bootstrap/bootstrap.ts +7 -4
  220. package/src/client/factory.ts +6 -10
  221. package/src/client/p2p_client.ts +15 -8
  222. package/src/client/test/tx_proposal_collector/README.md +227 -0
  223. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +336 -0
  224. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
  225. package/src/config.ts +8 -3
  226. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +17 -9
  227. package/src/mem_pools/attestation_pool/mocks.ts +6 -4
  228. package/src/mem_pools/instrumentation.ts +2 -1
  229. package/src/mem_pools/tx_pool/README.md +28 -13
  230. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +130 -75
  231. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +66 -5
  232. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +119 -4
  233. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +162 -0
  234. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +4 -2
  235. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
  236. package/src/msg_validators/attestation_validator/attestation_validator.ts +26 -14
  237. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +14 -8
  238. package/src/msg_validators/clock_tolerance.ts +51 -0
  239. package/src/msg_validators/proposal_validator/proposal_validator.ts +31 -31
  240. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +91 -67
  241. package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
  242. package/src/msg_validators/tx_validator/block_header_validator.ts +6 -5
  243. package/src/msg_validators/tx_validator/data_validator.ts +6 -2
  244. package/src/msg_validators/tx_validator/double_spend_validator.ts +4 -3
  245. package/src/msg_validators/tx_validator/factory.ts +64 -23
  246. package/src/msg_validators/tx_validator/fee_payer_balance.ts +40 -0
  247. package/src/msg_validators/tx_validator/gas_validator.ts +17 -28
  248. package/src/msg_validators/tx_validator/index.ts +1 -0
  249. package/src/msg_validators/tx_validator/metadata_validator.ts +6 -3
  250. package/src/msg_validators/tx_validator/phases_validator.ts +5 -3
  251. package/src/msg_validators/tx_validator/size_validator.ts +22 -0
  252. package/src/msg_validators/tx_validator/timestamp_validator.ts +6 -3
  253. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  254. package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
  255. package/src/services/data_store.ts +10 -7
  256. package/src/services/discv5/discV5_service.ts +1 -1
  257. package/src/services/dummy_service.ts +45 -0
  258. package/src/services/encoding.ts +2 -3
  259. package/src/services/libp2p/instrumentation.ts +20 -7
  260. package/src/services/libp2p/libp2p_service.ts +97 -71
  261. package/src/services/peer-manager/metrics.ts +21 -4
  262. package/src/services/peer-manager/peer_scoring.ts +4 -1
  263. package/src/services/reqresp/batch-tx-requester/README.md +305 -0
  264. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +706 -0
  265. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  266. package/src/services/reqresp/batch-tx-requester/interface.ts +57 -0
  267. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +209 -0
  268. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +205 -0
  269. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
  270. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +65 -4
  271. package/src/services/reqresp/connection-sampler/connection_sampler.ts +16 -0
  272. package/src/services/reqresp/constants.ts +14 -0
  273. package/src/services/reqresp/interface.ts +3 -0
  274. package/src/services/reqresp/metrics.ts +34 -9
  275. package/src/services/reqresp/protocols/block_txs/bitvector.ts +16 -0
  276. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +18 -4
  277. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +51 -9
  278. package/src/services/reqresp/protocols/status.ts +5 -3
  279. package/src/services/reqresp/reqresp.ts +66 -19
  280. package/src/services/service.ts +4 -0
  281. package/src/services/tx_collection/config.ts +15 -1
  282. package/src/services/tx_collection/fast_tx_collection.ts +36 -13
  283. package/src/services/tx_collection/index.ts +5 -0
  284. package/src/services/tx_collection/instrumentation.ts +11 -2
  285. package/src/services/tx_collection/proposal_tx_collector.ts +114 -0
  286. package/src/services/tx_collection/slow_tx_collection.ts +2 -2
  287. package/src/services/tx_collection/tx_collection.ts +8 -8
  288. package/src/services/tx_provider.ts +2 -2
  289. package/src/services/tx_provider_instrumentation.ts +11 -5
  290. package/src/test-helpers/index.ts +2 -0
  291. package/src/test-helpers/test_tx_provider.ts +64 -0
  292. package/src/test-helpers/testbench-utils.ts +374 -0
  293. package/src/testbench/p2p_client_testbench_worker.ts +321 -126
  294. package/src/testbench/worker_client_manager.ts +304 -47
  295. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts +0 -15
  296. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts.map +0 -1
  297. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.js +0 -88
  298. package/src/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.ts +0 -108
@@ -1,108 +0,0 @@
1
- import { createLogger } from '@aztec/foundation/log';
2
- import { ProtocolContractAddress } from '@aztec/protocol-contracts';
3
- import { GasFees } from '@aztec/stdlib/gas';
4
- import type { ReadonlyWorldStateAccess } from '@aztec/stdlib/interfaces/server';
5
- import { DatabasePublicStateSource, type MerkleTreeReadOperations } from '@aztec/stdlib/trees';
6
- import type { TxHash } from '@aztec/stdlib/tx';
7
-
8
- import { GasTxValidator } from '../../../msg_validators/index.js';
9
- import type { TxPoolOptions } from '../tx_pool.js';
10
- import {
11
- type EvictionContext,
12
- EvictionEvent,
13
- type EvictionResult,
14
- type EvictionRule,
15
- type PendingTxInfo,
16
- type TxPoolOperations,
17
- } from './eviction_strategy.js';
18
-
19
- export class InsufficientFeePayerBalanceRule implements EvictionRule {
20
- public readonly name = 'InsufficientFeePayerBalance';
21
- public readonly reason = 'insufficient_fee_juice';
22
-
23
- public constructor(private worldState: ReadonlyWorldStateAccess) {}
24
-
25
- private log = createLogger('p2p:mempool:tx_pool:insufficient_fee_payer_balance_rule');
26
-
27
- async evict(context: EvictionContext, txPool: TxPoolOperations): Promise<EvictionResult> {
28
- try {
29
- if (context.event === EvictionEvent.CHAIN_PRUNED) {
30
- const affectedTxs = await txPool.getPendingTxInfos();
31
- return this.evictTxs(affectedTxs, context.blockNumber, txPool);
32
- }
33
-
34
- if (context.event === EvictionEvent.BLOCK_MINED) {
35
- const affectedTxs = await txPool.getPendingTxsWithFeePayer(context.minedFeePayers);
36
-
37
- // TODO: fix this edge-case
38
- // This can lead to a race condition if we are catching up in the p2p client.
39
- // Let's say we have 3 txs for the same fee payer, which get mined in blocks 1, 2, 3.
40
- // Tx1 consumes fee juice, tx2 increases it, tx3 consumes it again. We see block1 with tx1 first, run this rule, and evict tx3.
41
- // But tx3 was valid (due to tx2) and mined on block3. And we have just removed from the mempool a tx we needed for proving/reexec.
42
- // -----
43
- // Proposed fix: evict only if node is synched
44
- return this.evictTxs(affectedTxs, context.block.getBlockNumber(), txPool);
45
- }
46
-
47
- return {
48
- reason: this.reason,
49
- success: true,
50
- txsEvicted: [],
51
- };
52
- } catch (err) {
53
- this.log.error('Failed to evict invalid transactions after mining', { err });
54
- return {
55
- reason: this.reason,
56
- success: false,
57
- txsEvicted: [],
58
- error: new Error('Failed to evict invalid txs after mining', { cause: err }),
59
- };
60
- }
61
- }
62
-
63
- private async evictTxs(
64
- candidateTxs: PendingTxInfo[],
65
- blockNumber: number,
66
- txPool: TxPoolOperations,
67
- ): Promise<EvictionResult> {
68
- const txsToEvict: TxHash[] = [];
69
- const gasValidator = this.createGasTxValidator(this.worldState.getSnapshot(blockNumber));
70
-
71
- for (const { txHash, isEvictable } of candidateTxs) {
72
- if (!isEvictable) {
73
- continue;
74
- }
75
-
76
- const tx = await txPool.getTxByHash(txHash);
77
- if (!tx) {
78
- continue;
79
- }
80
-
81
- this.log.debug(`Validating tx balance ${txHash}`);
82
-
83
- if ((await gasValidator.validateTxFee(tx)).result === 'invalid') {
84
- this.log.verbose(`Evicting tx ${txHash} from pool due to an insufficient fee payer balance`);
85
- txsToEvict.push(txHash);
86
- continue;
87
- }
88
- }
89
-
90
- if (txsToEvict.length > 0) {
91
- await txPool.deleteTxs(txsToEvict);
92
- }
93
-
94
- this.log.verbose(`Evicted ${txsToEvict.length} invalid txs after block mined`, { txsToEvict });
95
-
96
- return {
97
- reason: this.reason,
98
- success: true,
99
- txsEvicted: txsToEvict,
100
- };
101
- }
102
-
103
- private createGasTxValidator(db: MerkleTreeReadOperations): GasTxValidator {
104
- return new GasTxValidator(new DatabasePublicStateSource(db), ProtocolContractAddress.FeeJuice, GasFees.empty());
105
- }
106
-
107
- updateConfig(_config: TxPoolOptions): void {}
108
- }