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

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 (522) hide show
  1. package/README.md +130 -3
  2. package/dest/bootstrap/bootstrap.d.ts +1 -1
  3. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  4. package/dest/bootstrap/bootstrap.js +22 -6
  5. package/dest/client/factory.d.ts +11 -10
  6. package/dest/client/factory.d.ts.map +1 -1
  7. package/dest/client/factory.js +64 -17
  8. package/dest/client/interface.d.ts +86 -40
  9. package/dest/client/interface.d.ts.map +1 -1
  10. package/dest/client/p2p_client.d.ts +67 -64
  11. package/dest/client/p2p_client.d.ts.map +1 -1
  12. package/dest/client/p2p_client.js +251 -251
  13. package/dest/config.d.ts +173 -94
  14. package/dest/config.d.ts.map +1 -1
  15. package/dest/config.js +158 -44
  16. package/dest/errors/p2p-service.error.d.ts +9 -0
  17. package/dest/errors/p2p-service.error.d.ts.map +1 -0
  18. package/dest/errors/p2p-service.error.js +10 -0
  19. package/dest/errors/reqresp.error.d.ts +9 -16
  20. package/dest/errors/reqresp.error.d.ts.map +1 -1
  21. package/dest/errors/reqresp.error.js +10 -17
  22. package/dest/errors/tx-pool.error.d.ts +8 -0
  23. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  24. package/dest/errors/tx-pool.error.js +9 -0
  25. package/dest/index.d.ts +2 -2
  26. package/dest/index.d.ts.map +1 -1
  27. package/dest/index.js +1 -1
  28. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +106 -55
  29. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  30. package/dest/mem_pools/attestation_pool/attestation_pool.js +302 -195
  31. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
  32. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  33. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +274 -115
  34. package/dest/mem_pools/attestation_pool/index.d.ts +2 -2
  35. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  36. package/dest/mem_pools/attestation_pool/index.js +1 -1
  37. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  38. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  39. package/dest/mem_pools/attestation_pool/mocks.js +7 -5
  40. package/dest/mem_pools/index.d.ts +2 -2
  41. package/dest/mem_pools/index.d.ts.map +1 -1
  42. package/dest/mem_pools/instrumentation.d.ts +12 -5
  43. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  44. package/dest/mem_pools/instrumentation.js +38 -17
  45. package/dest/mem_pools/interface.d.ts +3 -3
  46. package/dest/mem_pools/interface.d.ts.map +1 -1
  47. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +10 -5
  48. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -1
  49. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +29 -20
  50. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  51. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  52. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  53. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +3 -3
  54. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -1
  55. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +18 -9
  56. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
  57. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  58. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +8 -4
  59. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +3 -3
  60. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -1
  61. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +15 -5
  62. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +3 -2
  63. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
  64. package/dest/mem_pools/tx_pool_v2/eviction/index.js +2 -1
  65. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
  66. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
  67. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +64 -0
  68. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +54 -5
  69. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -1
  70. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +8 -0
  71. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +1 -1
  72. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -1
  73. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +6 -5
  74. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +1 -1
  75. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -1
  76. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +9 -8
  77. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +2 -2
  78. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -1
  79. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +15 -6
  80. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +4 -4
  81. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -1
  82. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +16 -4
  83. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +3 -3
  84. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -1
  85. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +3 -3
  86. package/dest/mem_pools/tx_pool_v2/index.d.ts +3 -2
  87. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -1
  88. package/dest/mem_pools/tx_pool_v2/index.js +2 -1
  89. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +25 -0
  90. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  91. package/dest/mem_pools/tx_pool_v2/instrumentation.js +67 -0
  92. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +62 -16
  93. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
  94. package/dest/mem_pools/tx_pool_v2/interfaces.js +6 -1
  95. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +81 -15
  96. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
  97. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +147 -19
  98. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +26 -3
  99. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
  100. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +79 -43
  101. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +27 -7
  102. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
  103. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +94 -32
  104. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +62 -9
  105. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
  106. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +537 -246
  107. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +10 -3
  108. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  109. package/dest/msg_validators/attestation_validator/attestation_validator.js +38 -15
  110. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +7 -3
  111. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  112. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +4 -5
  113. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +12 -5
  114. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  115. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +11 -3
  116. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +12 -5
  117. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  118. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +23 -3
  119. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +36 -9
  120. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  121. package/dest/msg_validators/proposal_validator/proposal_validator.js +130 -48
  122. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  123. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  124. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +11 -18
  125. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  126. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  127. package/dest/msg_validators/tx_validator/allowed_public_setup.js +25 -21
  128. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  129. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  130. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  131. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  132. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +16 -3
  133. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  134. package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
  135. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts +15 -0
  136. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts.map +1 -0
  137. package/dest/msg_validators/tx_validator/cached_tx_validator.js +19 -0
  138. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  139. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  140. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  141. package/dest/msg_validators/tx_validator/data_validator.d.ts +2 -1
  142. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  143. package/dest/msg_validators/tx_validator/data_validator.js +36 -2
  144. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +13 -3
  145. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  146. package/dest/msg_validators/tx_validator/double_spend_validator.js +4 -4
  147. package/dest/msg_validators/tx_validator/factory.d.ts +133 -7
  148. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  149. package/dest/msg_validators/tx_validator/factory.js +261 -61
  150. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
  151. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
  152. package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
  153. package/dest/msg_validators/tx_validator/gas_validator.d.ts +104 -3
  154. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  155. package/dest/msg_validators/tx_validator/gas_validator.js +137 -53
  156. package/dest/msg_validators/tx_validator/index.d.ts +5 -1
  157. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  158. package/dest/msg_validators/tx_validator/index.js +4 -0
  159. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
  160. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  161. package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
  162. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  163. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  164. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  165. package/dest/msg_validators/tx_validator/phases_validator.d.ts +22 -2
  166. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  167. package/dest/msg_validators/tx_validator/phases_validator.js +72 -24
  168. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +20 -4
  169. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  170. package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
  171. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +2 -1
  172. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  173. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -0
  174. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts +48 -0
  175. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts.map +1 -0
  176. package/dest/msg_validators/tx_validator/tx_validation_cache.js +68 -0
  177. package/dest/services/data_store.d.ts +1 -1
  178. package/dest/services/data_store.d.ts.map +1 -1
  179. package/dest/services/data_store.js +5 -5
  180. package/dest/services/discv5/discV5_service.d.ts +13 -2
  181. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  182. package/dest/services/discv5/discV5_service.js +119 -23
  183. package/dest/services/discv5/persisted_enr_store.d.ts +38 -0
  184. package/dest/services/discv5/persisted_enr_store.d.ts.map +1 -0
  185. package/dest/services/discv5/persisted_enr_store.js +145 -0
  186. package/dest/services/dummy_service.d.ts +25 -19
  187. package/dest/services/dummy_service.d.ts.map +1 -1
  188. package/dest/services/dummy_service.js +28 -20
  189. package/dest/services/encoding.d.ts +24 -7
  190. package/dest/services/encoding.d.ts.map +1 -1
  191. package/dest/services/encoding.js +43 -26
  192. package/dest/services/gossipsub/topic_score_params.d.ts +23 -17
  193. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
  194. package/dest/services/gossipsub/topic_score_params.js +36 -24
  195. package/dest/services/libp2p/instrumentation.d.ts +6 -1
  196. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  197. package/dest/services/libp2p/instrumentation.js +21 -0
  198. package/dest/services/libp2p/libp2p_service.d.ts +71 -60
  199. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  200. package/dest/services/libp2p/libp2p_service.js +602 -407
  201. package/dest/services/peer-manager/metrics.d.ts +3 -1
  202. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  203. package/dest/services/peer-manager/metrics.js +6 -0
  204. package/dest/services/peer-manager/peer_manager.d.ts +31 -3
  205. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  206. package/dest/services/peer-manager/peer_manager.js +127 -26
  207. package/dest/services/peer-manager/peer_scoring.d.ts +34 -2
  208. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  209. package/dest/services/peer-manager/peer_scoring.js +102 -13
  210. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +5 -8
  211. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  212. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +95 -127
  213. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +11 -11
  214. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  215. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +11 -13
  216. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  217. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +31 -46
  218. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +19 -11
  219. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  220. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +52 -15
  221. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +5 -14
  222. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -1
  223. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +6 -20
  224. package/dest/services/reqresp/config.d.ts +15 -3
  225. package/dest/services/reqresp/config.d.ts.map +1 -1
  226. package/dest/services/reqresp/config.js +11 -0
  227. package/dest/services/reqresp/interface.d.ts +25 -18
  228. package/dest/services/reqresp/interface.d.ts.map +1 -1
  229. package/dest/services/reqresp/interface.js +23 -19
  230. package/dest/services/reqresp/metrics.d.ts +1 -1
  231. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  232. package/dest/services/reqresp/metrics.js +0 -1
  233. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +4 -3
  234. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  235. package/dest/services/reqresp/protocols/block_txs/bitvector.js +3 -2
  236. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +3 -3
  237. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  238. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +31 -28
  239. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +18 -7
  240. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  241. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +57 -24
  242. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  243. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  244. package/dest/services/reqresp/protocols/index.js +0 -1
  245. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  246. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  247. package/dest/services/reqresp/protocols/tx.js +21 -3
  248. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  249. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  250. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  251. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  252. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  253. package/dest/services/reqresp/rate-limiter/rate_limits.js +3 -13
  254. package/dest/services/reqresp/reqresp.d.ts +7 -29
  255. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  256. package/dest/services/reqresp/reqresp.js +85 -219
  257. package/dest/services/service.d.ts +63 -19
  258. package/dest/services/service.d.ts.map +1 -1
  259. package/dest/services/tx_collection/config.d.ts +11 -14
  260. package/dest/services/tx_collection/config.d.ts.map +1 -1
  261. package/dest/services/tx_collection/config.js +26 -33
  262. package/dest/services/tx_collection/file_store_tx_collection.d.ts +37 -0
  263. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  264. package/dest/services/tx_collection/file_store_tx_collection.js +127 -0
  265. package/dest/services/tx_collection/file_store_tx_source.d.ts +38 -0
  266. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  267. package/dest/services/tx_collection/file_store_tx_source.js +100 -0
  268. package/dest/services/tx_collection/index.d.ts +3 -3
  269. package/dest/services/tx_collection/index.d.ts.map +1 -1
  270. package/dest/services/tx_collection/index.js +1 -1
  271. package/dest/services/tx_collection/instrumentation.js +1 -2
  272. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  273. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  274. package/dest/services/tx_collection/request_tracker.js +84 -0
  275. package/dest/services/tx_collection/tx_collection.d.ts +45 -51
  276. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  277. package/dest/services/tx_collection/tx_collection.js +296 -68
  278. package/dest/services/tx_collection/tx_collection_sink.d.ts +19 -9
  279. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  280. package/dest/services/tx_collection/tx_collection_sink.js +28 -31
  281. package/dest/services/tx_collection/tx_source.d.ts +13 -7
  282. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  283. package/dest/services/tx_collection/tx_source.js +29 -7
  284. package/dest/services/tx_file_store/config.d.ts +1 -3
  285. package/dest/services/tx_file_store/config.d.ts.map +1 -1
  286. package/dest/services/tx_file_store/config.js +0 -4
  287. package/dest/services/tx_file_store/tx_file_store.d.ts +4 -5
  288. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
  289. package/dest/services/tx_file_store/tx_file_store.js +13 -20
  290. package/dest/services/tx_provider.d.ts +6 -4
  291. package/dest/services/tx_provider.d.ts.map +1 -1
  292. package/dest/services/tx_provider.js +12 -8
  293. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  294. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  295. package/dest/test-helpers/make-test-p2p-clients.js +5 -3
  296. package/dest/test-helpers/mock-pubsub.d.ts +56 -6
  297. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  298. package/dest/test-helpers/mock-pubsub.js +128 -14
  299. package/dest/test-helpers/reqresp-nodes.d.ts +5 -7
  300. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  301. package/dest/test-helpers/reqresp-nodes.js +17 -19
  302. package/dest/test-helpers/test_tx_provider.d.ts +3 -1
  303. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -1
  304. package/dest/test-helpers/test_tx_provider.js +3 -0
  305. package/dest/test-helpers/testbench-utils.d.ts +49 -37
  306. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  307. package/dest/test-helpers/testbench-utils.js +142 -50
  308. package/dest/testbench/p2p_client_testbench_worker.d.ts +3 -5
  309. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  310. package/dest/testbench/p2p_client_testbench_worker.js +112 -49
  311. package/dest/testbench/worker_client_manager.d.ts +12 -6
  312. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  313. package/dest/testbench/worker_client_manager.js +57 -11
  314. package/dest/util.d.ts +13 -8
  315. package/dest/util.d.ts.map +1 -1
  316. package/dest/util.js +35 -14
  317. package/dest/versioning.d.ts +3 -6
  318. package/dest/versioning.d.ts.map +1 -1
  319. package/dest/versioning.js +3 -24
  320. package/package.json +17 -17
  321. package/src/bootstrap/bootstrap.ts +17 -3
  322. package/src/client/factory.ts +129 -28
  323. package/src/client/interface.ts +88 -48
  324. package/src/client/p2p_client.ts +284 -317
  325. package/src/client/test/{tx_proposal_collector/README.md → p2p_client.batch_tx_requester.bench.README.md} +23 -53
  326. package/src/config.ts +280 -49
  327. package/src/errors/p2p-service.error.ts +11 -0
  328. package/src/errors/reqresp.error.ts +13 -19
  329. package/src/errors/tx-pool.error.ts +12 -0
  330. package/src/index.ts +1 -1
  331. package/src/mem_pools/attestation_pool/attestation_pool.ts +373 -236
  332. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +298 -119
  333. package/src/mem_pools/attestation_pool/index.ts +3 -3
  334. package/src/mem_pools/attestation_pool/mocks.ts +14 -8
  335. package/src/mem_pools/index.ts +1 -1
  336. package/src/mem_pools/instrumentation.ts +27 -17
  337. package/src/mem_pools/interface.ts +2 -2
  338. package/src/mem_pools/tx_pool_v2/README.md +85 -11
  339. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +30 -20
  340. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  341. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +21 -8
  342. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +6 -4
  343. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +21 -6
  344. package/src/mem_pools/tx_pool_v2/eviction/index.ts +5 -0
  345. package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +67 -0
  346. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +59 -4
  347. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +4 -6
  348. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +8 -10
  349. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +14 -10
  350. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +33 -6
  351. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +4 -3
  352. package/src/mem_pools/tx_pool_v2/index.ts +2 -1
  353. package/src/mem_pools/tx_pool_v2/instrumentation.ts +96 -0
  354. package/src/mem_pools/tx_pool_v2/interfaces.ts +63 -16
  355. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +215 -27
  356. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +91 -43
  357. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +122 -33
  358. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +602 -242
  359. package/src/msg_validators/attestation_validator/README.md +49 -0
  360. package/src/msg_validators/attestation_validator/attestation_validator.ts +46 -14
  361. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +15 -7
  362. package/src/msg_validators/proposal_validator/README.md +123 -0
  363. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +26 -4
  364. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +43 -7
  365. package/src/msg_validators/proposal_validator/proposal_validator.ts +155 -49
  366. package/src/msg_validators/tx_validator/README.md +129 -0
  367. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +8 -17
  368. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  369. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  370. package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
  371. package/src/msg_validators/tx_validator/block_header_validator.ts +15 -3
  372. package/src/msg_validators/tx_validator/cached_tx_validator.ts +31 -0
  373. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  374. package/src/msg_validators/tx_validator/data_validator.ts +44 -1
  375. package/src/msg_validators/tx_validator/double_spend_validator.ts +11 -6
  376. package/src/msg_validators/tx_validator/factory.ts +413 -80
  377. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  378. package/src/msg_validators/tx_validator/gas_validator.ts +195 -54
  379. package/src/msg_validators/tx_validator/index.ts +4 -0
  380. package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
  381. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  382. package/src/msg_validators/tx_validator/phases_validator.ts +82 -27
  383. package/src/msg_validators/tx_validator/timestamp_validator.ts +23 -18
  384. package/src/msg_validators/tx_validator/tx_proof_validator.ts +2 -0
  385. package/src/msg_validators/tx_validator/tx_validation_cache.ts +101 -0
  386. package/src/services/data_store.ts +5 -13
  387. package/src/services/discv5/discV5_service.ts +126 -14
  388. package/src/services/discv5/persisted_enr_store.ts +158 -0
  389. package/src/services/dummy_service.ts +38 -46
  390. package/src/services/encoding.ts +42 -26
  391. package/src/services/gossipsub/README.md +59 -22
  392. package/src/services/gossipsub/topic_score_params.ts +58 -31
  393. package/src/services/libp2p/instrumentation.ts +22 -0
  394. package/src/services/libp2p/libp2p_service.ts +687 -466
  395. package/src/services/peer-manager/metrics.ts +7 -0
  396. package/src/services/peer-manager/peer_manager.ts +140 -25
  397. package/src/services/peer-manager/peer_scoring.ts +102 -8
  398. package/src/services/reqresp/README.md +194 -0
  399. package/src/services/reqresp/batch-tx-requester/README.md +46 -7
  400. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +92 -138
  401. package/src/services/reqresp/batch-tx-requester/interface.ts +14 -10
  402. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +30 -71
  403. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +68 -24
  404. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +12 -25
  405. package/src/services/reqresp/config.ts +19 -2
  406. package/src/services/reqresp/interface.ts +45 -46
  407. package/src/services/reqresp/metrics.ts +0 -1
  408. package/src/services/reqresp/protocols/block_txs/bitvector.ts +3 -2
  409. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +36 -32
  410. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +64 -20
  411. package/src/services/reqresp/protocols/index.ts +0 -1
  412. package/src/services/reqresp/protocols/tx.ts +23 -3
  413. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  414. package/src/services/reqresp/rate-limiter/rate_limits.ts +3 -13
  415. package/src/services/reqresp/reqresp.ts +100 -263
  416. package/src/services/service.ts +80 -35
  417. package/src/services/tx_collection/config.ts +40 -49
  418. package/src/services/tx_collection/file_store_tx_collection.ts +153 -0
  419. package/src/services/tx_collection/file_store_tx_source.ts +129 -0
  420. package/src/services/tx_collection/index.ts +2 -6
  421. package/src/services/tx_collection/instrumentation.ts +1 -1
  422. package/src/services/tx_collection/request_tracker.ts +127 -0
  423. package/src/services/tx_collection/tx_collection.ts +362 -110
  424. package/src/services/tx_collection/tx_collection_sink.ts +32 -36
  425. package/src/services/tx_collection/tx_source.ts +29 -8
  426. package/src/services/tx_file_store/config.ts +0 -6
  427. package/src/services/tx_file_store/tx_file_store.ts +15 -25
  428. package/src/services/tx_provider.ts +15 -9
  429. package/src/test-helpers/make-test-p2p-clients.ts +7 -6
  430. package/src/test-helpers/mock-pubsub.ts +152 -14
  431. package/src/test-helpers/reqresp-nodes.ts +15 -28
  432. package/src/test-helpers/test_tx_provider.ts +5 -0
  433. package/src/test-helpers/testbench-utils.ts +171 -68
  434. package/src/testbench/p2p_client_testbench_worker.ts +121 -64
  435. package/src/testbench/worker_client_manager.ts +72 -25
  436. package/src/util.ts +40 -19
  437. package/src/versioning.ts +3 -33
  438. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +0 -2
  439. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +0 -1
  440. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +0 -305
  441. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +0 -73
  442. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +0 -1
  443. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +0 -8
  444. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  445. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  446. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  447. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  448. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  449. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  450. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  451. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  452. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  453. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  454. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  455. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -122
  456. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  457. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  458. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +0 -84
  459. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  460. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  461. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  462. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  463. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  464. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  465. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  466. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  467. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  468. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  469. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  470. package/dest/mem_pools/tx_pool/index.js +0 -2
  471. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  472. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  473. package/dest/mem_pools/tx_pool/priority.js +0 -15
  474. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  475. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  476. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  477. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  478. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  479. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -400
  480. package/dest/msg_validators/clock_tolerance.d.ts +0 -21
  481. package/dest/msg_validators/clock_tolerance.d.ts.map +0 -1
  482. package/dest/msg_validators/clock_tolerance.js +0 -37
  483. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
  484. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  485. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
  486. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +0 -64
  487. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +0 -1
  488. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +0 -151
  489. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  490. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  491. package/dest/services/reqresp/protocols/block.js +0 -32
  492. package/dest/services/tx_collection/fast_tx_collection.d.ts +0 -52
  493. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +0 -1
  494. package/dest/services/tx_collection/fast_tx_collection.js +0 -307
  495. package/dest/services/tx_collection/proposal_tx_collector.d.ts +0 -48
  496. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +0 -1
  497. package/dest/services/tx_collection/proposal_tx_collector.js +0 -49
  498. package/dest/services/tx_collection/slow_tx_collection.d.ts +0 -53
  499. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +0 -1
  500. package/dest/services/tx_collection/slow_tx_collection.js +0 -177
  501. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +0 -336
  502. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +0 -43
  503. package/src/mem_pools/tx_pool/README.md +0 -270
  504. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  505. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  506. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  507. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -162
  508. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  509. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  510. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  511. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  512. package/src/mem_pools/tx_pool/index.ts +0 -2
  513. package/src/mem_pools/tx_pool/priority.ts +0 -20
  514. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  515. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -319
  516. package/src/msg_validators/clock_tolerance.ts +0 -51
  517. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
  518. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +0 -161
  519. package/src/services/reqresp/protocols/block.ts +0 -37
  520. package/src/services/tx_collection/fast_tx_collection.ts +0 -354
  521. package/src/services/tx_collection/proposal_tx_collector.ts +0 -112
  522. package/src/services/tx_collection/slow_tx_collection.ts +0 -233
