@aztec/p2p 0.0.1-commit.c7c42ec → 0.0.1-commit.cf93bcc56

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 (513) hide show
  1. package/dest/bootstrap/bootstrap.d.ts +4 -3
  2. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  3. package/dest/bootstrap/bootstrap.js +4 -4
  4. package/dest/client/factory.d.ts +7 -6
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +52 -14
  7. package/dest/client/interface.d.ts +56 -25
  8. package/dest/client/interface.d.ts.map +1 -1
  9. package/dest/client/p2p_client.d.ts +44 -51
  10. package/dest/client/p2p_client.d.ts.map +1 -1
  11. package/dest/client/p2p_client.js +579 -259
  12. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +2 -0
  13. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +1 -0
  14. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +305 -0
  15. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +73 -0
  16. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +1 -0
  17. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +8 -0
  18. package/dest/config.d.ts +33 -3
  19. package/dest/config.d.ts.map +1 -1
  20. package/dest/config.js +23 -4
  21. package/dest/errors/tx-pool.error.d.ts +8 -0
  22. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  23. package/dest/errors/tx-pool.error.js +9 -0
  24. package/dest/index.d.ts +2 -1
  25. package/dest/index.d.ts.map +1 -1
  26. package/dest/index.js +1 -0
  27. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +111 -76
  28. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  29. package/dest/mem_pools/attestation_pool/attestation_pool.js +441 -3
  30. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  31. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  32. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +527 -287
  33. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  34. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  35. package/dest/mem_pools/attestation_pool/index.js +1 -2
  36. package/dest/mem_pools/attestation_pool/mocks.d.ts +9 -6
  37. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  38. package/dest/mem_pools/attestation_pool/mocks.js +16 -12
  39. package/dest/mem_pools/index.d.ts +3 -2
  40. package/dest/mem_pools/index.d.ts.map +1 -1
  41. package/dest/mem_pools/index.js +1 -1
  42. package/dest/mem_pools/instrumentation.d.ts +1 -1
  43. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  44. package/dest/mem_pools/instrumentation.js +5 -14
  45. package/dest/mem_pools/interface.d.ts +5 -5
  46. package/dest/mem_pools/interface.d.ts.map +1 -1
  47. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +15 -10
  48. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  49. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +91 -50
  50. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +19 -5
  51. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -1
  52. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +59 -3
  53. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +79 -5
  54. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -1
  55. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +47 -0
  56. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +16 -0
  57. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  58. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +122 -0
  59. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +2 -2
  60. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -1
  61. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +3 -3
  62. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +4 -4
  63. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -1
  64. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +2 -0
  65. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +2 -2
  66. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -1
  67. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
  68. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
  69. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
  70. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  71. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  72. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  73. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  74. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  75. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  76. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  77. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  78. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  79. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  80. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  81. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  82. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  83. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  84. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +93 -0
  85. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  86. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  87. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +95 -0
  88. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  89. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  90. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  91. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +174 -0
  92. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  93. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  94. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  95. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  96. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
  97. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  98. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  99. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  100. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  101. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  102. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +74 -0
  103. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  104. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  105. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +73 -0
  106. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  107. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  108. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  109. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  110. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  111. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  112. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  113. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  114. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  115. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +207 -0
  116. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  117. package/dest/mem_pools/tx_pool_v2/interfaces.js +8 -0
  118. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +97 -0
  119. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  120. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +152 -0
  121. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  122. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  123. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  124. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  125. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  126. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +355 -0
  127. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +58 -0
  128. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  129. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +161 -0
  130. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +75 -0
  131. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  132. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +871 -0
  133. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +4 -4
  134. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  135. package/dest/msg_validators/attestation_validator/attestation_validator.js +51 -18
  136. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +7 -7
  137. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  138. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +22 -13
  139. package/dest/msg_validators/clock_tolerance.d.ts +21 -0
  140. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
  141. package/dest/msg_validators/clock_tolerance.js +37 -0
  142. package/dest/msg_validators/index.d.ts +2 -2
  143. package/dest/msg_validators/index.d.ts.map +1 -1
  144. package/dest/msg_validators/index.js +1 -1
  145. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +9 -0
  146. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
  147. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +6 -0
  148. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +9 -0
  149. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
  150. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +6 -0
  151. package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
  152. package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
  153. package/dest/msg_validators/proposal_validator/index.js +3 -0
  154. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -0
  155. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
  156. package/dest/msg_validators/proposal_validator/proposal_validator.js +104 -0
  157. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +23 -0
  158. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -0
  159. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +212 -0
  160. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +3 -3
  161. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  162. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  163. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  164. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  165. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +20 -6
  166. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  167. package/dest/msg_validators/tx_validator/block_header_validator.js +4 -3
  168. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  169. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  170. package/dest/msg_validators/tx_validator/data_validator.js +4 -1
  171. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -4
  172. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  173. package/dest/msg_validators/tx_validator/double_spend_validator.js +7 -6
  174. package/dest/msg_validators/tx_validator/factory.d.ts +8 -3
  175. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  176. package/dest/msg_validators/tx_validator/factory.js +21 -11
  177. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
  178. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
  179. package/dest/msg_validators/tx_validator/fee_payer_balance.js +20 -0
  180. package/dest/msg_validators/tx_validator/gas_validator.d.ts +3 -2
  181. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  182. package/dest/msg_validators/tx_validator/gas_validator.js +11 -16
  183. package/dest/msg_validators/tx_validator/index.d.ts +2 -1
  184. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  185. package/dest/msg_validators/tx_validator/index.js +1 -0
  186. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -2
  187. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  188. package/dest/msg_validators/tx_validator/metadata_validator.js +2 -2
  189. package/dest/msg_validators/tx_validator/phases_validator.d.ts +3 -2
  190. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  191. package/dest/msg_validators/tx_validator/phases_validator.js +3 -3
  192. package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
  193. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
  194. package/dest/msg_validators/tx_validator/size_validator.js +23 -0
  195. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +22 -5
  196. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  197. package/dest/msg_validators/tx_validator/timestamp_validator.js +8 -8
  198. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  199. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  200. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  201. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  202. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  203. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
  204. package/dest/services/data_store.d.ts +1 -1
  205. package/dest/services/data_store.d.ts.map +1 -1
  206. package/dest/services/data_store.js +10 -6
  207. package/dest/services/discv5/discV5_service.js +1 -1
  208. package/dest/services/dummy_service.d.ts +26 -2
  209. package/dest/services/dummy_service.d.ts.map +1 -1
  210. package/dest/services/dummy_service.js +48 -0
  211. package/dest/services/encoding.d.ts +2 -2
  212. package/dest/services/encoding.d.ts.map +1 -1
  213. package/dest/services/encoding.js +9 -7
  214. package/dest/services/gossipsub/index.d.ts +3 -0
  215. package/dest/services/gossipsub/index.d.ts.map +1 -0
  216. package/dest/services/gossipsub/index.js +2 -0
  217. package/dest/services/gossipsub/scoring.d.ts +21 -3
  218. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  219. package/dest/services/gossipsub/scoring.js +24 -7
  220. package/dest/services/gossipsub/topic_score_params.d.ts +161 -0
  221. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  222. package/dest/services/gossipsub/topic_score_params.js +324 -0
  223. package/dest/services/index.d.ts +2 -1
  224. package/dest/services/index.d.ts.map +1 -1
  225. package/dest/services/index.js +1 -0
  226. package/dest/services/libp2p/instrumentation.d.ts +1 -1
  227. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  228. package/dest/services/libp2p/instrumentation.js +30 -72
  229. package/dest/services/libp2p/libp2p_service.d.ts +105 -33
  230. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  231. package/dest/services/libp2p/libp2p_service.js +980 -317
  232. package/dest/services/peer-manager/metrics.d.ts +2 -2
  233. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  234. package/dest/services/peer-manager/metrics.js +21 -26
  235. package/dest/services/peer-manager/peer_manager.d.ts +2 -2
  236. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  237. package/dest/services/peer-manager/peer_manager.js +0 -10
  238. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  239. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  240. package/dest/services/peer-manager/peer_scoring.js +32 -6
  241. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +47 -0
  242. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  243. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +566 -0
  244. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  245. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  246. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  247. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +50 -0
  248. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  249. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  250. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +37 -0
  251. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  252. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +151 -0
  253. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +54 -0
  254. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  255. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +139 -0
  256. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
  257. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  258. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
  259. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +22 -3
  260. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  261. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +63 -4
  262. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -1
  263. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  264. package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
  265. package/dest/services/reqresp/constants.d.ts +12 -0
  266. package/dest/services/reqresp/constants.d.ts.map +1 -0
  267. package/dest/services/reqresp/constants.js +7 -0
  268. package/dest/services/reqresp/interface.d.ts +12 -1
  269. package/dest/services/reqresp/interface.d.ts.map +1 -1
  270. package/dest/services/reqresp/interface.js +15 -1
  271. package/dest/services/reqresp/metrics.d.ts +6 -5
  272. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  273. package/dest/services/reqresp/metrics.js +17 -21
  274. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
  275. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  276. package/dest/services/reqresp/protocols/block_txs/bitvector.js +12 -0
  277. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  278. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  279. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +27 -9
  280. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +29 -6
  281. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  282. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +59 -13
  283. package/dest/services/reqresp/protocols/status.d.ts +1 -1
  284. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  285. package/dest/services/reqresp/protocols/status.js +4 -1
  286. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  287. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  288. package/dest/services/reqresp/protocols/tx.js +20 -0
  289. package/dest/services/reqresp/reqresp.d.ts +6 -1
  290. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  291. package/dest/services/reqresp/reqresp.js +471 -50
  292. package/dest/services/service.d.ts +53 -3
  293. package/dest/services/service.d.ts.map +1 -1
  294. package/dest/services/tx_collection/config.d.ts +22 -1
  295. package/dest/services/tx_collection/config.d.ts.map +1 -1
  296. package/dest/services/tx_collection/config.js +55 -1
  297. package/dest/services/tx_collection/fast_tx_collection.d.ts +7 -4
  298. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  299. package/dest/services/tx_collection/fast_tx_collection.js +34 -13
  300. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  301. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  302. package/dest/services/tx_collection/file_store_tx_collection.js +165 -0
  303. package/dest/services/tx_collection/file_store_tx_source.d.ts +37 -0
  304. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  305. package/dest/services/tx_collection/file_store_tx_source.js +79 -0
  306. package/dest/services/tx_collection/index.d.ts +3 -1
  307. package/dest/services/tx_collection/index.d.ts.map +1 -1
  308. package/dest/services/tx_collection/index.js +2 -0
  309. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  310. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  311. package/dest/services/tx_collection/instrumentation.js +11 -13
  312. package/dest/services/tx_collection/proposal_tx_collector.d.ts +48 -0
  313. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
  314. package/dest/services/tx_collection/proposal_tx_collector.js +49 -0
  315. package/dest/services/tx_collection/slow_tx_collection.d.ts +8 -4
  316. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  317. package/dest/services/tx_collection/slow_tx_collection.js +55 -23
  318. package/dest/services/tx_collection/tx_collection.d.ts +25 -13
  319. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  320. package/dest/services/tx_collection/tx_collection.js +79 -7
  321. package/dest/services/tx_collection/tx_collection_sink.d.ts +15 -6
  322. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  323. package/dest/services/tx_collection/tx_collection_sink.js +13 -7
  324. package/dest/services/tx_file_store/config.d.ts +16 -0
  325. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  326. package/dest/services/tx_file_store/config.js +22 -0
  327. package/dest/services/tx_file_store/index.d.ts +4 -0
  328. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  329. package/dest/services/tx_file_store/index.js +3 -0
  330. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  331. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  332. package/dest/services/tx_file_store/instrumentation.js +29 -0
  333. package/dest/services/tx_file_store/tx_file_store.d.ts +48 -0
  334. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  335. package/dest/services/tx_file_store/tx_file_store.js +152 -0
  336. package/dest/services/tx_provider.d.ts +5 -5
  337. package/dest/services/tx_provider.d.ts.map +1 -1
  338. package/dest/services/tx_provider.js +5 -4
  339. package/dest/services/tx_provider_instrumentation.d.ts +1 -1
  340. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  341. package/dest/services/tx_provider_instrumentation.js +7 -20
  342. package/dest/test-helpers/index.d.ts +3 -1
  343. package/dest/test-helpers/index.d.ts.map +1 -1
  344. package/dest/test-helpers/index.js +2 -0
  345. package/dest/test-helpers/make-test-p2p-clients.d.ts +3 -3
  346. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  347. package/dest/test-helpers/mock-pubsub.d.ts +27 -1
  348. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  349. package/dest/test-helpers/mock-pubsub.js +97 -2
  350. package/dest/test-helpers/reqresp-nodes.d.ts +1 -1
  351. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  352. package/dest/test-helpers/reqresp-nodes.js +2 -1
  353. package/dest/test-helpers/test_tx_provider.d.ts +40 -0
  354. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  355. package/dest/test-helpers/test_tx_provider.js +41 -0
  356. package/dest/test-helpers/testbench-utils.d.ts +161 -0
  357. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  358. package/dest/test-helpers/testbench-utils.js +366 -0
  359. package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
  360. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  361. package/dest/testbench/p2p_client_testbench_worker.js +219 -125
  362. package/dest/testbench/worker_client_manager.d.ts +51 -6
  363. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  364. package/dest/testbench/worker_client_manager.js +226 -39
  365. package/package.json +16 -16
  366. package/src/bootstrap/bootstrap.ts +7 -4
  367. package/src/client/factory.ts +95 -24
  368. package/src/client/interface.ts +67 -25
  369. package/src/client/p2p_client.ts +243 -291
  370. package/src/client/test/tx_proposal_collector/README.md +227 -0
  371. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +336 -0
  372. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
  373. package/src/config.ts +48 -4
  374. package/src/errors/tx-pool.error.ts +12 -0
  375. package/src/index.ts +1 -0
  376. package/src/mem_pools/attestation_pool/attestation_pool.ts +510 -78
  377. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +612 -320
  378. package/src/mem_pools/attestation_pool/index.ts +9 -2
  379. package/src/mem_pools/attestation_pool/mocks.ts +20 -13
  380. package/src/mem_pools/index.ts +4 -1
  381. package/src/mem_pools/instrumentation.ts +10 -18
  382. package/src/mem_pools/interface.ts +4 -4
  383. package/src/mem_pools/tx_pool/README.md +29 -14
  384. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +130 -75
  385. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +66 -5
  386. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +119 -4
  387. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +162 -0
  388. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +3 -3
  389. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +4 -2
  390. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
  391. package/src/mem_pools/tx_pool_v2/README.md +275 -0
  392. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  393. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  394. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  395. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  396. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +121 -0
  397. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +122 -0
  398. package/src/mem_pools/tx_pool_v2/eviction/index.ts +27 -0
  399. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +209 -0
  400. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  401. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  402. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +87 -0
  403. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +90 -0
  404. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +31 -0
  405. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  406. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  407. package/src/mem_pools/tx_pool_v2/interfaces.ts +239 -0
  408. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +242 -0
  409. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  410. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +444 -0
  411. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +223 -0
  412. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1042 -0
  413. package/src/msg_validators/attestation_validator/attestation_validator.ts +36 -21
  414. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +21 -18
  415. package/src/msg_validators/clock_tolerance.ts +51 -0
  416. package/src/msg_validators/index.ts +1 -1
  417. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +10 -0
  418. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +13 -0
  419. package/src/msg_validators/proposal_validator/index.ts +3 -0
  420. package/src/msg_validators/proposal_validator/proposal_validator.ts +92 -0
  421. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +230 -0
  422. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +2 -2
  423. package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
  424. package/src/msg_validators/tx_validator/block_header_validator.ts +21 -8
  425. package/src/msg_validators/tx_validator/data_validator.ts +18 -6
  426. package/src/msg_validators/tx_validator/double_spend_validator.ts +15 -9
  427. package/src/msg_validators/tx_validator/factory.ts +64 -23
  428. package/src/msg_validators/tx_validator/fee_payer_balance.ts +40 -0
  429. package/src/msg_validators/tx_validator/gas_validator.ts +17 -28
  430. package/src/msg_validators/tx_validator/index.ts +1 -0
  431. package/src/msg_validators/tx_validator/metadata_validator.ts +18 -7
  432. package/src/msg_validators/tx_validator/phases_validator.ts +5 -3
  433. package/src/msg_validators/tx_validator/size_validator.ts +22 -0
  434. package/src/msg_validators/tx_validator/timestamp_validator.ts +29 -19
  435. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  436. package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
  437. package/src/services/data_store.ts +10 -7
  438. package/src/services/discv5/discV5_service.ts +1 -1
  439. package/src/services/dummy_service.ts +63 -0
  440. package/src/services/encoding.ts +8 -6
  441. package/src/services/gossipsub/README.md +626 -0
  442. package/src/services/gossipsub/index.ts +2 -0
  443. package/src/services/gossipsub/scoring.ts +29 -5
  444. package/src/services/gossipsub/topic_score_params.ts +451 -0
  445. package/src/services/index.ts +1 -0
  446. package/src/services/libp2p/instrumentation.ts +32 -73
  447. package/src/services/libp2p/libp2p_service.ts +646 -301
  448. package/src/services/peer-manager/metrics.ts +22 -26
  449. package/src/services/peer-manager/peer_manager.ts +1 -2
  450. package/src/services/peer-manager/peer_scoring.ts +28 -4
  451. package/src/services/reqresp/batch-tx-requester/README.md +305 -0
  452. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +706 -0
  453. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  454. package/src/services/reqresp/batch-tx-requester/interface.ts +57 -0
  455. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +209 -0
  456. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +205 -0
  457. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
  458. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +65 -4
  459. package/src/services/reqresp/connection-sampler/connection_sampler.ts +19 -1
  460. package/src/services/reqresp/constants.ts +14 -0
  461. package/src/services/reqresp/interface.ts +29 -1
  462. package/src/services/reqresp/metrics.ts +36 -27
  463. package/src/services/reqresp/protocols/block_txs/bitvector.ts +16 -0
  464. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +35 -12
  465. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +74 -9
  466. package/src/services/reqresp/protocols/status.ts +7 -4
  467. package/src/services/reqresp/protocols/tx.ts +22 -0
  468. package/src/services/reqresp/reqresp.ts +79 -22
  469. package/src/services/service.ts +63 -4
  470. package/src/services/tx_collection/config.ts +83 -1
  471. package/src/services/tx_collection/fast_tx_collection.ts +44 -19
  472. package/src/services/tx_collection/file_store_tx_collection.ts +198 -0
  473. package/src/services/tx_collection/file_store_tx_source.ts +104 -0
  474. package/src/services/tx_collection/index.ts +6 -0
  475. package/src/services/tx_collection/instrumentation.ts +11 -13
  476. package/src/services/tx_collection/proposal_tx_collector.ts +112 -0
  477. package/src/services/tx_collection/slow_tx_collection.ts +66 -32
  478. package/src/services/tx_collection/tx_collection.ts +117 -21
  479. package/src/services/tx_collection/tx_collection_sink.ts +17 -7
  480. package/src/services/tx_file_store/config.ts +37 -0
  481. package/src/services/tx_file_store/index.ts +3 -0
  482. package/src/services/tx_file_store/instrumentation.ts +36 -0
  483. package/src/services/tx_file_store/tx_file_store.ts +175 -0
  484. package/src/services/tx_provider.ts +10 -9
  485. package/src/services/tx_provider_instrumentation.ts +13 -20
  486. package/src/test-helpers/index.ts +2 -0
  487. package/src/test-helpers/make-test-p2p-clients.ts +3 -3
  488. package/src/test-helpers/mock-pubsub.ts +133 -3
  489. package/src/test-helpers/reqresp-nodes.ts +2 -1
  490. package/src/test-helpers/test_tx_provider.ts +64 -0
  491. package/src/test-helpers/testbench-utils.ts +430 -0
  492. package/src/testbench/p2p_client_testbench_worker.ts +338 -120
  493. package/src/testbench/worker_client_manager.ts +304 -42
  494. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -37
  495. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  496. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -213
  497. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -30
  498. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  499. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -219
  500. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts +0 -15
  501. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts.map +0 -1
  502. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.js +0 -88
  503. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -12
  504. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
  505. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +0 -82
  506. package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
  507. package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
  508. package/dest/msg_validators/block_proposal_validator/index.js +0 -1
  509. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -298
  510. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -287
  511. package/src/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.ts +0 -108
  512. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -97
  513. package/src/msg_validators/block_proposal_validator/index.ts +0 -1
