@aztec/p2p 0.0.1-commit.d3ec352c → 0.0.1-commit.d6f2b3f94

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 (533) 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 +5 -5
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +47 -14
  7. package/dest/client/interface.d.ts +49 -18
  8. package/dest/client/interface.d.ts.map +1 -1
  9. package/dest/client/p2p_client.d.ts +42 -46
  10. package/dest/client/p2p_client.d.ts.map +1 -1
  11. package/dest/client/p2p_client.js +565 -257
  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 +27 -9
  19. package/dest/config.d.ts.map +1 -1
  20. package/dest/config.js +26 -15
  21. package/dest/index.d.ts +2 -1
  22. package/dest/index.d.ts.map +1 -1
  23. package/dest/index.js +1 -0
  24. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +109 -76
  25. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  26. package/dest/mem_pools/attestation_pool/attestation_pool.js +436 -3
  27. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  28. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  29. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +529 -289
  30. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  31. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  32. package/dest/mem_pools/attestation_pool/index.js +1 -2
  33. package/dest/mem_pools/attestation_pool/mocks.d.ts +11 -8
  34. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  35. package/dest/mem_pools/attestation_pool/mocks.js +17 -13
  36. package/dest/mem_pools/index.d.ts +3 -2
  37. package/dest/mem_pools/index.d.ts.map +1 -1
  38. package/dest/mem_pools/index.js +1 -1
  39. package/dest/mem_pools/instrumentation.d.ts +7 -1
  40. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  41. package/dest/mem_pools/instrumentation.js +31 -13
  42. package/dest/mem_pools/interface.d.ts +6 -7
  43. package/dest/mem_pools/interface.d.ts.map +1 -1
  44. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +35 -26
  45. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  46. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +314 -335
  47. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +32 -0
  48. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -0
  49. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +112 -0
  50. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +157 -0
  51. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -0
  52. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +52 -0
  53. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +16 -0
  54. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  55. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +122 -0
  56. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +17 -0
  57. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  58. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +84 -0
  59. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +19 -0
  60. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  61. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +78 -0
  62. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +26 -0
  63. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  64. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +84 -0
  65. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
  66. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
  67. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
  68. package/dest/mem_pools/tx_pool/index.d.ts +1 -2
  69. package/dest/mem_pools/tx_pool/index.d.ts.map +1 -1
  70. package/dest/mem_pools/tx_pool/index.js +0 -1
  71. package/dest/mem_pools/tx_pool/priority.d.ts +5 -1
  72. package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
  73. package/dest/mem_pools/tx_pool/priority.js +6 -1
  74. package/dest/mem_pools/tx_pool/tx_pool.d.ts +8 -4
  75. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
  76. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
  77. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  78. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +25 -20
  79. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  80. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  81. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  82. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  83. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  84. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  85. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +87 -0
  86. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  87. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +180 -0
  88. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  89. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  90. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +119 -0
  91. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  92. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  93. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +90 -0
  94. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  95. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  96. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +89 -0
  97. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  98. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  99. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  100. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +131 -0
  101. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  102. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +17 -0
  103. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  104. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  105. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +63 -0
  106. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  107. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  108. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +91 -0
  109. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  110. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  111. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +70 -0
  112. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  113. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  114. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +63 -0
  115. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  116. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  117. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  118. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  119. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  120. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  121. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +197 -0
  122. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  123. package/dest/mem_pools/tx_pool_v2/interfaces.js +6 -0
  124. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +93 -0
  125. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  126. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +127 -0
  127. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  128. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  129. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  130. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +99 -0
  131. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  132. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +332 -0
  133. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +55 -0
  134. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  135. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +156 -0
  136. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +69 -0
  137. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  138. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +751 -0
  139. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +4 -4
  140. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  141. package/dest/msg_validators/attestation_validator/attestation_validator.js +52 -19
  142. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +7 -7
  143. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  144. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +22 -13
  145. package/dest/msg_validators/clock_tolerance.d.ts +21 -0
  146. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
  147. package/dest/msg_validators/clock_tolerance.js +37 -0
  148. package/dest/msg_validators/index.d.ts +2 -2
  149. package/dest/msg_validators/index.d.ts.map +1 -1
  150. package/dest/msg_validators/index.js +1 -1
  151. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +9 -0
  152. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
  153. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +6 -0
  154. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +9 -0
  155. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
  156. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +6 -0
  157. package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
  158. package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
  159. package/dest/msg_validators/proposal_validator/index.js +3 -0
  160. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -0
  161. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
  162. package/dest/msg_validators/proposal_validator/proposal_validator.js +104 -0
  163. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +23 -0
  164. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -0
  165. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +212 -0
  166. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +3 -3
  167. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  168. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  169. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  170. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  171. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +20 -6
  172. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  173. package/dest/msg_validators/tx_validator/block_header_validator.js +4 -3
  174. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  175. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  176. package/dest/msg_validators/tx_validator/data_validator.js +4 -1
  177. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -4
  178. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  179. package/dest/msg_validators/tx_validator/double_spend_validator.js +7 -6
  180. package/dest/msg_validators/tx_validator/factory.d.ts +9 -4
  181. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  182. package/dest/msg_validators/tx_validator/factory.js +22 -12
  183. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
  184. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
  185. package/dest/msg_validators/tx_validator/fee_payer_balance.js +20 -0
  186. package/dest/msg_validators/tx_validator/gas_validator.d.ts +3 -2
  187. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  188. package/dest/msg_validators/tx_validator/gas_validator.js +11 -16
  189. package/dest/msg_validators/tx_validator/index.d.ts +2 -1
  190. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  191. package/dest/msg_validators/tx_validator/index.js +1 -0
  192. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +4 -3
  193. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  194. package/dest/msg_validators/tx_validator/metadata_validator.js +2 -2
  195. package/dest/msg_validators/tx_validator/phases_validator.d.ts +3 -2
  196. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  197. package/dest/msg_validators/tx_validator/phases_validator.js +3 -3
  198. package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
  199. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
  200. package/dest/msg_validators/tx_validator/size_validator.js +23 -0
  201. package/dest/msg_validators/tx_validator/test_utils.d.ts +2 -2
  202. package/dest/msg_validators/tx_validator/test_utils.d.ts.map +1 -1
  203. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +22 -5
  204. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  205. package/dest/msg_validators/tx_validator/timestamp_validator.js +4 -4
  206. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  207. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  208. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  209. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  210. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  211. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
  212. package/dest/services/data_store.d.ts +1 -1
  213. package/dest/services/data_store.d.ts.map +1 -1
  214. package/dest/services/data_store.js +10 -6
  215. package/dest/services/discv5/discV5_service.js +1 -1
  216. package/dest/services/dummy_service.d.ts +26 -2
  217. package/dest/services/dummy_service.d.ts.map +1 -1
  218. package/dest/services/dummy_service.js +48 -0
  219. package/dest/services/encoding.d.ts +2 -2
  220. package/dest/services/encoding.d.ts.map +1 -1
  221. package/dest/services/encoding.js +9 -8
  222. package/dest/services/gossipsub/index.d.ts +3 -0
  223. package/dest/services/gossipsub/index.d.ts.map +1 -0
  224. package/dest/services/gossipsub/index.js +2 -0
  225. package/dest/services/gossipsub/scoring.d.ts +21 -3
  226. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  227. package/dest/services/gossipsub/scoring.js +24 -7
  228. package/dest/services/gossipsub/topic_score_params.d.ts +161 -0
  229. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  230. package/dest/services/gossipsub/topic_score_params.js +324 -0
  231. package/dest/services/index.d.ts +2 -1
  232. package/dest/services/index.d.ts.map +1 -1
  233. package/dest/services/index.js +1 -0
  234. package/dest/services/libp2p/instrumentation.d.ts +1 -1
  235. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  236. package/dest/services/libp2p/instrumentation.js +30 -72
  237. package/dest/services/libp2p/libp2p_service.d.ts +108 -36
  238. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  239. package/dest/services/libp2p/libp2p_service.js +978 -320
  240. package/dest/services/peer-manager/metrics.d.ts +7 -2
  241. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  242. package/dest/services/peer-manager/metrics.js +33 -21
  243. package/dest/services/peer-manager/peer_manager.d.ts +2 -2
  244. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  245. package/dest/services/peer-manager/peer_manager.js +4 -12
  246. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  247. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  248. package/dest/services/peer-manager/peer_scoring.js +32 -6
  249. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +47 -0
  250. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  251. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +566 -0
  252. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  253. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  254. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  255. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +50 -0
  256. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  257. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  258. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +37 -0
  259. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  260. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +151 -0
  261. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +54 -0
  262. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  263. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +139 -0
  264. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
  265. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  266. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
  267. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +22 -3
  268. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  269. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +63 -4
  270. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -1
  271. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  272. package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
  273. package/dest/services/reqresp/constants.d.ts +12 -0
  274. package/dest/services/reqresp/constants.d.ts.map +1 -0
  275. package/dest/services/reqresp/constants.js +7 -0
  276. package/dest/services/reqresp/interface.d.ts +13 -2
  277. package/dest/services/reqresp/interface.d.ts.map +1 -1
  278. package/dest/services/reqresp/interface.js +16 -2
  279. package/dest/services/reqresp/metrics.d.ts +6 -5
  280. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  281. package/dest/services/reqresp/metrics.js +17 -21
  282. package/dest/services/reqresp/protocols/auth.d.ts +2 -2
  283. package/dest/services/reqresp/protocols/auth.d.ts.map +1 -1
  284. package/dest/services/reqresp/protocols/auth.js +2 -2
  285. package/dest/services/reqresp/protocols/block.js +1 -1
  286. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
  287. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  288. package/dest/services/reqresp/protocols/block_txs/bitvector.js +12 -0
  289. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  290. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  291. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +27 -9
  292. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +30 -7
  293. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  294. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +60 -14
  295. package/dest/services/reqresp/protocols/status.d.ts +1 -1
  296. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  297. package/dest/services/reqresp/protocols/status.js +4 -1
  298. package/dest/services/reqresp/protocols/tx.d.ts +8 -3
  299. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  300. package/dest/services/reqresp/protocols/tx.js +20 -0
  301. package/dest/services/reqresp/reqresp.d.ts +6 -1
  302. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  303. package/dest/services/reqresp/reqresp.js +471 -50
  304. package/dest/services/service.d.ts +53 -3
  305. package/dest/services/service.d.ts.map +1 -1
  306. package/dest/services/tx_collection/config.d.ts +10 -1
  307. package/dest/services/tx_collection/config.d.ts.map +1 -1
  308. package/dest/services/tx_collection/config.js +26 -2
  309. package/dest/services/tx_collection/fast_tx_collection.d.ts +7 -4
  310. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  311. package/dest/services/tx_collection/fast_tx_collection.js +34 -13
  312. package/dest/services/tx_collection/file_store_tx_collection.d.ts +44 -0
  313. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  314. package/dest/services/tx_collection/file_store_tx_collection.js +118 -0
  315. package/dest/services/tx_collection/file_store_tx_source.d.ts +27 -0
  316. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  317. package/dest/services/tx_collection/file_store_tx_source.js +57 -0
  318. package/dest/services/tx_collection/index.d.ts +3 -1
  319. package/dest/services/tx_collection/index.d.ts.map +1 -1
  320. package/dest/services/tx_collection/index.js +2 -0
  321. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  322. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  323. package/dest/services/tx_collection/instrumentation.js +10 -13
  324. package/dest/services/tx_collection/proposal_tx_collector.d.ts +48 -0
  325. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
  326. package/dest/services/tx_collection/proposal_tx_collector.js +49 -0
  327. package/dest/services/tx_collection/slow_tx_collection.d.ts +3 -1
  328. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  329. package/dest/services/tx_collection/slow_tx_collection.js +48 -19
  330. package/dest/services/tx_collection/tx_collection.d.ts +21 -11
  331. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  332. package/dest/services/tx_collection/tx_collection.js +63 -7
  333. package/dest/services/tx_collection/tx_collection_sink.d.ts +15 -6
  334. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  335. package/dest/services/tx_collection/tx_collection_sink.js +13 -7
  336. package/dest/services/tx_file_store/config.d.ts +16 -0
  337. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  338. package/dest/services/tx_file_store/config.js +22 -0
  339. package/dest/services/tx_file_store/index.d.ts +4 -0
  340. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  341. package/dest/services/tx_file_store/index.js +3 -0
  342. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  343. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  344. package/dest/services/tx_file_store/instrumentation.js +29 -0
  345. package/dest/services/tx_file_store/tx_file_store.d.ts +47 -0
  346. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  347. package/dest/services/tx_file_store/tx_file_store.js +149 -0
  348. package/dest/services/tx_provider.d.ts +6 -5
  349. package/dest/services/tx_provider.d.ts.map +1 -1
  350. package/dest/services/tx_provider.js +16 -6
  351. package/dest/services/tx_provider_instrumentation.d.ts +5 -2
  352. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  353. package/dest/services/tx_provider_instrumentation.js +14 -14
  354. package/dest/test-helpers/index.d.ts +3 -1
  355. package/dest/test-helpers/index.d.ts.map +1 -1
  356. package/dest/test-helpers/index.js +2 -0
  357. package/dest/test-helpers/make-test-p2p-clients.d.ts +3 -3
  358. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  359. package/dest/test-helpers/mock-pubsub.d.ts +27 -1
  360. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  361. package/dest/test-helpers/mock-pubsub.js +97 -2
  362. package/dest/test-helpers/mock-tx-helpers.js +1 -1
  363. package/dest/test-helpers/reqresp-nodes.d.ts +2 -2
  364. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  365. package/dest/test-helpers/reqresp-nodes.js +2 -1
  366. package/dest/test-helpers/test_tx_provider.d.ts +40 -0
  367. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  368. package/dest/test-helpers/test_tx_provider.js +41 -0
  369. package/dest/test-helpers/testbench-utils.d.ts +158 -0
  370. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  371. package/dest/test-helpers/testbench-utils.js +360 -0
  372. package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
  373. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  374. package/dest/testbench/p2p_client_testbench_worker.js +219 -124
  375. package/dest/testbench/worker_client_manager.d.ts +51 -6
  376. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  377. package/dest/testbench/worker_client_manager.js +226 -39
  378. package/package.json +16 -16
  379. package/src/bootstrap/bootstrap.ts +7 -4
  380. package/src/client/factory.ts +80 -29
  381. package/src/client/interface.ts +57 -17
  382. package/src/client/p2p_client.ts +229 -295
  383. package/src/client/test/tx_proposal_collector/README.md +227 -0
  384. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +336 -0
  385. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
  386. package/src/config.ts +50 -20
  387. package/src/index.ts +1 -0
  388. package/src/mem_pools/attestation_pool/attestation_pool.ts +502 -78
  389. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +614 -322
  390. package/src/mem_pools/attestation_pool/index.ts +9 -2
  391. package/src/mem_pools/attestation_pool/mocks.ts +21 -15
  392. package/src/mem_pools/index.ts +4 -1
  393. package/src/mem_pools/instrumentation.ts +39 -14
  394. package/src/mem_pools/interface.ts +5 -7
  395. package/src/mem_pools/tx_pool/README.md +270 -0
  396. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +362 -367
  397. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +132 -0
  398. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +208 -0
  399. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +162 -0
  400. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +104 -0
  401. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +93 -0
  402. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +106 -0
  403. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
  404. package/src/mem_pools/tx_pool/index.ts +0 -1
  405. package/src/mem_pools/tx_pool/priority.ts +8 -1
  406. package/src/mem_pools/tx_pool/tx_pool.ts +8 -3
  407. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +18 -13
  408. package/src/mem_pools/tx_pool_v2/README.md +259 -0
  409. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  410. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  411. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +234 -0
  412. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +147 -0
  413. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +118 -0
  414. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +111 -0
  415. package/src/mem_pools/tx_pool_v2/eviction/index.ts +23 -0
  416. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +164 -0
  417. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  418. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  419. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +86 -0
  420. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +72 -0
  421. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +31 -0
  422. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  423. package/src/mem_pools/tx_pool_v2/interfaces.ts +227 -0
  424. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +207 -0
  425. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  426. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +417 -0
  427. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +212 -0
  428. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +895 -0
  429. package/src/msg_validators/attestation_validator/attestation_validator.ts +37 -22
  430. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +21 -18
  431. package/src/msg_validators/clock_tolerance.ts +51 -0
  432. package/src/msg_validators/index.ts +1 -1
  433. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +10 -0
  434. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +13 -0
  435. package/src/msg_validators/proposal_validator/index.ts +3 -0
  436. package/src/msg_validators/proposal_validator/proposal_validator.ts +92 -0
  437. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +230 -0
  438. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +2 -2
  439. package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
  440. package/src/msg_validators/tx_validator/block_header_validator.ts +21 -8
  441. package/src/msg_validators/tx_validator/data_validator.ts +18 -6
  442. package/src/msg_validators/tx_validator/double_spend_validator.ts +15 -9
  443. package/src/msg_validators/tx_validator/factory.ts +65 -24
  444. package/src/msg_validators/tx_validator/fee_payer_balance.ts +40 -0
  445. package/src/msg_validators/tx_validator/gas_validator.ts +17 -28
  446. package/src/msg_validators/tx_validator/index.ts +1 -0
  447. package/src/msg_validators/tx_validator/metadata_validator.ts +19 -8
  448. package/src/msg_validators/tx_validator/phases_validator.ts +5 -3
  449. package/src/msg_validators/tx_validator/size_validator.ts +22 -0
  450. package/src/msg_validators/tx_validator/test_utils.ts +1 -1
  451. package/src/msg_validators/tx_validator/timestamp_validator.ts +25 -15
  452. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  453. package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
  454. package/src/services/data_store.ts +10 -7
  455. package/src/services/discv5/discV5_service.ts +1 -1
  456. package/src/services/dummy_service.ts +63 -0
  457. package/src/services/encoding.ts +8 -7
  458. package/src/services/gossipsub/README.md +626 -0
  459. package/src/services/gossipsub/index.ts +2 -0
  460. package/src/services/gossipsub/scoring.ts +29 -5
  461. package/src/services/gossipsub/topic_score_params.ts +451 -0
  462. package/src/services/index.ts +1 -0
  463. package/src/services/libp2p/instrumentation.ts +32 -73
  464. package/src/services/libp2p/libp2p_service.ts +647 -307
  465. package/src/services/peer-manager/metrics.ts +39 -21
  466. package/src/services/peer-manager/peer_manager.ts +5 -4
  467. package/src/services/peer-manager/peer_scoring.ts +28 -4
  468. package/src/services/reqresp/batch-tx-requester/README.md +305 -0
  469. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +706 -0
  470. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  471. package/src/services/reqresp/batch-tx-requester/interface.ts +57 -0
  472. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +209 -0
  473. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +205 -0
  474. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
  475. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +65 -4
  476. package/src/services/reqresp/connection-sampler/connection_sampler.ts +19 -1
  477. package/src/services/reqresp/constants.ts +14 -0
  478. package/src/services/reqresp/interface.ts +30 -2
  479. package/src/services/reqresp/metrics.ts +36 -27
  480. package/src/services/reqresp/protocols/auth.ts +2 -2
  481. package/src/services/reqresp/protocols/block.ts +1 -1
  482. package/src/services/reqresp/protocols/block_txs/bitvector.ts +16 -0
  483. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +35 -12
  484. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +75 -10
  485. package/src/services/reqresp/protocols/status.ts +7 -4
  486. package/src/services/reqresp/protocols/tx.ts +23 -2
  487. package/src/services/reqresp/reqresp.ts +79 -22
  488. package/src/services/service.ts +63 -4
  489. package/src/services/tx_collection/config.ts +42 -2
  490. package/src/services/tx_collection/fast_tx_collection.ts +44 -19
  491. package/src/services/tx_collection/file_store_tx_collection.ts +152 -0
  492. package/src/services/tx_collection/file_store_tx_source.ts +70 -0
  493. package/src/services/tx_collection/index.ts +6 -0
  494. package/src/services/tx_collection/instrumentation.ts +5 -13
  495. package/src/services/tx_collection/proposal_tx_collector.ts +112 -0
  496. package/src/services/tx_collection/slow_tx_collection.ts +55 -26
  497. package/src/services/tx_collection/tx_collection.ts +85 -19
  498. package/src/services/tx_collection/tx_collection_sink.ts +17 -7
  499. package/src/services/tx_file_store/config.ts +37 -0
  500. package/src/services/tx_file_store/index.ts +3 -0
  501. package/src/services/tx_file_store/instrumentation.ts +36 -0
  502. package/src/services/tx_file_store/tx_file_store.ts +173 -0
  503. package/src/services/tx_provider.ts +27 -11
  504. package/src/services/tx_provider_instrumentation.ts +24 -14
  505. package/src/test-helpers/index.ts +2 -0
  506. package/src/test-helpers/make-test-p2p-clients.ts +3 -3
  507. package/src/test-helpers/mock-pubsub.ts +134 -4
  508. package/src/test-helpers/mock-tx-helpers.ts +1 -1
  509. package/src/test-helpers/reqresp-nodes.ts +3 -2
  510. package/src/test-helpers/test_tx_provider.ts +64 -0
  511. package/src/test-helpers/testbench-utils.ts +422 -0
  512. package/src/testbench/p2p_client_testbench_worker.ts +339 -120
  513. package/src/testbench/worker_client_manager.ts +304 -42
  514. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -37
  515. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  516. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -213
  517. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -30
  518. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  519. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -219
  520. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +0 -81
  521. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +0 -1
  522. package/dest/mem_pools/tx_pool/memory_tx_pool.js +0 -239
  523. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -12
  524. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
  525. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +0 -82
  526. package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
  527. package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
  528. package/dest/msg_validators/block_proposal_validator/index.js +0 -1
  529. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -298
  530. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -287
  531. package/src/mem_pools/tx_pool/memory_tx_pool.ts +0 -285
  532. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -97
  533. package/src/msg_validators/block_proposal_validator/index.ts +0 -1