@@ -1,5 +1,6 @@
1
1
  import { createLogger } from '@aztec/foundation/log';
2
2
  import { sleep } from '@aztec/foundation/sleep';
3
+ import { DateProvider } from '@aztec/foundation/timer';
3
4
  import { checkCompressedComponentVersion } from '@aztec/stdlib/versioning';
4
5
  import { OtelMetricsAdapter, getTelemetryClient } from '@aztec/telemetry-client';
5
6
  import { multiaddr } from '@multiformats/multiaddr';
@@ -10,7 +11,9 @@ import { createNodeENR } from '../../enr/generate-enr.js';
10
11
  import { AZTEC_ENR_KEY, Discv5Event, PeerEvent } from '../../types/index.js';
11
12
  import { convertToMultiaddr } from '../../util.js';
12
13
  import { PeerDiscoveryState } from '../service.js';
14
+ import { PersistedEnrStore } from './persisted_enr_store.js';
13
15
  const delayBeforeStart = 2000; // 2sec
16
+ /** Upper bound on persisted peer ENRs, to keep the store bounded as peers churn. */ const MAX_PERSISTED_PEER_ENRS = 100;
14
17
  /**
15
18
  * Peer discovery service using Discv5.
16
19
  */ export class DiscV5Service extends EventEmitter {
@@ -18,6 +21,7 @@ const delayBeforeStart = 2000; // 2sec
18
21
  config;
19
22
  packageVersion;
20
23
  logger;
24
+ dateProvider;
21
25
  /** The Discv5 instance */ discv5;
22
26
  /** This instance's ENR */ enr;
23
27
  /** Version identifiers. */ versions;
@@ -25,18 +29,30 @@ const delayBeforeStart = 2000; // 2sec
25
29
  bootstrapNodePeerIds;
26
30
  bootstrapNodeEnrs;
27
31
  trustedPeerEnrs;
32
+ /** Node IDs of all config-provided peers (bootstrap, trusted, private); these are never persisted. */ configProvidedNodeIds;
28
33
  startTime;
34
+ currentIp;
35
+ /** Persistent store of discovered peer ENRs, used to re-seed discovery after a restart. */ persistedEnrs;
29
36
  handlers;
30
- constructor(peerId, config, packageVersion, telemetry = getTelemetryClient(), logger = createLogger('p2p:discv5_service'), configOverrides = {}){
31
- super(), this.peerId = peerId, this.config = config, this.packageVersion = packageVersion, this.logger = logger, this.currentState = PeerDiscoveryState.STOPPED, this.bootstrapNodePeerIds = [], this.bootstrapNodeEnrs = [], this.trustedPeerEnrs = [], this.startTime = 0, this.handlers = {
37
+ constructor(peerId, config, packageVersion, telemetry = getTelemetryClient(), logger = createLogger('p2p:discv5_service'), store, configOverrides = {}, dateProvider = new DateProvider()){
38
+ super(), this.peerId = peerId, this.config = config, this.packageVersion = packageVersion, this.logger = logger, this.dateProvider = dateProvider, this.currentState = PeerDiscoveryState.STOPPED, this.bootstrapNodePeerIds = [], this.bootstrapNodeEnrs = [], this.trustedPeerEnrs = [], this.startTime = 0, this.handlers = {
32
39
  onMultiaddrUpdated: this.onMultiaddrUpdated.bind(this),
33
- onDiscovered: this.onDiscovered.bind(this),
40
+ onPeerDiscovered: this.onPeerDiscovered.bind(this),
34
41
  onEnrAdded: this.onEnrAdded.bind(this)
35
42
  };
43
+ this.persistedEnrs = store ? new PersistedEnrStore(store, MAX_PERSISTED_PEER_ENRS, createLogger(`${this.logger.module}:enr-store`)) : undefined;
36
44
  const { p2pIp, p2pPort, p2pBroadcastPort, bootstrapNodes, trustedPeers, privatePeers } = config;
45
+ this.currentIp = p2pIp;
37
46
  this.bootstrapNodeEnrs = bootstrapNodes.map((x)=>ENR.decodeTxt(x));
38
47
  const privatePeerEnrs = new Set(privatePeers);
39
48
  this.trustedPeerEnrs = trustedPeers.filter((x)=>!privatePeerEnrs.has(x)).map((x)=>ENR.decodeTxt(x));
49
+ // Peers supplied via config are re-injected from config on every start, so they must never end up
50
+ // in the persisted (discovered-peer) store — private peers especially must not be written there.
51
+ this.configProvidedNodeIds = new Set([
52
+ ...bootstrapNodes,
53
+ ...trustedPeers,
54
+ ...privatePeers
55
+ ].map((x)=>ENR.decodeTxt(x).nodeId));
40
56
  // If no overridden broadcast port is provided, use the p2p port as the broadcast port
41
57
  if (!p2pBroadcastPort) {
42
58
  this.logger.warn('No p2pBroadcastPort provided, using p2pPort as broadcast port');
@@ -60,7 +76,8 @@ const delayBeforeStart = 2000; // 2sec
60
76
  lookupTimeout: 2000,
61
77
  requestTimeout: 2000,
62
78
  allowUnverifiedSessions: true,
63
- enrUpdate: !p2pIp ? true : false,
79
+ enrUpdate: config.queryForIp || !p2pIp,
80
+ pingInterval: config.queryForIp ? 10_000 : 300_000,
64
81
  ...configOverrides.config
65
82
  },
66
83
  metricsRegistry
@@ -83,18 +100,37 @@ const delayBeforeStart = 2000; // 2sec
83
100
  return origOnEstablished(...args);
84
101
  }
85
102
  };
86
- this.discv5.on(Discv5Event.DISCOVERED, this.handlers.onDiscovered);
103
+ this.discv5.on(Discv5Event.DISCOVERED, this.handlers.onPeerDiscovered);
87
104
  this.discv5.on(Discv5Event.ENR_ADDED, this.handlers.onEnrAdded);
88
105
  this.discv5.on(Discv5Event.MULTIADDR_UPDATED, this.handlers.onMultiaddrUpdated);
89
106
  }
90
107
  onMultiaddrUpdated(m) {
91
- // We want to update our tcp port to match the udp port
92
- // p2pBroadcastPort is optional on config, however it is set to default within the p2p client factory
93
- const multiAddrTcp = multiaddr(convertToMultiaddr(m.nodeAddress().address, this.config.p2pBroadcastPort, 'tcp'));
108
+ const newIp = m.nodeAddress().address;
109
+ const previousIp = this.currentIp;
110
+ if (newIp === previousIp) {
111
+ this.logger.debug('Discv5 confirmed current IP (no change)', {
112
+ ip: newIp
113
+ });
114
+ return;
115
+ }
116
+ const multiAddrTcp = multiaddr(convertToMultiaddr(newIp, this.config.p2pBroadcastPort, 'tcp'));
94
117
  this.enr.setLocationMultiaddr(multiAddrTcp);
95
- this.logger.info('Multiaddr updated', {
96
- multiaddr: multiAddrTcp.toString()
97
- });
118
+ this.currentIp = newIp;
119
+ if (previousIp) {
120
+ this.logger.info('IP address changed, ENR updated', {
121
+ previousIp,
122
+ newIp,
123
+ multiaddr: multiAddrTcp.toString(),
124
+ enr: this.enr.encodeTxt()
125
+ });
126
+ } else {
127
+ this.logger.info('Initial IP discovered via discv5, ENR updated', {
128
+ ip: newIp,
129
+ multiaddr: multiAddrTcp.toString(),
130
+ enr: this.enr.encodeTxt()
131
+ });
132
+ }
133
+ this.emit('ip:changed', newIp);
98
134
  }
99
135
  async start() {
100
136
  if (this.currentState === PeerDiscoveryState.RUNNING) {
@@ -102,13 +138,18 @@ const delayBeforeStart = 2000; // 2sec
102
138
  }
103
139
  this.logger.debug('Starting DiscV5');
104
140
  await this.discv5.start();
105
- this.startTime = Date.now();
141
+ this.startTime = this.dateProvider.now();
142
+ const enrUpdateEnabled = this.config.queryForIp || !this.config.p2pIp;
106
143
  this.logger.info(`DiscV5 service started`, {
107
144
  nodeId: this.enr.nodeId,
108
145
  peerId: this.peerId,
109
146
  enrUdp: await this.enr.getFullMultiaddr('udp'),
110
147
  enrTcp: await this.enr.getFullMultiaddr('tcp'),
111
- versions: this.versions
148
+ versions: this.versions,
149
+ enrUpdateEnabled,
150
+ queryForIp: this.config.queryForIp,
151
+ configuredIp: this.config.p2pIp ?? 'none',
152
+ pingIntervalMs: this.config.queryForIp ? 10_000 : 300_000
112
153
  });
113
154
  this.currentState = PeerDiscoveryState.RUNNING;
114
155
  // Add bootnode ENR if provided
@@ -138,6 +179,23 @@ const delayBeforeStart = 2000; // 2sec
138
179
  this.discv5.addEnr(enr);
139
180
  }
140
181
  }