@@ -35,6 +35,15 @@ import { PeerDiscoveryState } from './service.js';
35
35
  * Register a callback into the validator client for when a block proposal is received
36
36
  */ registerBlockReceivedCallback(_callback) {}
37
37
  /**
38
+ * Register a callback into the validator client for when a checkpoint proposal is received
39
+ */ registerCheckpointReceivedCallback(_callback) {}
40
+ /**
41
+ * Register a callback for when a duplicate proposal is detected
42
+ */ registerDuplicateProposalCallback(_callback) {}
43
+ /**
44
+ * Register a callback for when a duplicate attestation is detected
45
+ */ registerDuplicateAttestationCallback(_callback) {}
46
+ /**
38
47
  * Sends a request to a peer.
39
48
  * @param _protocol - The protocol to send the request on.
40
49
  * @param _request - The request to send.
@@ -50,6 +59,12 @@ import { PeerDiscoveryState } from './service.js';
50
59
  */ sendBatchRequest(_protocol, _requests) {
51
60
  return Promise.resolve([]);
52
61
  }
62
+ sendRequestToPeer(_peerId, _subProtocol, _payload, _dialTimeout) {
63
+ return Promise.resolve({
64
+ status: ReqRespStatus.SUCCESS,
65
+ data: Buffer.from([])
66
+ });
67
+ }
53
68
  /**
54
69
  * Returns the ENR of the peer.
55
70
  * @returns The ENR of the peer, otherwise undefined.
@@ -59,6 +74,9 @@ import { PeerDiscoveryState } from './service.js';
59
74
  validate(_txs) {
60
75
  return Promise.resolve();
61
76
  }
77
+ validatePropagatedTx(_tx, _peerId) {
78
+ return Promise.resolve(true);
79
+ }
62
80
  addReqRespSubProtocol(_subProtocol, _handler, _validator) {
63
81
  return Promise.resolve();
64
82
  }
@@ -67,6 +85,29 @@ import { PeerDiscoveryState } from './service.js';
67
85
  }
68
86
  //this is no-op
69
87
  registerThisValidatorAddresses(_address) {}
88
+ /**
89
+ * Get dummy BatchTxRequesterLibP2PService for testing
90
+ */ getBatchTxRequesterService() {
91
+ return {
92
+ reqResp: this,
93
+ connectionSampler: new DummyReqResp().getConnectionSampler(),
94
+ txValidatorConfig: {
95
+ l1ChainId: 1,
96
+ rollupVersion: 1,
97
+ proofVerifier: {
98
+ verifyProof: ()=>Promise.resolve({
99
+ valid: true,
100
+ durationMs: 0,
101
+ totalDurationMs: 0
102
+ }),
103
+ stop: ()=>Promise.resolve()
104
+ }
105
+ },
106
+ peerScoring: {
107
+ penalizePeer: (_peerId, _penalty)=>{}
108
+ }
109
+ };
110
+ }
70
111
  }
