@aztec/p2p 0.0.1-commit.b1c78909e → 0.0.1-commit.b2a5d0dd1

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 (301) hide show
  1. package/README.md +129 -3
  2. package/dest/client/factory.d.ts +3 -2
  3. package/dest/client/factory.d.ts.map +1 -1
  4. package/dest/client/factory.js +19 -10
  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 +40 -14
  10. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +21 -7
  11. package/dest/config.d.ts +107 -97
  12. package/dest/config.d.ts.map +1 -1
  13. package/dest/config.js +20 -5
  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/index.d.ts +2 -1
  30. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
  31. package/dest/mem_pools/tx_pool_v2/eviction/index.js +1 -0
  32. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
  33. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
  34. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +62 -0
  35. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +2 -2
  36. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +10 -5
  37. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
  38. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +13 -3
  39. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
  40. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +20 -7
  41. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +4 -2
  42. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
  43. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +3 -0
  44. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +1 -1
  45. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
  46. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +13 -5
  47. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +5 -2
  48. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  49. package/dest/msg_validators/attestation_validator/attestation_validator.js +20 -11
  50. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +4 -2
  51. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  52. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +2 -2
  53. package/dest/msg_validators/clock_tolerance.d.ts +12 -1
  54. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
  55. package/dest/msg_validators/clock_tolerance.js +54 -3
  56. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +2 -1
  57. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  58. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +2 -1
  59. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  60. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +3 -1
  61. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  62. package/dest/msg_validators/proposal_validator/proposal_validator.js +19 -11
  63. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  64. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  65. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  66. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  67. package/dest/msg_validators/tx_validator/data_validator.d.ts +1 -1
  68. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  69. package/dest/msg_validators/tx_validator/data_validator.js +35 -2
  70. package/dest/msg_validators/tx_validator/factory.d.ts +10 -2
  71. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  72. package/dest/msg_validators/tx_validator/factory.js +26 -7
  73. package/dest/msg_validators/tx_validator/gas_validator.d.ts +36 -4
  74. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  75. package/dest/msg_validators/tx_validator/gas_validator.js +50 -33
  76. package/dest/msg_validators/tx_validator/phases_validator.d.ts +21 -1
  77. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  78. package/dest/msg_validators/tx_validator/phases_validator.js +28 -1
  79. package/dest/services/data_store.d.ts +1 -1
  80. package/dest/services/data_store.d.ts.map +1 -1
  81. package/dest/services/data_store.js +5 -5
  82. package/dest/services/dummy_service.d.ts +6 -3
  83. package/dest/services/dummy_service.d.ts.map +1 -1
  84. package/dest/services/dummy_service.js +6 -1
  85. package/dest/services/encoding.d.ts +5 -1
  86. package/dest/services/encoding.d.ts.map +1 -1
  87. package/dest/services/encoding.js +7 -1
  88. package/dest/services/gossipsub/topic_score_params.d.ts +13 -2
  89. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
  90. package/dest/services/gossipsub/topic_score_params.js +21 -4
  91. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  92. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  93. package/dest/services/libp2p/instrumentation.js +14 -0
  94. package/dest/services/libp2p/libp2p_service.d.ts +19 -27
  95. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  96. package/dest/services/libp2p/libp2p_service.js +141 -130
  97. package/dest/services/peer-manager/peer_manager.d.ts +6 -2
  98. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  99. package/dest/services/peer-manager/peer_manager.js +37 -10
  100. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  101. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  102. package/dest/services/peer-manager/peer_scoring.js +32 -10
  103. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +11 -8
  104. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  105. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +69 -65
  106. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +3 -2
  107. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  108. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +5 -4
  109. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  110. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +13 -7
  111. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +3 -1
  112. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  113. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +3 -0
  114. package/dest/services/reqresp/config.d.ts +3 -3
  115. package/dest/services/reqresp/config.d.ts.map +1 -1
  116. package/dest/services/reqresp/interface.d.ts +14 -9
  117. package/dest/services/reqresp/interface.d.ts.map +1 -1
  118. package/dest/services/reqresp/interface.js +10 -11
  119. package/dest/services/reqresp/metrics.d.ts +1 -1
  120. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  121. package/dest/services/reqresp/metrics.js +0 -1
  122. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  123. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  124. package/dest/services/reqresp/protocols/index.js +0 -1
  125. package/dest/services/reqresp/protocols/tx.d.ts +1 -1
  126. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  127. package/dest/services/reqresp/protocols/tx.js +1 -3
  128. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  129. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  130. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  131. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  132. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  133. package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
  134. package/dest/services/reqresp/reqresp.d.ts +4 -2
  135. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  136. package/dest/services/reqresp/reqresp.js +28 -11
  137. package/dest/services/service.d.ts +5 -2
  138. package/dest/services/service.d.ts.map +1 -1
  139. package/dest/services/tx_collection/fast_tx_collection.d.ts +1 -4
  140. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  141. package/dest/services/tx_collection/fast_tx_collection.js +57 -73
  142. package/dest/services/tx_collection/file_store_tx_source.d.ts +5 -4
  143. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
  144. package/dest/services/tx_collection/file_store_tx_source.js +39 -29
  145. package/dest/services/tx_collection/proposal_tx_collector.d.ts +6 -7
  146. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  147. package/dest/services/tx_collection/proposal_tx_collector.js +4 -4
  148. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  149. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  150. package/dest/services/tx_collection/request_tracker.js +84 -0
  151. package/dest/services/tx_collection/slow_tx_collection.js +1 -1
  152. package/dest/services/tx_collection/tx_collection.d.ts +3 -6
  153. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  154. package/dest/services/tx_collection/tx_source.d.ts +6 -5
  155. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  156. package/dest/services/tx_collection/tx_source.js +9 -7
  157. package/dest/test-helpers/make-test-p2p-clients.d.ts +1 -1
  158. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  159. package/dest/test-helpers/make-test-p2p-clients.js +4 -1
  160. package/dest/test-helpers/mock-pubsub.d.ts +11 -3
  161. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  162. package/dest/test-helpers/mock-pubsub.js +36 -11
  163. package/dest/test-helpers/reqresp-nodes.d.ts +1 -1
  164. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  165. package/dest/test-helpers/reqresp-nodes.js +5 -3
  166. package/dest/test-helpers/testbench-utils.d.ts +1 -1
  167. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  168. package/dest/test-helpers/testbench-utils.js +21 -2
  169. package/dest/testbench/p2p_client_testbench_worker.d.ts +1 -1
  170. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  171. package/dest/testbench/p2p_client_testbench_worker.js +73 -17
  172. package/dest/testbench/worker_client_manager.d.ts +8 -1
  173. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  174. package/dest/testbench/worker_client_manager.js +49 -1
  175. package/package.json +14 -14
  176. package/src/client/factory.ts +31 -4
  177. package/src/client/interface.ts +9 -1
  178. package/src/client/p2p_client.ts +47 -15
  179. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +20 -8
  180. package/src/config.ts +35 -6
  181. package/src/errors/p2p-service.error.ts +11 -0
  182. package/src/index.ts +0 -1
  183. package/src/mem_pools/attestation_pool/attestation_pool.ts +12 -8
  184. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +6 -6
  185. package/src/mem_pools/index.ts +0 -3
  186. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +2 -1
  187. package/src/mem_pools/tx_pool_v2/eviction/index.ts +1 -0
  188. package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +65 -0
  189. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +3 -3
  190. package/src/mem_pools/tx_pool_v2/interfaces.ts +9 -4
  191. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +31 -9
  192. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +13 -1
  193. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +14 -4
  194. package/src/msg_validators/attestation_validator/README.md +49 -0
  195. package/src/msg_validators/attestation_validator/attestation_validator.ts +21 -9
  196. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +4 -1
  197. package/src/msg_validators/clock_tolerance.ts +72 -3
  198. package/src/msg_validators/proposal_validator/README.md +123 -0
  199. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +4 -1
  200. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +4 -1
  201. package/src/msg_validators/proposal_validator/proposal_validator.ts +17 -10
  202. package/src/msg_validators/tx_validator/README.md +15 -3
  203. package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
  204. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  205. package/src/msg_validators/tx_validator/data_validator.ts +42 -1
  206. package/src/msg_validators/tx_validator/factory.ts +31 -2
  207. package/src/msg_validators/tx_validator/gas_validator.ts +82 -33
  208. package/src/msg_validators/tx_validator/phases_validator.ts +31 -1
  209. package/src/services/data_store.ts +5 -13
  210. package/src/services/dummy_service.ts +8 -2
  211. package/src/services/encoding.ts +9 -1
  212. package/src/services/gossipsub/topic_score_params.ts +36 -4
  213. package/src/services/libp2p/instrumentation.ts +14 -0
  214. package/src/services/libp2p/libp2p_service.ts +141 -141
  215. package/src/services/peer-manager/peer_manager.ts +43 -10
  216. package/src/services/peer-manager/peer_scoring.ts +27 -5
  217. package/src/services/reqresp/README.md +229 -0
  218. package/src/services/reqresp/batch-tx-requester/README.md +46 -7
  219. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +64 -69
  220. package/src/services/reqresp/batch-tx-requester/interface.ts +2 -1
  221. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +13 -6
  222. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +5 -0
  223. package/src/services/reqresp/config.ts +2 -2
  224. package/src/services/reqresp/interface.ts +21 -11
  225. package/src/services/reqresp/metrics.ts +0 -1
  226. package/src/services/reqresp/protocols/index.ts +0 -1
  227. package/src/services/reqresp/protocols/tx.ts +1 -3
  228. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  229. package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
  230. package/src/services/reqresp/reqresp.ts +37 -12
  231. package/src/services/service.ts +6 -1
  232. package/src/services/tx_collection/fast_tx_collection.ts +57 -83
  233. package/src/services/tx_collection/file_store_tx_source.ts +43 -31
  234. package/src/services/tx_collection/proposal_tx_collector.ts +8 -13
  235. package/src/services/tx_collection/request_tracker.ts +127 -0
  236. package/src/services/tx_collection/slow_tx_collection.ts +1 -1
  237. package/src/services/tx_collection/tx_collection.ts +3 -5
  238. package/src/services/tx_collection/tx_source.ts +8 -7
  239. package/src/test-helpers/make-test-p2p-clients.ts +2 -0
  240. package/src/test-helpers/mock-pubsub.ts +34 -5
  241. package/src/test-helpers/reqresp-nodes.ts +4 -2
  242. package/src/test-helpers/testbench-utils.ts +29 -3
  243. package/src/testbench/p2p_client_testbench_worker.ts +73 -14
  244. package/src/testbench/worker_client_manager.ts +55 -1
  245. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  246. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  247. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  248. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  249. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  250. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  251. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  252. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  253. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  254. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  255. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  256. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -122
  257. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  258. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  259. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +0 -84
  260. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  261. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  262. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  263. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  264. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  265. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  266. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  267. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  268. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  269. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  270. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  271. package/dest/mem_pools/tx_pool/index.js +0 -2
  272. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  273. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  274. package/dest/mem_pools/tx_pool/priority.js +0 -16
  275. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  276. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  277. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  278. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  279. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  280. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -402
  281. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  282. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  283. package/dest/services/reqresp/protocols/block.js +0 -32
  284. package/dest/services/tx_collection/missing_txs_tracker.d.ts +0 -32
  285. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +0 -1
  286. package/dest/services/tx_collection/missing_txs_tracker.js +0 -27
  287. package/src/mem_pools/tx_pool/README.md +0 -270
  288. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  289. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  290. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  291. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -162
  292. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  293. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  294. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  295. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  296. package/src/mem_pools/tx_pool/index.ts +0 -2
  297. package/src/mem_pools/tx_pool/priority.ts +0 -23
  298. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  299. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -321
  300. package/src/services/reqresp/protocols/block.ts +0 -37
  301. package/src/services/tx_collection/missing_txs_tracker.ts +0 -52