182
+ // Re-seed discovery from peers persisted on previous runs. This lets a node rejoin the network
183
+ // after a restart even when no bootstrap node is reachable: discv5 has no on-disk routing table,
184
+ // so without this its DHT would start empty and rediscovery would depend on inbound dials alone.
185
+ if (this.persistedEnrs) {
186
+ // Drop peers that are now config-provided (re-injected above) or fail version checks.
187
+ const enrs = await this.persistedEnrs.load((enr)=>this.validateEnr(enr) && !this.configProvidedNodeIds.has(enr.nodeId));
188
+ for (const enr of enrs){
189
+ try {
190
+ this.discv5.addEnr(enr);
191
+ } catch (err) {
192
+ this.logger.debug(`Error re-seeding persisted ENR ${enr.nodeId}`, err);
193
+ }
194
+ }
195
+ if (enrs.length > 0) {
196
+ this.logger.info(`Re-seeded discovery with ${enrs.length} persisted peer ENRs`);
197
+ }
198
+ }
141
199
  }
142
200
  async runRandomNodesQuery() {
143
201
  if (this.currentState !== PeerDiscoveryState.RUNNING) {
@@ -145,8 +203,8 @@ const delayBeforeStart = 2000; // 2sec
145
203
  }
146
204
  // First, wait some time before starting the peer discovery
147
205
  // reference: https://github.com/ChainSafe/lodestar/issues/3423
148
- const msSinceStart = Date.now() - this.startTime;
149
- if (Date.now() - this.startTime <= delayBeforeStart) {
206
+ const msSinceStart = this.dateProvider.now() - this.startTime;
207
+ if (this.dateProvider.now() - this.startTime <= delayBeforeStart) {
150
208
  await sleep(delayBeforeStart - msSinceStart);
151
209
  }
152
210
  try {
@@ -174,22 +232,48 @@ const delayBeforeStart = 2000; // 2sec
174
232
  if (this.currentState !== PeerDiscoveryState.RUNNING) {
175
233
  return;
176
234
  }
177
- await this.discv5.off(Discv5Event.DISCOVERED, this.handlers.onDiscovered);
235
+ await this.discv5.off(Discv5Event.DISCOVERED, this.handlers.onPeerDiscovered);
178
236
  await this.discv5.off(Discv5Event.ENR_ADDED, this.handlers.onEnrAdded);
179
237
  await this.discv5.off(Discv5Event.MULTIADDR_UPDATED, this.handlers.onMultiaddrUpdated);
180
238
  await this.discv5.stop();
181
239
  this.currentState = PeerDiscoveryState.STOPPED;
182
240
  }
183
241
  async onEnrAdded(enr) {
184
- const multiAddrTcp = await enr.getFullMultiaddr('tcp');
185
- const multiAddrUdp = await enr.getFullMultiaddr('udp');
186
- this.logger.debug(`Added ENR ${enr.encodeTxt()}`, {
187
- multiAddrTcp,
188
- multiAddrUdp,
189
- nodeId: enr.nodeId
190
- });
242
+ try {
243
+ const multiAddrTcp = await enr.getFullMultiaddr('tcp');
244
+ const multiAddrUdp = await enr.getFullMultiaddr('udp');
245
+ this.logger.debug(`Added ENR ${enr.encodeTxt()}`, {
246
+ multiAddrTcp,
247
+ multiAddrUdp,
248
+ nodeId: enr.nodeId
249
+ });
250
+ // A peer just entered the routing table — persist it so we can re-seed discovery after a restart.
251
+ if (this.persistedEnrs && this.shouldPersist(enr)) {
252
+ await this.persistedEnrs.persist(enr);
253
+ }
254
+ this.onDiscovered(enr);
255
+ } catch (err) {
256
+ // A malformed ENR address field (e.g. a 3-byte TCP port) makes @nethermindeth/enr throw while
257
+ // parsing the multiaddr. This is an async event listener, so an unhandled rejection would crash
258
+ // the process — catch, log, and drop the ENR instead.
259
+ this.logger.warn(`Dropping ENR with unparseable address`, {
260
+ nodeId: enr.nodeId,
261
+ err
262
+ });
263
+ }
264
+ }
265
+ async onPeerDiscovered(enr) {
266
+ // discv5 updates an existing routing-table entry on an ENR sequence bump without emitting enrAdded,
267
+ // so DISCOVERED is our only signal that a peer we already track may have changed address. Refresh
268
+ // the persisted copy (a no-op for peers we don't already store) so we don't keep dialing a stale ENR.
269
+ if (this.persistedEnrs && this.shouldPersist(enr)) {
270
+ await this.persistedEnrs.refresh(enr);
271
+ }
191
272
  this.onDiscovered(enr);
192
273
  }
274
+ /** Whether an ENR belongs in the persisted store: a validated, non-config peer that isn't ourselves. */ shouldPersist(enr) {
275
+ return !this.configProvidedNodeIds.has(enr.nodeId) && enr.nodeId !== this.enr.nodeId && this.validateEnr(enr);
276
+ }
193
277
  isOurBootnode(enr) {
194
278
  return this.bootstrapNodeEnrs.some((x)=>x.nodeId === enr.nodeId);
195
279
  }
@@ -220,6 +304,18 @@ const delayBeforeStart = 2000; // 2sec
220
304
  this.logger.debug(`Peer node ${enr.nodeId} does not have aztec key in ENR`);
221
305
  return false;
222
306
  }
307
+ // A malformed TCP field (e.g. a non-2-byte port) makes @nethermindeth/enr throw while building the
308
+ // multiaddr. Reject such an ENR here so it's never emitted as a full peer or re-parsed by an
309
+ // unguarded listener (which would crash the process). A missing TCP addr is allowed — those peers
310
+ // are simply skipped at dial time.
311
+ try {
312
+ enr.getLocationMultiaddr('tcp');
313
+ } catch (err) {
314
+ this.logger.debug(`Peer node ${enr.nodeId} has an unparseable TCP address`, {
315
+ err
316
+ });
317
+ return false;
318
+ }
223
319
  // And check it has the correct version
224
320
  let compressedVersion;
225
321
  try {
@@ -0,0 +1,38 @@
1
+ import { type Logger } from '@aztec/foundation/log';
2
+ import type { AztecAsyncKVStore } from '@aztec/kv-store';
3
+ import { ENR } from '@nethermindeth/enr';
4
+ /**
5
+ * A bounded, transactional store of discovered peer ENRs used to re-seed discovery after a restart.
6
+ *
7
+ * Entries are keyed by nodeId (so re-seeing a peer dedups in place) and carry a monotonic sequence so
8
+ * the store behaves as a FIFO: when it exceeds its cap, the oldest-seen peers are evicted first. All
9
+ * writes run in a transaction so concurrent discovery events can't race the size check.
10
+ */
11
+ export declare class PersistedEnrStore {
12
+ private readonly store;
13
+ private readonly maxEntries;
14
+ private readonly logger;
15
+ private readonly enrs;
16
+ /** Monotonic sequence stamped on each entry; seeded from the store's max in {@link load}. */
17
+ private seq;
18
+ constructor(store: AztecAsyncKVStore, maxEntries: number, logger?: Logger);
19
+ /** Adds or replaces a peer's ENR, stamping it as most-recently-seen and evicting the oldest if over cap. */
20
+ persist(enr: ENR): Promise<void>;
21
+ /**
22
+ * Refreshes an already-persisted peer's stored ENR when a newer one (higher ENR sequence) is seen.
23
+ * A no-op for peers we don't already track — we never add new peers via this path, only update.
24
+ *
25
+ * This exists because discv5 updates an existing routing-table entry on an ENR sequence bump without
26
+ * emitting an `enrAdded` event, so a peer that changes address would otherwise keep its stale ENR
27
+ * persisted until evicted.
28
+ */
29
+ refresh(enr: ENR): Promise<void>;
30
+ /**
31
+ * Loads all persisted ENRs, decoding each and keeping those the `accept` predicate allows. Entries
32
+ * that fail to decode or are rejected are removed from the store. The FIFO sequence resumes from the
33
+ * highest persisted value so eviction order survives restarts.
34
+ */
35
+ load(accept: (enr: ENR) => boolean): Promise<ENR[]>;
36
+ private decodeStoredEnr;
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc2lzdGVkX2Vucl9zdG9yZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2Rpc2N2NS9wZXJzaXN0ZWRfZW5yX3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUEwQnpDOzs7Ozs7R0FNRztBQUNILHFCQUFhLGlCQUFpQjtJQU0xQixPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUs7SUFDdEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVO0lBQzNCLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTTtJQVB6QixPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBZ0M7SUFDckQsNkZBQTZGO0lBQzdGLE9BQU8sQ0FBQyxHQUFHLENBQUs7SUFFaEIsWUFDbUIsS0FBSyxFQUFFLGlCQUFpQixFQUN4QixVQUFVLEVBQUUsTUFBTSxFQUNsQixNQUFNLEdBQUUsTUFBNkMsRUFHdkU7SUFFRCw0R0FBNEc7SUFDL0YsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQXdCNUM7SUFFRDs7Ozs7OztPQU9HO0lBQ1UsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQXVCNUM7SUFFRDs7OztPQUlHO0lBQ1UsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQThCL0Q7SUFFRCxPQUFPLENBQUMsZUFBZTtDQVd4QiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persisted_enr_store.d.ts","sourceRoot":"","sources":["../../../src/services/discv5/persisted_enr_store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AAExE,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AA0BzC;;;;;;GAMG;AACH,qBAAa,iBAAiB;IAM1B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgC;IACrD,6FAA6F;IAC7F,OAAO,CAAC,GAAG,CAAK;IAEhB,YACmB,KAAK,EAAE,iBAAiB,EACxB,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,MAA6C,EAGvE;IAED,4GAA4G;IAC/F,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB5C;IAED;;;;;;;OAOG;IACU,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB5C;IAED;;;;OAIG;IACU,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CA8B/D;IAED,OAAO,CAAC,eAAe;CAWxB"}
@@ -0,0 +1,145 @@
1
+ import { createLogger } from '@aztec/foundation/log';
2
+ import { ENR } from '@nethermindeth/enr';
3
+ /** Map name under which discovered peer ENRs are persisted so discovery can be re-seeded after a restart. */ const PERSISTED_ENRS_MAP_NAME = 'discovered_peer_enrs';
4
+ function parsePersistedEnr(value) {
5
+ try {
6
+ const parsed = JSON.parse(value);
7
+ if (typeof parsed?.enr === 'string' && typeof parsed?.seq === 'number') {
8
+ return parsed;
9
+ }
10
+ } catch {
11
+ // Unparseable entry; caller treats it as stale.
12
+ }
13
+ return undefined;
14
+ }
15
+ /**
16
+ * A bounded, transactional store of discovered peer ENRs used to re-seed discovery after a restart.
17
+ *
18
+ * Entries are keyed by nodeId (so re-seeing a peer dedups in place) and carry a monotonic sequence so
19
+ * the store behaves as a FIFO: when it exceeds its cap, the oldest-seen peers are evicted first. All
20
+ * writes run in a transaction so concurrent discovery events can't race the size check.
21
+ */ export class PersistedEnrStore {
22
+ store;
23
+ maxEntries;
24
+ logger;
25
+ enrs;
26
+ /** Monotonic sequence stamped on each entry; seeded from the store's max in {@link load}. */ seq;
27
+ constructor(store, maxEntries, logger = createLogger('p2p:discv5:enr-store')){
28
+ this.store = store;
29
+ this.maxEntries = maxEntries;
30
+ this.logger = logger;
31
+ this.seq = 0;
32
+ this.enrs = store.openMap(PERSISTED_ENRS_MAP_NAME);
33
+ }
34
+ /** Adds or replaces a peer's ENR, stamping it as most-recently-seen and evicting the oldest if over cap. */ async persist(enr) {
35
+ const nodeId = enr.nodeId;
36
+ const enrTxt = enr.encodeTxt();
37
+ try {
38
+ await this.store.transactionAsync(async ()=>{
39
+ const seq = ++this.seq;
40
+ const others = [];
41
+ for await (const [id, value] of this.enrs.entriesAsync()){
42
+ if (id !== nodeId) {
43
+ others.push({
44
+ nodeId: id,
45
+ seq: parsePersistedEnr(value)?.seq ?? 0
46
+ });
47
+ }
48
+ }
49
+ const overflow = others.length + 1 - this.maxEntries;
50
+ if (overflow > 0) {
51
+ others.sort((a, b)=>a.seq - b.seq); // oldest-seen (lowest sequence) first
52
+ for(let i = 0; i < overflow; i++){
53
+ await this.enrs.delete(others[i].nodeId);
54
+ }
55
+ }
56
+ await this.enrs.set(nodeId, JSON.stringify({
57
+ enr: enrTxt,
58
+ seq
59
+ }));
60
+ });
61
+ } catch (err) {
62
+ this.logger.warn(`Failed to persist discovered ENR ${nodeId}`, err);
63
+ }
64
+ }
65
+ /**
66
+ * Refreshes an already-persisted peer's stored ENR when a newer one (higher ENR sequence) is seen.
67
+ * A no-op for peers we don't already track — we never add new peers via this path, only update.
68
+ *
69
+ * This exists because discv5 updates an existing routing-table entry on an ENR sequence bump without
70
+ * emitting an `enrAdded` event, so a peer that changes address would otherwise keep its stale ENR
71
+ * persisted until evicted.
72
+ */ async refresh(enr) {
73
+ const nodeId = enr.nodeId;
74
+ try {
75
+ await this.store.transactionAsync(async ()=>{
76
+ const existing = await this.enrs.getAsync(nodeId);
77
+ if (!existing) {
78
+ return;
79
+ }
80
+ // Two unrelated sequence numbers are in play:
81
+ // - the ENR sequence (`enr.seq` / `storedEnrSeq`) is set by the *peer* and bumped whenever it
82
+ // revises its record (e.g. changes address); we compare these to decide whether the incoming
83
+ // ENR is genuinely newer and worth keeping.
84
+ // - our storage sequence (`this.seq`) is an internal counter used only for FIFO eviction; we
85
+ // stamp a fresh one so this entry counts as most-recently-seen.
86
+ const storedEnrSeq = this.decodeStoredEnr(existing)?.seq;
87
+ if (storedEnrSeq !== undefined && enr.seq <= storedEnrSeq) {
88
+ return;
89
+ }
90
+ await this.enrs.set(nodeId, JSON.stringify({
91
+ enr: enr.encodeTxt(),
92
+ seq: ++this.seq
93
+ }));
94
+ });
95
+ } catch (err) {
96
+ this.logger.warn(`Failed to refresh persisted ENR ${nodeId}`, err);
97
+ }
98
+ }
99
+ /**
100
+ * Loads all persisted ENRs, decoding each and keeping those the `accept` predicate allows. Entries
101
+ * that fail to decode or are rejected are removed from the store. The FIFO sequence resumes from the
102
+ * highest persisted value so eviction order survives restarts.
103
+ */ async load(accept) {
104
+ const valid = [];
105
+ const stale = [];
106
+ let maxSeq = 0;
107
+ for await (const [nodeId, value] of this.enrs.entriesAsync()){
108
+ const parsed = parsePersistedEnr(value);
109
+ let enr;
110
+ if (parsed) {
111
+ try {
112
+ enr = ENR.decodeTxt(parsed.enr);
113
+ } catch (err) {
114
+ this.logger.debug(`Dropping undecodable persisted ENR ${nodeId}`, err);
115
+ }
116
+ }
117
+ if (!parsed || !enr || !accept(enr)) {
118
+ stale.push(nodeId);
119
+ continue;
120
+ }
121
+ maxSeq = Math.max(maxSeq, parsed.seq);
122
+ valid.push(enr);
123
+ }
124
+ this.seq = maxSeq;
125
+ if (stale.length > 0) {
126
+ await this.store.transactionAsync(async ()=>{
127
+ for (const nodeId of stale){
128
+ await this.enrs.delete(nodeId);
129
+ }
130
+ });
131
+ }
132
+ return valid;
133
+ }
134
+ decodeStoredEnr(value) {
135
+ const parsed = parsePersistedEnr(value);
136
+ if (!parsed) {
137
+ return undefined;
138
+ }
139
+ try {
140
+ return ENR.decodeTxt(parsed.enr);
141
+ } catch {
142
+ return undefined;
143
+ }
144
+ }
145
+ }
@@ -1,6 +1,6 @@
1
1
  import type { EthAddress } from '@aztec/foundation/eth-address';
2
- import type { PeerInfo } from '@aztec/stdlib/interfaces/server';
3
- import type { Gossipable, PeerErrorSeverity } from '@aztec/stdlib/p2p';
2
+ import type { P2PConnectivity, PeerInfo } from '@aztec/stdlib/interfaces/server';
3
+ import type { Gossipable, PeerErrorSeverity, TopicType } from '@aztec/stdlib/p2p';
4
4
  import { Tx, TxHash } from '@aztec/stdlib/tx';
5
5
  import type { PeerId } from '@libp2p/interface';
6
6
  import type { ENR } from '@nethermindeth/enr';
@@ -10,16 +10,20 @@ import type { BatchTxRequesterLibP2PService } from './reqresp/batch-tx-requester
10
10
  import type { P2PReqRespConfig } from './reqresp/config.js';
11
11
  import type { ConnectionSampler } from './reqresp/connection-sampler/connection_sampler.js';
12
12
  import { type AuthRequest, StatusMessage } from './reqresp/index.js';
13
- import type { ReqRespInterface, ReqRespResponse, ReqRespSubProtocol, ReqRespSubProtocolHandler, ReqRespSubProtocolHandlers, ReqRespSubProtocolValidators, SubProtocolMap } from './reqresp/interface.js';
13
+ import type { ReqRespInterface, ReqRespResponse, ReqRespSubProtocol, ReqRespSubProtocolHandler, ReqRespSubProtocolHandlers, SubProtocolMap } from './reqresp/interface.js';
14
14
  import type { GoodByeReason } from './reqresp/protocols/goodbye.js';
15
- import { type P2PBlockReceivedCallback, type P2PCheckpointReceivedCallback, type P2PDuplicateProposalCallback, type P2PService, type PeerDiscoveryService, PeerDiscoveryState } from './service.js';
15
+ import { type P2PBlockReceivedCallback, type P2PCheckpointAttestationCallback, type P2PCheckpointReceivedCallback, type P2PDuplicateAttestationCallback, type P2PDuplicateProposalCallback, type P2POversizedProposalCallback, type P2PService, type PeerDiscoveryService, PeerDiscoveryState } from './service.js';
16
16
  /**
17
17
  * A dummy implementation of the P2P Service.
18
18
  */
19
19
  export declare class DummyP2PService implements P2PService {
20
+ private allNodesCheckpointReceivedCallback?;
20
21
  updateConfig(_config: Partial<P2PReqRespConfig>): void;
21
22
  /** Returns an empty array for peers. */
22
23
  getPeers(): PeerInfo[];
24
+ /** Reports p2p as disabled, since this service does not run a p2p stack. */
25
+ getP2PConnectivity(): P2PConnectivity;
26
+ getGossipMeshPeerCount(_topicType: TopicType): number;
23
27
  /**
24
28
  * Starts the dummy implementation.
25
29
  * @returns A resolved promise.
@@ -47,11 +51,21 @@ export declare class DummyP2PService implements P2PService {
47
51
  /**
48
52
  * Register a callback into the validator client for when a checkpoint proposal is received
49
53
  */
50
- registerCheckpointReceivedCallback(_callback: P2PCheckpointReceivedCallback): void;
54
+ registerValidatorCheckpointReceivedCallback(_callback: P2PCheckpointReceivedCallback): void;
55
+ registerAllNodesCheckpointReceivedCallback(callback: P2PCheckpointReceivedCallback): void;
51
56
  /**
52
57
  * Register a callback for when a duplicate proposal is detected
53
58
  */
54
59
  registerDuplicateProposalCallback(_callback: P2PDuplicateProposalCallback): void;
60
+ /**
61
+ * Register a callback for when an oversized proposal is stored
62
+ */
63
+ registerOversizedProposalCallback(_callback: P2POversizedProposalCallback): void;
64
+ /**
65
+ * Register a callback for when a duplicate attestation is detected
66
+ */
67
+ registerDuplicateAttestationCallback(_callback: P2PDuplicateAttestationCallback): void;
68
+ registerCheckpointAttestationCallback(_callback: P2PCheckpointAttestationCallback): void;
55
69
  /**
56
70
  * Sends a request to a peer.
57
71
  * @param _protocol - The protocol to send the request on.
@@ -59,22 +73,14 @@ export declare class DummyP2PService implements P2PService {
59
73
  * @returns The response from the peer, otherwise undefined.
60
74
  */
61
75
  sendRequest<Protocol extends ReqRespSubProtocol>(_protocol: Protocol, _request: InstanceType<SubProtocolMap[Protocol]['request']>): Promise<InstanceType<SubProtocolMap[Protocol]['response']> | undefined>;
62
- /**
63
- * Sends a batch request to a peer.
64
- * @param _protocol - The protocol to send the request on.
65
- * @param _requests - The requests to send.
66
- * @returns The responses from the peer, otherwise undefined.
67
- */
68
- sendBatchRequest<Protocol extends ReqRespSubProtocol>(_protocol: Protocol, _requests: InstanceType<SubProtocolMap[Protocol]['request']>[]): Promise<InstanceType<SubProtocolMap[Protocol]['response']>[]>;
69
76
  sendRequestToPeer(_peerId: PeerId, _subProtocol: ReqRespSubProtocol, _payload: Buffer, _dialTimeout?: number): Promise<ReqRespResponse>;
70
77
  /**
71
78
  * Returns the ENR of the peer.
72
79
  * @returns The ENR of the peer, otherwise undefined.
73
80
  */
74
81
  getEnr(): undefined;
75
- validate(_txs: Tx[]): Promise<void>;
76
- validatePropagatedTx(_tx: Tx, _peerId: PeerId): Promise<boolean>;
77
- addReqRespSubProtocol(_subProtocol: ReqRespSubProtocol, _handler: ReqRespSubProtocolHandler, _validator?: ReqRespSubProtocolValidators[ReqRespSubProtocol]): Promise<void>;
82
+ validateTxsReceivedInBlockProposal(_txs: Tx[]): Promise<void>;
83
+ addReqRespSubProtocol(_subProtocol: ReqRespSubProtocol, _handler: ReqRespSubProtocolHandler): Promise<void>;
78
84
  handleAuthRequestFromPeer(_authRequest: AuthRequest, _peerId: PeerId): Promise<StatusMessage>;
79
85
  registerThisValidatorAddresses(_address: EthAddress[]): void;
80
86
  /**
@@ -130,15 +136,15 @@ export declare class DummyPeerManager implements PeerManagerInterface {
130
136
  }
131
137
  export declare class DummyReqResp implements ReqRespInterface {
132
138
  updateConfig(_config: Partial<P2PReqRespConfig>): void;
133
- start(_subProtocolHandlers: ReqRespSubProtocolHandlers, _subProtocolValidators: ReqRespSubProtocolValidators): Promise<void>;
139
+ setShouldRejectPeer(): void;
140
+ start(_subProtocolHandlers: ReqRespSubProtocolHandlers): Promise<void>;
134
141
  stop(): Promise<void>;
135
142
  sendRequest<SubProtocol extends ReqRespSubProtocol>(_subProtocol: SubProtocol, _request: InstanceType<SubProtocolMap[SubProtocol]['request']>): Promise<InstanceType<SubProtocolMap[SubProtocol]['response']> | undefined>;
136
- sendBatchRequest<SubProtocol extends ReqRespSubProtocol>(_subProtocol: SubProtocol, _requests: InstanceType<SubProtocolMap[SubProtocol]['request']>[], _pinnedPeer: PeerId | undefined, _timeoutMs?: number, _maxPeers?: number, _maxRetryAttempts?: number): Promise<InstanceType<SubProtocolMap[SubProtocol]['response']>[]>;
137
143
  sendRequestToPeer(_peerId: PeerId, _subProtocol: ReqRespSubProtocol, _payload: Buffer, _dialTimeout?: number): Promise<ReqRespResponse>;
138
144
  /**
139
145
  * Get dummy connection sampler for testing
140
146
  */
141
147
  getConnectionSampler(): Pick<ConnectionSampler, 'getPeerListSortedByConnectionCountAsc'>;
142
- addSubProtocol(_subProtocol: ReqRespSubProtocol, _handler: ReqRespSubProtocolHandler, _validator?: ReqRespSubProtocolValidators[ReqRespSubProtocol]): Promise<void>;
148
+ addSubProtocol(_subProtocol: ReqRespSubProtocol, _handler: ReqRespSubProtocolHandler): Promise<void>;
143
149
  }
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVtbXlfc2VydmljZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2R1bW15X3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU5QyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLFlBQVksTUFBTSxRQUFRLENBQUM7QUFFbEMsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RSxPQUFPLEtBQUssRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9GLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsS0FBSyxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckUsT0FBTyxLQUFLLEVBQ1YsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLDBCQUEwQixFQUMxQiw0QkFBNEIsRUFDNUIsY0FBYyxFQUNmLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFcEUs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
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVtbXlfc2VydmljZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2R1bW15X3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pGLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTlDLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sWUFBWSxNQUFNLFFBQVEsQ0FBQztBQUVsQyxPQUFPLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3hFLE9BQU8sS0FBSyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDL0YsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RCxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFDVixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLGtCQUFrQixFQUNsQix5QkFBeUIsRUFDekIsMEJBQTBCLEVBQzFCLGNBQWMsRUFDZixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFD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
@@ -1 +1 @@
1
- {"version":3,"file":"dummy_service.d.ts","sourceRoot":"","sources":["../../src/services/dummy_service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dummy_service.d.ts","sourceRoot":"","sources":["../../src/services/dummy_service.ts"],"names":[],"mappings":"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"}