71
112
  /**
72
113
  * A dummy implementation of the Peer Discovery Service.
@@ -169,6 +210,13 @@ export class DummyReqResp {
169
210
  data: Buffer.from([])
170
211
  });
171
212
  }
213
+ /**
214
+ * Get dummy connection sampler for testing
215
+ */ getConnectionSampler() {
216
+ return {
217
+ getPeerListSortedByConnectionCountAsc: ()=>[]
218
+ };
219
+ }
172
220
  addSubProtocol(_subProtocol, _handler, _validator) {
173
221
  return Promise.resolve();
174
222
  }
@@ -27,7 +27,7 @@ export declare class SnappyTransform implements DataTransform {
27
27
  private logger;
28
28
  constructor(maxSizesKb?: Record<TopicType, number>, defaultMaxSizeKb?: number, logger?: import("@aztec/foundation/log").Logger);
29
29
  inboundTransform(topicStr: string, data: Uint8Array): Uint8Array;
30
- inboundTransformData(data: Buffer, topic?: TopicType): Buffer;
30
+ inboundTransformData(data: Buffer, topic?: TopicType, maxSizeKbOverride?: number): Buffer;
31
31
  outboundTransform(_topicStr: string, data: Uint8Array): Uint8Array;
32
32
  outboundTransformData(data: Buffer): Buffer;
33
33
  }