@@ -370,14 +370,13 @@ 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
375
  import { maxBy } from '@aztec/foundation/collection';
376
376
  import { createLibp2pComponentLogger, createLogger } from '@aztec/foundation/log';
377
377
  import { RunningPromise } from '@aztec/foundation/running-promise';
378
378
  import { Timer } from '@aztec/foundation/timer';
379
379
  import { protocolContractsHash } from '@aztec/protocol-contracts';
380
- import { GasFees } from '@aztec/stdlib/gas';
381
380
  import { BlockProposal, CheckpointAttestation, CheckpointProposal, P2PMessage, PeerErrorSeverity, PeerErrorSeverityByHarshness, TopicType, createTopicString, getTopicsForConfig, metricsTopicStrToLabels } from '@aztec/stdlib/p2p';
382
381
  import { MerkleTreeId } from '@aztec/stdlib/trees';
383
382
  import { Tx } from '@aztec/stdlib/tx';
@@ -395,6 +394,7 @@ import { mplex } from '@libp2p/mplex';
395
394
  import { tcp } from '@libp2p/tcp';
396
395
  import { ENR } from '@nethermindeth/enr';
397
396
  import { createLibp2p } from 'libp2p';
397
+ import { CheckpointProposalReceivedCallbackNotRegisteredError } from '../../errors/p2p-service.error.js';
398
398
  import { BlockProposalValidator, CheckpointAttestationValidator, CheckpointProposalValidator, DoubleSpendTxValidator, FishermanAttestationValidator, getDefaultAllowedSetupFunctions } from '../../msg_validators/index.js';
