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

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 (332) 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 +1 -1
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +6 -5
  7. package/dest/client/interface.d.ts +18 -5
  8. package/dest/client/interface.d.ts.map +1 -1
  9. package/dest/client/p2p_client.d.ts +10 -13
  10. package/dest/client/p2p_client.d.ts.map +1 -1
  11. package/dest/client/p2p_client.js +449 -118
  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 +8 -2
  19. package/dest/config.d.ts.map +1 -1
  20. package/dest/config.js +4 -2
  21. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +61 -42
  22. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  23. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
  24. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  25. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +237 -263
  26. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +21 -18
  27. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
  28. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +113 -108
  29. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +17 -16
  30. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
  31. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +89 -128
  32. package/dest/mem_pools/attestation_pool/mocks.d.ts +9 -6
  33. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  34. package/dest/mem_pools/attestation_pool/mocks.js +16 -12
  35. package/dest/mem_pools/instrumentation.d.ts +1 -1
  36. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  37. package/dest/mem_pools/instrumentation.js +5 -14
  38. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +15 -10
  39. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  40. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +91 -50
  41. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +19 -5
  42. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -1
  43. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +59 -3
  44. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +79 -5
  45. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -1
  46. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +47 -0
  47. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +16 -0
  48. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  49. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +122 -0
  50. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +2 -2
  51. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -1
  52. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +4 -4
  53. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -1
  54. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +2 -0
  55. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +2 -2
  56. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -1
  57. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
  58. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
  59. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
  60. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +4 -4
  61. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  62. package/dest/msg_validators/attestation_validator/attestation_validator.js +51 -18
  63. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +5 -5
  64. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  65. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +22 -13
  66. package/dest/msg_validators/clock_tolerance.d.ts +21 -0
  67. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
  68. package/dest/msg_validators/clock_tolerance.js +37 -0
  69. package/dest/msg_validators/index.d.ts +2 -2
  70. package/dest/msg_validators/index.d.ts.map +1 -1
  71. package/dest/msg_validators/index.js +1 -1
  72. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +9 -0
  73. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
  74. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +6 -0
  75. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +9 -0
  76. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
  77. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +6 -0
  78. package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
  79. package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
  80. package/dest/msg_validators/proposal_validator/index.js +3 -0
  81. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -0
  82. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
  83. package/dest/msg_validators/proposal_validator/proposal_validator.js +104 -0
  84. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +23 -0
  85. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -0
  86. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +212 -0
  87. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +3 -2
  88. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  89. package/dest/msg_validators/tx_validator/block_header_validator.js +4 -3
  90. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  91. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  92. package/dest/msg_validators/tx_validator/data_validator.js +4 -1
  93. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +3 -2
  94. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  95. package/dest/msg_validators/tx_validator/double_spend_validator.js +3 -2
  96. package/dest/msg_validators/tx_validator/factory.d.ts +8 -3
  97. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  98. package/dest/msg_validators/tx_validator/factory.js +21 -11
  99. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
  100. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
  101. package/dest/msg_validators/tx_validator/fee_payer_balance.js +20 -0
  102. package/dest/msg_validators/tx_validator/gas_validator.d.ts +3 -2
  103. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  104. package/dest/msg_validators/tx_validator/gas_validator.js +11 -16
  105. package/dest/msg_validators/tx_validator/index.d.ts +2 -1
  106. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  107. package/dest/msg_validators/tx_validator/index.js +1 -0
  108. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -2
  109. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  110. package/dest/msg_validators/tx_validator/metadata_validator.js +2 -2
  111. package/dest/msg_validators/tx_validator/phases_validator.d.ts +3 -2
  112. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  113. package/dest/msg_validators/tx_validator/phases_validator.js +3 -3
  114. package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
  115. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
  116. package/dest/msg_validators/tx_validator/size_validator.js +23 -0
  117. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +3 -2
  118. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  119. package/dest/msg_validators/tx_validator/timestamp_validator.js +2 -2
  120. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  121. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  122. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  123. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  124. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  125. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
  126. package/dest/services/discv5/discV5_service.js +1 -1
  127. package/dest/services/dummy_service.d.ts +18 -2
  128. package/dest/services/dummy_service.d.ts.map +1 -1
  129. package/dest/services/dummy_service.js +42 -0
  130. package/dest/services/encoding.d.ts +1 -1
  131. package/dest/services/encoding.d.ts.map +1 -1
  132. package/dest/services/encoding.js +6 -5
  133. package/dest/services/libp2p/instrumentation.d.ts +1 -1
  134. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  135. package/dest/services/libp2p/instrumentation.js +30 -72
  136. package/dest/services/libp2p/libp2p_service.d.ts +36 -13
  137. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  138. package/dest/services/libp2p/libp2p_service.js +741 -173
  139. package/dest/services/peer-manager/metrics.d.ts +2 -2
  140. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  141. package/dest/services/peer-manager/metrics.js +21 -26
  142. package/dest/services/peer-manager/peer_manager.d.ts +2 -2
  143. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  144. package/dest/services/peer-manager/peer_manager.js +0 -10
  145. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  146. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  147. package/dest/services/peer-manager/peer_scoring.js +7 -4
  148. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +47 -0
  149. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  150. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +566 -0
  151. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  152. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  153. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  154. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +50 -0
  155. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  156. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  157. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +37 -0
  158. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  159. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +151 -0
  160. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +54 -0
  161. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  162. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +139 -0
  163. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
  164. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  165. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
  166. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +22 -3
  167. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  168. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +63 -4
  169. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -1
  170. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  171. package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
  172. package/dest/services/reqresp/constants.d.ts +12 -0
  173. package/dest/services/reqresp/constants.d.ts.map +1 -0
  174. package/dest/services/reqresp/constants.js +7 -0
  175. package/dest/services/reqresp/interface.d.ts +3 -1
  176. package/dest/services/reqresp/interface.d.ts.map +1 -1
  177. package/dest/services/reqresp/metrics.d.ts +6 -5
  178. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  179. package/dest/services/reqresp/metrics.js +17 -21
  180. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
  181. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  182. package/dest/services/reqresp/protocols/block_txs/bitvector.js +12 -0
  183. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +1 -1
  184. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  185. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +14 -1
  186. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +15 -3
  187. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  188. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +33 -3
  189. package/dest/services/reqresp/protocols/status.d.ts +1 -1
  190. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  191. package/dest/services/reqresp/protocols/status.js +4 -1
  192. package/dest/services/reqresp/reqresp.d.ts +6 -1
  193. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  194. package/dest/services/reqresp/reqresp.js +460 -46
  195. package/dest/services/service.d.ts +19 -3
  196. package/dest/services/service.d.ts.map +1 -1
  197. package/dest/services/tx_collection/config.d.ts +4 -1
  198. package/dest/services/tx_collection/config.d.ts.map +1 -1
  199. package/dest/services/tx_collection/config.js +9 -1
  200. package/dest/services/tx_collection/fast_tx_collection.d.ts +6 -4
  201. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  202. package/dest/services/tx_collection/fast_tx_collection.js +16 -5
  203. package/dest/services/tx_collection/index.d.ts +2 -1
  204. package/dest/services/tx_collection/index.d.ts.map +1 -1
  205. package/dest/services/tx_collection/index.js +1 -0
  206. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  207. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  208. package/dest/services/tx_collection/instrumentation.js +10 -13
  209. package/dest/services/tx_collection/proposal_tx_collector.d.ts +48 -0
  210. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
  211. package/dest/services/tx_collection/proposal_tx_collector.js +50 -0
  212. package/dest/services/tx_collection/slow_tx_collection.d.ts +3 -3
  213. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  214. package/dest/services/tx_collection/tx_collection.d.ts +8 -8
  215. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  216. package/dest/services/tx_collection/tx_collection.js +5 -5
  217. package/dest/services/tx_provider.d.ts +3 -3
  218. package/dest/services/tx_provider.d.ts.map +1 -1
  219. package/dest/services/tx_provider_instrumentation.d.ts +1 -1
  220. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  221. package/dest/services/tx_provider_instrumentation.js +7 -20
  222. package/dest/test-helpers/index.d.ts +3 -1
  223. package/dest/test-helpers/index.d.ts.map +1 -1
  224. package/dest/test-helpers/index.js +2 -0
  225. package/dest/test-helpers/test_tx_provider.d.ts +40 -0
  226. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  227. package/dest/test-helpers/test_tx_provider.js +41 -0
  228. package/dest/test-helpers/testbench-utils.d.ts +156 -0
  229. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  230. package/dest/test-helpers/testbench-utils.js +296 -0
  231. package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
  232. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  233. package/dest/testbench/p2p_client_testbench_worker.js +218 -124
  234. package/dest/testbench/worker_client_manager.d.ts +51 -6
  235. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  236. package/dest/testbench/worker_client_manager.js +226 -39
  237. package/package.json +16 -16
  238. package/src/bootstrap/bootstrap.ts +7 -4
  239. package/src/client/factory.ts +6 -10
  240. package/src/client/interface.ts +19 -4
  241. package/src/client/p2p_client.ts +82 -132
  242. package/src/client/test/tx_proposal_collector/README.md +227 -0
  243. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +336 -0
  244. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
  245. package/src/config.ts +8 -3
  246. package/src/mem_pools/attestation_pool/attestation_pool.ts +68 -41
  247. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +239 -287
  248. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +162 -140
  249. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +141 -164
  250. package/src/mem_pools/attestation_pool/mocks.ts +19 -13
  251. package/src/mem_pools/instrumentation.ts +10 -18
  252. package/src/mem_pools/tx_pool/README.md +28 -13
  253. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +130 -75
  254. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +66 -5
  255. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +119 -4
  256. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +162 -0
  257. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +4 -2
  258. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
  259. package/src/msg_validators/attestation_validator/attestation_validator.ts +36 -21
  260. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +19 -16
  261. package/src/msg_validators/clock_tolerance.ts +51 -0
  262. package/src/msg_validators/index.ts +1 -1
  263. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +10 -0
  264. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +13 -0
  265. package/src/msg_validators/proposal_validator/index.ts +3 -0
  266. package/src/msg_validators/proposal_validator/proposal_validator.ts +92 -0
  267. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +230 -0
  268. package/src/msg_validators/tx_validator/block_header_validator.ts +7 -4
  269. package/src/msg_validators/tx_validator/data_validator.ts +18 -6
  270. package/src/msg_validators/tx_validator/double_spend_validator.ts +4 -3
  271. package/src/msg_validators/tx_validator/factory.ts +64 -23
  272. package/src/msg_validators/tx_validator/fee_payer_balance.ts +40 -0
  273. package/src/msg_validators/tx_validator/gas_validator.ts +17 -28
  274. package/src/msg_validators/tx_validator/index.ts +1 -0
  275. package/src/msg_validators/tx_validator/metadata_validator.ts +18 -7
  276. package/src/msg_validators/tx_validator/phases_validator.ts +5 -3
  277. package/src/msg_validators/tx_validator/size_validator.ts +22 -0
  278. package/src/msg_validators/tx_validator/timestamp_validator.ts +9 -4
  279. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  280. package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
  281. package/src/services/discv5/discV5_service.ts +1 -1
  282. package/src/services/dummy_service.ts +51 -0
  283. package/src/services/encoding.ts +5 -4
  284. package/src/services/libp2p/instrumentation.ts +32 -73
  285. package/src/services/libp2p/libp2p_service.ts +404 -154
  286. package/src/services/peer-manager/metrics.ts +22 -26
  287. package/src/services/peer-manager/peer_manager.ts +1 -2
  288. package/src/services/peer-manager/peer_scoring.ts +3 -4
  289. package/src/services/reqresp/batch-tx-requester/README.md +305 -0
  290. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +706 -0
  291. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  292. package/src/services/reqresp/batch-tx-requester/interface.ts +57 -0
  293. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +209 -0
  294. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +205 -0
  295. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
  296. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +65 -4
  297. package/src/services/reqresp/connection-sampler/connection_sampler.ts +19 -1
  298. package/src/services/reqresp/constants.ts +14 -0
  299. package/src/services/reqresp/interface.ts +3 -0
  300. package/src/services/reqresp/metrics.ts +36 -27
  301. package/src/services/reqresp/protocols/block_txs/bitvector.ts +16 -0
  302. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +16 -2
  303. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +46 -4
  304. package/src/services/reqresp/protocols/status.ts +7 -4
  305. package/src/services/reqresp/reqresp.ts +66 -19
  306. package/src/services/service.ts +23 -4
  307. package/src/services/tx_collection/config.ts +15 -1
  308. package/src/services/tx_collection/fast_tx_collection.ts +36 -13
  309. package/src/services/tx_collection/index.ts +5 -0
  310. package/src/services/tx_collection/instrumentation.ts +5 -13
  311. package/src/services/tx_collection/proposal_tx_collector.ts +114 -0
  312. package/src/services/tx_collection/slow_tx_collection.ts +2 -2
  313. package/src/services/tx_collection/tx_collection.ts +8 -8
  314. package/src/services/tx_provider.ts +2 -2
  315. package/src/services/tx_provider_instrumentation.ts +13 -20
  316. package/src/test-helpers/index.ts +2 -0
  317. package/src/test-helpers/test_tx_provider.ts +64 -0
  318. package/src/test-helpers/testbench-utils.ts +372 -0
  319. package/src/testbench/p2p_client_testbench_worker.ts +337 -119
  320. package/src/testbench/worker_client_manager.ts +304 -42
  321. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts +0 -15
  322. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts.map +0 -1
  323. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.js +0 -88
  324. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -12
  325. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
  326. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +0 -82
  327. package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
  328. package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
  329. package/dest/msg_validators/block_proposal_validator/index.js +0 -1
  330. package/src/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.ts +0 -108
  331. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -97
  332. package/src/msg_validators/block_proposal_validator/index.ts +0 -1