@@ -47,4 +47,4 @@ export declare function readSnappyPreamble(data: Uint8Array): {
47
47
  decompressedSize: number;
48
48
  bytesRead: number;
49
49
  };
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2RpbmcuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9lbmNvZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsU0FBUyxFQUFzQixNQUFNLG1CQUFtQixDQUFDO0FBRWxFLE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQy9ELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBYWpEOzs7R0FHRztBQUNILHdCQUFnQixXQUFXLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUt2RDtBQUVELHdCQUFnQixZQUFZLENBQUMsS0FBSyxFQUFFLFVBQVUsR0FBRyxNQUFNLENBSXREO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCx3QkFBZ0IsVUFBVSxDQUFDLE9BQU8sRUFBRSxPQUFPLHVCQUsxQztBQVlEOztHQUVHO0FBQ0gscUJBQWEsZUFBZ0IsWUFBVyxhQUFhO0lBRWpELE9BQU8sQ0FBQyxVQUFVO0lBQ2xCLE9BQU8sQ0FBQyxnQkFBZ0I7SUFDeEIsT0FBTyxDQUFDLE1BQU07SUFIaEIsWUFDVSxVQUFVLEdBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQXFCLEVBQ3pELGdCQUFnQixHQUFFLE1BQWtCLEVBQ3BDLE1BQU0seUNBQXVDLEVBQ25EO0lBR0osZ0JBQWdCLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxHQUFHLFVBQVUsQ0FHL0Q7SUFFTSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsR0FBRyxNQUFNLENBWW5FO0lBR0QsaUJBQWlCLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxHQUFHLFVBQVUsQ0FFakU7SUFFTSxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FLakQ7Q0FDRjtBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsd0JBQWdCLGtCQUFrQixDQUFDLElBQUksRUFBRSxVQUFVLEdBQUc7SUFBRSxnQkFBZ0IsRUFBRSxNQUFNLENBQUM7SUFBQyxTQUFTLEVBQUUsTUFBTSxDQUFBO0NBQUUsQ0FtQ3BHIn0=
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2RpbmcuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9lbmNvZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQWtCLFNBQVMsRUFBc0IsTUFBTSxtQkFBbUIsQ0FBQztBQUVsRixPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRCxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQWFqRDs7O0dBR0c7QUFDSCx3QkFBZ0IsV0FBVyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FLdkQ7QUFFRCx3QkFBZ0IsWUFBWSxDQUFDLEtBQUssRUFBRSxVQUFVLEdBQUcsTUFBTSxDQUl0RDtBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQWdCLFVBQVUsQ0FBQyxPQUFPLEVBQUUsT0FBTyx1QkFLMUM7QUFjRDs7R0FFRztBQUNILHFCQUFhLGVBQWdCLFlBQVcsYUFBYTtJQUVqRCxPQUFPLENBQUMsVUFBVTtJQUNsQixPQUFPLENBQUMsZ0JBQWdCO0lBQ3hCLE9BQU8sQ0FBQyxNQUFNO0lBSGhCLFlBQ1UsVUFBVSxHQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFxQixFQUN6RCxnQkFBZ0IsR0FBRSxNQUFrQixFQUNwQyxNQUFNLHlDQUF1QyxFQUNuRDtJQUdKLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsR0FBRyxVQUFVLENBRy9EO0lBRU0sb0JBQW9CLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQVkvRjtJQUdELGlCQUFpQixDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsR0FBRyxVQUFVLENBRWpFO0lBRU0scUJBQXFCLENBQUMsSUFBSSxFQUFFLE1BQU0sR0FBRyxNQUFNLENBS2pEO0NBQ0Y7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILHdCQUFnQixrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHO0lBQUUsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDO0lBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQTtDQUFFLENBbUNwRyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../src/services/encoding.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAsB,MAAM,mBAAmB,CAAC;AAElE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAajD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAKvD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAItD;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,uBAK1C;AAYD;;GAEG;AACH,qBAAa,eAAgB,YAAW,aAAa;IAEjD,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,MAAM;IAHhB,YACU,UAAU,GAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAqB,EACzD,gBAAgB,GAAE,MAAkB,EACpC,MAAM,yCAAuC,EACnD;IAGJ,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAG/D;IAEM,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAYnE;IAGD,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAEjE;IAEM,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKjD;CACF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAmCpG"}
1
+ {"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../src/services/encoding.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,SAAS,EAAsB,MAAM,mBAAmB,CAAC;AAElF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAajD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAKvD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAItD;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,uBAK1C;AAcD;;GAEG;AACH,qBAAa,eAAgB,YAAW,aAAa;IAEjD,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,MAAM;IAHhB,YACU,UAAU,GAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAqB,EACzD,gBAAgB,GAAE,MAAkB,EACpC,MAAM,yCAAuC,EACnD;IAGJ,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAG/D;IAEM,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAY/F;IAGD,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAEjE;IAEM,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKjD;CACF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAmCpG"}
@@ -1,7 +1,7 @@
1
1
  // Taken from lodestar: https://github.com/ChainSafe/lodestar