@@ -0,0 +1,324 @@
1
+ import { TopicType, createTopicString } from '@aztec/stdlib/p2p';
2
+ import { calculateMaxBlocksPerSlot } from '@aztec/stdlib/timetable';
3
+ import { createTopicScoreParams } from '@chainsafe/libp2p-gossipsub/score';
4
+ /**
5
+ * Calculates the number of blocks per slot based on timing parameters.
6
+ * Uses the shared calculation from @aztec/stdlib/timetable.
7
+ *
8
+ * @param slotDurationMs - L2 slot duration in milliseconds
9
+ * @param blockDurationMs - Duration per block in milliseconds (undefined = single block mode)
10
+ * @returns Number of blocks per slot
11
+ */ export function calculateBlocksPerSlot(slotDurationMs, blockDurationMs) {
12
+ return calculateMaxBlocksPerSlot(slotDurationMs / 1000, blockDurationMs ? blockDurationMs / 1000 : undefined);
13
+ }
14
+ /**
15
+ * Determines the decay window in slots based on expected message frequency.
16
+ * Low-frequency topics need longer decay windows to accumulate meaningful counter values.
17
+ *
18
+ * @param expectedMessagesPerSlot - Expected messages per slot for this topic
19
+ * @returns Number of slots over which the counter should decay to ~1%
20
+ */ export function getDecayWindowSlots(expectedMessagesPerSlot) {
21
+ if (expectedMessagesPerSlot <= 1) {
22
+ return 5; // Low frequency: decay over 5 slots
23
+ } else if (expectedMessagesPerSlot <= 10) {
24
+ return 3; // Medium frequency: decay over 3 slots
25
+ } else {
26
+ return 2; // High frequency: decay over 2 slots
27
+ }
28
+ }
29
+ /**
30
+ * Computes the decay factor for exponential decay over a given window.
31
+ * After `heartbeatsInWindow` heartbeats, the counter decays to ~1% of its original value.
32
+ *
33
+ * @param heartbeatIntervalMs - Gossipsub heartbeat interval in milliseconds
34
+ * @param slotDurationMs - L2 slot duration in milliseconds
35
+ * @param decayWindowSlots - Number of slots over which to decay
36
+ * @returns Decay factor (0 < decay < 1), applied each heartbeat
37
+ */ export function computeDecay(heartbeatIntervalMs, slotDurationMs, decayWindowSlots) {
38
+ const heartbeatsPerSlot = slotDurationMs / heartbeatIntervalMs;
39
+ const heartbeatsInWindow = heartbeatsPerSlot * decayWindowSlots;
40
+ // Decay to 1% over the window: decay^heartbeatsInWindow = 0.01
41
+ // decay = 0.01^(1/heartbeatsInWindow)
42
+ return Math.pow(0.01, 1 / heartbeatsInWindow);
43
+ }
44
+ /**
45
+ * Computes the steady-state convergence value for a decaying counter.
46
+ * If messages arrive at a constant rate and decay is applied each heartbeat,
47
+ * the counter converges to: rate / (1 - decay)
48
+ *
49
+ * @param messagesPerHeartbeat - Expected messages per heartbeat
50
+ * @param decay - Decay factor applied each heartbeat
51
+ * @returns Convergence value (steady-state counter value)
52
+ */ export function computeConvergence(messagesPerHeartbeat, decay) {
53
+ return messagesPerHeartbeat / (1 - decay);
54
+ }
55
+ /**
56
+ * Computes a conservative threshold for mesh message deliveries.
57
+ * The threshold should be low enough to avoid penalizing honest peers with normal variance.
58
+ *
59
+ * @param convergence - Steady-state counter value
60
+ * @param conservativeFactor - Fraction of convergence to use as threshold (e.g., 0.3)
61
+ * @returns Threshold value
62
+ */ export function computeThreshold(convergence, conservativeFactor) {
63
+ return convergence * conservativeFactor;
64
+ }
65
+ /**
66
+ * Gets the expected messages per slot for a given topic type.
67
+ *
68
+ * @param topicType - The topic type
69
+ * @param targetCommitteeSize - Target committee size
70
+ * @param blocksPerSlot - Number of blocks per slot
71
+ * @returns Expected messages per slot, or undefined if unpredictable
72
+ */ export function getExpectedMessagesPerSlot(topicType, targetCommitteeSize, blocksPerSlot) {
73
+ switch(topicType){
74
+ case TopicType.tx:
75
+ // Transactions are unpredictable - disable mesh message delivery scoring
76
+ return undefined;
77
+ case TopicType.block_proposal:
78
+ // In MBPS mode, N-1 block proposals per slot (last one bundled with checkpoint)
79
+ // In single block mode (blocksPerSlot=1), this is 0
80
+ return Math.max(0, blocksPerSlot - 1);
81
+ case TopicType.checkpoint_proposal:
82
+ // Exactly 1 checkpoint proposal per slot
83
+ return 1;
84
+ case TopicType.checkpoint_attestation:
85
+ // Each committee member sends one attestation per slot
86
+ return targetCommitteeSize;
87
+ default:
88
+ return undefined;
89
+ }
90
+ }
91
+ /** Conservative factor for threshold calculation (30% of convergence) */ const CONSERVATIVE_FACTOR = 0.3;
92
+ /** Number of slots over which invalid message penalty decays */ const INVALID_DECAY_WINDOW_SLOTS = 4;
93
+ /** Weight for invalid message deliveries penalty */ const INVALID_MESSAGE_WEIGHT = -20;
94
+ /** Mesh message deliveries window in milliseconds (5 seconds - balanced for TypeScript runtime) */ const MESH_DELIVERIES_WINDOW_MS = 5000;
95
+ /**
96
+ * Multiplier for activation time to provide extra grace period during network bootstrap.
97
+ * The activation timer starts from mesh join time, not from first message received.
98
+ * During bootstrap, peers may join before messages start flowing, so we need extra time.
99
+ */ const ACTIVATION_MULTIPLIER = 5;
100
+ // ============================================================================
101
+ // P1 (timeInMesh) Configuration
102
+ // ============================================================================
103
+ // P1 rewards peers for time spent in the mesh. Following Lodestar's approach,
104
+ // we normalize the score so that max P1 = MAX_P1_SCORE after P1_CAP_TIME_SECONDS.
105
+ //
106
+ // Formula: P1 = min(timeInMesh / quantum, cap) * weight
107
+ // - quantum = slotDurationMs (one increment per slot worth of time)
108
+ // - cap = P1_CAP_TIME_SECONDS / slotSeconds (number of slots to reach cap)
109
+ // - weight = MAX_P1_SCORE / cap
110
+ //
111
+ // This ensures: max P1 = cap * weight = MAX_P1_SCORE
112
+ /** Maximum P1 score contribution per topic */ export const MAX_P1_SCORE = 8;
113
+ /** Time in seconds to reach P1 cap (1 hour) */ const P1_CAP_TIME_SECONDS = 3600;
114
+ // ============================================================================
115
+ // P2 (firstMessageDeliveries) Configuration
116
+ // ============================================================================
117
+ // P2 rewards peers who deliver messages first. We normalize so max P2 = MAX_P2_SCORE.
118
+ // P2 uses a decaying counter, so we set the cap based on convergence and scale the weight.
119
+ //
120
+ // Formula: P2 = min(firstMessageDeliveries, cap) * weight
121
+ // - cap = convergence value for first deliveries
122
+ // - weight = MAX_P2_SCORE / cap
123
+ /** Maximum P2 score contribution per topic */ export const MAX_P2_SCORE = 25;
124
+ /** Decay window for first message deliveries in slots (fast decay) */ const P2_DECAY_WINDOW_SLOTS = 2;
125
+ // ============================================================================
126
+ // P3 (meshMessageDeliveries) Configuration
127
+ // ============================================================================
128
+ // P3 penalizes peers who under-deliver messages. For a peer to be pruned from
129
+ // the mesh, their topic score must be negative: P1 + P2 + P3 < 0
130
+ //
131
+ // Therefore, P3 max penalty must exceed (P1 + P2) to cause pruning:
132
+ // |P3| > P1 + P2
133
+ // |P3| > 8 + 25 = 33
134
+ //
135
+ // We set P3 max = -34 per topic (slightly more than P1+P2) to ensure pruning.
136
+ // With 3 topics having P3 enabled, total P3b after pruning = -102.
137
+ //
138
+ // With appSpecificWeight=10, ~20 HighTolerance errors (-40 app score) plus max P3b (-102)
139
+ // would cross gossipThreshold (-500). This keeps non-contributors from being disconnected
140
+ // unless they also accrue app-level penalties.
141
+ //
142
+ // The weight formula ensures max penalty equals MAX_P3_PENALTY_PER_TOPIC:
143
+ // weight = MAX_P3_PENALTY_PER_TOPIC / threshold²
144
+ // When deficit = threshold: penalty = threshold² * weight = MAX_P3_PENALTY_PER_TOPIC
145
+ /** Maximum P3 penalty per topic (must exceed P1 + P2 to cause pruning) */ export const MAX_P3_PENALTY_PER_TOPIC = -(MAX_P1_SCORE + MAX_P2_SCORE + 1); // -34
146
+ /** Number of topics with P3 enabled in MBPS mode (block_proposal + checkpoint_proposal + checkpoint_attestation) */ export const NUM_P3_ENABLED_TOPICS = 3;
147
+ /** Total maximum P3b penalty across all topics after pruning in MBPS mode */ export const TOTAL_MAX_P3B_PENALTY = MAX_P3_PENALTY_PER_TOPIC * NUM_P3_ENABLED_TOPICS; // -102
148
+ /**
149
+ * Factory class for creating gossipsub topic scoring parameters.
150
+ * Computes shared values once and reuses them across all topics.
151
+ */ export class TopicScoreParamsFactory {
152
+ params;
153
+ /** Number of blocks per slot based on timetable configuration */ blocksPerSlot;
154
+ /** Decay factor for invalid message penalties (P4) */ invalidDecay;
155
+ /** Number of heartbeats per slot */ heartbeatsPerSlot;
156
+ /** P1: Time in mesh quantum (slot duration in ms - score increases by ~1 per slot) */ timeInMeshQuantum;
157
+ /** P1: Time in mesh cap (number of slots to reach max score) */ timeInMeshCap;
158
+ /** P1: Time in mesh weight (normalized so max P1 = MAX_P1_SCORE) */ timeInMeshWeight;
159
+ /** P2: First message deliveries decay factor */ firstMessageDeliveriesDecay;
160
+ /** P2: First message deliveries cap (convergence-based) */ firstMessageDeliveriesCap;
161
+ /** P2: First message deliveries weight (normalized so max P2 = MAX_P2_SCORE) */ firstMessageDeliveriesWeight;
162
+ /** Base parameters common to all topics */ baseParams;
163
+ constructor(params){
164
+ this.params = params;
165
+ const { slotDurationMs, heartbeatIntervalMs, blockDurationMs } = params;
166
+ // Compute values that are the same for all topics
167
+ this.blocksPerSlot = calculateBlocksPerSlot(slotDurationMs, blockDurationMs);
168
+ this.heartbeatsPerSlot = slotDurationMs / heartbeatIntervalMs;
169
+ this.invalidDecay = computeDecay(heartbeatIntervalMs, slotDurationMs, INVALID_DECAY_WINDOW_SLOTS);
170
+ // P1: timeInMesh - Lodestar style slot-based normalization
171
+ // quantum = slot duration, so score increases by ~1 per slot of mesh membership
172
+ // cap = number of slots in P1_CAP_TIME_SECONDS (1 hour)
173
+ // weight = MAX_P1_SCORE / cap, so max P1 = cap * weight = MAX_P1_SCORE
174
+ const slotDurationSeconds = slotDurationMs / 1000;
175
+ this.timeInMeshQuantum = slotDurationMs;
176
+ this.timeInMeshCap = P1_CAP_TIME_SECONDS / slotDurationSeconds;
177
+ this.timeInMeshWeight = MAX_P1_SCORE / this.timeInMeshCap;
178
+ // P2: firstMessageDeliveries - convergence-based cap with normalized weight
179
+ // Uses fast decay (2 slots) so it rewards recent first deliveries
180
+ // cap = convergence at 1 first delivery per heartbeat (theoretical max rate)
181
+ // weight = MAX_P2_SCORE / cap, so max P2 = cap * weight = MAX_P2_SCORE
182
+ this.firstMessageDeliveriesDecay = computeDecay(heartbeatIntervalMs, slotDurationMs, P2_DECAY_WINDOW_SLOTS);
183
+ // Convergence for 1 message per heartbeat (generous estimate for first deliveries)
184
+ this.firstMessageDeliveriesCap = computeConvergence(1, this.firstMessageDeliveriesDecay);
185
+ this.firstMessageDeliveriesWeight = MAX_P2_SCORE / this.firstMessageDeliveriesCap;
186
+ // Base params are identical for all topics
187
+ this.baseParams = {
188
+ topicWeight: 1,
189
+ invalidMessageDeliveriesWeight: INVALID_MESSAGE_WEIGHT,
190
+ invalidMessageDeliveriesDecay: this.invalidDecay,
191
+ // P1: timeInMesh (same for all topics)
192
+ timeInMeshQuantum: this.timeInMeshQuantum,
193
+ timeInMeshCap: this.timeInMeshCap,
194
+ timeInMeshWeight: this.timeInMeshWeight,
195
+ // P2: firstMessageDeliveries (same for all topics)
196
+ firstMessageDeliveriesDecay: this.firstMessageDeliveriesDecay,
197
+ firstMessageDeliveriesCap: this.firstMessageDeliveriesCap,
198
+ firstMessageDeliveriesWeight: this.firstMessageDeliveriesWeight
199
+ };
200
+ }
201
+ /**
202
+ * Creates scoring parameters for topics with unpredictable or zero message rates.
203
+ * Disables P1, P2, P3, and P3b to avoid unbalanced positive score accumulation.
204
+ *
205
+ * Rationale: If P1/P2 were enabled without P3, the topic would contribute free
206
+ * positive scores that could offset penalties from other topics, preventing
207
+ * proper mesh pruning of non-contributing peers.
208
+ */ createDisabledP3Params() {
209
+ return createTopicScoreParams({
210
+ topicWeight: 1,
211
+ // P1: timeInMesh - disabled (no free positive scores)
212
+ timeInMeshQuantum: 1,
213
+ timeInMeshCap: 0,
214
+ timeInMeshWeight: 0,
215
+ // P2: firstMessageDeliveries - disabled
216
+ firstMessageDeliveriesDecay: 0.5,
217
+ firstMessageDeliveriesCap: 0,
218
+ firstMessageDeliveriesWeight: 0,
219
+ // P3: meshMessageDeliveries - disabled
220
+ meshMessageDeliveriesWeight: 0,
221
+ meshMessageDeliveriesDecay: 0.5,
222
+ meshMessageDeliveriesThreshold: 0,
223
+ meshMessageDeliveriesWindow: 0,
224
+ meshMessageDeliveriesActivation: 0,
225
+ meshMessageDeliveriesCap: 0,
226
+ // P3b: meshFailurePenalty - disabled
227
+ meshFailurePenaltyWeight: 0,
228
+ meshFailurePenaltyDecay: 0.5,
229
+ // P4: invalidMessageDeliveries - still enabled for attack detection
230
+ invalidMessageDeliveriesWeight: INVALID_MESSAGE_WEIGHT,
231
+ invalidMessageDeliveriesDecay: this.invalidDecay
232
+ });
233
+ }
234
+ /**
235
+ * Creates scoring parameters for topics with predictable message rates.
236
+ * Enables P1, P2, P3, and P3b for balanced scoring.
237
+ *
238
+ * The scoring is designed so that:
239
+ * - P1 + P2 max = 8 + 25 = 33 (positive rewards for good behavior)
240
+ * - P3 max = -34 (penalty exceeds P1+P2 to ensure pruning of non-contributors)
241
+ * - After pruning: P1 resets, P2 decays, P3b persists with slow decay
242
+ *
243
+ * @param expectedPerSlot - Expected messages per slot
244
+ */ createEnabledP3Params(expectedPerSlot) {
245
+ const { slotDurationMs, heartbeatIntervalMs } = this.params;
246
+ // Calculate decay based on message frequency
247
+ const decayWindowSlots = getDecayWindowSlots(expectedPerSlot);
248
+ const decay = computeDecay(heartbeatIntervalMs, slotDurationMs, decayWindowSlots);
249
+ // Calculate convergence and threshold
250
+ const messagesPerHeartbeat = expectedPerSlot / this.heartbeatsPerSlot;
251
+ const convergence = computeConvergence(messagesPerHeartbeat, decay);
252
+ const threshold = computeThreshold(convergence, CONSERVATIVE_FACTOR);
253
+ // Cap factor: higher for high-volume topics
254
+ const capFactor = expectedPerSlot > 10 ? 8 : 4;
255
+ // P3 Weight: scaled so max penalty = MAX_P3_PENALTY_PER_TOPIC (-34)
256
+ // When deficit = threshold (peer delivers nothing):
257
+ // penalty = deficit² × weight = threshold² × (MAX_P3_PENALTY_PER_TOPIC / threshold²) = MAX_P3_PENALTY_PER_TOPIC
258
+ const meshDeliveriesWeight = threshold > 0 ? MAX_P3_PENALTY_PER_TOPIC / (threshold * threshold) : 0;
259
+ // Activation time: use the decay window multiplied by ACTIVATION_MULTIPLIER for extra grace
260
+ // during network bootstrap. The timer starts from mesh join time, not from first message,
261
+ // so peers joining before messages flow need extra time to accumulate counter values.
262
+ const activationMs = slotDurationMs * decayWindowSlots * ACTIVATION_MULTIPLIER;
263
+ return createTopicScoreParams({
264
+ ...this.baseParams,
265
+ // P3: meshMessageDeliveries
266
+ meshMessageDeliveriesWeight: meshDeliveriesWeight,
267
+ meshMessageDeliveriesDecay: decay,
268
+ meshMessageDeliveriesThreshold: threshold,
269
+ meshMessageDeliveriesWindow: MESH_DELIVERIES_WINDOW_MS,
270
+ meshMessageDeliveriesActivation: activationMs,
271
+ meshMessageDeliveriesCap: Math.max(threshold * capFactor, 2),
272
+ // P3b: meshFailurePenalty (same weight and decay as P3)
273
+ meshFailurePenaltyWeight: meshDeliveriesWeight,
274
+ meshFailurePenaltyDecay: decay
275
+ });
276
+ }
277
+ /**
278
+ * Creates topic score parameters for a specific topic type.
279
+ *
280
+ * @param topicType - The topic type
281
+ * @returns TopicScoreParams for the topic
282
+ */ createForTopic(topicType) {
283
+ const expectedPerSlot = getExpectedMessagesPerSlot(topicType, this.params.targetCommitteeSize, this.blocksPerSlot);
284
+ // For unpredictable topics (tx) or topics with 0 expected messages, disable P3/P3b
285
+ if (expectedPerSlot === undefined || expectedPerSlot === 0) {
286
+ return this.createDisabledP3Params();
287
+ }
288
+ return this.createEnabledP3Params(expectedPerSlot);
289
+ }
290
+ /**
291
+ * Creates all topic score parameters for gossipsub configuration.
292
+ *
293
+ * @param protocolVersion - Protocol version string for topic naming
294
+ * @returns Record mapping topic strings to their score parameters
295
+ */ createAll(protocolVersion) {
296
+ const topics = {};
297
+ for (const topicType of Object.values(TopicType)){
298
+ const topicString = createTopicString(topicType, protocolVersion);
299
+ topics[topicString] = this.createForTopic(topicType);
300
+ }
301
+ return topics;
302
+ }
303
+ }
304
+ /**
305
+ * Creates topic score parameters for a specific topic type.
306
+ * Convenience function that creates a factory internally.
307
+ *
308
+ * @param topicType - The topic type
309
+ * @param params - Network parameters for scoring calculation
310
+ * @returns TopicScoreParams for the topic
311
+ */ export function createTopicScoreParamsForTopic(topicType, params) {
312
+ const factory = new TopicScoreParamsFactory(params);
313
+ return factory.createForTopic(topicType);
314
+ }
315
+ /**
316
+ * Creates all topic score parameters for gossipsub configuration.
317
+ *
318
+ * @param protocolVersion - Protocol version string for topic naming
319
+ * @param params - Network parameters for scoring calculation
320
+ * @returns Record mapping topic strings to their score parameters
321
+ */ export function createAllTopicScoreParams(protocolVersion, params) {
322
+ const factory = new TopicScoreParamsFactory(params);
323
+ return factory.createAll(protocolVersion);
324
+ }
@@ -3,5 +3,6 @@ export * from './libp2p/libp2p_service.js';
3
3
  export * from './tx_provider.js';