399
399
  import { MessageSeenValidator } from '../../msg_validators/msg_seen_validator/msg_seen_validator.js';
400
400
  import { createFirstStageTxValidationsForGossipedTransactions, createSecondStageTxValidationsForGossipedTransactions, createTxValidatorForBlockProposalReceivedTxs, createTxValidatorForReqResponseReceivedTxs } from '../../msg_validators/tx_validator/factory.js';
@@ -408,7 +408,7 @@ import { APP_SPECIFIC_WEIGHT, gossipScoreThresholds } from '../gossipsub/scoring
408
408
  import { createAllTopicScoreParams } from '../gossipsub/topic_score_params.js';
409
409
  import { PeerManager } from '../peer-manager/peer_manager.js';
410
410
  import { PeerScoring } from '../peer-manager/peer_scoring.js';
411
- import { DEFAULT_SUB_PROTOCOL_VALIDATORS, ReqRespSubProtocol, ValidationError, pingHandler, reqGoodbyeHandler, reqRespBlockHandler, reqRespBlockTxsHandler, reqRespStatusHandler, reqRespTxHandler } from '../reqresp/index.js';
411
+ import { DEFAULT_SUB_PROTOCOL_VALIDATORS, ReqRespSubProtocol, ValidationError, pingHandler, reqGoodbyeHandler, reqRespBlockTxsHandler, reqRespStatusHandler, reqRespTxHandler } from '../reqresp/index.js';
412
412
  import { ReqResp } from '../reqresp/reqresp.js';
413
413
  import { P2PInstrumentation } from './instrumentation.js';
414
414
  _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId, attestation)=>({
@@ -430,12 +430,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
430
430
  [Attributes.BLOCK_ARCHIVE]: request.archiveRoot.toString()
431
431
  })), _dec6 = trackSpan('Libp2pService.validateRequestedTx', (requestedTxHash, _responseTx)=>({
432
432
  [Attributes.TX_HASH]: requestedTxHash.toString()
433
- })), _dec7 = trackSpan('Libp2pService.validateRequestedBlock', (requestedBlockNumber, _responseBlock)=>({
434
- [Attributes.BLOCK_NUMBER]: requestedBlockNumber.toString()
435
- })), _dec8 = trackSpan('Libp2pService.validateCheckpointAttestation', async (_, attestation)=>({
436
- [Attributes.SLOT_NUMBER]: attestation.payload.header.slotNumber,
437
- [Attributes.BLOCK_ARCHIVE]: attestation.archive.toString(),
438
- [Attributes.P2P_ID]: await attestation.p2pMessageLoggingIdentifier().then((i)=>i.toString())
439
433
  }));
440
434
  /**
441
435
  * Lib P2P implementation of the P2PService interface.
@@ -450,6 +444,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
450
444
  epochCache;
451
445
  proofVerifier;
452
446
  worldStateSynchronizer;
447
+ blockMinFeesProvider;
453
448
  static{
454
449
  ({ e: [_initProto] } = _apply_decs_2203_r(this, [
455
450
  [
@@ -486,16 +481,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
486
481
  _dec6,
487
482
  2,
488
483
  "validateRequestedTxs"
489
- ],
490
- [
491
- _dec7,
492
- 2,
493
- "validateRequestedBlock"
494
- ],
495
- [
496
- _dec8,
497
- 2,
498
- "validateCheckpointAttestation"
499
484
  ]
500
485
  ], []));
501
486
  }
@@ -507,7 +492,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
507
492
  checkpointAttestationValidator;
508
493
  protocolVersion;
509
494
  topicStrings;
510
- feesCache;
511
495
  /** Callback invoked when a duplicate proposal is detected (triggers slashing). */ duplicateProposalCallback;
512
496
  /** Callback invoked when a duplicate attestation is detected (triggers slashing). */ duplicateAttestationCallback;
513
497
  /**
@@ -519,13 +503,18 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
519
503
  * Callback for when a checkpoint proposal is received from a peer.
520
504
  * @param checkpoint - The checkpoint proposal received from the peer.
521
505
  * @returns The attestations for the checkpoint, if any.
522
- */ checkpointReceivedCallback;
506
+ */ allNodesCheckpointReceivedCallback;
507
+ /**
508
+ * Callback for when a checkpoint proposal is received - specifically for validators - from a peer.
509
+ * @param checkpoint - The checkpoint proposal received from the peer.
510
+ * @returns The attestations for the checkpoint, if any.
511
+ */ validatorCheckpointReceivedCallback;
523
512
  gossipSubEventHandler;
524
513
  instrumentation;
525
514
  telemetry;
526
515
  logger;