2
2
  import { sha256 } from '@aztec/foundation/crypto/sha256';
3
3
  import { createLogger } from '@aztec/foundation/log';
4
- import { TopicType, getTopicFromString } from '@aztec/stdlib/p2p';
4
+ import { MAX_TX_SIZE_KB, TopicType, getTopicFromString } from '@aztec/stdlib/p2p';
5
5
  import { compressSync, uncompressSync } from 'snappy';
6
6
  import xxhashFactory from 'xxhash-wasm';
7
7
  // Load WASM
@@ -41,13 +41,15 @@ export function msgIdToStrFn(msgId) {
41
41
  return sha256(Buffer.concat(vec)).subarray(0, 20);
42
42
  }
43
43
  const DefaultMaxSizesKb = {
44
- // Tx effects should not exceed 128kb, so 512kb for the full tx obj should be sufficient
45
- [TopicType.tx]: 512,
44
+ [TopicType.tx]: MAX_TX_SIZE_KB,
46
45
  // An attestation has roughly 30 fields, which is 1kb, so 5x is plenty
47
- [TopicType.block_attestation]: 5,
46
+ [TopicType.checkpoint_attestation]: 5,
48
47
  // Proposals may carry some tx objects, so we allow a larger size capped at 10mb
49
48
  // Note this may not be enough for carrying all tx objects in a block
50
- [TopicType.block_proposal]: 1024 * 10
49
+ [TopicType.block_proposal]: 1024 * 10,
50
+ // Checkpoint proposals carry almost the same data as a block proposal (see the lastBlockProposal)
51
+ // Only diff is an additional header, which is pretty small compared to the 10mb limit
52
+ [TopicType.checkpoint_proposal]: 1024 * 10
51
53
  };
52
54
  /**
53
55
  * Snappy transform for libp2p gossipsub
@@ -65,11 +67,11 @@ const DefaultMaxSizesKb = {
65
67
  const topic = getTopicFromString(topicStr);
66
68
  return this.inboundTransformData(Buffer.from(data), topic);
67
69
  }
68
- inboundTransformData(data, topic) {
70
+ inboundTransformData(data, topic, maxSizeKbOverride) {
69
71
  if (data.length === 0) {
70
72
  return data;
71
73
  }
72
- const maxSizeKb = this.maxSizesKb[topic] ?? this.defaultMaxSizeKb;
74
+ const maxSizeKb = maxSizeKbOverride ?? this.maxSizesKb[topic] ?? this.defaultMaxSizeKb;
73
75
  const { decompressedSize } = readSnappyPreamble(data);
74
76
  if (decompressedSize > maxSizeKb * 1024) {
75
77
  this.logger.warn(`Decompressed size ${decompressedSize} exceeds maximum allowed size of ${maxSizeKb}kb`);
@@ -0,0 +1,3 @@
1
+ export * from './scoring.js';
2
+ export * from './topic_score_params.js';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9nb3NzaXBzdWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyx5QkFBeUIsQ0FBQyJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/gossipsub/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './scoring.js';
2
+ export * from './topic_score_params.js';
@@ -1,7 +1,25 @@
1
1
  import type { PeerScoreThresholds } from '@chainsafe/libp2p-gossipsub/score';
2
2
  /**
3
- * The following params is implemented by Lighthouse at
4
- * https://github.com/sigp/lighthouse/blob/b0ac3464ca5fb1e9d75060b56c83bfaf990a3d25/beacon_node/eth2_libp2p/src/behaviour/gossipsub_scoring_parameters.rs#L83
3
+ * Weight applied to application-level peer scores before contributing to gossipsub score.
4
+ *
5
+ * Note: positive topic scores can partially offset app penalties, so alignment with
6
+ * app-level thresholds is best-effort rather than strict.
7
+ */
8
+ export declare const APP_SPECIFIC_WEIGHT = 10;
9
+ /**
10
+ * Gossipsub peer score thresholds aligned with application-level scoring.
11
+ *
12
+ * These thresholds work with appSpecificWeight=10 to align gossipsub behavior
13
+ * with application-level peer states (Healthy → Disconnect → Banned).
14
+ *
15
+ * Alignment:
16
+ * - gossipThreshold (-500): Matches Disconnect state (app score -50 × weight 10)
17
+ * - publishThreshold (-1000): Matches Ban state (app score -100 × weight 10)
18
+ * - graylistThreshold (-2000): For severe attacks (ban + topic penalties)
19
+ *
20
+ * The 1:2:4 ratio follows Lodestar's approach and gossipsub spec recommendations.
21
+ *
22
+ * @see https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1.md#peer-scoring
5
23
  */