4
4
  export * from './dummy_service.js';
5
5
  export * from './reqresp/index.js';
6
+ export * from './tx_file_store/index.js';
6
7
  export * from './tx_collection/index.js';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMEJBQTBCLENBQUMifQ==
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywwQkFBMEIsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC"}
@@ -3,4 +3,5 @@ export * from './libp2p/libp2p_service.js';
3
3
  export * from './tx_provider.js';
4
4
  export * from './dummy_service.js';
5
5
  export * from './reqresp/index.js';
6
+ export * from './tx_file_store/index.js';
6
7
  export * from './tx_collection/index.js';
@@ -17,4 +17,4 @@ export declare class P2PInstrumentation {
17
17
  recordMessageLatency(topicName: TopicType, timerOrMs: Timer | number): void;
18
18
  private aggregate;
19
19
  }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvbGlicDJwL2luc3RydW1lbnRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQU1MLEtBQUssZUFBZSxFQUdyQixNQUFNLHlCQUF5QixDQUFDO0FBSWpDLHFCQUFhLGtCQUFrQjtJQUM3QixPQUFPLENBQUMseUJBQXlCLENBQVk7SUFDN0MsT0FBTyxDQUFDLHlCQUF5QixDQUFnQjtJQUNqRCxPQUFPLENBQUMsY0FBYyxDQUFZO0lBQ2xDLE9BQU8sQ0FBQyxlQUFlLENBQWdCO0lBRXZDLE9BQU8sQ0FBQyxlQUFlLENBQTZDO0lBQ3BFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBNkM7SUFFdkUsT0FBTyxDQUFDLGlCQUFpQixDQUFpRTtJQUMxRixPQUFPLENBQUMsb0JBQW9CLENBQWlFO0lBRTdGLFlBQVksTUFBTSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQW9GaEQ7SUFFTSx1QkFBdUIsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEdBQUcsTUFBTSxRQVc3RTtJQUVNLG1CQUFtQixDQUFDLEtBQUssRUFBRSxNQUFNLFFBRXZDO0lBRU0sNkJBQTZCLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxHQUFHLFNBQVMsUUFFckY7SUFFTSxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEdBQUcsTUFBTSxRQVcxRTtJQUVELE9BQU8sQ0FBQyxTQUFTLENBa0JmO0NBQ0gifQ==
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvbGlicDJwL2luc3RydW1lbnRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQU1MLEtBQUssZUFBZSxFQUdyQixNQUFNLHlCQUF5QixDQUFDO0FBSWpDLHFCQUFhLGtCQUFrQjtJQUM3QixPQUFPLENBQUMseUJBQXlCLENBQVk7SUFDN0MsT0FBTyxDQUFDLHlCQUF5QixDQUFnQjtJQUNqRCxPQUFPLENBQUMsY0FBYyxDQUFZO0lBQ2xDLE9BQU8sQ0FBQyxlQUFlLENBQWdCO0lBRXZDLE9BQU8sQ0FBQyxlQUFlLENBQTZDO0lBQ3BFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBNkM7SUFFdkUsT0FBTyxDQUFDLGlCQUFpQixDQUFpRTtJQUMxRixPQUFPLENBQUMsb0JBQW9CLENBQWlFO0lBRTdGLFlBQVksTUFBTSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQTJDaEQ7SUFFTSx1QkFBdUIsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEdBQUcsTUFBTSxRQVc3RTtJQUVNLG1CQUFtQixDQUFDLEtBQUssRUFBRSxNQUFNLFFBRXZDO0lBRU0sNkJBQTZCLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxHQUFHLFNBQVMsUUFFckY7SUFFTSxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEdBQUcsTUFBTSxRQVcxRTtJQUVELE9BQU8sQ0FBQyxTQUFTLENBa0JmO0NBQ0gifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../../src/services/libp2p/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAML,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAIjC,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,yBAAyB,CAAY;IAC7C,OAAO,CAAC,yBAAyB,CAAgB;IACjD,OAAO,CAAC,cAAc,CAAY;IAClC,OAAO,CAAC,eAAe,CAAgB;IAEvC,OAAO,CAAC,eAAe,CAA6C;IACpE,OAAO,CAAC,kBAAkB,CAA6C;IAEvE,OAAO,CAAC,iBAAiB,CAAiE;IAC1F,OAAO,CAAC,oBAAoB,CAAiE;IAE7F,YAAY,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAoFhD;IAEM,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,QAW7E;IAEM,mBAAmB,CAAC,KAAK,EAAE,MAAM,QAEvC;IAEM,6BAA6B,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,QAErF;IAEM,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,QAW1E;IAED,OAAO,CAAC,SAAS,CAkBf;CACH"}
1
+ {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../../src/services/libp2p/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAML,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAIjC,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,yBAAyB,CAAY;IAC7C,OAAO,CAAC,yBAAyB,CAAgB;IACjD,OAAO,CAAC,cAAc,CAAY;IAClC,OAAO,CAAC,eAAe,CAAgB;IAEvC,OAAO,CAAC,eAAe,CAA6C;IACpE,OAAO,CAAC,kBAAkB,CAA6C;IAEvE,OAAO,CAAC,iBAAiB,CAAiE;IAC1F,OAAO,CAAC,oBAAoB,CAAiE;IAE7F,YAAY,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EA2ChD;IAEM,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,QAW7E;IAEM,mBAAmB,CAAC,KAAK,EAAE,MAAM,QAEvC;IAEM,6BAA6B,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,QAErF;IAEM,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,QAW1E;IAED,OAAO,CAAC,SAAS,CAkBf;CACH"}
@@ -1,5 +1,5 @@
1
1
  import { TopicType } from '@aztec/stdlib/p2p';
2
- import { Attributes, Metrics, ValueType } from '@aztec/telemetry-client';
2
+ import { Attributes, Metrics, createUpDownCounterWithDefault } from '@aztec/telemetry-client';
3
3
  import { createHistogram } from 'node:perf_hooks';
4
4
  export class P2PInstrumentation {
5
5
  messageValidationDuration;
@@ -12,76 +12,34 @@ export class P2PInstrumentation {
12
12
  aggValidationMetrics;
13
13
  constructor(client, name){
14
14
  const meter = client.getMeter(name);
15
- this.messageValidationDuration = meter.createHistogram(Metrics.P2P_GOSSIP_MESSAGE_VALIDATION_DURATION, {
16
- unit: 'ms',
17
- description: 'How long validating a gossiped message takes',
18
- valueType: ValueType.INT
19
- });
20
- this.messagePrevalidationCount = meter.createUpDownCounter(Metrics.P2P_GOSSIP_MESSAGE_PREVALIDATION_COUNT, {
21
- description: 'How many message pass/fail prevalidation',
22
- valueType: ValueType.INT
23
- });
24
- this.messageLatency = meter.createHistogram(Metrics.P2P_GOSSIP_MESSAGE_LATENCY, {
25
- unit: 'ms',
26
- description: 'P2P message latency',
27
- valueType: ValueType.INT
28
- });
29
- this.txReceivedCount = meter.createUpDownCounter(Metrics.P2P_GOSSIP_TX_RECEIVED_COUNT, {
30
- description: 'The number of txs received from the p2p network'
15
+ this.messageValidationDuration = meter.createHistogram(Metrics.P2P_GOSSIP_MESSAGE_VALIDATION_DURATION);
16
+ this.messagePrevalidationCount = createUpDownCounterWithDefault(meter, Metrics.P2P_GOSSIP_MESSAGE_PREVALIDATION_COUNT, {
17
+ [Attributes.TOPIC_NAME]: [
18
+ TopicType.tx,
19
+ TopicType.block_proposal,
20
+ TopicType.checkpoint_proposal,
21
+ TopicType.checkpoint_attestation
22
+ ],
23
+ [Attributes.OK]: [
24
+ true,
25
+ false
26
+ ]
31
27
  });
28
+ this.messageLatency = meter.createHistogram(Metrics.P2P_GOSSIP_MESSAGE_LATENCY);
29
+ this.txReceivedCount = createUpDownCounterWithDefault(meter, Metrics.P2P_GOSSIP_TX_RECEIVED_COUNT);
32
30
  this.aggLatencyMetrics = {
33
- avg: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_LATENCY_AVG, {
34
- valueType: ValueType.DOUBLE,
35
- description: 'AVG msg latency',
36
- unit: 'ms'
37
- }),
38
- max: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_LATENCY_MAX, {
39
- valueType: ValueType.DOUBLE,
40
- description: 'MAX msg latency',
41
- unit: 'ms'
42
- }),
43
- min: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_LATENCY_MIN, {
44
- valueType: ValueType.DOUBLE,
45
- description: 'MIN msg latency',
46
- unit: 'ms'
47
- }),
48
- p50: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_LATENCY_P50, {
49
- valueType: ValueType.DOUBLE,
50
- description: 'P50 msg latency',
51
- unit: 'ms'
52
- }),
53
- p90: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_LATENCY_P90, {
54
- valueType: ValueType.DOUBLE,
55
- description: 'P90 msg latency',
56
- unit: 'ms'
57
- })
31
+ avg: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_LATENCY_AVG),
32
+ max: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_LATENCY_MAX),
33
+ min: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_LATENCY_MIN),
34
+ p50: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_LATENCY_P50),
35
+ p90: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_LATENCY_P90)
58
36
  };
