@aztec/p2p 0.0.1-commit.db765a8 → 0.0.1-commit.ddcf04837

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 (331) hide show
  1. package/README.md +129 -3
  2. package/dest/client/factory.d.ts +2 -2
  3. package/dest/client/factory.d.ts.map +1 -1
  4. package/dest/client/factory.js +25 -11
  5. package/dest/client/interface.d.ts +9 -2
  6. package/dest/client/interface.d.ts.map +1 -1
  7. package/dest/client/p2p_client.d.ts +3 -2
  8. package/dest/client/p2p_client.d.ts.map +1 -1
  9. package/dest/client/p2p_client.js +46 -38
  10. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +17 -6
  11. package/dest/config.d.ts +120 -94
  12. package/dest/config.d.ts.map +1 -1
  13. package/dest/config.js +72 -8
  14. package/dest/errors/p2p-service.error.d.ts +9 -0
  15. package/dest/errors/p2p-service.error.d.ts.map +1 -0
  16. package/dest/errors/p2p-service.error.js +10 -0
  17. package/dest/index.d.ts +1 -2
  18. package/dest/index.d.ts.map +1 -1
  19. package/dest/index.js +0 -1
  20. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +7 -5
  21. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  22. package/dest/mem_pools/attestation_pool/attestation_pool.js +11 -8
  23. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +6 -6
  24. package/dest/mem_pools/index.d.ts +1 -2
  25. package/dest/mem_pools/index.d.ts.map +1 -1
  26. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
  27. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  28. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +2 -1
  29. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +7 -1
  30. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -1
  31. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +2 -2
  32. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +1 -1
  33. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -1
  34. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +8 -6
  35. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +2 -2
  36. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -1
  37. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +2 -2
  38. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +9 -5
  39. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
  40. package/dest/mem_pools/tx_pool_v2/interfaces.js +2 -1
  41. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +25 -10
  42. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
  43. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +39 -12
  44. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +1 -1
  45. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
  46. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +26 -43
  47. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +4 -2
  48. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
  49. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +3 -0
  50. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +1 -1
  51. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
  52. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +21 -6
  53. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +5 -2
  54. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  55. package/dest/msg_validators/attestation_validator/attestation_validator.js +20 -11
  56. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +4 -2
  57. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  58. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +2 -2
  59. package/dest/msg_validators/clock_tolerance.d.ts +12 -1
  60. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
  61. package/dest/msg_validators/clock_tolerance.js +54 -3
  62. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +6 -4
  63. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  64. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
  65. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +6 -4
  66. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  67. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
  68. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +14 -9
  69. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  70. package/dest/msg_validators/proposal_validator/proposal_validator.js +65 -55
  71. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +1 -1
  72. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  73. package/dest/msg_validators/tx_validator/allowed_public_setup.js +21 -32
  74. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  75. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  76. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  77. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  78. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  79. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  80. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  81. package/dest/msg_validators/tx_validator/data_validator.d.ts +1 -1
  82. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  83. package/dest/msg_validators/tx_validator/data_validator.js +35 -2
  84. package/dest/msg_validators/tx_validator/factory.d.ts +23 -4
  85. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  86. package/dest/msg_validators/tx_validator/factory.js +36 -10
  87. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
  88. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
  89. package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
  90. package/dest/msg_validators/tx_validator/gas_validator.d.ts +13 -4
  91. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  92. package/dest/msg_validators/tx_validator/gas_validator.js +49 -17
  93. package/dest/msg_validators/tx_validator/index.d.ts +2 -1
  94. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  95. package/dest/msg_validators/tx_validator/index.js +1 -0
  96. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
  97. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  98. package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
  99. package/dest/msg_validators/tx_validator/phases_validator.d.ts +21 -1
  100. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  101. package/dest/msg_validators/tx_validator/phases_validator.js +49 -2
  102. package/dest/services/data_store.d.ts +1 -1
  103. package/dest/services/data_store.d.ts.map +1 -1
  104. package/dest/services/data_store.js +5 -5
  105. package/dest/services/dummy_service.d.ts +6 -3
  106. package/dest/services/dummy_service.d.ts.map +1 -1
  107. package/dest/services/dummy_service.js +6 -1
  108. package/dest/services/encoding.d.ts +5 -1
  109. package/dest/services/encoding.d.ts.map +1 -1
  110. package/dest/services/encoding.js +7 -1
  111. package/dest/services/gossipsub/topic_score_params.d.ts +13 -2
  112. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
  113. package/dest/services/gossipsub/topic_score_params.js +21 -4
  114. package/dest/services/libp2p/libp2p_service.d.ts +15 -25
  115. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  116. package/dest/services/libp2p/libp2p_service.js +160 -126
  117. package/dest/services/peer-manager/peer_manager.d.ts +6 -2
  118. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  119. package/dest/services/peer-manager/peer_manager.js +37 -10
  120. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  121. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  122. package/dest/services/peer-manager/peer_scoring.js +32 -10
  123. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +11 -8
  124. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  125. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +69 -65
  126. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +3 -2
  127. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  128. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +5 -4
  129. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  130. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +13 -7
  131. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +3 -1
  132. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  133. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +3 -0
  134. package/dest/services/reqresp/config.d.ts +3 -3
  135. package/dest/services/reqresp/config.d.ts.map +1 -1
  136. package/dest/services/reqresp/interface.d.ts +14 -9
  137. package/dest/services/reqresp/interface.d.ts.map +1 -1
  138. package/dest/services/reqresp/interface.js +10 -11
  139. package/dest/services/reqresp/metrics.d.ts +1 -1
  140. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  141. package/dest/services/reqresp/metrics.js +0 -1
  142. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  143. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  144. package/dest/services/reqresp/protocols/index.js +0 -1
  145. package/dest/services/reqresp/protocols/tx.d.ts +1 -1
  146. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  147. package/dest/services/reqresp/protocols/tx.js +1 -3
  148. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  149. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  150. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  151. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  152. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  153. package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
  154. package/dest/services/reqresp/reqresp.d.ts +4 -2
  155. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  156. package/dest/services/reqresp/reqresp.js +28 -11
  157. package/dest/services/service.d.ts +5 -2
  158. package/dest/services/service.d.ts.map +1 -1
  159. package/dest/services/tx_collection/fast_tx_collection.d.ts +1 -4
  160. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  161. package/dest/services/tx_collection/fast_tx_collection.js +57 -73
  162. package/dest/services/tx_collection/file_store_tx_source.d.ts +5 -4
  163. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
  164. package/dest/services/tx_collection/file_store_tx_source.js +39 -29
  165. package/dest/services/tx_collection/proposal_tx_collector.d.ts +6 -7
  166. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  167. package/dest/services/tx_collection/proposal_tx_collector.js +4 -4
  168. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  169. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  170. package/dest/services/tx_collection/request_tracker.js +84 -0
  171. package/dest/services/tx_collection/slow_tx_collection.js +1 -1
  172. package/dest/services/tx_collection/tx_collection.d.ts +3 -6
  173. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  174. package/dest/services/tx_collection/tx_source.d.ts +6 -5
  175. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  176. package/dest/services/tx_collection/tx_source.js +9 -7
  177. package/dest/test-helpers/make-test-p2p-clients.d.ts +1 -1
  178. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  179. package/dest/test-helpers/mock-pubsub.d.ts +11 -3
  180. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  181. package/dest/test-helpers/mock-pubsub.js +35 -10
  182. package/dest/test-helpers/reqresp-nodes.d.ts +1 -1
  183. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  184. package/dest/test-helpers/reqresp-nodes.js +1 -2
  185. package/dest/test-helpers/testbench-utils.d.ts +1 -1
  186. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  187. package/dest/test-helpers/testbench-utils.js +23 -3
  188. package/dest/testbench/p2p_client_testbench_worker.js +68 -16
  189. package/dest/testbench/worker_client_manager.d.ts +10 -1
  190. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  191. package/dest/testbench/worker_client_manager.js +55 -3
  192. package/dest/util.d.ts +1 -1
  193. package/package.json +14 -14
  194. package/src/client/factory.ts +43 -14
  195. package/src/client/interface.ts +9 -1
  196. package/src/client/p2p_client.ts +50 -39
  197. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +19 -9
  198. package/src/config.ts +106 -6
  199. package/src/errors/p2p-service.error.ts +11 -0
  200. package/src/index.ts +0 -1
  201. package/src/mem_pools/attestation_pool/attestation_pool.ts +12 -8
  202. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +6 -6
  203. package/src/mem_pools/index.ts +0 -3
  204. package/src/mem_pools/tx_pool_v2/README.md +9 -1
  205. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +2 -1
  206. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +11 -1
  207. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +3 -3
  208. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +15 -6
  209. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +2 -1
  210. package/src/mem_pools/tx_pool_v2/interfaces.ts +9 -4
  211. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +60 -14
  212. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +29 -43
  213. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +13 -1
  214. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +23 -6
  215. package/src/msg_validators/attestation_validator/README.md +49 -0
  216. package/src/msg_validators/attestation_validator/attestation_validator.ts +21 -9
  217. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +4 -1
  218. package/src/msg_validators/clock_tolerance.ts +72 -3
  219. package/src/msg_validators/proposal_validator/README.md +123 -0
  220. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +17 -4
  221. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +23 -7
  222. package/src/msg_validators/proposal_validator/proposal_validator.ts +74 -58
  223. package/src/msg_validators/tx_validator/README.md +5 -1
  224. package/src/msg_validators/tx_validator/allowed_public_setup.ts +16 -35
  225. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  226. package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
  227. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  228. package/src/msg_validators/tx_validator/data_validator.ts +42 -1
  229. package/src/msg_validators/tx_validator/factory.ts +43 -3
  230. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  231. package/src/msg_validators/tx_validator/gas_validator.ts +65 -16
  232. package/src/msg_validators/tx_validator/index.ts +1 -0
  233. package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
  234. package/src/msg_validators/tx_validator/phases_validator.ts +60 -1
  235. package/src/services/data_store.ts +5 -13
  236. package/src/services/dummy_service.ts +8 -2
  237. package/src/services/encoding.ts +9 -1
  238. package/src/services/gossipsub/topic_score_params.ts +36 -4
  239. package/src/services/libp2p/libp2p_service.ts +160 -142
  240. package/src/services/peer-manager/peer_manager.ts +43 -10
  241. package/src/services/peer-manager/peer_scoring.ts +27 -5
  242. package/src/services/reqresp/README.md +229 -0
  243. package/src/services/reqresp/batch-tx-requester/README.md +46 -7
  244. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +64 -69
  245. package/src/services/reqresp/batch-tx-requester/interface.ts +2 -1
  246. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +13 -6
  247. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +5 -0
  248. package/src/services/reqresp/config.ts +2 -2
  249. package/src/services/reqresp/interface.ts +21 -11
  250. package/src/services/reqresp/metrics.ts +0 -1
  251. package/src/services/reqresp/protocols/index.ts +0 -1
  252. package/src/services/reqresp/protocols/tx.ts +1 -3
  253. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  254. package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
  255. package/src/services/reqresp/reqresp.ts +37 -12
  256. package/src/services/service.ts +6 -1
  257. package/src/services/tx_collection/fast_tx_collection.ts +57 -83
  258. package/src/services/tx_collection/file_store_tx_source.ts +43 -31
  259. package/src/services/tx_collection/proposal_tx_collector.ts +8 -13
  260. package/src/services/tx_collection/request_tracker.ts +127 -0
  261. package/src/services/tx_collection/slow_tx_collection.ts +1 -1
  262. package/src/services/tx_collection/tx_collection.ts +3 -5
  263. package/src/services/tx_collection/tx_source.ts +8 -7
  264. package/src/test-helpers/make-test-p2p-clients.ts +1 -1
  265. package/src/test-helpers/mock-pubsub.ts +31 -5
  266. package/src/test-helpers/reqresp-nodes.ts +3 -3
  267. package/src/test-helpers/testbench-utils.ts +30 -3
  268. package/src/testbench/p2p_client_testbench_worker.ts +72 -15
  269. package/src/testbench/worker_client_manager.ts +68 -6
  270. package/src/util.ts +1 -1
  271. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  272. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  273. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  274. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  275. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  276. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  277. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  278. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  279. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  280. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  281. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  282. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -122
  283. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  284. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  285. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +0 -84
  286. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  287. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  288. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  289. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  290. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  291. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  292. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  293. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  294. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  295. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  296. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  297. package/dest/mem_pools/tx_pool/index.js +0 -2
  298. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  299. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  300. package/dest/mem_pools/tx_pool/priority.js +0 -15
  301. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  302. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  303. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  304. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  305. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  306. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -400
  307. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -24
  308. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  309. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -378
  310. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  311. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  312. package/dest/services/reqresp/protocols/block.js +0 -32
  313. package/dest/services/tx_collection/missing_txs_tracker.d.ts +0 -32
  314. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +0 -1
  315. package/dest/services/tx_collection/missing_txs_tracker.js +0 -27
  316. package/src/mem_pools/tx_pool/README.md +0 -270
  317. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  318. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  319. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  320. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -162
  321. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  322. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  323. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  324. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  325. package/src/mem_pools/tx_pool/index.ts +0 -2
  326. package/src/mem_pools/tx_pool/priority.ts +0 -20
  327. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  328. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -319
  329. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -373
  330. package/src/services/reqresp/protocols/block.ts +0 -37
  331. package/src/services/tx_collection/missing_txs_tracker.ts +0 -52