6
24
  export declare const gossipScoreThresholds: PeerScoreThresholds;
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcmluZy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2dvc3NpcHN1Yi9zY29yaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFN0U7OztHQUdHO0FBQ0gsZUFBTyxNQUFNLHFCQUFxQixFQUFFLG1CQU1uQyxDQUFDIn0=
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcmluZy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2dvc3NpcHN1Yi9zY29yaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFN0U7Ozs7O0dBS0c7QUFDSCxlQUFPLE1BQU0sbUJBQW1CLEtBQUssQ0FBQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILGVBQU8sTUFBTSxxQkFBcUIsRUFBRSxtQkFXbkMsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"scoring.d.ts","sourceRoot":"","sources":["../../../src/services/gossipsub/scoring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAE7E;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,mBAMnC,CAAC"}
1
+ {"version":3,"file":"scoring.d.ts","sourceRoot":"","sources":["../../../src/services/gossipsub/scoring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAE7E;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,qBAAqB,EAAE,mBAWnC,CAAC"}
@@ -1,10 +1,27 @@
1
1
  /**
2
- * The following params is implemented by Lighthouse at
3
- * https://github.com/sigp/lighthouse/blob/b0ac3464ca5fb1e9d75060b56c83bfaf990a3d25/beacon_node/eth2_libp2p/src/behaviour/gossipsub_scoring_parameters.rs#L83
2
+ * Weight applied to application-level peer scores before contributing to gossipsub score.
3
+ *
4
+ * Note: positive topic scores can partially offset app penalties, so alignment with
5
+ * app-level thresholds is best-effort rather than strict.
6
+ */ export const APP_SPECIFIC_WEIGHT = 10;
7
+ /**
8
+ * Gossipsub peer score thresholds aligned with application-level scoring.
9
+ *
10
+ * These thresholds work with appSpecificWeight=10 to align gossipsub behavior
11
+ * with application-level peer states (Healthy → Disconnect → Banned).
12
+ *
13
+ * Alignment:
14
+ * - gossipThreshold (-500): Matches Disconnect state (app score -50 × weight 10)
15
+ * - publishThreshold (-1000): Matches Ban state (app score -100 × weight 10)
16
+ * - graylistThreshold (-2000): For severe attacks (ban + topic penalties)
17
+ *
18
+ * The 1:2:4 ratio follows Lodestar's approach and gossipsub spec recommendations.
19
+ *
20
+ * @see https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1.md#peer-scoring
4
21
  */ export const gossipScoreThresholds = {
5
- gossipThreshold: -4000,
6
- publishThreshold: -8000,
7
- graylistThreshold: -16000,
8
- acceptPXThreshold: 100,
9
- opportunisticGraftThreshold: 5
22
+ /** Below this, peer is not gossiped to (matches Disconnect state) */ gossipThreshold: -500,
23
+ /** Below this, self-published messages are not propagated to peer (matches Ban state) */ publishThreshold: -1000,
24
+ /** Below this, all RPCs from peer are ignored (severe attack scenario) */ graylistThreshold: -2000,
25
+ /** Above this, peer can offer peer exchange (PX) */ acceptPXThreshold: 100,
26
+ /** Above this, peer can be grafted to mesh opportunistically */ opportunisticGraftThreshold: 5
10
27
  };
@@ -0,0 +1,161 @@
1
+ import { TopicType } from '@aztec/stdlib/p2p';
2
+ import { createTopicScoreParams } from '@chainsafe/libp2p-gossipsub/score';
3
+ /**
4
+ * Network parameters needed to compute topic-specific gossipsub scoring parameters.
5
+ */
6
+ export type TopicScoringNetworkParams = {
7
+ /** L2 slot duration in milliseconds */
8
+ slotDurationMs: number;
9
+ /** Gossipsub heartbeat interval in milliseconds */
10
+ heartbeatIntervalMs: number;
11
+ /** Target committee size (number of validators expected to attest per slot) */
12
+ targetCommitteeSize: number;
13
+ /** Duration per block in milliseconds when building multiple blocks per slot. If undefined, single block mode. */
14
+ blockDurationMs?: number;
15
+ };
16
+ /**
17
+ * Calculates the number of blocks per slot based on timing parameters.
18
+ * Uses the shared calculation from @aztec/stdlib/timetable.
19
+ *
20
+ * @param slotDurationMs - L2 slot duration in milliseconds
21
+ * @param blockDurationMs - Duration per block in milliseconds (undefined = single block mode)
22
+ * @returns Number of blocks per slot
23
+ */
24
+ export declare function calculateBlocksPerSlot(slotDurationMs: number, blockDurationMs: number | undefined): number;
25
+ /**
26
+ * Determines the decay window in slots based on expected message frequency.
27
+ * Low-frequency topics need longer decay windows to accumulate meaningful counter values.
28
+ *
29
+ * @param expectedMessagesPerSlot - Expected messages per slot for this topic
30
+ * @returns Number of slots over which the counter should decay to ~1%
31
+ */
32
+ export declare function getDecayWindowSlots(expectedMessagesPerSlot: number): number;
33
+ /**
34
+ * Computes the decay factor for exponential decay over a given window.
35
+ * After `heartbeatsInWindow` heartbeats, the counter decays to ~1% of its original value.
36
+ *
37
+ * @param heartbeatIntervalMs - Gossipsub heartbeat interval in milliseconds
38
+ * @param slotDurationMs - L2 slot duration in milliseconds
39
+ * @param decayWindowSlots - Number of slots over which to decay
40
+ * @returns Decay factor (0 < decay < 1), applied each heartbeat
41
+ */
42
+ export declare function computeDecay(heartbeatIntervalMs: number, slotDurationMs: number, decayWindowSlots: number): number;
43
+ /**
44
+ * Computes the steady-state convergence value for a decaying counter.
45
+ * If messages arrive at a constant rate and decay is applied each heartbeat,
46
+ * the counter converges to: rate / (1 - decay)
47
+ *
48
+ * @param messagesPerHeartbeat - Expected messages per heartbeat
49
+ * @param decay - Decay factor applied each heartbeat
50
+ * @returns Convergence value (steady-state counter value)
51
+ */
52
+ export declare function computeConvergence(messagesPerHeartbeat: number, decay: number): number;
53
+ /**
54
+ * Computes a conservative threshold for mesh message deliveries.
55
+ * The threshold should be low enough to avoid penalizing honest peers with normal variance.
56
+ *
57
+ * @param convergence - Steady-state counter value
58
+ * @param conservativeFactor - Fraction of convergence to use as threshold (e.g., 0.3)
59
+ * @returns Threshold value
60
+ */
61
+ export declare function computeThreshold(convergence: number, conservativeFactor: number): number;
62
+ /**
63
+ * Gets the expected messages per slot for a given topic type.
64
+ *
65
+ * @param topicType - The topic type
66
+ * @param targetCommitteeSize - Target committee size
67
+ * @param blocksPerSlot - Number of blocks per slot
68
+ * @returns Expected messages per slot, or undefined if unpredictable
69
+ */
70
+ export declare function getExpectedMessagesPerSlot(topicType: TopicType, targetCommitteeSize: number, blocksPerSlot: number): number | undefined;
71
+ /** Maximum P1 score contribution per topic */
72
+ export declare const MAX_P1_SCORE = 8;
73
+ /** Maximum P2 score contribution per topic */
74
+ export declare const MAX_P2_SCORE = 25;
75
+ /** Maximum P3 penalty per topic (must exceed P1 + P2 to cause pruning) */
76
+ export declare const MAX_P3_PENALTY_PER_TOPIC: number;
77
+ /** Number of topics with P3 enabled in MBPS mode (block_proposal + checkpoint_proposal + checkpoint_attestation) */
78
+ export declare const NUM_P3_ENABLED_TOPICS = 3;
79
+ /** Total maximum P3b penalty across all topics after pruning in MBPS mode */
80
+ export declare const TOTAL_MAX_P3B_PENALTY: number;
81
+ /**
82
+ * Factory class for creating gossipsub topic scoring parameters.
83
+ * Computes shared values once and reuses them across all topics.
84
+ */
85
+ export declare class TopicScoreParamsFactory {
86
+ private readonly params;
87
+ /** Number of blocks per slot based on timetable configuration */
88
+ readonly blocksPerSlot: number;
89
+ /** Decay factor for invalid message penalties (P4) */
90
+ readonly invalidDecay: number;
91
+ /** Number of heartbeats per slot */
92
+ readonly heartbeatsPerSlot: number;
93
+ /** P1: Time in mesh quantum (slot duration in ms - score increases by ~1 per slot) */
94
+ readonly timeInMeshQuantum: number;
95
+ /** P1: Time in mesh cap (number of slots to reach max score) */
96
+ readonly timeInMeshCap: number;
97
+ /** P1: Time in mesh weight (normalized so max P1 = MAX_P1_SCORE) */
98
+ readonly timeInMeshWeight: number;
99
+ /** P2: First message deliveries decay factor */
100
+ readonly firstMessageDeliveriesDecay: number;
101
+ /** P2: First message deliveries cap (convergence-based) */
102
+ readonly firstMessageDeliveriesCap: number;
103
+ /** P2: First message deliveries weight (normalized so max P2 = MAX_P2_SCORE) */
104
+ readonly firstMessageDeliveriesWeight: number;
105
+ /** Base parameters common to all topics */
106
+ private readonly baseParams;
107
+ constructor(params: TopicScoringNetworkParams);
108
+ /**
109
+ * Creates scoring parameters for topics with unpredictable or zero message rates.
110
+ * Disables P1, P2, P3, and P3b to avoid unbalanced positive score accumulation.
111
+ *
112
+ * Rationale: If P1/P2 were enabled without P3, the topic would contribute free
113
+ * positive scores that could offset penalties from other topics, preventing
114
+ * proper mesh pruning of non-contributing peers.
115
+ */
116
+ private createDisabledP3Params;
117
+ /**
118
+ * Creates scoring parameters for topics with predictable message rates.
119
+ * Enables P1, P2, P3, and P3b for balanced scoring.
120
+ *
121
+ * The scoring is designed so that:
122
+ * - P1 + P2 max = 8 + 25 = 33 (positive rewards for good behavior)
123
+ * - P3 max = -34 (penalty exceeds P1+P2 to ensure pruning of non-contributors)
124
+ * - After pruning: P1 resets, P2 decays, P3b persists with slow decay
125
+ *
126
+ * @param expectedPerSlot - Expected messages per slot
127
+ */
128
+ private createEnabledP3Params;
129
+ /**
130
+ * Creates topic score parameters for a specific topic type.
131
+ *
132
+ * @param topicType - The topic type
133
+ * @returns TopicScoreParams for the topic
134
+ */
135
+ createForTopic(topicType: TopicType): ReturnType<typeof createTopicScoreParams>;
136
+ /**
137
+ * Creates all topic score parameters for gossipsub configuration.
138
+ *
139
+ * @param protocolVersion - Protocol version string for topic naming
140
+ * @returns Record mapping topic strings to their score parameters
141
+ */
142
+ createAll(protocolVersion: string): Record<string, ReturnType<typeof createTopicScoreParams>>;
143
+ }
144
+ /**
145
+ * Creates topic score parameters for a specific topic type.
146
+ * Convenience function that creates a factory internally.
147
+ *
148
+ * @param topicType - The topic type
149
+ * @param params - Network parameters for scoring calculation
150
+ * @returns TopicScoreParams for the topic
151
+ */
152
+ export declare function createTopicScoreParamsForTopic(topicType: TopicType, params: TopicScoringNetworkParams): ReturnType<typeof createTopicScoreParams>;
153
+ /**
154
+ * Creates all topic score parameters for gossipsub configuration.
155
+ *
156
+ * @param protocolVersion - Protocol version string for topic naming
157
+ * @param params - Network parameters for scoring calculation
158
+ * @returns Record mapping topic strings to their score parameters
159
+ */
160
+ export declare function createAllTopicScoreParams(protocolVersion: string, params: TopicScoringNetworkParams): Record<string, ReturnType<typeof createTopicScoreParams>>;
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9waWNfc2NvcmVfcGFyYW1zLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvZ29zc2lwc3ViL3RvcGljX3Njb3JlX3BhcmFtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLG1CQUFtQixDQUFDO0FBR2pFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRTNFOztHQUVHO0FBQ0gsTUFBTSxNQUFNLHlCQUF5QixHQUFHO0lBQ3RDLHVDQUF1QztJQUN2QyxjQUFjLEVBQUUsTUFBTSxDQUFDO0lBQ3ZCLG1EQUFtRDtJQUNuRCxtQkFBbUIsRUFBRSxNQUFNLENBQUM7SUFDNUIsK0VBQStFO0lBQy9FLG1CQUFtQixFQUFFLE1BQU0sQ0FBQztJQUM1QixrSEFBa0g7SUFDbEgsZUFBZSxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQzFCLENBQUM7QUFFRjs7Ozs7OztHQU9HO0FBQ0gsd0JBQWdCLHNCQUFzQixDQUFDLGNBQWMsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sR0FBRyxTQUFTLEdBQUcsTUFBTSxDQUUxRztBQUVEOzs7Ozs7R0FNRztBQUNILHdCQUFnQixtQkFBbUIsQ0FBQyx1QkFBdUIsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQVEzRTtBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQWdCLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQU9sSDtBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQWdCLGtCQUFrQixDQUFDLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FFdEY7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsd0JBQWdCLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FFeEY7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsd0JBQWdCLDBCQUEwQixDQUN4QyxTQUFTLEVBQUUsU0FBUyxFQUNwQixtQkFBbUIsRUFBRSxNQUFNLEVBQzNCLGFBQWEsRUFBRSxNQUFNLEdBQ3BCLE1BQU0sR0FBRyxTQUFTLENBc0JwQjtBQWtDRCw4Q0FBOEM7QUFDOUMsZUFBTyxNQUFNLFlBQVksSUFBSSxDQUFDO0FBZTlCLDhDQUE4QztBQUM5QyxlQUFPLE1BQU0sWUFBWSxLQUFLLENBQUM7QUEwQi9CLDBFQUEwRTtBQUMxRSxlQUFPLE1BQU0sd0JBQXdCLFFBQXFDLENBQUM7QUFFM0Usb0hBQW9IO0FBQ3BILGVBQU8sTUFBTSxxQkFBcUIsSUFBSSxDQUFDO0FBRXZDLDZFQUE2RTtBQUM3RSxlQUFPLE1BQU0scUJBQXFCLFFBQW1ELENBQUM7QUFFdEY7OztHQUdHO0FBQ0gscUJBQWEsdUJBQXVCO0lBMkN0QixPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU07SUExQ25DLGlFQUFpRTtJQUNqRSxTQUFnQixhQUFhLEVBQUUsTUFBTSxDQUFDO0lBRXRDLHNEQUFzRDtJQUN0RCxTQUFnQixZQUFZLEVBQUUsTUFBTSxDQUFDO0lBRXJDLG9DQUFvQztJQUNwQyxTQUFnQixpQkFBaUIsRUFBRSxNQUFNLENBQUM7SUFFMUMsc0ZBQXNGO0lBQ3RGLFNBQWdCLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztJQUUxQyxnRUFBZ0U7SUFDaEUsU0FBZ0IsYUFBYSxFQUFFLE1BQU0sQ0FBQztJQUV0QyxvRUFBb0U7SUFDcEUsU0FBZ0IsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDO0lBRXpDLGdEQUFnRDtJQUNoRCxTQUFnQiwyQkFBMkIsRUFBRSxNQUFNLENBQUM7SUFFcEQsMkRBQTJEO0lBQzNELFNBQWdCLHlCQUF5QixFQUFFLE1BQU0sQ0FBQztJQUVsRCxnRkFBZ0Y7SUFDaEYsU0FBZ0IsNEJBQTRCLEVBQUUsTUFBTSxDQUFDO0lBRXJELDJDQUEyQztJQUMzQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FZekI7SUFFRixZQUE2QixNQUFNLEVBQUUseUJBQXlCLEVBd0M3RDtJQUVEOzs7Ozs7O09BT0c7SUFDSCxPQUFPLENBQUMsc0JBQXNCO0lBMkI5Qjs7Ozs7Ozs7OztPQVVHO0lBQ0gsT0FBTyxDQUFDLHFCQUFxQjtJQXdDN0I7Ozs7O09BS0c7SUFDSCxjQUFjLENBQUMsU0FBUyxFQUFFLFNBQVMsR0FBRyxVQUFVLENBQUMsT0FBTyxzQkFBc0IsQ0FBQyxDQVM5RTtJQUVEOzs7OztPQUtHO0lBQ0gsU0FBUyxDQUFDLGVBQWUsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsT0FBTyxzQkFBc0IsQ0FBQyxDQUFDLENBUzVGO0NBQ0Y7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsd0JBQWdCLDhCQUE4QixDQUM1QyxTQUFTLEVBQUUsU0FBUyxFQUNwQixNQUFNLEVBQUUseUJBQXlCLEdBQ2hDLFVBQVUsQ0FBQyxPQUFPLHNCQUFzQixDQUFDLENBRzNDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsd0JBQWdCLHlCQUF5QixDQUN2QyxlQUFlLEVBQUUsTUFBTSxFQUN2QixNQUFNLEVBQUUseUJBQXlCLEdBQ2hDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLE9BQU8sc0JBQXNCLENBQUMsQ0FBQyxDQUczRCJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topic_score_params.d.ts","sourceRoot":"","sources":["../../../src/services/gossipsub/topic_score_params.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqB,MAAM,mBAAmB,CAAC;AAGjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAE3E;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,uCAAuC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,+EAA+E;IAC/E,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kHAAkH;IAClH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAE1G;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,uBAAuB,EAAE,MAAM,GAAG,MAAM,CAQ3E;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,mBAAmB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAOlH;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,oBAAoB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtF;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAExF;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,SAAS,EACpB,mBAAmB,EAAE,MAAM,EAC3B,aAAa,EAAE,MAAM,GACpB,MAAM,GAAG,SAAS,CAsBpB;AAkCD,8CAA8C;AAC9C,eAAO,MAAM,YAAY,IAAI,CAAC;AAe9B,8CAA8C;AAC9C,eAAO,MAAM,YAAY,KAAK,CAAC;AA0B/B,0EAA0E;AAC1E,eAAO,MAAM,wBAAwB,QAAqC,CAAC;AAE3E,oHAAoH;AACpH,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,6EAA6E;AAC7E,eAAO,MAAM,qBAAqB,QAAmD,CAAC;AAEtF;;;GAGG;AACH,qBAAa,uBAAuB;IA2CtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IA1CnC,iEAAiE;IACjE,SAAgB,aAAa,EAAE,MAAM,CAAC;IAEtC,sDAAsD;IACtD,SAAgB,YAAY,EAAE,MAAM,CAAC;IAErC,oCAAoC;IACpC,SAAgB,iBAAiB,EAAE,MAAM,CAAC;IAE1C,sFAAsF;IACtF,SAAgB,iBAAiB,EAAE,MAAM,CAAC;IAE1C,gEAAgE;IAChE,SAAgB,aAAa,EAAE,MAAM,CAAC;IAEtC,oEAAoE;IACpE,SAAgB,gBAAgB,EAAE,MAAM,CAAC;IAEzC,gDAAgD;IAChD,SAAgB,2BAA2B,EAAE,MAAM,CAAC;IAEpD,2DAA2D;IAC3D,SAAgB,yBAAyB,EAAE,MAAM,CAAC;IAElD,gFAAgF;IAChF,SAAgB,4BAA4B,EAAE,MAAM,CAAC;IAErD,2CAA2C;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAYzB;IAEF,YAA6B,MAAM,EAAE,yBAAyB,EAwC7D;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,sBAAsB;IA2B9B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,qBAAqB;IAwC7B;;;;;OAKG;IACH,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAS9E;IAED;;;;;OAKG;IACH,SAAS,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAS5F;CACF;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,yBAAyB,GAChC,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAG3C;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,yBAAyB,GAChC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAG3D"}