59
37
  this.aggValidationMetrics = {
60
- avg: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_VALIDATION_DURATION_AVG, {
61
- valueType: ValueType.DOUBLE,
62
- description: 'AVG msg validation',
63
- unit: 'ms'
64
- }),
65
- max: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_VALIDATION_DURATION_MAX, {
66
- valueType: ValueType.DOUBLE,
67
- description: 'MAX msg validation',
68
- unit: 'ms'
69
- }),
70
- min: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_VALIDATION_DURATION_MIN, {
71
- valueType: ValueType.DOUBLE,
72
- description: 'MIN msg validation',
73
- unit: 'ms'
74
- }),
75
- p50: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_VALIDATION_DURATION_P50, {
76
- valueType: ValueType.DOUBLE,
77
- description: 'P50 msg validation',
78
- unit: 'ms'
79
- }),
80
- p90: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_VALIDATION_DURATION_P90, {
81
- valueType: ValueType.DOUBLE,
82
- description: 'P90 msg validation',
83
- unit: 'ms'
84
- })
38
+ avg: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_VALIDATION_DURATION_AVG),
39
+ max: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_VALIDATION_DURATION_MAX),
40
+ min: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_VALIDATION_DURATION_MIN),
41
+ p50: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_VALIDATION_DURATION_P50),
42
+ p90: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_VALIDATION_DURATION_P90)
85
43
  };