@@ -370,14 +370,15 @@ function applyDecs2203RFactory() {
370
370
  function _apply_decs_2203_r(targetClass, memberDecs, classDecs, parentClass) {
371
371
  return (_apply_decs_2203_r = applyDecs2203RFactory())(targetClass, memberDecs, classDecs, parentClass);
372
372
  }
373
- var _dec, _dec1, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _initProto;
373
+ var _dec, _dec1, _dec2, _dec3, _dec4, _dec5, _dec6, _initProto;
374
374
  import { BlockNumber } from '@aztec/foundation/branded-types';
375
+ import { maxBy } from '@aztec/foundation/collection';
375
376
  import { createLibp2pComponentLogger, createLogger } from '@aztec/foundation/log';
376
377
  import { RunningPromise } from '@aztec/foundation/running-promise';
377
378
  import { Timer } from '@aztec/foundation/timer';
378
379
  import { protocolContractsHash } from '@aztec/protocol-contracts';
379
380
  import { GasFees } from '@aztec/stdlib/gas';
380
- import { BlockProposal, CheckpointAttestation, CheckpointProposal, P2PMessage, PeerErrorSeverity, TopicType, createTopicString, getTopicsForConfig, metricsTopicStrToLabels } from '@aztec/stdlib/p2p';
381
+ import { BlockProposal, CheckpointAttestation, CheckpointProposal, P2PMessage, PeerErrorSeverity, PeerErrorSeverityByHarshness, TopicType, createTopicString, getTopicsForConfig, metricsTopicStrToLabels } from '@aztec/stdlib/p2p';
381
382
  import { MerkleTreeId } from '@aztec/stdlib/trees';
382
383
  import { Tx } from '@aztec/stdlib/tx';
383
384
  import { compressComponentVersions } from '@aztec/stdlib/versioning';
@@ -394,6 +395,7 @@ import { mplex } from '@libp2p/mplex';
394
395
  import { tcp } from '@libp2p/tcp';
395
396
  import { ENR } from '@nethermindeth/enr';
396
397
  import { createLibp2p } from 'libp2p';
398
+ import { CheckpointProposalReceivedCallbackNotRegisteredError } from '../../errors/p2p-service.error.js';
397
399
  import { BlockProposalValidator, CheckpointAttestationValidator, CheckpointProposalValidator, DoubleSpendTxValidator, FishermanAttestationValidator, getDefaultAllowedSetupFunctions } from '../../msg_validators/index.js';
398
400
  import { MessageSeenValidator } from '../../msg_validators/msg_seen_validator/msg_seen_validator.js';
399
401
  import { createFirstStageTxValidationsForGossipedTransactions, createSecondStageTxValidationsForGossipedTransactions, createTxValidatorForBlockProposalReceivedTxs, createTxValidatorForReqResponseReceivedTxs } from '../../msg_validators/tx_validator/factory.js';
@@ -407,7 +409,7 @@ import { APP_SPECIFIC_WEIGHT, gossipScoreThresholds } from '../gossipsub/scoring
407
409
  import { createAllTopicScoreParams } from '../gossipsub/topic_score_params.js';
408
410
  import { PeerManager } from '../peer-manager/peer_manager.js';
409
411
  import { PeerScoring } from '../peer-manager/peer_scoring.js';
410
- import { DEFAULT_SUB_PROTOCOL_VALIDATORS, ReqRespSubProtocol, ValidationError, pingHandler, reqGoodbyeHandler, reqRespBlockHandler, reqRespBlockTxsHandler, reqRespStatusHandler, reqRespTxHandler } from '../reqresp/index.js';
412
+ import { DEFAULT_SUB_PROTOCOL_VALIDATORS, ReqRespSubProtocol, ValidationError, pingHandler, reqGoodbyeHandler, reqRespBlockTxsHandler, reqRespStatusHandler, reqRespTxHandler } from '../reqresp/index.js';
411
413
  import { ReqResp } from '../reqresp/reqresp.js';
412
414
  import { P2PInstrumentation } from './instrumentation.js';
413
415
  _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId, attestation)=>({
@@ -429,12 +431,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
429
431
  [Attributes.BLOCK_ARCHIVE]: request.archiveRoot.toString()
430
432
  })), _dec6 = trackSpan('Libp2pService.validateRequestedTx', (requestedTxHash, _responseTx)=>({
431
433
  [Attributes.TX_HASH]: requestedTxHash.toString()
432
- })), _dec7 = trackSpan('Libp2pService.validateRequestedBlock', (requestedBlockNumber, _responseBlock)=>({
433
- [Attributes.BLOCK_NUMBER]: requestedBlockNumber.toString()
434
- })), _dec8 = trackSpan('Libp2pService.validateCheckpointAttestation', async (_, attestation)=>({
435
- [Attributes.SLOT_NUMBER]: attestation.payload.header.slotNumber,
436
- [Attributes.BLOCK_ARCHIVE]: attestation.archive.toString(),
437
- [Attributes.P2P_ID]: await attestation.p2pMessageLoggingIdentifier().then((i)=>i.toString())
438
434
  }));