@@ -1,5 +1,5 @@
1
1
  import type { Fr } from '@aztec/foundation/curves/bn254';
2
- import { createLogger } from '@aztec/foundation/log';
2
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
3
3
  import {
4
4
  type AnyTx,
5
5
  TX_ERROR_INCORRECT_L1_CHAIN_ID,
@@ -11,7 +11,7 @@ import {
11
11
  } from '@aztec/stdlib/tx';
12
12
 
13
13
  export class MetadataTxValidator<T extends AnyTx> implements TxValidator<T> {
14
- #log = createLogger('p2p:tx_validator:tx_metadata');
14
+ #log: Logger;
15
15
 
16
16
  constructor(
17
17
  private values: {
@@ -20,7 +20,10 @@ export class MetadataTxValidator<T extends AnyTx> implements TxValidator<T> {
20
20
  vkTreeRoot: Fr;
21
21
  protocolContractsHash: Fr;
22
22
  },
23
- ) {}
23
+ bindings?: LoggerBindings,
24
+ ) {
25
+ this.#log = createLogger('p2p:tx_validator:tx_metadata', bindings);
26
+ }
24
27
 
25
28
  validateTx(tx: T): Promise<TxValidationResult> {
26
29
  const errors = [];
@@ -43,7 +46,9 @@ export class MetadataTxValidator<T extends AnyTx> implements TxValidator<T> {
43
46
  // This gets implicitly tested in the proof validator, but we can get a much cheaper check here by looking early at the vk.
44
47
  if (!tx.data.constants.vkTreeRoot.equals(this.values.vkTreeRoot)) {
45
48
  this.#log.verbose(
46
- `Rejecting tx ${'txHash' in tx ? tx.txHash : tx.hash} because of incorrect vk tree root ${tx.data.constants.vkTreeRoot.toString()} != ${this.values.vkTreeRoot.toString()}`,
49
+ `Rejecting tx ${
50
+ 'txHash' in tx ? tx.txHash : tx.hash
51
+ } because of incorrect vk tree root ${tx.data.constants.vkTreeRoot.toString()} != ${this.values.vkTreeRoot.toString()}`,
47
52
  );
48
53
  return false;
49
54
  } else {
@@ -54,7 +59,9 @@ export class MetadataTxValidator<T extends AnyTx> implements TxValidator<T> {
54
59
  #hasCorrectprotocolContractsHash(tx: T): boolean {
55
60
  if (!tx.data.constants.protocolContractsHash.equals(this.values.protocolContractsHash)) {
56
61
  this.#log.verbose(
57
- `Rejecting tx ${'txHash' in tx ? tx.txHash : tx.hash} because of incorrect protocol contracts hash ${tx.data.constants.protocolContractsHash.toString()} != ${this.values.protocolContractsHash.toString()}`,
62
+ `Rejecting tx ${
63
+ 'txHash' in tx ? tx.txHash : tx.hash
64
+ } because of incorrect protocol contracts hash ${tx.data.constants.protocolContractsHash.toString()} != ${this.values.protocolContractsHash.toString()}`,
58
65
  );
59
66
  return false;
60
67
  }
@@ -64,7 +71,9 @@ export class MetadataTxValidator<T extends AnyTx> implements TxValidator<T> {
64
71
  #hasCorrectL1ChainId(tx: T): boolean {
65
72
  if (!tx.data.constants.txContext.chainId.equals(this.values.l1ChainId)) {
66
73
  this.#log.verbose(
67
- `Rejecting tx ${'txHash' in tx ? tx.txHash : tx.hash} because of incorrect L1 chain ${tx.data.constants.txContext.chainId.toNumber()} != ${this.values.l1ChainId.toNumber()}`,
74
+ `Rejecting tx ${
75
+ 'txHash' in tx ? tx.txHash : tx.hash
76
+ } because of incorrect L1 chain ${tx.data.constants.txContext.chainId.toNumber()} != ${this.values.l1ChainId.toNumber()}`,
68
77
  );
69
78
  return false;
70
79
  } else {
@@ -75,7 +84,9 @@ export class MetadataTxValidator<T extends AnyTx> implements TxValidator<T> {
75
84
  #hasCorrectRollupVersion(tx: T): boolean {
76
85
  if (!tx.data.constants.txContext.version.equals(this.values.rollupVersion)) {
77
86
  this.#log.verbose(
78
- `Rejecting tx ${'txHash' in tx ? tx.txHash : tx.hash} because of incorrect rollup version ${tx.data.constants.txContext.version.toNumber()} != ${this.values.rollupVersion.toNumber()}`,
87
+ `Rejecting tx ${
88
+ 'txHash' in tx ? tx.txHash : tx.hash
89
+ } because of incorrect rollup version ${tx.data.constants.txContext.version.toNumber()} != ${this.values.rollupVersion.toNumber()}`,
79
90
  );
80
91
  return false;
81
92
  } else {
@@ -1,4 +1,4 @@
1
- import { createLogger } from '@aztec/foundation/log';
1
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
2
2
  import { PublicContractsDB, getCallRequestsWithCalldataByPhase } from '@aztec/simulator/server';
3
3
  import type { ContractDataSource } from '@aztec/stdlib/contract';
4
4
  import type { AllowedElement } from '@aztec/stdlib/interfaces/server';
@@ -14,15 +14,17 @@ import {
14
14
  import type { UInt64 } from '@aztec/stdlib/types';
15
15
 
16
16
  export class PhasesTxValidator implements TxValidator<Tx> {
17
- #log = createLogger('sequencer:tx_validator:tx_phases');
17
+ #log: Logger;
18
18
  private contractsDB: PublicContractsDB;
19
19
 
20
20
  constructor(
21
21
  contracts: ContractDataSource,
22
22
  private setupAllowList: AllowedElement[],
23
23
  private timestamp: UInt64,
24
+ bindings?: LoggerBindings,
24
25
  ) {
25
- this.contractsDB = new PublicContractsDB(contracts);
26
+ this.#log = createLogger('sequencer:tx_validator:tx_phases', bindings);
27
+ this.contractsDB = new PublicContractsDB(contracts, bindings);
26
28
  }
27
29
 
28
30
  async validateTx(tx: Tx): Promise<TxValidationResult> {
@@ -0,0 +1,22 @@
1
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
2
+ import { MAX_TX_SIZE_KB } from '@aztec/stdlib/p2p';
3
+ import { Tx, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
4
+
5
+ export class SizeTxValidator implements TxValidator<Tx> {
6
+ #log: Logger;
7
+
8
+ constructor(bindings?: LoggerBindings) {
9
+ this.#log = createLogger('p2p:tx_validator:tx_size', bindings);
10
+ }
11
+
12
+ validateTx(tx: Tx): Promise<TxValidationResult> {
13
+ const txSize = tx.getSize();
14
+ if (txSize > MAX_TX_SIZE_KB * 1024) {
15
+ this.#log.verbose(
16
+ `Rejecting transaction ${tx.getTxHash().toString()}. Reason: size above size limit. ${txSize}bytes > ${MAX_TX_SIZE_KB}Kb`,
17
+ );
18
+ return Promise.resolve({ result: 'invalid', reason: ['Transaction size above size limit'] });
19
+ }
20
+ return Promise.resolve({ result: 'valid' });
21
+ }
22
+ }
@@ -1,5 +1,5 @@
1
1
  import { BlockNumber } from '@aztec/foundation/branded-types';
2
- import { createLogger } from '@aztec/foundation/log';
2
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
3
3
  import {
4
4
  type AnyTx,
5
5
  TX_ERROR_INVALID_INCLUDE_BY_TIMESTAMP,
@@ -10,7 +10,7 @@ import {
10
10
  import type { UInt64 } from '@aztec/stdlib/types';
11
11
 
12
12
  export class TimestampTxValidator<T extends AnyTx> implements TxValidator<T> {
13
- #log = createLogger('p2p:tx_validator:timestamp');
13
+ #log: Logger;
14
14
 
15
15
  constructor(
16
16
  private values: {
@@ -20,7 +20,10 @@ export class TimestampTxValidator<T extends AnyTx> implements TxValidator<T> {
20
20
  // Block number in which the tx is considered to be included.
21
21
  blockNumber: BlockNumber;
22
22
  },
23
- ) {}
23
+ bindings?: LoggerBindings,
24
+ ) {
25
+ this.#log = createLogger('p2p:tx_validator:timestamp', bindings);
26
+ }
24
27
 
25
28
  validateTx(tx: T): Promise<TxValidationResult> {
26
29
  const includeByTimestamp = tx.data.includeByTimestamp;
@@ -35,7 +38,9 @@ export class TimestampTxValidator<T extends AnyTx> implements TxValidator<T> {
35
38
  );
36
39
  }
37
40
  this.#log.verbose(
38
- `Rejecting tx ${getTxHash(tx)} for low expiration timestamp. Tx expiration timestamp: ${includeByTimestamp}, timestamp: ${
41
+ `Rejecting tx ${getTxHash(
42
+ tx,
43
+ )} for low expiration timestamp. Tx expiration timestamp: ${includeByTimestamp}, timestamp: ${
39
44
  this.values.timestamp
40
45
  }.`,
41
46
  );
@@ -1,10 +1,15 @@
1
- import { createLogger } from '@aztec/foundation/log';
1
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
2
2
  import type { Tx, TxValidationResult, TxValidator } from '@aztec/stdlib/tx';
3
3
 
4
4
  export class TxPermittedValidator implements TxValidator<Tx> {
5
- #log = createLogger('p2p:tx_validator:tx_permitted');
5
+ #log: Logger;
6
6
 
7
- constructor(private permitted: boolean) {}
7
+ constructor(
8
+ private permitted: boolean,
9
+ bindings?: LoggerBindings,
10
+ ) {
11
+ this.#log = createLogger('p2p:tx_validator:tx_permitted', bindings);
12
+ }
8
13
 
9
14
  validateTx(tx: Tx): Promise<TxValidationResult> {
10
15
  if (!this.permitted) {
@@ -1,11 +1,16 @@
1
- import { createLogger } from '@aztec/foundation/log';
1
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
2
2
  import type { ClientProtocolCircuitVerifier } from '@aztec/stdlib/interfaces/server';
3
3
  import { TX_ERROR_INVALID_PROOF, Tx, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
4
4
 
5
5
  export class TxProofValidator implements TxValidator<Tx> {
6
- #log = createLogger('p2p:tx_validator:private_proof');
6
+ #log: Logger;
7
7
 
8
- constructor(private verifier: ClientProtocolCircuitVerifier) {}
8
+ constructor(
9
+ private verifier: ClientProtocolCircuitVerifier,
10
+ bindings?: LoggerBindings,
11
+ ) {
12
+ this.#log = createLogger('p2p:tx_validator:proof', bindings);
13
+ }
9
14
 
10
15
  async validateTx(tx: Tx): Promise<TxValidationResult> {
11
16
  const result = await this.verifier.verifyProof(tx);
@@ -87,7 +87,7 @@ export class DiscV5Service extends EventEmitter implements PeerDiscoveryService
87
87
  this.packageVersion,
88
88
  ));
89
89
 
90
- const metricsRegistry = new OtelMetricsAdapter(telemetry);
90
+ const metricsRegistry = new OtelMetricsAdapter(telemetry, this.logger.getBindings());
91
91
  this.discv5 = Discv5.create({
92
92
  enr: this.enr,
93
93
  peerId,
@@ -8,7 +8,9 @@ import type { ENR } from '@nethermindeth/enr';
8
8
  import EventEmitter from 'events';
9
9
 
10
10
  import type { PeerManagerInterface } from './peer-manager/interface.js';
11
+ import type { BatchTxRequesterLibP2PService } from './reqresp/batch-tx-requester/interface.js';
11
12
  import type { P2PReqRespConfig } from './reqresp/config.js';
13
+ import type { ConnectionSampler } from './reqresp/connection-sampler/connection_sampler.js';
12
14
  import { type AuthRequest, StatusMessage } from './reqresp/index.js';
13
15
  import type {
14
16
  ReqRespInterface,
@@ -23,6 +25,7 @@ import type { GoodByeReason } from './reqresp/protocols/goodbye.js';
23
25
  import { ReqRespStatus } from './reqresp/status.js';
24
26
  import {
25
27
  type P2PBlockReceivedCallback,
28
+ type P2PCheckpointReceivedCallback,
26
29
  type P2PService,
27
30
  type PeerDiscoveryService,
28
31
  PeerDiscoveryState,
@@ -74,6 +77,11 @@ export class DummyP2PService implements P2PService {
74
77
  */
75
78
  public registerBlockReceivedCallback(_callback: P2PBlockReceivedCallback) {}
76
79
 
80
+ /**
81
+ * Register a callback into the validator client for when a checkpoint proposal is received
82
+ */
83
+ public registerCheckpointReceivedCallback(_callback: P2PCheckpointReceivedCallback) {}
84
+
77
85
  /**
78
86
  * Sends a request to a peer.
79
87
  * @param _protocol - The protocol to send the request on.
@@ -100,6 +108,15 @@ export class DummyP2PService implements P2PService {
100
108
  return Promise.resolve([]);
101
109
  }
102
110
 
111
+ public sendRequestToPeer(
112
+ _peerId: PeerId,
113
+ _subProtocol: ReqRespSubProtocol,
114
+ _payload: Buffer,
115
+ _dialTimeout?: number,
116
+ ): Promise<ReqRespResponse> {
117
+ return Promise.resolve({ status: ReqRespStatus.SUCCESS, data: Buffer.from([]) });
118
+ }
119
+
103
120
  /**
104
121
  * Returns the ENR of the peer.
105
122
  * @returns The ENR of the peer, otherwise undefined.
@@ -112,6 +129,10 @@ export class DummyP2PService implements P2PService {
112
129
  return Promise.resolve();
113
130
  }
114
131
 
132
+ validatePropagatedTx(_tx: Tx, _peerId: PeerId): Promise<boolean> {
133
+ return Promise.resolve(true);
134
+ }
135
+
115
136
  addReqRespSubProtocol(
116
137
  _subProtocol: ReqRespSubProtocol,
117
138
  _handler: ReqRespSubProtocolHandler,
@@ -126,6 +147,27 @@ export class DummyP2PService implements P2PService {
126
147
 
127
148
  //this is no-op
128
149
  registerThisValidatorAddresses(_address: EthAddress[]): void {}
150
+
151
+ /**
152
+ * Get dummy BatchTxRequesterLibP2PService for testing
153
+ */
154
+ getBatchTxRequesterService(): BatchTxRequesterLibP2PService {
155
+ return {
156
+ reqResp: this, // The dummy service implements ReqRespInterface
157
+ connectionSampler: new DummyReqResp().getConnectionSampler(),
158
+ txValidatorConfig: {
159
+ l1ChainId: 1,
160
+ rollupVersion: 1,
161
+ proofVerifier: {
162
+ verifyProof: () => Promise.resolve({ valid: true, durationMs: 0, totalDurationMs: 0 }),
163
+ stop: () => Promise.resolve(),
164
+ },
165
+ },
166
+ peerScoring: {
167
+ penalizePeer: (_peerId, _penalty) => {},
168
+ },
169
+ };
170
+ }
129
171
  }
130
172
 
131
173
  /**
@@ -262,6 +304,15 @@ export class DummyReqResp implements ReqRespInterface {
262
304
  return Promise.resolve({ status: ReqRespStatus.SUCCESS, data: Buffer.from([]) });
263
305
  }
264
306
 
307
+ /**
308
+ * Get dummy connection sampler for testing
309
+ */
310
+ getConnectionSampler(): Pick<ConnectionSampler, 'getPeerListSortedByConnectionCountAsc'> {
311
+ return {
312
+ getPeerListSortedByConnectionCountAsc: () => [],
313
+ };
314
+ }
315
+
265
316
  addSubProtocol(
266
317
  _subProtocol: ReqRespSubProtocol,
267
318
  _handler: ReqRespSubProtocolHandler,
@@ -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
 
6
6
  import type { RPC } from '@chainsafe/libp2p-gossipsub/message';
7
7
  import type { DataTransform } from '@chainsafe/libp2p-gossipsub/types';
@@ -52,13 +52,14 @@ export function getMsgIdFn(message: Message) {
52
52
  }
53
53
 
54
54
  const DefaultMaxSizesKb: Record<TopicType, number> = {
55
- // Tx effects should not exceed 128kb, so 512kb for the full tx obj should be sufficient
56
- [TopicType.tx]: 512,
55
+ [TopicType.tx]: MAX_TX_SIZE_KB,
57
56
  // An attestation has roughly 30 fields, which is 1kb, so 5x is plenty
58
- [TopicType.block_attestation]: 5,
57
+ [TopicType.checkpoint_attestation]: 5,
59
58
  // Proposals may carry some tx objects, so we allow a larger size capped at 10mb
60
59
  // Note this may not be enough for carrying all tx objects in a block
61
60
  [TopicType.block_proposal]: 1024 * 10,
61
+ // TODO(palla/mbps): Check size for checkpoint proposal
62
+ [TopicType.checkpoint_proposal]: 1024 * 10,
62
63
  };
63
64
 
64
65
  /**
@@ -8,7 +8,7 @@ import {
8
8
  type ObservableGauge,
9
9
  type TelemetryClient,
10
10
  type UpDownCounter,
11
- ValueType,
11
+ createUpDownCounterWithDefault,
12
12
  } from '@aztec/telemetry-client';
13
13
 
14
14
  import { type RecordableHistogram, createHistogram } from 'node:perf_hooks';
@@ -28,81 +28,40 @@ export class P2PInstrumentation {
28
28
  constructor(client: TelemetryClient, name: string) {
29
29
  const meter = client.getMeter(name);
30
30
 
31
- this.messageValidationDuration = meter.createHistogram(Metrics.P2P_GOSSIP_MESSAGE_VALIDATION_DURATION, {
32
- unit: 'ms',
33
- description: 'How long validating a gossiped message takes',
34
- valueType: ValueType.INT,
35
- });
31
+ this.messageValidationDuration = meter.createHistogram(Metrics.P2P_GOSSIP_MESSAGE_VALIDATION_DURATION);
36
32
 
37
- this.messagePrevalidationCount = meter.createUpDownCounter(Metrics.P2P_GOSSIP_MESSAGE_PREVALIDATION_COUNT, {
38
- description: 'How many message pass/fail prevalidation',
39
- valueType: ValueType.INT,
40
- });
33
+ this.messagePrevalidationCount = createUpDownCounterWithDefault(
34
+ meter,
35
+ Metrics.P2P_GOSSIP_MESSAGE_PREVALIDATION_COUNT,
36
+ {
37
+ [Attributes.TOPIC_NAME]: [
38
+ TopicType.tx,
39
+ TopicType.block_proposal,
40
+ TopicType.checkpoint_proposal,
41
+ TopicType.checkpoint_attestation,
42
+ ],
43
+ [Attributes.OK]: [true, false],
44
+ },
45
+ );
41
46
 
42
- this.messageLatency = meter.createHistogram(Metrics.P2P_GOSSIP_MESSAGE_LATENCY, {
43
- unit: 'ms',
44
- description: 'P2P message latency',
45
- valueType: ValueType.INT,
46
- });
47
+ this.messageLatency = meter.createHistogram(Metrics.P2P_GOSSIP_MESSAGE_LATENCY);
47
48
 
48
- this.txReceivedCount = meter.createUpDownCounter(Metrics.P2P_GOSSIP_TX_RECEIVED_COUNT, {
49
- description: 'The number of txs received from the p2p network',
50
- });
49
+ this.txReceivedCount = createUpDownCounterWithDefault(meter, Metrics.P2P_GOSSIP_TX_RECEIVED_COUNT);
51
50
 
52
51
  this.aggLatencyMetrics = {
53
- avg: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_LATENCY_AVG, {
54
- valueType: ValueType.DOUBLE,
55
- description: 'AVG msg latency',
56
- unit: 'ms',
57
- }),
58
- max: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_LATENCY_MAX, {
59
- valueType: ValueType.DOUBLE,
60
- description: 'MAX msg latency',
61
- unit: 'ms',
62
- }),
63
- min: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_LATENCY_MIN, {
64
- valueType: ValueType.DOUBLE,
65
- description: 'MIN msg latency',
66
- unit: 'ms',
67
- }),
68
- p50: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_LATENCY_P50, {
69
- valueType: ValueType.DOUBLE,
70
- description: 'P50 msg latency',
71
- unit: 'ms',
72
- }),
73
- p90: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_LATENCY_P90, {
74
- valueType: ValueType.DOUBLE,
75
- description: 'P90 msg latency',
76
- unit: 'ms',
77
- }),
52
+ avg: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_LATENCY_AVG),
53
+ max: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_LATENCY_MAX),
54
+ min: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_LATENCY_MIN),
55
+ p50: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_LATENCY_P50),
56
+ p90: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_LATENCY_P90),
78
57
  };
79
58
 
80
59
  this.aggValidationMetrics = {
81
- avg: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_VALIDATION_DURATION_AVG, {
82
- valueType: ValueType.DOUBLE,
83
- description: 'AVG msg validation',
84
- unit: 'ms',
85
- }),
86
- max: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_VALIDATION_DURATION_MAX, {
87
- valueType: ValueType.DOUBLE,
88
- description: 'MAX msg validation',
89
- unit: 'ms',
90
- }),
91
- min: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_VALIDATION_DURATION_MIN, {
92
- valueType: ValueType.DOUBLE,
93
- description: 'MIN msg validation',
94
- unit: 'ms',
95
- }),
96
- p50: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_VALIDATION_DURATION_P50, {
97
- valueType: ValueType.DOUBLE,
98
- description: 'P50 msg validation',
99
- unit: 'ms',
100
- }),
101
- p90: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_VALIDATION_DURATION_P90, {
102
- valueType: ValueType.DOUBLE,
103
- description: 'P90 msg validation',
104
- unit: 'ms',
105
- }),
60
+ avg: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_VALIDATION_DURATION_AVG),
61
+ max: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_VALIDATION_DURATION_MAX),
62
+ min: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_VALIDATION_DURATION_MIN),
63
+ p50: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_VALIDATION_DURATION_P50),
64
+ p90: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_VALIDATION_DURATION_P90),
106
65
  };
107
66
 
108
67
  meter.addBatchObservableCallback(this.aggregate, [
@@ -156,11 +115,11 @@ export class P2PInstrumentation {
156
115
  continue;
157
116
  }
158
117
 
159
- res.observe(metrics.avg, histogram.mean, { [Attributes.TOPIC_NAME]: topicName });
160
- res.observe(metrics.max, histogram.max, { [Attributes.TOPIC_NAME]: topicName });
161
- res.observe(metrics.min, histogram.min, { [Attributes.TOPIC_NAME]: topicName });
162
- res.observe(metrics.p50, histogram.percentile(50), { [Attributes.TOPIC_NAME]: topicName });
163
- res.observe(metrics.p90, histogram.percentile(90), { [Attributes.TOPIC_NAME]: topicName });
118
+ res.observe(metrics.avg, Math.ceil(histogram.mean), { [Attributes.TOPIC_NAME]: topicName });
119
+ res.observe(metrics.max, Math.ceil(histogram.max), { [Attributes.TOPIC_NAME]: topicName });
120
+ res.observe(metrics.min, Math.ceil(histogram.min), { [Attributes.TOPIC_NAME]: topicName });
121
+ res.observe(metrics.p50, Math.ceil(histogram.percentile(50)), { [Attributes.TOPIC_NAME]: topicName });
122
+ res.observe(metrics.p90, Math.ceil(histogram.percentile(90)), { [Attributes.TOPIC_NAME]: topicName });
164
123
  }
165
124
  }
166
125
  };