527
- constructor(config, node, peerDiscoveryService, reqresp, peerManager, mempools, archiver, epochCache, proofVerifier, worldStateSynchronizer, telemetry, logger = createLogger('p2p:libp2p_service')){
528
- super(telemetry, 'LibP2PService'), this.config = config, this.node = node, this.peerDiscoveryService = peerDiscoveryService, this.reqresp = reqresp, this.peerManager = peerManager, this.mempools = mempools, this.archiver = archiver, this.epochCache = epochCache, this.proofVerifier = proofVerifier, this.worldStateSynchronizer = worldStateSynchronizer, this.msgIdSeenValidators = (_initProto(this), {}), this.protocolVersion = '', this.topicStrings = {};
516
+ constructor(config, node, peerDiscoveryService, reqresp, peerManager, mempools, archiver, epochCache, proofVerifier, worldStateSynchronizer, blockMinFeesProvider, telemetry, logger = createLogger('p2p:libp2p_service')){
517
+ super(telemetry, 'LibP2PService'), this.config = config, this.node = node, this.peerDiscoveryService = peerDiscoveryService, this.reqresp = reqresp, this.peerManager = peerManager, this.mempools = mempools, this.archiver = archiver, this.epochCache = epochCache, this.proofVerifier = proofVerifier, this.worldStateSynchronizer = worldStateSynchronizer, this.blockMinFeesProvider = blockMinFeesProvider, this.msgIdSeenValidators = (_initProto(this), {}), this.protocolVersion = '', this.topicStrings = {};
529
518
  this.telemetry = telemetry;
530
519
  // Create child logger with fisherman prefix if in fisherman mode
531
520
  this.logger = config.fishermanMode ? logger.createChild('[FISHERMAN]') : logger;
@@ -541,13 +530,19 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
541
530
  this.topicStrings[TopicType.block_proposal] = createTopicString(TopicType.block_proposal, this.protocolVersion);
542
531
  this.topicStrings[TopicType.checkpoint_proposal] = createTopicString(TopicType.checkpoint_proposal, this.protocolVersion);
543
532
  this.topicStrings[TopicType.checkpoint_attestation] = createTopicString(TopicType.checkpoint_attestation, this.protocolVersion);
533
+ const p2pPropagationTime = config.attestationPropagationTime;
544
534
  const proposalValidatorOpts = {
545
535
  txsPermitted: !config.disableTransactions,
546
- maxTxsPerBlock: config.validateMaxTxsPerBlock
536
+ maxTxsPerBlock: config.validateMaxTxsPerBlock ?? config.validateMaxTxsPerCheckpoint,
537
+ p2pPropagationTime
547
538
  };
548
539
  this.blockProposalValidator = new BlockProposalValidator(epochCache, proposalValidatorOpts);
549
540
  this.checkpointProposalValidator = new CheckpointProposalValidator(epochCache, proposalValidatorOpts);
550
- this.checkpointAttestationValidator = config.fishermanMode ? new FishermanAttestationValidator(epochCache, mempools.attestationPool, telemetry) : new CheckpointAttestationValidator(epochCache);
541
+ this.checkpointAttestationValidator = config.fishermanMode ? new FishermanAttestationValidator(epochCache, mempools.attestationPool, telemetry, {
542
+ l1PublishingTime: config.l1PublishingTime
543
+ }) : new CheckpointAttestationValidator(epochCache, {
544
+ l1PublishingTime: config.l1PublishingTime
545
+ });
551
546
  this.gossipSubEventHandler = this.handleGossipSubEvent.bind(this);
552
547
  this.blockReceivedCallback = async (block)=>{
553
548
  this.logger.warn(`Handler for block received not yet registered on P2P service. Received block ${block.blockNumber} for slot ${block.slotNumber} from peer.`, {
@@ -555,8 +550,10 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
555
550
  });
556
551
  return true;
557
552
  };
558
- this.checkpointReceivedCallback = (checkpoint)=>{
559
- this.logger.debug(`Handler not yet registered: Checkpoint received callback not set. Received checkpoint for slot ${checkpoint.slotNumber} from peer.`);
553
+ this.allNodesCheckpointReceivedCallback = (_checkpoint)=>{
554
+ throw new CheckpointProposalReceivedCallbackNotRegisteredError();
555
+ };
556
+ this.validatorCheckpointReceivedCallback = (_checkpoint)=>{
560
557
  return Promise.resolve(undefined);
561
558
  };
562
559
  }
@@ -569,7 +566,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
569
566
  * @param txPool - The transaction pool to be accessed by the service.
570
567
  * @returns The new service.
571
568
  */ static async new(config, peerId, deps) {
572
- const { worldStateSynchronizer, epochCache, l2BlockSource, mempools, proofVerifier, peerStore, telemetry, logger, packageVersion } = deps;
569
+ const { worldStateSynchronizer, epochCache, l2BlockSource, mempools, proofVerifier, peerStore, blockMinFeesProvider, telemetry, logger, packageVersion } = deps;
573
570
  const { p2pPort, maxPeerCount, listenAddress } = config;
574
571
  const bindAddrTcp = convertToMultiaddr(listenAddress, p2pPort, 'tcp');
575
572
  const datastore = new AztecDatastore(peerStore);
@@ -609,9 +606,12 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
609
606
  const l1Constants = epochCache.getL1Constants();
610
607
  const topicScoreParams = createAllTopicScoreParams(protocolVersion, {
611
608
  slotDurationMs: l1Constants.slotDuration * 1000,
609
+ ethereumSlotDuration: l1Constants.ethereumSlotDuration,
612
610
  heartbeatIntervalMs: config.gossipsubInterval,
613
611
  targetCommitteeSize: l1Constants.targetCommitteeSize,
614
612
  blockDurationMs: config.blockDurationMs,
613
+ l1PublishingTime: config.l1PublishingTime,
614
+ p2pPropagationTime: config.attestationPropagationTime,
615
615
  expectedBlockProposalsPerSlot: config.expectedBlockProposalsPerSlot
616
616
  });
617
617
  const node = await createLibp2p({
@@ -726,6 +726,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
726
726
  const peerScoring = new PeerScoring(config, telemetry);
727
727
  const reqresp = new ReqResp(config, node, peerScoring, createLogger(`${logger.module}:reqresp`));
728
728
  const peerManager = new PeerManager(node, peerDiscoveryService, config, telemetry, createLogger(`${logger.module}:peer_manager`), peerScoring, reqresp, worldStateSynchronizer, protocolVersion, epochCache);
729
+ // Gate req/resp data protocols for unauthenticated peers when p2pAllowOnlyValidators is enabled
730
+ reqresp.setShouldRejectPeer((peerId)=>peerManager.shouldDisableP2PGossip(peerId));
729
731
  // Configure application-specific scoring for gossipsub.
730
732
  // The weight scales app score to align with gossipsub thresholds:
731
733
  // - Disconnect (-50) × 10 = -500 = gossipThreshold (stops receiving gossip)
@@ -733,7 +735,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
733
735
  // Note: positive topic scores can offset penalties, so alignment is best-effort.
734
736
  node.services.pubsub.score.params.appSpecificWeight = APP_SPECIFIC_WEIGHT;
735
737
  node.services.pubsub.score.params.appSpecificScore = (peerId)=>peerManager.shouldDisableP2PGossip(peerId) ? -Infinity : peerManager.getPeerScore(peerId);
736
- return new LibP2PService(config, node, peerDiscoveryService, reqresp, peerManager, mempools, l2BlockSource, epochCache, proofVerifier, worldStateSynchronizer, telemetry, logger);
738
+ return new LibP2PService(config, node, peerDiscoveryService, reqresp, peerManager, mempools, l2BlockSource, epochCache, proofVerifier, worldStateSynchronizer, blockMinFeesProvider, telemetry, logger);
737
739
  }
738
740
  /**
739
741
  * Starts the LibP2P service.
@@ -752,13 +754,11 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
752
754
  // Create request response protocol handlers
753
755
  const txHandler = reqRespTxHandler(this.mempools);
754
756
  const goodbyeHandler = reqGoodbyeHandler(this.peerManager);
755
- const blockHandler = reqRespBlockHandler(this.archiver);
756
757
  const statusHandler = reqRespStatusHandler(this.protocolVersion, this.worldStateSynchronizer, this.logger);
757
758
  const requestResponseHandlers = {
758
759
  [ReqRespSubProtocol.PING]: pingHandler,
759
760
  [ReqRespSubProtocol.STATUS]: statusHandler.bind(this),
760
- [ReqRespSubProtocol.GOODBYE]: goodbyeHandler.bind(this),
761
- [ReqRespSubProtocol.BLOCK]: blockHandler.bind(this)
761
+ [ReqRespSubProtocol.GOODBYE]: goodbyeHandler.bind(this)
762
762
  };
763
763
  if (!this.config.disableTransactions) {
764
764
  const blockTxsHandler = reqRespBlockTxsHandler(this.mempools.attestationPool, this.archiver, this.mempools.txPool);
@@ -771,8 +771,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
771
771
  const reqrespSubProtocolValidators = {
772
772
  ...DEFAULT_SUB_PROTOCOL_VALIDATORS,
773
773
  [ReqRespSubProtocol.TX]: this.validateRequestedTxs.bind(this),
774
- [ReqRespSubProtocol.BLOCK_TXS]: this.validateRequestedBlockTxs.bind(this),
775
- [ReqRespSubProtocol.BLOCK]: this.validateRequestedBlock.bind(this)
774
+ [ReqRespSubProtocol.BLOCK_TXS]: this.validateRequestedBlockTxs.bind(this)
776
775
  };
777
776
  await this.peerManager.initializePeers();
778
777
  await this.reqresp.start(requestResponseHandlers, reqrespSubProtocolValidators);
@@ -860,8 +859,14 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
860
859
  registerBlockReceivedCallback(callback) {
861
860
  this.blockReceivedCallback = callback;
862
861
  }
863
- registerCheckpointReceivedCallback(callback) {
864
- this.checkpointReceivedCallback = callback;
862
+ registerValidatorCheckpointReceivedCallback(callback) {
863
+ this.validatorCheckpointReceivedCallback = callback;
864
+ }
865
+ registerAllNodesCheckpointReceivedCallback(callback) {
866
+ this.allNodesCheckpointReceivedCallback = callback;
867
+ }
868
+ async notifyOwnCheckpointProposal(checkpoint) {
869
+ await this.allNodesCheckpointReceivedCallback(checkpoint, this.node.peerId);
865
870
  }
866
871
  /**
867
872
  * Registers a callback to be invoked when a duplicate proposal is detected.
@@ -1038,29 +1043,79 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1038
1043
  return;
1039
1044
  }
1040
1045
  async validateReceivedMessage(validationFunc, msgId, source, topicType) {
1046
+ // Default to reject result with a penalty if validation function throws an error
1041
1047
  let resultAndObj = {
1042
- result: TopicValidatorResult.Reject
1048
+ result: TopicValidatorResult.Reject,
1049
+ severity: PeerErrorSeverity.MidToleranceError
1043
1050
  };
1044
1051
  const timer = new Timer();
1045
1052
  try {
1046
1053
  resultAndObj = await validationFunc();
1047
1054
  } catch (err) {
1048
- this.peerManager.penalizePeer(source, PeerErrorSeverity.LowToleranceError);
1049
- this.logger.error(`Error deserializing and validating gossipsub message`, err, {
1055
+ this.logger.error(`Error validating gossipsub message`, err, {
1050
1056
  msgId,
1051
1057
  source: source.toString(),
1052
1058
  topicType
1053
1059
  });
1054
1060
  }
1061
+ const validationTimeMs = timer.ms();
1062
+ const mcacheWindowMs = this.config.gossipsubMcacheLength * this.config.gossipsubInterval;
1063
+ if (validationTimeMs > mcacheWindowMs * 0.75) {
1064
+ this.instrumentation.incSlowValidation(topicType);
1065
+ this.logger.warn(`Gossip validation for ${topicType} took ${validationTimeMs}ms, approaching mcache eviction window of ${mcacheWindowMs}ms. ` + `Message forwarding may be skipped if validation exceeds the window.`, {
1066
+ msgId,
1067
+ source: source.toString(),
1068
+ topicType,
1069
+ validationTimeMs,
1070
+ mcacheWindowMs
1071
+ });
1072
+ }
1055
1073
  if (resultAndObj.result === TopicValidatorResult.Accept) {
1074
+ this.logger.debug(`Message ${topicType} accepted by validator`, {
1075
+ msgId,
1076
+ source: source.toString(),
1077
+ topicType
1078
+ });
1056
1079
  this.instrumentation.recordMessageValidation(topicType, timer);
1080
+ } else if (resultAndObj.result === TopicValidatorResult.Reject) {
1081
+ this.logger.warn(`Message ${topicType} rejected by validator with severity ${resultAndObj.severity}`, {
1082
+ msgId,
1083
+ source: source.toString(),
1084
+ topicType,
1085
+ severity: resultAndObj.severity
1086
+ });
1087
+ this.peerManager.penalizePeer(source, resultAndObj.severity);
1088
+ } else {
1089
+ this.logger.trace(`Message ${topicType} ignored by validator`, {
1090
+ msgId,
1091
+ source: source.toString(),
1092
+ topicType
1093
+ });
1057
1094
  }
1058
1095
  this.node.services.pubsub.reportMessageValidationResult(msgId, source.toString(), resultAndObj.result);
1059
1096
  return resultAndObj;
1060
1097
  }
1098
+ tryDeserialize(deserializeFunc, msgId, source) {
1099
+ try {
1100
+ return deserializeFunc();
1101
+ } catch (err) {
1102
+ this.logger.warn(`Failed to deserialize gossipsub message from buffer`, {
1103
+ err,
1104
+ msgId,
1105
+ source: source.toString()
1106
+ });
1107
+ return undefined;
1108
+ }
1109
+ }
1061
1110
  async handleGossipedTx(payloadData, msgId, source) {
1062
1111
  const validationFunc = async ()=>{
1063
- const tx = Tx.fromBuffer(payloadData);
1112
+ const tx = this.tryDeserialize(()=>Tx.fromBuffer(payloadData), msgId, source);
1113
+ if (!tx) {
1114
+ return {
1115
+ result: TopicValidatorResult.Reject,
1116
+ severity: PeerErrorSeverity.LowToleranceError
1117
+ };
1118
+ }
1064
1119
  const currentBlockNumber = await this.archiver.getBlockNumber();
1065
1120
  const { ts: nextSlotTimestamp } = this.epochCache.getEpochAndSlotInNextL1Slot();
1066
1121
  // Stage 1: fast validators (metadata, data, timestamps, double-spend, gas, phases, block header)
@@ -1081,9 +1136,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1081
1136
  severity,
1082
1137
  source: source.toString()
1083
1138
  });
1084
- this.peerManager.penalizePeer(source, severity);
1085
1139
  return {
1086
- result: TopicValidatorResult.Reject
1140
+ result: TopicValidatorResult.Reject,
1141
+ severity
1087
1142
  };
1088
1143
  }
1089
1144
  // Pool pre-check: see if the pool would accept this tx before doing expensive proof verification
@@ -1107,9 +1162,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1107
1162
  severity,
1108
1163
  source: source.toString()
1109
1164
  });
1110
- this.peerManager.penalizePeer(source, severity);
1111
1165
  return {
1112
- result: TopicValidatorResult.Reject
1166
+ result: TopicValidatorResult.Reject,
1167
+ severity
1113
1168
  };
1114
1169
  }
1115
1170
  // Pool add: persist the tx
@@ -1137,8 +1192,13 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1137
1192
  obj: tx
1138
1193
  };
1139
1194
  } else {
1195
+ this.logger.warn(`Gossiped tx ${txHash.toString()} unexpectedly rejected by pool`, {
1196
+ source: source.toString(),
1197
+ txHash: txHash.toString()
1198
+ });
1140
1199
  return {
1141
- result: TopicValidatorResult.Reject
1200
+ result: TopicValidatorResult.Reject,
1201
+ severity: PeerErrorSeverity.HighToleranceError
1142
1202
  };
1143
1203
  }
1144
1204
  };
@@ -1159,7 +1219,16 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1159
1219
  * Process a checkpoint attestation from a peer.
1160
1220
  * Validates the attestation and adds it to the pool.
1161
1221
  */ async processCheckpointAttestationFromPeer(payloadData, msgId, source) {
1162
- const { result, obj: attestation } = await this.validateReceivedMessage(()=>this.validateAndStoreCheckpointAttestation(source, CheckpointAttestation.fromBuffer(payloadData)), msgId, source, TopicType.checkpoint_attestation);
1222
+ const { result, obj: attestation } = await this.validateReceivedMessage(()=>{
1223
+ const attestation = this.tryDeserialize(()=>CheckpointAttestation.fromBuffer(payloadData), msgId, source);
1224
+ if (!attestation) {
1225
+ return Promise.resolve({
1226
+ result: TopicValidatorResult.Reject,
1227
+ severity: PeerErrorSeverity.LowToleranceError
1228
+ });
1229
+ }
1230
+ return this.validateAndStoreCheckpointAttestation(source, attestation);
1231
+ }, msgId, source, TopicType.checkpoint_attestation);
1163
1232
  if (result !== TopicValidatorResult.Accept || !attestation) {
1164
1233
  return;
1165
1234
  }
@@ -1174,9 +1243,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1174
1243
  const validationResult = await this.checkpointAttestationValidator.validate(attestation);
1175
1244
  if (validationResult.result === 'reject') {
1176
1245
  this.logger.warn(`Penalizing peer ${peerId} for checkpoint attestation validation failure`);
1177
- this.peerManager.penalizePeer(peerId, validationResult.severity);
1178
1246
  return {
1179
- result: TopicValidatorResult.Reject
1247
+ result: TopicValidatorResult.Reject,
1248
+ severity: validationResult.severity
1180
1249
  };
1181
1250
  }
1182
1251
  if (validationResult.result === 'ignore') {
@@ -1203,9 +1272,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1203
1272
  obj: attestation
1204
1273
  };
1205
1274
  }
1206
- // Could not add (cap reached for signer), no need to re-broadcast
1275
+ // Could not add (cap reached for signer), penalize and do not re-broadcast
1207
1276
  if (!added) {
1208
- this.logger.warn(`Dropping checkpoint attestation due to cap`, {
1277
+ this.logger.warn(`Rejecting checkpoint attestation due to cap`, {
1209
1278
  slot: slot.toString(),
1210
1279
  archive: attestation.archive.toString(),
1211
1280
  source: peerId.toString(),
@@ -1213,8 +1282,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1213
1282
  count
1214
1283
  });
1215
1284
  return {
1216
- result: TopicValidatorResult.Ignore,
1217
- obj: attestation
1285
+ result: TopicValidatorResult.Reject,
1286
+ severity: PeerErrorSeverity.HighToleranceError
1218
1287
  };
1219
1288
  }
1220
1289
  // Check if this is a duplicate attestation (signer attested to a different proposal at the same slot)
@@ -1252,9 +1321,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1252
1321
  const validationResult = await this.blockProposalValidator.validate(block);
1253
1322
  if (validationResult.result === 'reject') {
1254
1323
  this.logger.warn(`Penalizing peer ${peerId} for block proposal validation failure`);
1255
- this.peerManager.penalizePeer(peerId, validationResult.severity);
1256
1324
  return {
1257
- result: TopicValidatorResult.Reject
1325
+ result: TopicValidatorResult.Reject,
1326
+ severity: validationResult.severity
1258
1327
  };
1259
1328
  }
1260
1329
  if (validationResult.result === 'ignore') {
@@ -1284,7 +1353,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1284
1353
  }
1285
1354
  // Too many blocks received for this slot and index, penalize peer and do not re-broadcast
1286
1355
  if (!added) {
1287
- this.peerManager.penalizePeer(peerId, PeerErrorSeverity.HighToleranceError);
1288
1356
  this.logger.warn(`Penalizing peer for block proposal exceeding per-position cap`, {
1289
1357
  ...block.toBlockInfo(),
1290
1358
  indexWithinCheckpoint: block.indexWithinCheckpoint,
@@ -1296,7 +1364,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1296
1364
  result: TopicValidatorResult.Reject,
1297
1365
  metadata: {
1298
1366
  isEquivocated
1299
- }
1367
+ },
1368
+ severity: PeerErrorSeverity.HighToleranceError
1300
1369
  };
1301
1370
  }
1302
1371
  // If this was a duplicate proposal, do not process it, but do invoke the duplicate callback,
@@ -1370,9 +1439,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1370
1439
  const validationResult = await this.checkpointProposalValidator.validate(checkpoint);
1371
1440
  if (validationResult.result === 'reject') {
1372
1441
  this.logger.warn(`Penalizing peer ${peerId} for checkpoint proposal validation failure`);
1373
- this.peerManager.penalizePeer(peerId, validationResult.severity);
1374
1442
  return {
1375
- result: TopicValidatorResult.Reject
1443
+ result: TopicValidatorResult.Reject,
1444
+ severity: validationResult.severity
1376
1445
  };
1377
1446
  }
1378
1447
  if (validationResult.result === 'ignore') {
@@ -1389,18 +1458,20 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1389
1458
  [Attributes.SLOT_NUMBER]: checkpoint.slotNumber.toString(),
1390
1459
  [Attributes.P2P_ID]: peerId.toString()
1391
1460
  });
1392
- const { result, obj, metadata: { isEquivocated } = {} } = await this.validateAndStoreBlockProposal(peerId, blockProposal);
1393
- if (result === TopicValidatorResult.Reject || !obj || isEquivocated) {
1461
+ const blockProposalResult = await this.validateAndStoreBlockProposal(peerId, blockProposal);
1462
+ const { obj, metadata: { isEquivocated } = {} } = blockProposalResult;
1463
+ if (blockProposalResult.result === TopicValidatorResult.Reject || !obj || isEquivocated) {
1394
1464
  this.logger.debug(`Rejecting checkpoint due to invalid last block proposal`, {
1395
1465
  [Attributes.SLOT_NUMBER]: checkpoint.slotNumber.toString(),
1396
1466
  [Attributes.P2P_ID]: peerId.toString(),
1397
1467
  isEquivocated,
1398
- result
1468
+ result: blockProposalResult.result
1399
1469
  });
1400
1470
  return {
1401
- result: TopicValidatorResult.Reject
1471
+ result: TopicValidatorResult.Reject,
1472
+ severity: 'severity' in blockProposalResult ? blockProposalResult.severity : PeerErrorSeverity.MidToleranceError
1402
1473
  };
1403
- } else if (result === TopicValidatorResult.Accept && obj && !isEquivocated) {
1474
+ } else if (blockProposalResult.result === TopicValidatorResult.Accept && obj && !isEquivocated) {
1404
1475
  processBlock = true;
1405
1476
  }
1406
1477
  }
@@ -1427,7 +1498,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1427
1498
  // Too many checkpoint proposals received for this slot, penalize peer and do not re-broadcast
1428
1499
  // Note: We still return the checkpoint obj so the lastBlock can be processed if valid
1429
1500
  if (!added) {
1430
- this.peerManager.penalizePeer(peerId, PeerErrorSeverity.HighToleranceError);
1431
1501
  this.logger.warn(`Penalizing peer for checkpoint proposal exceeding per-slot cap`, {
1432
1502
  ...checkpoint.toCheckpointInfo(),
1433
1503
  count,
@@ -1439,7 +1509,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1439
1509
  metadata: {
1440
1510
  isEquivocated,
1441
1511
  processBlock
1442
- }
1512
+ },
1513
+ severity: PeerErrorSeverity.HighToleranceError
1443
1514
  };
1444
1515
  }
1445
1516
  // If this was a duplicate proposal, do not process it, but do invoke the duplicate callback,
@@ -1489,9 +1560,10 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1489
1560
  archive: checkpoint.archive.toString(),
1490
1561
  source: sender.toString()
1491
1562
  });
1563
+ await this.allNodesCheckpointReceivedCallback(checkpoint, sender);
1492
1564
  // Call the checkpoint received callback with the core version (without lastBlock)
1493
1565
  // to validate and potentially generate attestations
1494
- const attestations = await this.checkpointReceivedCallback(checkpoint, sender);
1566
+ const attestations = await this.validatorCheckpointReceivedCallback(checkpoint, sender);
1495
1567
  if (attestations && attestations.length > 0) {
1496
1568
  // If the callback returned attestations, add them to the pool and propagate them
1497
1569
  await this.mempools.attestationPool.addOwnCheckpointAttestations(attestations);
@@ -1611,45 +1683,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1611
1683
  return false;
1612
1684
  }
1613
1685
  }
1614
- /**
1615
- * Validates a BLOCK response.
1616
- *
1617
- * If a local copy exists, enforces hash equality. If missing, rejects (no penalty) since the hash cannot be verified.
1618
- * Penalizes on block number mismatch or hash mismatch.
1619
- *
1620
- * @param requestedBlockNumber - The requested block number.
1621
- * @param responseBlock - The block returned by the peer.
1622
- * @param peerId - The peer that returned the block.
1623
- * @returns True if the response is valid, false otherwise.
1624
- */ async validateRequestedBlock(requestedBlockNumber, responseBlock, peerId) {
1625
- try {
1626
- const reqNum = Number(requestedBlockNumber.toString());
1627
- if (responseBlock.number !== reqNum) {
1628
- this.peerManager.penalizePeer(peerId, PeerErrorSeverity.LowToleranceError);
1629
- return false;
1630
- }
1631
- const local = await this.archiver.getBlock(BlockNumber(reqNum));
1632
- if (!local) {
1633
- // We are missing the local block; we cannot verify the hash yet. Reject without penalizing.
1634
- // TODO: Consider extending this validator to accept an expected hash or
1635
- // performing quorum-based checks when using P2P syncing prior to L1 sync.
1636
- this.logger.warn(`Local block ${reqNum} not found; rejecting BLOCK response without hash verification`);
1637
- return false;
1638
- }
1639
- const [localHash, respHash] = await Promise.all([
1640
- local.hash(),
1641
- responseBlock.hash()
1642
- ]);
1643
- if (!localHash.equals(respHash)) {
1644
- this.peerManager.penalizePeer(peerId, PeerErrorSeverity.MidToleranceError);
1645
- return false;
1646
- }
1647
- return true;
1648
- } catch (e) {
1649
- this.logger.warn(`Error validating requested block`, e);
1650
- return false;
1651
- }
1652
- }
1653
1686
  async validateRequestedTx(tx, peerId, txValidator, requested) {
1654
1687
  const penalize = (severity)=>this.peerManager.penalizePeer(peerId, severity);
1655
1688
  if (requested && !requested.has(tx.getTxHash().toString())) {
@@ -1668,17 +1701,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1668
1701
  rollupVersion: this.config.rollupVersion
1669
1702
  });
1670
1703
  }
1671
- async getGasFees(blockNumber) {
1672
- if (blockNumber === this.feesCache?.blockNumber) {
1673
- return this.feesCache.gasFees;
1674
- }
1675
- const header = await this.archiver.getBlockHeader(blockNumber);
1676
- const gasFees = header?.globalVariables.gasFees ?? GasFees.empty();
1677
- this.feesCache = {
1678
- blockNumber,
1679
- gasFees
1680
- };
1681
- return gasFees;
1704
+ getGasFees() {
1705
+ return this.blockMinFeesProvider.getCurrentMinFees();
1682
1706
  }
1683
1707
  /**
1684
1708
  * Get the BatchTxRequesterLibP2PService dependencies for creating BatchTxRequester instances
@@ -1708,7 +1732,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1708
1732
  }
1709
1733
  }
1710
1734
  /** Creates the first stage (fast) validators for gossiped transactions. */ async createFirstStageMessageValidators(currentBlockNumber, nextSlotTimestamp) {
1711
- const gasFees = await this.getGasFees(currentBlockNumber);
1735
+ const gasFees = await this.getGasFees();
1712
1736
  const allowedInSetup = [
1713
1737
  ...await getDefaultAllowedSetupFunctions(),
1714
1738
  ...this.config.txPublicSetupAllowListExtend ?? []
@@ -1790,19 +1814,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
1790
1814
  }
1791
1815
  return PeerErrorSeverity.HighToleranceError;
1792
1816
  }
1793
- /**
1794
- * Validate a checkpoint attestation.
1795
- *
1796
- * @param attestation - The checkpoint attestation to validate.
1797
- * @returns True if the checkpoint attestation is valid, false otherwise.
1798
- */ async validateCheckpointAttestation(peerId, attestation) {
1799
- const result = await this.checkpointAttestationValidator.validate(attestation);
1800
- if (result.result === 'reject') {
1801
- this.logger.warn(`Penalizing peer ${peerId} for checkpoint attestation validation failure`);
1802
- this.peerManager.penalizePeer(peerId, result.severity);
1803
- }
1804
- return result;
1805
- }
1806
1817
  getPeerScore(peerId) {
1807
1818
  return this.node.services.pubsub.score.score(peerId.toString());
1808
1819
  }
@@ -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":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACxF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,KAAK,EAAc,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAM5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAgB,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAuB,MAAM,iCAAiC,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA2BrE,qBAAa,WAAY,YAAW,oBAAoB;IAyBpD,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAlC/B,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,8BAA8B,CAAa;IACnD,OAAO,CAAC,aAAa,CAAwC;IAC7D,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,uBAAuB,CAAkB;IACjD,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,uBAAuB,CAAkB;IACjD,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,qCAAqC,CAAsC;IACnF,OAAO,CAAC,qCAAqC,CAAkC;IAC/E,OAAO,CAAC,qBAAqB,CAA0B;IACvD,OAAO,CAAC,oBAAoB,CAAoD;IAChF,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,OAAO,CAAC,yBAAyB,CAAkB;IAEnD,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,QAAQ,CAId;IAEF,YACU,UAAU,EAAE,UAAU,EACtB,oBAAoB,EAAE,oBAAoB,EAC1C,MAAM,EAAE,SAAS,EACzB,eAAe,EAAE,eAAe,EACxB,MAAM,oDAAmC,EACzC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,OAAO,EACP,sBAAsB,EAAE,sBAAsB,EAC9C,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,mBAAmB,EAC/B,YAAY,GAAE,YAAiC,EAyBjE;IACD;;;;OAIG;IACG,eAAe,kBAmCpB;IAED,IAAI,MAAM,6CAET;IAEY,SAAS,kBAUrB;IAIK,2BAA2B,kBAgDhC;IAED;;;;;;OAMG;IACH,OAAO,CAAC,sBAAsB;YAgBhB,2BAA2B;IAsBzC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAuBhC;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IAc5B,8BAA8B,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAEjE;IAED;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAQrB;;;OAGG;IACI,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAM1C;IAED;;;OAGG;IACI,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAQ1C;IAED;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAQrB;;;OAGG;IACI,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAK5C;IAED;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAIvB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAIvB;;;;;;OAMG;IACI,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,QAM3D;IAEM,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,QAE7D;IAEM,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1C;IAEM,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAGrD;IAEM,QAAQ,CAAC,cAAc,UAAQ,GAAG,QAAQ,EAAE,CA+BlD;IAEM,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAQlD;IASM,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAa1D;IAED;;OAEG;IACH,OAAO,CAAC,QAAQ;IAmEhB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,mBAAmB;IAsB3B;;;;;OAKG;IACH,OAAO,CAAC,eAAe;YAyBT,wBAAwB;IAgCtC,OAAO,CAAC,qBAAqB;YAYf,cAAc;YAkBd,oBAAoB;YAoEpB,QAAQ;IA2BtB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,gBAAgB;YAsBV,mBAAmB;YAenB,uBAAuB;YA2CvB,qBAAqB;IAyFnC,OAAO,CAAC,uBAAuB;IA0B/B,OAAO,CAAC,wBAAwB;IAUhC;;;OAGG;IACU,IAAI,kBAWhB;IAED,OAAO,CAAC,uBAAuB;IAI/B;;;;;;;;;SASK;IACQ,yBAAyB,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAOxG;YAEa,wBAAwB;CAwBvC"}
1
+ {"version":3,"file":"peer_manager.d.ts","sourceRoot":"","sources":["../../../src/services/peer-manager/peer_manager.ts"],"names":[],"mappings":"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"}