439
435
  /**
440
436
  * Lib P2P implementation of the P2PService interface.
@@ -485,16 +481,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
485
481
  _dec6,
486
482
  2,
487
483
  "validateRequestedTxs"
488
- ],
489
- [
490
- _dec7,
491
- 2,
492
- "validateRequestedBlock"
493
- ],
494
- [
495
- _dec8,
496
- 2,
497
- "validateCheckpointAttestation"
498
484
  ]
499
485
  ], []));
500
486
  }
@@ -518,7 +504,12 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
518
504
  * Callback for when a checkpoint proposal is received from a peer.
519
505
  * @param checkpoint - The checkpoint proposal received from the peer.
520
506
  * @returns The attestations for the checkpoint, if any.
521
- */ checkpointReceivedCallback;
507
+ */ allNodesCheckpointReceivedCallback;
508
+ /**
509
+ * Callback for when a checkpoint proposal is received - specifically for validators - from a peer.
510
+ * @param checkpoint - The checkpoint proposal received from the peer.
511
+ * @returns The attestations for the checkpoint, if any.
512
+ */ validatorCheckpointReceivedCallback;
522
513
  gossipSubEventHandler;
523
514
  instrumentation;
524
515
  telemetry;
@@ -540,24 +531,30 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
540
531
  this.topicStrings[TopicType.block_proposal] = createTopicString(TopicType.block_proposal, this.protocolVersion);