86
44
  meter.addBatchObservableCallback(this.aggregate, [
87
45
  ...Object.values(this.aggValidationMetrics),
@@ -143,19 +101,19 @@ export class P2PInstrumentation {
143
101
  if (!histogram || histogram.count === 0) {
144
102
  continue;
145
103
  }
146
- res.observe(metrics.avg, histogram.mean, {
104
+ res.observe(metrics.avg, Math.ceil(histogram.mean), {
147
105
  [Attributes.TOPIC_NAME]: topicName
148
106
  });
149
- res.observe(metrics.max, histogram.max, {
107
+ res.observe(metrics.max, Math.ceil(histogram.max), {
150
108
  [Attributes.TOPIC_NAME]: topicName
151
109
  });
152
- res.observe(metrics.min, histogram.min, {
110
+ res.observe(metrics.min, Math.ceil(histogram.min), {
153
111
  [Attributes.TOPIC_NAME]: topicName
154
112
  });
155
- res.observe(metrics.p50, histogram.percentile(50), {
113
+ res.observe(metrics.p50, Math.ceil(histogram.percentile(50)), {
156
114
  [Attributes.TOPIC_NAME]: topicName
157
115
  });
158
- res.observe(metrics.p90, histogram.percentile(90), {
116
+ res.observe(metrics.p90, Math.ceil(histogram.percentile(90)), {
159
117
  [Attributes.TOPIC_NAME]: topicName
160
118
  });
161
119
  }