541
532
  this.topicStrings[TopicType.checkpoint_proposal] = createTopicString(TopicType.checkpoint_proposal, this.protocolVersion);
542
533
  this.topicStrings[TopicType.checkpoint_attestation] = createTopicString(TopicType.checkpoint_attestation, this.protocolVersion);
543
- this.blockProposalValidator = new BlockProposalValidator(epochCache, {
544
- txsPermitted: !config.disableTransactions,
545
- maxTxsPerBlock: config.maxTxsPerBlock
546
- });
547
- this.checkpointProposalValidator = new CheckpointProposalValidator(epochCache, {
534
+ const p2pPropagationTime = config.attestationPropagationTime;
535
+ const proposalValidatorOpts = {
548
536
  txsPermitted: !config.disableTransactions,
549
- maxTxsPerBlock: config.maxTxsPerBlock
537
+ maxTxsPerBlock: config.validateMaxTxsPerBlock ?? config.validateMaxTxsPerCheckpoint,
538
+ p2pPropagationTime
539
+ };
540
+ this.blockProposalValidator = new BlockProposalValidator(epochCache, proposalValidatorOpts);
541
+ this.checkpointProposalValidator = new CheckpointProposalValidator(epochCache, proposalValidatorOpts);
542
+ this.checkpointAttestationValidator = config.fishermanMode ? new FishermanAttestationValidator(epochCache, mempools.attestationPool, telemetry, {
543
+ l1PublishingTime: config.l1PublishingTime
544
+ }) : new CheckpointAttestationValidator(epochCache, {
545
+ l1PublishingTime: config.l1PublishingTime
550
546
  });
551
- this.checkpointAttestationValidator = config.fishermanMode ? new FishermanAttestationValidator(epochCache, mempools.attestationPool, telemetry) : new CheckpointAttestationValidator(epochCache);
552
547
  this.gossipSubEventHandler = this.handleGossipSubEvent.bind(this);
553
548
  this.blockReceivedCallback = async (block)=>{
554
- this.logger.debug(`Handler not yet registered: Block received callback not set. Received block for slot ${block.slotNumber} from peer.`, {
549
+ this.logger.warn(`Handler for block received not yet registered on P2P service. Received block ${block.blockNumber} for slot ${block.slotNumber} from peer.`, {
555
550
  p2pMessageIdentifier: await block.p2pMessageLoggingIdentifier()
556
551
  });
557
- return false;
552
+ return true;
558
553
  };
559
- this.checkpointReceivedCallback = (checkpoint)=>{
560
- this.logger.debug(`Handler not yet registered: Checkpoint received callback not set. Received checkpoint for slot ${checkpoint.slotNumber} from peer.`);
554
+ this.allNodesCheckpointReceivedCallback = (_checkpoint)=>{
555
+ throw new CheckpointProposalReceivedCallbackNotRegisteredError();
556
+ };
557
+ this.validatorCheckpointReceivedCallback = (_checkpoint)=>{
561
558
  return Promise.resolve(undefined);
562
559
  };
563
560
  }
@@ -610,9 +607,12 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
610
607
  const l1Constants = epochCache.getL1Constants();
611
608
  const topicScoreParams = createAllTopicScoreParams(protocolVersion, {
612
609
  slotDurationMs: l1Constants.slotDuration * 1000,
610
+ ethereumSlotDuration: l1Constants.ethereumSlotDuration,
613
611
  heartbeatIntervalMs: config.gossipsubInterval,
614
612
  targetCommitteeSize: l1Constants.targetCommitteeSize,
615
613
  blockDurationMs: config.blockDurationMs,
614
+ l1PublishingTime: config.l1PublishingTime,
615
+ p2pPropagationTime: config.attestationPropagationTime,
616
616
  expectedBlockProposalsPerSlot: config.expectedBlockProposalsPerSlot
617
617
  });
618
618
  const node = await createLibp2p({
@@ -727,6 +727,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
727
727
  const peerScoring = new PeerScoring(config, telemetry);
728
728
  const reqresp = new ReqResp(config, node, peerScoring, createLogger(`${logger.module}:reqresp`));
729
729
  const peerManager = new PeerManager(node, peerDiscoveryService, config, telemetry, createLogger(`${logger.module}:peer_manager`), peerScoring, reqresp, worldStateSynchronizer, protocolVersion, epochCache);
730
+ // Gate req/resp data protocols for unauthenticated peers when p2pAllowOnlyValidators is enabled
731
+ reqresp.setShouldRejectPeer((peerId)=>peerManager.shouldDisableP2PGossip(peerId));
730
732
  // Configure application-specific scoring for gossipsub.
731
733
  // The weight scales app score to align with gossipsub thresholds:
732
734
  // - Disconnect (-50) × 10 = -500 = gossipThreshold (stops receiving gossip)
@@ -753,13 +755,11 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
753
755
  // Create request response protocol handlers
754
756
  const txHandler = reqRespTxHandler(this.mempools);
755
757
  const goodbyeHandler = reqGoodbyeHandler(this.peerManager);
756
- const blockHandler = reqRespBlockHandler(this.archiver);
757
758
  const statusHandler = reqRespStatusHandler(this.protocolVersion, this.worldStateSynchronizer, this.logger);
758
759
  const requestResponseHandlers = {
759
760
  [ReqRespSubProtocol.PING]: pingHandler,
760
761
  [ReqRespSubProtocol.STATUS]: statusHandler.bind(this),
761
- [ReqRespSubProtocol.GOODBYE]: goodbyeHandler.bind(this),
762
- [ReqRespSubProtocol.BLOCK]: blockHandler.bind(this)
762
+ [ReqRespSubProtocol.GOODBYE]: goodbyeHandler.bind(this)
763
763
  };
764
764
  if (!this.config.disableTransactions) {
765
765
  const blockTxsHandler = reqRespBlockTxsHandler(this.mempools.attestationPool, this.archiver, this.mempools.txPool);
@@ -772,8 +772,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
772
772
  const reqrespSubProtocolValidators = {
773
773
  ...DEFAULT_SUB_PROTOCOL_VALIDATORS,
774
774
  [ReqRespSubProtocol.TX]: this.validateRequestedTxs.bind(this),
775
- [ReqRespSubProtocol.BLOCK_TXS]: this.validateRequestedBlockTxs.bind(this),
776
- [ReqRespSubProtocol.BLOCK]: this.validateRequestedBlock.bind(this)
775
+ [ReqRespSubProtocol.BLOCK_TXS]: this.validateRequestedBlockTxs.bind(this)
777
776
  };
778
777
  await this.peerManager.initializePeers();
779
778
  await this.reqresp.start(requestResponseHandlers, reqrespSubProtocolValidators);
@@ -861,8 +860,14 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
861
860
  registerBlockReceivedCallback(callback) {
862
861
  this.blockReceivedCallback = callback;
863
862
  }
864
- registerCheckpointReceivedCallback(callback) {
865
- this.checkpointReceivedCallback = callback;
863
+ registerValidatorCheckpointReceivedCallback(callback) {
864
+ this.validatorCheckpointReceivedCallback = callback;
865
+ }
866
+ registerAllNodesCheckpointReceivedCallback(callback) {
867
+ this.allNodesCheckpointReceivedCallback = callback;
868
+ }
869
+ async notifyOwnCheckpointProposal(checkpoint) {
870
+ await this.allNodesCheckpointReceivedCallback(checkpoint, this.node.peerId);
866
871
  }
867
872
  /**
868
873
  * Registers a callback to be invoked when a duplicate proposal is detected.
@@ -928,6 +933,12 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
928
933
  if (!validator || !validator.addMessage(msgId)) {
929
934
  this.instrumentation.incMessagePrevalidationStatus(false, topicType);
930
935
  this.node.services.pubsub.reportMessageValidationResult(msgId, source.toString(), TopicValidatorResult.Ignore);
936
+ if (topicType === TopicType.tx) {
937
+ this.logger.verbose(`Ignoring already-seen tx gossip message`, {
938
+ msgId,
939
+ source: source.toString()
940
+ });
941
+ }
931
942
  return {
932
943
  result: false,
933
944
  topicType
@@ -1033,29 +1044,67 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1033
1044
  return;
1034
1045
  }
1035
1046
  async validateReceivedMessage(validationFunc, msgId, source, topicType) {
1047
+ // Default to reject result with a penalty if validation function throws an error
1036
1048
  let resultAndObj = {
1037
- result: TopicValidatorResult.Reject
1049
+ result: TopicValidatorResult.Reject,
1050
+ severity: PeerErrorSeverity.MidToleranceError
1038
1051
  };
1039
1052
  const timer = new Timer();
1040
1053
  try {
1041
1054
  resultAndObj = await validationFunc();
1042
1055
  } catch (err) {
1043
- this.peerManager.penalizePeer(source, PeerErrorSeverity.LowToleranceError);
1044
- this.logger.error(`Error deserializing and validating gossipsub message`, err, {
1056
+ this.logger.error(`Error validating gossipsub message`, err, {
1045
1057
  msgId,
1046
1058
  source: source.toString(),
1047
1059
  topicType
1048
1060
  });
1049
1061
  }
1050
1062
  if (resultAndObj.result === TopicValidatorResult.Accept) {
1063
+ this.logger.debug(`Message ${topicType} accepted by validator`, {
1064
+ msgId,
1065
+ source: source.toString(),
1066
+ topicType
1067
+ });
1051
1068
  this.instrumentation.recordMessageValidation(topicType, timer);
1069
+ } else if (resultAndObj.result === TopicValidatorResult.Reject) {
1070
+ this.logger.warn(`Message ${topicType} rejected by validator with severity ${resultAndObj.severity}`, {
1071
+ msgId,
1072
+ source: source.toString(),
1073
+ topicType,
1074
+ severity: resultAndObj.severity
1075
+ });
1076
+ this.peerManager.penalizePeer(source, resultAndObj.severity);
1077
+ } else {
1078
+ this.logger.trace(`Message ${topicType} ignored by validator`, {
1079
+ msgId,
1080
+ source: source.toString(),
1081
+ topicType
1082
+ });
1052
1083
  }
1053
1084
  this.node.services.pubsub.reportMessageValidationResult(msgId, source.toString(), resultAndObj.result);
1054
1085
  return resultAndObj;
1055
1086
  }
1087
+ tryDeserialize(deserializeFunc, msgId, source) {
1088
+ try {
1089
+ return deserializeFunc();
1090
+ } catch (err) {
1091
+ this.logger.warn(`Failed to deserialize gossipsub message from buffer`, {
1092
+ err,
1093
+ msgId,
1094
+ source: source.toString()
1095
+ });
1096
+ return undefined;
1097
+ }
1098
+ }
1056
1099
  async handleGossipedTx(payloadData, msgId, source) {
1057
1100
  const validationFunc = async ()=>{
1058
- const tx = Tx.fromBuffer(payloadData);
1101
+ const tx = this.tryDeserialize(()=>Tx.fromBuffer(payloadData), msgId, source);
1102
+ if (!tx) {
1103
+ return {
1104
+ result: TopicValidatorResult.Reject,
1105
+ severity: PeerErrorSeverity.LowToleranceError
1106
+ };
1107
+ }
1059
1108
  const currentBlockNumber = await this.archiver.getBlockNumber();
1060
1109
  const { ts: nextSlotTimestamp } = this.epochCache.getEpochAndSlotInNextL1Slot();
1061
1110
  // Stage 1: fast validators (metadata, data, timestamps, double-spend, gas, phases, block header)
@@ -1071,14 +1120,22 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1071
1120
  const txBlockNumber = BlockNumber(currentBlockNumber + 1);
1072
1121
  severity = await this.handleDoubleSpendFailure(tx, txBlockNumber);
1073
1122
  }
1074
- this.peerManager.penalizePeer(source, severity);
1123
+ this.logger.verbose(`Rejecting gossiped tx ${tx.getTxHash().toString()}: stage 1 validation failed`, {
1124
+ validator: name,
1125
+ severity,
1126
+ source: source.toString()
1127
+ });
1075
1128
  return {
1076
- result: TopicValidatorResult.Reject
1129
+ result: TopicValidatorResult.Reject,
1130
+ severity
1077
1131
  };
1078
1132
  }
1079
1133
  // Pool pre-check: see if the pool would accept this tx before doing expensive proof verification
1080
1134
  const canAdd = await this.mempools.txPool.canAddPendingTx(tx);
1081
1135
  if (canAdd === 'ignored') {
1136
+ this.logger.verbose(`Ignoring gossiped tx ${tx.getTxHash().toString()}: pool pre-check returned ignored`, {
1137
+ source: source.toString()
1138
+ });
1082
1139
  return {
1083
1140
  result: TopicValidatorResult.Ignore,
1084
1141
  obj: tx
@@ -1088,10 +1145,15 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1088
1145
  const secondStageValidators = this.createSecondStageMessageValidators();
1089
1146
  const secondStageOutcome = await this.runValidations(tx, secondStageValidators);
1090
1147
  if (!secondStageOutcome.allPassed) {
1091
- const { severity } = secondStageOutcome.failure;
1092
- this.peerManager.penalizePeer(source, severity);
1148
+ const { severity, name } = secondStageOutcome.failure;
1149
+ this.logger.verbose(`Rejecting gossiped tx ${tx.getTxHash().toString()}: stage 2 validation failed`, {
1150
+ validator: name,
1151
+ severity,
1152
+ source: source.toString()
1153
+ });
1093
1154
  return {
1094
- result: TopicValidatorResult.Reject
1155
+ result: TopicValidatorResult.Reject,
1156
+ severity
1095
1157
  };
1096
1158
  }
1097
1159
  // Pool add: persist the tx
@@ -1103,7 +1165,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1103
1165
  });
1104
1166
  const wasAccepted = addResult.accepted.some((h)=>h.equals(txHash));
1105
1167
  const wasIgnored = addResult.ignored.some((h)=>h.equals(txHash));
1106
- this.logger.trace(`Validate propagated tx`, {
1168
+ this.logger.verbose(`Validate propagated tx ${txHash.toString()}`, {
1107
1169
  wasAccepted,
1108
1170
  wasIgnored,
1109
1171
  [Attributes.P2P_ID]: source.toString()
@@ -1119,8 +1181,13 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1119
1181
  obj: tx
1120
1182
  };
1121
1183
  } else {
1184
+ this.logger.warn(`Gossiped tx ${txHash.toString()} unexpectedly rejected by pool`, {
1185
+ source: source.toString(),
1186
+ txHash: txHash.toString()
1187
+ });
1122
1188
  return {
1123
- result: TopicValidatorResult.Reject
1189
+ result: TopicValidatorResult.Reject,
1190
+ severity: PeerErrorSeverity.HighToleranceError
1124
1191
  };
1125
1192
  }
1126
1193
  };
@@ -1141,7 +1208,16 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1141
1208
  * Process a checkpoint attestation from a peer.
1142
1209
  * Validates the attestation and adds it to the pool.
1143
1210
  */ async processCheckpointAttestationFromPeer(payloadData, msgId, source) {
1144
- const { result, obj: attestation } = await this.validateReceivedMessage(()=>this.validateAndStoreCheckpointAttestation(source, CheckpointAttestation.fromBuffer(payloadData)), msgId, source, TopicType.checkpoint_attestation);
1211
+ const { result, obj: attestation } = await this.validateReceivedMessage(()=>{
1212
+ const attestation = this.tryDeserialize(()=>CheckpointAttestation.fromBuffer(payloadData), msgId, source);
1213
+ if (!attestation) {
1214
+ return Promise.resolve({
1215
+ result: TopicValidatorResult.Reject,
1216
+ severity: PeerErrorSeverity.LowToleranceError
1217
+ });
1218
+ }
1219
+ return this.validateAndStoreCheckpointAttestation(source, attestation);
1220
+ }, msgId, source, TopicType.checkpoint_attestation);
1145
1221
  if (result !== TopicValidatorResult.Accept || !attestation) {
1146
1222
  return;
1147
1223
  }
@@ -1156,9 +1232,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1156
1232
  const validationResult = await this.checkpointAttestationValidator.validate(attestation);
1157
1233
  if (validationResult.result === 'reject') {
1158
1234
  this.logger.warn(`Penalizing peer ${peerId} for checkpoint attestation validation failure`);
1159
- this.peerManager.penalizePeer(peerId, validationResult.severity);
1160
1235
  return {
1161
- result: TopicValidatorResult.Reject
1236
+ result: TopicValidatorResult.Reject,
1237
+ severity: validationResult.severity
1162
1238
  };
1163
1239
  }
1164
1240
  if (validationResult.result === 'ignore') {
@@ -1185,9 +1261,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1185
1261
  obj: attestation
1186
1262
  };
1187
1263
  }
1188
- // Could not add (cap reached for signer), no need to re-broadcast
1264
+ // Could not add (cap reached for signer), penalize and do not re-broadcast
1189
1265
  if (!added) {
1190
- this.logger.warn(`Dropping checkpoint attestation due to cap`, {
1266
+ this.logger.warn(`Rejecting checkpoint attestation due to cap`, {
1191
1267
  slot: slot.toString(),
1192
1268
  archive: attestation.archive.toString(),
1193
1269
  source: peerId.toString(),
@@ -1195,8 +1271,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1195
1271
  count
1196
1272
  });
1197
1273
  return {
1198
- result: TopicValidatorResult.Ignore,
1199
- obj: attestation
1274
+ result: TopicValidatorResult.Reject,
1275
+ severity: PeerErrorSeverity.HighToleranceError
1200
1276
  };
1201
1277
  }
1202
1278
  // Check if this is a duplicate attestation (signer attested to a different proposal at the same slot)
@@ -1234,9 +1310,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1234
1310
  const validationResult = await this.blockProposalValidator.validate(block);
1235
1311
  if (validationResult.result === 'reject') {
1236
1312
  this.logger.warn(`Penalizing peer ${peerId} for block proposal validation failure`);
1237
- this.peerManager.penalizePeer(peerId, validationResult.severity);
1238
1313
  return {
1239
- result: TopicValidatorResult.Reject
1314
+ result: TopicValidatorResult.Reject,
1315
+ severity: validationResult.severity
1240
1316
  };
1241
1317
  }
1242
1318
  if (validationResult.result === 'ignore') {
@@ -1266,7 +1342,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1266
1342
  }
1267
1343
  // Too many blocks received for this slot and index, penalize peer and do not re-broadcast
1268
1344
  if (!added) {
1269
- this.peerManager.penalizePeer(peerId, PeerErrorSeverity.HighToleranceError);
1270
1345
  this.logger.warn(`Penalizing peer for block proposal exceeding per-position cap`, {
1271
1346
  ...block.toBlockInfo(),
1272
1347
  indexWithinCheckpoint: block.indexWithinCheckpoint,
@@ -1278,7 +1353,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1278
1353
  result: TopicValidatorResult.Reject,
1279
1354
  metadata: {
1280
1355
  isEquivocated
1281
- }
1356
+ },
1357
+ severity: PeerErrorSeverity.HighToleranceError
1282
1358
  };
1283
1359
  }
1284
1360
  // If this was a duplicate proposal, do not process it, but do invoke the duplicate callback,
@@ -1327,7 +1403,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1327
1403
  // Note: Validators do NOT attest to individual blocks, only to checkpoint proposals.
1328
1404
  const isValid = await this.blockReceivedCallback(block, sender);
1329
1405
  if (!isValid) {
1330
- this.logger.warn(`Block proposal validation failed for block ${block.blockNumber}`, block.toBlockInfo());
1406
+ this.logger.info(`Block proposal validation failed for block ${block.blockNumber}`, block.toBlockInfo());
1331
1407
  }
1332
1408
  }
1333
1409
  /**
@@ -1352,9 +1428,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1352
1428
  const validationResult = await this.checkpointProposalValidator.validate(checkpoint);
1353
1429
  if (validationResult.result === 'reject') {
1354
1430
  this.logger.warn(`Penalizing peer ${peerId} for checkpoint proposal validation failure`);
1355
- this.peerManager.penalizePeer(peerId, validationResult.severity);
1356
1431
  return {
1357
- result: TopicValidatorResult.Reject
1432
+ result: TopicValidatorResult.Reject,
1433
+ severity: validationResult.severity
1358
1434
  };
1359
1435
  }
1360
1436
  if (validationResult.result === 'ignore') {
@@ -1371,18 +1447,20 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1371
1447
  [Attributes.SLOT_NUMBER]: checkpoint.slotNumber.toString(),
1372
1448
  [Attributes.P2P_ID]: peerId.toString()
1373
1449
  });
1374
- const { result, obj, metadata: { isEquivocated } = {} } = await this.validateAndStoreBlockProposal(peerId, blockProposal);
1375
- if (result === TopicValidatorResult.Reject || !obj || isEquivocated) {
1450
+ const blockProposalResult = await this.validateAndStoreBlockProposal(peerId, blockProposal);
1451
+ const { obj, metadata: { isEquivocated } = {} } = blockProposalResult;
1452
+ if (blockProposalResult.result === TopicValidatorResult.Reject || !obj || isEquivocated) {
1376
1453
  this.logger.debug(`Rejecting checkpoint due to invalid last block proposal`, {
1377
1454
  [Attributes.SLOT_NUMBER]: checkpoint.slotNumber.toString(),
1378
1455
  [Attributes.P2P_ID]: peerId.toString(),
1379
1456
  isEquivocated,
1380
- result
1457
+ result: blockProposalResult.result
1381
1458
  });
1382
1459
  return {
1383
- result: TopicValidatorResult.Reject
1460
+ result: TopicValidatorResult.Reject,
1461
+ severity: 'severity' in blockProposalResult ? blockProposalResult.severity : PeerErrorSeverity.MidToleranceError
1384
1462
  };
1385
- } else if (result === TopicValidatorResult.Accept && obj && !isEquivocated) {
1463
+ } else if (blockProposalResult.result === TopicValidatorResult.Accept && obj && !isEquivocated) {
1386
1464
  processBlock = true;
1387
1465
  }
1388
1466
  }
@@ -1409,7 +1487,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1409
1487
  // Too many checkpoint proposals received for this slot, penalize peer and do not re-broadcast
1410
1488
  // Note: We still return the checkpoint obj so the lastBlock can be processed if valid
1411
1489
  if (!added) {
1412
- this.peerManager.penalizePeer(peerId, PeerErrorSeverity.HighToleranceError);
1413
1490
  this.logger.warn(`Penalizing peer for checkpoint proposal exceeding per-slot cap`, {
1414
1491
  ...checkpoint.toCheckpointInfo(),
1415
1492
  count,
@@ -1421,7 +1498,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1421
1498
  metadata: {
1422
1499
  isEquivocated,
1423
1500
  processBlock
1424
- }
1501
+ },
1502
+ severity: PeerErrorSeverity.HighToleranceError
1425
1503
  };
1426
1504
  }
1427
1505
  // If this was a duplicate proposal, do not process it, but do invoke the duplicate callback,
@@ -1471,9 +1549,10 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1471
1549
  archive: checkpoint.archive.toString(),
1472
1550
  source: sender.toString()
1473
1551
  });
1552
+ await this.allNodesCheckpointReceivedCallback(checkpoint, sender);
1474
1553
  // Call the checkpoint received callback with the core version (without lastBlock)
1475
1554
  // to validate and potentially generate attestations
1476
- const attestations = await this.checkpointReceivedCallback(checkpoint, sender);
1555
+ const attestations = await this.validatorCheckpointReceivedCallback(checkpoint, sender);
1477
1556
  if (attestations && attestations.length > 0) {
1478
1557
  // If the callback returned attestations, add them to the pool and propagate them
1479
1558
  await this.mempools.attestationPool.addOwnCheckpointAttestations(attestations);
@@ -1593,45 +1672,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1593
1672
  return false;
1594
1673
  }
1595
1674
  }
1596
- /**
1597
- * Validates a BLOCK response.
1598
- *
1599
- * If a local copy exists, enforces hash equality. If missing, rejects (no penalty) since the hash cannot be verified.
1600
- * Penalizes on block number mismatch or hash mismatch.
1601
- *
1602
- * @param requestedBlockNumber - The requested block number.
1603
- * @param responseBlock - The block returned by the peer.
1604
- * @param peerId - The peer that returned the block.
1605
- * @returns True if the response is valid, false otherwise.
1606
- */ async validateRequestedBlock(requestedBlockNumber, responseBlock, peerId) {
1607
- try {
1608
- const reqNum = Number(requestedBlockNumber.toString());
1609
- if (responseBlock.number !== reqNum) {
1610
- this.peerManager.penalizePeer(peerId, PeerErrorSeverity.LowToleranceError);
1611
- return false;
1612
- }
1613
- const local = await this.archiver.getBlock(BlockNumber(reqNum));
1614
- if (!local) {
1615
- // We are missing the local block; we cannot verify the hash yet. Reject without penalizing.
1616
- // TODO: Consider extending this validator to accept an expected hash or
1617
- // performing quorum-based checks when using P2P syncing prior to L1 sync.
1618
- this.logger.warn(`Local block ${reqNum} not found; rejecting BLOCK response without hash verification`);
1619
- return false;
1620
- }
1621
- const [localHash, respHash] = await Promise.all([
1622
- local.hash(),
1623
- responseBlock.hash()
1624
- ]);
1625
- if (!localHash.equals(respHash)) {
1626
- this.peerManager.penalizePeer(peerId, PeerErrorSeverity.MidToleranceError);
1627
- return false;
1628
- }
1629
- return true;
1630
- } catch (e) {
1631
- this.logger.warn(`Error validating requested block`, e);
1632
- return false;
1633
- }
1634
- }
1635
1675
  async validateRequestedTx(tx, peerId, txValidator, requested) {
1636
1676
  const penalize = (severity)=>this.peerManager.penalizePeer(peerId, severity);
1637
1677
  if (requested && !requested.has(tx.getTxHash().toString())) {
@@ -1696,7 +1736,12 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1696
1736
  ...this.config.txPublicSetupAllowListExtend ?? []
1697
1737
  ];
1698
1738
  const blockNumber = BlockNumber(currentBlockNumber + 1);
1699
- return createFirstStageTxValidationsForGossipedTransactions(nextSlotTimestamp, blockNumber, this.worldStateSynchronizer, gasFees, this.config.l1ChainId, this.config.rollupVersion, protocolContractsHash, this.archiver, !this.config.disableTransactions, allowedInSetup, this.logger.getBindings());
1739
+ const l1Constants = await this.archiver.getL1Constants();
1740
+ return createFirstStageTxValidationsForGossipedTransactions(nextSlotTimestamp, blockNumber, this.worldStateSynchronizer, gasFees, this.config.l1ChainId, this.config.rollupVersion, protocolContractsHash, this.archiver, !this.config.disableTransactions, allowedInSetup, this.logger.getBindings(), {
1741
+ rollupManaLimit: l1Constants.rollupManaLimit,
1742
+ maxBlockL2Gas: this.config.validateMaxL2BlockGas,
1743
+ maxBlockDAGas: this.config.validateMaxDABlockGas
1744
+ });
1700
1745
  }
1701
1746
  /** Creates the second stage (expensive proof verification) validators for gossiped transactions. */ createSecondStageMessageValidators() {
1702
1747
  return createSecondStageTxValidationsForGossipedTransactions(this.proofVerifier, this.logger.getBindings());
@@ -1717,8 +1762,10 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1717
1762
  });
1718
1763
  // A promise that resolves when all validations have been run
1719
1764
  const allValidations = await Promise.all(validationPromises);
1720
- const failed = allValidations.find((x)=>!x.isValid);
1721
- if (failed) {
1765
+ const failures = allValidations.filter((x)=>!x.isValid);
1766
+ if (failures.length > 0) {
1767
+ // Pick the most severe failure (lowest tolerance = harshest penalty)
1768
+ const failed = maxBy(failures, (f)=>PeerErrorSeverityByHarshness.indexOf(f.severity));
1722
1769
  return {
1723
1770
  allPassed: false,
1724
1771
  failure: {
@@ -1765,19 +1812,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1765
1812
  }
1766
1813
  return PeerErrorSeverity.HighToleranceError;
1767
1814
  }
1768
- /**
1769
- * Validate a checkpoint attestation.
1770
- *
1771
- * @param attestation - The checkpoint attestation to validate.
1772
- * @returns True if the checkpoint attestation is valid, false otherwise.
1773
- */ async validateCheckpointAttestation(peerId, attestation) {
1774
- const result = await this.checkpointAttestationValidator.validate(attestation);
1775
- if (result.result === 'reject') {
1776
- this.logger.warn(`Penalizing peer ${peerId} for checkpoint attestation validation failure`);
1777
- this.peerManager.penalizePeer(peerId, result.severity);
1778
- }
1779
- return result;
1780
- }
1781
1815
  getPeerScore(peerId) {
1782
1816
  return this.node.services.pubsub.score.score(peerId.toString());
1783
1817
  }
@@ -53,11 +53,15 @@ export declare class PeerManager implements PeerManagerInterface {
53
53
  heartbeat(): Promise<void>;
54
54
  setupDirectPeersIfValidator(): Promise<void>;
55
55
  /**
56
- * Cleans up expired timeouts.
56
+ * Cleans up expired timeouts and stale failed-auth-handshake entries.
57
57
  *
58
58
  * When peers fail to dial after a number of retries, they are temporarily timed out.
59
59
  * This function removes any peers that have been in the timed out state for too long.
60
60
  * To give them a chance to reconnect.
61
+ *
62
+ * Also evicts entries from the failed-auth-handshake map whose expiry window has passed.
63
+ * Without this, peers that probe once and never reconnect would leave their entries in the
64
+ * map forever, causing an unbounded memory leak.
61
65
  */
62
66
  private cleanupExpiredTimeouts;
63
67
  private processScheduledDisconnects;
@@ -171,4 +175,4 @@ export declare class PeerManager implements PeerManagerInterface {
171
175
  handleAuthRequestFromPeer(_authRequest: AuthRequest, peerId: PeerId): Promise<StatusMessage>;
172
176
  private updateAuthenticatedPeers;
173
177
  }
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVlcl9tYW5hZ2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvcGVlci1tYW5hZ2VyL3BlZXJfbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzlELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RixPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRS9ELE9BQU8sS0FBSyxFQUFjLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBTTVELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRCxPQUFPLEVBQUUsV0FBVyxFQUFnQixNQUFNLDhCQUE4QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQXVCLE1BQU0saUNBQWlDLENBQUM7QUFDckYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXJELE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0QsT0FBTyxFQUFrQixLQUFLLFdBQVcsRUFBRSxNQUFNLG1C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
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVlcl9tYW5hZ2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvcGVlci1tYW5hZ2VyL3BlZXJfbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzlELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RixPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRS9ELE9BQU8sS0FBSyxFQUFjLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBTTVELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRCxPQUFPLEVBQUUsV0FBVyxFQUFnQixNQUFNLDhCQUE4QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQXVCLE1BQU0saUNBQWlDLENBQUM7QUFDckYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXJELE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0QsT0FBTyxFQUFrQixLQUFLLFdBQVcsRUFBRSxNQUFNLG1C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
@@ -1 +1 @@
1
- {"version":3,"file":"peer_manager.d.ts","sourceRoot":"","sources":["../../../src/services/peer-manager/peer_manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"peer_manager.d.ts","sourceRoot":"","sources":["../../../src/services/peer-manager/peer_manager.ts"],"names":[],"mappings":"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"}