@aztec/p2p 4.0.0-nightly.20250907 → 4.0.0-nightly.20260107

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 (334) hide show
  1. package/dest/bootstrap/bootstrap.d.ts +1 -1
  2. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  3. package/dest/bootstrap/bootstrap.js +14 -4
  4. package/dest/client/factory.d.ts +3 -2
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +9 -5
  7. package/dest/client/index.d.ts +1 -1
  8. package/dest/client/interface.d.ts +8 -6
  9. package/dest/client/interface.d.ts.map +1 -1
  10. package/dest/client/p2p_client.d.ts +12 -35
  11. package/dest/client/p2p_client.d.ts.map +1 -1
  12. package/dest/client/p2p_client.js +457 -61
  13. package/dest/config.d.ts +67 -61
  14. package/dest/config.d.ts.map +1 -1
  15. package/dest/config.js +28 -15
  16. package/dest/enr/generate-enr.d.ts +2 -2
  17. package/dest/enr/generate-enr.d.ts.map +1 -1
  18. package/dest/enr/generate-enr.js +1 -1
  19. package/dest/enr/index.d.ts +1 -1
  20. package/dest/errors/attestation-pool.error.d.ts +7 -0
  21. package/dest/errors/attestation-pool.error.d.ts.map +1 -0
  22. package/dest/errors/attestation-pool.error.js +12 -0
  23. package/dest/errors/reqresp.error.d.ts +1 -1
  24. package/dest/errors/reqresp.error.d.ts.map +1 -1
  25. package/dest/index.d.ts +1 -1
  26. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +43 -6
  27. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  28. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
  29. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  30. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +72 -46
  31. package/dest/mem_pools/attestation_pool/index.d.ts +1 -1
  32. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +15 -6
  33. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
  34. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +73 -18
  35. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +13 -6
  36. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
  37. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +69 -11
  38. package/dest/mem_pools/attestation_pool/mocks.d.ts +226 -5
  39. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  40. package/dest/mem_pools/attestation_pool/mocks.js +9 -7
  41. package/dest/mem_pools/index.d.ts +1 -1
  42. package/dest/mem_pools/instrumentation.d.ts +9 -1
  43. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  44. package/dest/mem_pools/instrumentation.js +38 -2
  45. package/dest/mem_pools/interface.d.ts +3 -4
  46. package/dest/mem_pools/interface.d.ts.map +1 -1
  47. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +39 -58
  48. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  49. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +314 -317
  50. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +18 -0
  51. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -0
  52. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +56 -0
  53. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +83 -0
  54. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -0
  55. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +5 -0
  56. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts +15 -0
  57. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts.map +1 -0
  58. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.js +88 -0
  59. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +17 -0
  60. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  61. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +84 -0
  62. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +19 -0
  63. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  64. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +76 -0
  65. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +26 -0
  66. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  67. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +84 -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 +28 -9
  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 +155 -25
  79. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +4 -2
  80. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  81. package/dest/msg_validators/attestation_validator/attestation_validator.js +32 -5
  82. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +20 -0
  83. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -0
  84. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +67 -0
  85. package/dest/msg_validators/attestation_validator/index.d.ts +2 -1
  86. package/dest/msg_validators/attestation_validator/index.d.ts.map +1 -1
  87. package/dest/msg_validators/attestation_validator/index.js +1 -0
  88. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +5 -2
  89. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +1 -1
  90. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +44 -12
  91. package/dest/msg_validators/block_proposal_validator/index.d.ts +1 -1
  92. package/dest/msg_validators/index.d.ts +1 -1
  93. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts +1 -1
  94. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts.map +1 -1
  95. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +1 -1
  96. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  97. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +1 -1
  98. package/dest/msg_validators/tx_validator/archive_cache.d.ts +2 -2
  99. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  100. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +2 -2
  101. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  102. package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
  103. package/dest/msg_validators/tx_validator/data_validator.d.ts +1 -1
  104. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  105. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +1 -1
  106. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  107. package/dest/msg_validators/tx_validator/double_spend_validator.js +1 -1
  108. package/dest/msg_validators/tx_validator/factory.d.ts +4 -3
  109. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  110. package/dest/msg_validators/tx_validator/factory.js +11 -5
  111. package/dest/msg_validators/tx_validator/gas_validator.d.ts +1 -1
  112. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  113. package/dest/msg_validators/tx_validator/index.d.ts +2 -1
  114. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  115. package/dest/msg_validators/tx_validator/index.js +1 -0
  116. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -6
  117. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  118. package/dest/msg_validators/tx_validator/metadata_validator.js +6 -24
  119. package/dest/msg_validators/tx_validator/phases_validator.d.ts +1 -1
  120. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  121. package/dest/msg_validators/tx_validator/phases_validator.js +3 -1
  122. package/dest/msg_validators/tx_validator/test_utils.d.ts +2 -2
  123. package/dest/msg_validators/tx_validator/test_utils.d.ts.map +1 -1
  124. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +13 -0
  125. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -0
  126. package/dest/msg_validators/tx_validator/timestamp_validator.js +32 -0
  127. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +1 -1
  128. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  129. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +1 -1
  130. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  131. package/dest/services/data_store.d.ts +1 -1
  132. package/dest/services/data_store.d.ts.map +1 -1
  133. package/dest/services/discv5/discV5_service.d.ts +3 -3
  134. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  135. package/dest/services/discv5/discV5_service.js +2 -2
  136. package/dest/services/dummy_service.d.ts +2 -2
  137. package/dest/services/dummy_service.d.ts.map +1 -1
  138. package/dest/services/encoding.d.ts +25 -4
  139. package/dest/services/encoding.d.ts.map +1 -1
  140. package/dest/services/encoding.js +74 -6
  141. package/dest/services/gossipsub/scoring.d.ts +1 -1
  142. package/dest/services/index.d.ts +1 -1
  143. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  144. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  145. package/dest/services/libp2p/instrumentation.js +9 -2
  146. package/dest/services/libp2p/libp2p_service.d.ts +32 -72
  147. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  148. package/dest/services/libp2p/libp2p_service.js +796 -171
  149. package/dest/services/peer-manager/interface.d.ts +1 -1
  150. package/dest/services/peer-manager/metrics.d.ts +8 -1
  151. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  152. package/dest/services/peer-manager/metrics.js +28 -0
  153. package/dest/services/peer-manager/peer_manager.d.ts +1 -32
  154. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  155. package/dest/services/peer-manager/peer_manager.js +412 -21
  156. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  157. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  158. package/dest/services/peer-manager/peer_scoring.js +40 -2
  159. package/dest/services/reqresp/config.d.ts +1 -1
  160. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +1 -1
  161. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  162. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +1 -4
  163. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  164. package/dest/services/reqresp/index.d.ts +1 -1
  165. package/dest/services/reqresp/interface.d.ts +2 -11
  166. package/dest/services/reqresp/interface.d.ts.map +1 -1
  167. package/dest/services/reqresp/interface.js +1 -18
  168. package/dest/services/reqresp/metrics.d.ts +1 -1
  169. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  170. package/dest/services/reqresp/protocols/auth.d.ts +2 -2
  171. package/dest/services/reqresp/protocols/auth.d.ts.map +1 -1
  172. package/dest/services/reqresp/protocols/auth.js +2 -2
  173. package/dest/services/reqresp/protocols/block.d.ts +1 -1
  174. package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
  175. package/dest/services/reqresp/protocols/block.js +3 -2
  176. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +1 -1
  177. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  178. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +1 -1
  179. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +4 -6
  180. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  181. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +1 -1
  182. package/dest/services/reqresp/protocols/block_txs/index.d.ts +1 -1
  183. package/dest/services/reqresp/protocols/goodbye.d.ts +1 -1
  184. package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
  185. package/dest/services/reqresp/protocols/index.d.ts +1 -1
  186. package/dest/services/reqresp/protocols/ping.d.ts +1 -1
  187. package/dest/services/reqresp/protocols/status.d.ts +6 -5
  188. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  189. package/dest/services/reqresp/protocols/status.js +4 -3
  190. package/dest/services/reqresp/protocols/tx.d.ts +2 -3
  191. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  192. package/dest/services/reqresp/rate-limiter/index.d.ts +1 -1
  193. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +2 -2
  194. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  195. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  196. package/dest/services/reqresp/reqresp.d.ts +1 -41
  197. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  198. package/dest/services/reqresp/reqresp.js +416 -34
  199. package/dest/services/reqresp/status.d.ts +2 -2
  200. package/dest/services/reqresp/status.d.ts.map +1 -1
  201. package/dest/services/service.d.ts +2 -2
  202. package/dest/services/service.d.ts.map +1 -1
  203. package/dest/services/tx_collection/config.d.ts +1 -1
  204. package/dest/services/tx_collection/config.js +1 -1
  205. package/dest/services/tx_collection/fast_tx_collection.d.ts +4 -9
  206. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  207. package/dest/services/tx_collection/fast_tx_collection.js +6 -1
  208. package/dest/services/tx_collection/index.d.ts +1 -1
  209. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  210. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  211. package/dest/services/tx_collection/slow_tx_collection.d.ts +6 -7
  212. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  213. package/dest/services/tx_collection/slow_tx_collection.js +2 -1
  214. package/dest/services/tx_collection/tx_collection.d.ts +12 -11
  215. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  216. package/dest/services/tx_collection/tx_collection.js +3 -2
  217. package/dest/services/tx_collection/tx_collection_sink.d.ts +3 -3
  218. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  219. package/dest/services/tx_collection/tx_collection_sink.js +34 -4
  220. package/dest/services/tx_collection/tx_source.d.ts +1 -1
  221. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  222. package/dest/services/tx_collection/tx_source.js +2 -2
  223. package/dest/services/tx_provider.d.ts +6 -4
  224. package/dest/services/tx_provider.d.ts.map +1 -1
  225. package/dest/services/tx_provider.js +19 -6
  226. package/dest/services/tx_provider_instrumentation.d.ts +5 -2
  227. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  228. package/dest/services/tx_provider_instrumentation.js +14 -1
  229. package/dest/test-helpers/generate-peer-id-private-keys.d.ts +1 -1
  230. package/dest/test-helpers/get-ports.d.ts +1 -1
  231. package/dest/test-helpers/get-ports.d.ts.map +1 -1
  232. package/dest/test-helpers/index.d.ts +1 -1
  233. package/dest/test-helpers/make-enrs.d.ts +1 -1
  234. package/dest/test-helpers/make-enrs.js +1 -1
  235. package/dest/test-helpers/make-test-p2p-clients.d.ts +2 -2
  236. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  237. package/dest/test-helpers/mock-pubsub.d.ts +4 -4
  238. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  239. package/dest/test-helpers/mock-tx-helpers.d.ts +12 -0
  240. package/dest/test-helpers/mock-tx-helpers.d.ts.map +1 -0
  241. package/dest/test-helpers/mock-tx-helpers.js +19 -0
  242. package/dest/test-helpers/reqresp-nodes.d.ts +3 -3
  243. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  244. package/dest/test-helpers/reqresp-nodes.js +4 -3
  245. package/dest/testbench/p2p_client_testbench_worker.d.ts +1 -1
  246. package/dest/testbench/p2p_client_testbench_worker.js +17 -9
  247. package/dest/testbench/parse_log_file.d.ts +1 -1
  248. package/dest/testbench/testbench.d.ts +1 -1
  249. package/dest/testbench/testbench.js +2 -2
  250. package/dest/testbench/worker_client_manager.d.ts +1 -1
  251. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  252. package/dest/types/index.d.ts +1 -1
  253. package/dest/util.d.ts +2 -1
  254. package/dest/util.d.ts.map +1 -1
  255. package/dest/util.js +11 -2
  256. package/dest/versioning.d.ts +2 -2
  257. package/dest/versioning.d.ts.map +1 -1
  258. package/dest/versioning.js +2 -2
  259. package/package.json +21 -21
  260. package/src/bootstrap/bootstrap.ts +15 -4
  261. package/src/client/factory.ts +21 -12
  262. package/src/client/interface.ts +8 -5
  263. package/src/client/p2p_client.ts +97 -88
  264. package/src/config.ts +42 -21
  265. package/src/enr/generate-enr.ts +1 -1
  266. package/src/errors/attestation-pool.error.ts +13 -0
  267. package/src/mem_pools/attestation_pool/attestation_pool.ts +46 -5
  268. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +89 -48
  269. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +107 -24
  270. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +98 -19
  271. package/src/mem_pools/attestation_pool/mocks.ts +11 -8
  272. package/src/mem_pools/instrumentation.ts +46 -0
  273. package/src/mem_pools/interface.ts +2 -4
  274. package/src/mem_pools/tx_pool/README.md +255 -0
  275. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +368 -360
  276. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +71 -0
  277. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +93 -0
  278. package/src/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.ts +108 -0
  279. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +104 -0
  280. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +91 -0
  281. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +106 -0
  282. package/src/mem_pools/tx_pool/index.ts +0 -1
  283. package/src/mem_pools/tx_pool/priority.ts +8 -1
  284. package/src/mem_pools/tx_pool/tx_pool.ts +28 -8
  285. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +131 -18
  286. package/src/msg_validators/attestation_validator/attestation_validator.ts +41 -6
  287. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +91 -0
  288. package/src/msg_validators/attestation_validator/index.ts +1 -0
  289. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +53 -12
  290. package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
  291. package/src/msg_validators/tx_validator/block_header_validator.ts +2 -2
  292. package/src/msg_validators/tx_validator/double_spend_validator.ts +1 -1
  293. package/src/msg_validators/tx_validator/factory.ts +13 -6
  294. package/src/msg_validators/tx_validator/index.ts +1 -0
  295. package/src/msg_validators/tx_validator/metadata_validator.ts +8 -42
  296. package/src/msg_validators/tx_validator/phases_validator.ts +3 -1
  297. package/src/msg_validators/tx_validator/test_utils.ts +1 -1
  298. package/src/msg_validators/tx_validator/timestamp_validator.ts +47 -0
  299. package/src/services/discv5/discV5_service.ts +2 -2
  300. package/src/services/dummy_service.ts +1 -1
  301. package/src/services/encoding.ts +81 -6
  302. package/src/services/libp2p/instrumentation.ts +10 -1
  303. package/src/services/libp2p/libp2p_service.ts +430 -165
  304. package/src/services/peer-manager/metrics.ts +32 -0
  305. package/src/services/peer-manager/peer_manager.ts +24 -14
  306. package/src/services/peer-manager/peer_scoring.ts +46 -3
  307. package/src/services/reqresp/interface.ts +1 -22
  308. package/src/services/reqresp/protocols/auth.ts +2 -2
  309. package/src/services/reqresp/protocols/block.ts +3 -2
  310. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +1 -1
  311. package/src/services/reqresp/protocols/status.ts +9 -8
  312. package/src/services/reqresp/protocols/tx.ts +1 -2
  313. package/src/services/reqresp/reqresp.ts +15 -11
  314. package/src/services/service.ts +1 -1
  315. package/src/services/tx_collection/config.ts +1 -1
  316. package/src/services/tx_collection/fast_tx_collection.ts +8 -5
  317. package/src/services/tx_collection/slow_tx_collection.ts +7 -6
  318. package/src/services/tx_collection/tx_collection.ts +12 -10
  319. package/src/services/tx_collection/tx_collection_sink.ts +34 -3
  320. package/src/services/tx_collection/tx_source.ts +2 -2
  321. package/src/services/tx_provider.ts +26 -9
  322. package/src/services/tx_provider_instrumentation.ts +19 -2
  323. package/src/test-helpers/make-enrs.ts +1 -1
  324. package/src/test-helpers/mock-pubsub.ts +1 -1
  325. package/src/test-helpers/mock-tx-helpers.ts +24 -0
  326. package/src/test-helpers/reqresp-nodes.ts +4 -3
  327. package/src/testbench/p2p_client_testbench_worker.ts +14 -6
  328. package/src/testbench/testbench.ts +2 -2
  329. package/src/util.ts +12 -2
  330. package/src/versioning.ts +3 -3
  331. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +0 -68
  332. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +0 -1
  333. package/dest/mem_pools/tx_pool/memory_tx_pool.js +0 -160
  334. package/src/mem_pools/tx_pool/memory_tx_pool.ts +0 -199
@@ -1,9 +1,11 @@
1
1
  import { createLogger } from '@aztec/foundation/log';
2
2
  import { getTelemetryClient } from '@aztec/telemetry-client';
3
3
  import { PoolInstrumentation, PoolName } from '../instrumentation.js';
4
+ import { ATTESTATION_CAP_BUFFER, MAX_PROPOSALS_PER_SLOT } from './kv_attestation_pool.js';
4
5
  export class InMemoryAttestationPool {
5
6
  log;
6
7
  metrics;
8
+ // eslint-disable-next-line aztec-custom/no-non-primitive-in-collections
7
9
  attestations;
8
10
  proposals;
9
11
  constructor(telemetry = getTelemetryClient(), log = createLogger('p2p:attestation_pool')){
@@ -39,14 +41,23 @@ export class InMemoryAttestationPool {
39
41
  // Perf: order and group by slot before insertion
40
42
  const slotNumber = attestation.payload.header.slotNumber;
41
43
  const proposalId = attestation.archive.toString();
42
- const address = attestation.getSender();
43
- const slotAttestationMap = getSlotOrDefault(this.attestations, slotNumber.toBigInt());
44
+ const sender = attestation.getSender();
45
+ // Skip attestations with invalid signatures
46
+ if (!sender) {
47
+ this.log.warn(`Skipping attestation with invalid signature for slot ${slotNumber}`, {
48
+ signature: attestation.signature.toString(),
49
+ slotNumber,
50
+ proposalId
51
+ });
52
+ continue;
53
+ }
54
+ const slotAttestationMap = getSlotOrDefault(this.attestations, slotNumber);
44
55
  const proposalAttestationMap = getProposalOrDefault(slotAttestationMap, proposalId);
45
- proposalAttestationMap.set(address.toString(), attestation);
46
- this.log.verbose(`Added attestation for slot ${slotNumber.toBigInt()} from ${address}`, {
56
+ proposalAttestationMap.set(sender.toString(), attestation);
57
+ this.log.verbose(`Added attestation for slot ${slotNumber} from ${sender}`, {
47
58
  signature: attestation.signature.toString(),
48
59
  slotNumber,
49
- address,
60
+ address: sender,
50
61
  proposalId
51
62
  });
52
63
  }
@@ -108,23 +119,46 @@ export class InMemoryAttestationPool {
108
119
  deleteAttestations(attestations) {
109
120
  for (const attestation of attestations){
110
121
  const slotNumber = attestation.payload.header.slotNumber;
111
- const slotAttestationMap = this.attestations.get(slotNumber.toBigInt());
122
+ const slotAttestationMap = this.attestations.get(slotNumber);
112
123
  if (slotAttestationMap) {
113
124
  const proposalId = attestation.archive.toString();
114
125
  const proposalAttestationMap = getProposalOrDefault(slotAttestationMap, proposalId);
115
126
  if (proposalAttestationMap) {
116
- const address = attestation.getSender();
117
- proposalAttestationMap.delete(address.toString());
118
- this.log.debug(`Deleted attestation for slot ${slotNumber} from ${address}`);
127
+ const sender = attestation.getSender();
128
+ // Skip attestations with invalid signatures
129
+ if (!sender) {
130
+ this.log.warn(`Skipping deletion of attestation with invalid signature for slot ${slotNumber}`);
131
+ continue;
132
+ }
133
+ proposalAttestationMap.delete(sender.toString());
134
+ this.log.debug(`Deleted attestation for slot ${slotNumber} from ${sender}`);
119
135
  }
120
136
  }
121
137
  }
122
138
  return Promise.resolve();
123
139
  }
140
+ hasAttestation(attestation) {
141
+ const slotNumber = attestation.payload.header.slotNumber;
142
+ const proposalId = attestation.archive.toString();
143
+ const sender = attestation.getSender();
144
+ // Attestations with invalid signatures are never in the pool
145
+ if (!sender) {
146
+ return Promise.resolve(false);
147
+ }
148
+ const slotAttestationMap = this.attestations.get(slotNumber);
149
+ if (!slotAttestationMap) {
150
+ return Promise.resolve(false);
151
+ }
152
+ const proposalAttestationMap = slotAttestationMap.get(proposalId);
153
+ if (!proposalAttestationMap) {
154
+ return Promise.resolve(false);
155
+ }
156
+ return Promise.resolve(proposalAttestationMap.has(sender.toString()));
157
+ }
124
158
  addBlockProposal(blockProposal) {
125
159
  // We initialize slot-proposal mapping if it does not exist
126
160
  // This is important to ensure we can delete this proposal if there were not attestations for it
127
- const slotProposalMapping = getSlotOrDefault(this.attestations, blockProposal.slotNumber.toBigInt());
161
+ const slotProposalMapping = getSlotOrDefault(this.attestations, blockProposal.slotNumber);
128
162
  slotProposalMapping.set(blockProposal.payload.archive.toString(), new Map());
129
163
  this.proposals.set(blockProposal.payload.archive.toString(), blockProposal);
130
164
  return Promise.resolve();
@@ -132,6 +166,29 @@ export class InMemoryAttestationPool {
132
166
  getBlockProposal(id) {
133
167
  return Promise.resolve(this.proposals.get(id));
134
168
  }
169
+ hasBlockProposal(idOrProposal) {
170
+ const id = typeof idOrProposal === 'string' ? idOrProposal : idOrProposal.payload.archive.toString();
171
+ return Promise.resolve(this.proposals.has(id));
172
+ }
173
+ hasReachedProposalCap(slot) {
174
+ const slotAttestationMap = this.attestations.get(slot);
175
+ const proposalCount = slotAttestationMap?.size ?? 0;
176
+ return Promise.resolve(proposalCount >= MAX_PROPOSALS_PER_SLOT);
177
+ }
178
+ hasReachedAttestationCap(slot, proposalId, committeeSize) {
179
+ const limit = committeeSize + ATTESTATION_CAP_BUFFER;
180
+ const count = this.attestations.get(slot)?.get(proposalId)?.size ?? 0;
181
+ return Promise.resolve(limit <= 0 || count >= limit);
182
+ }
183
+ async canAddProposal(block) {
184
+ return this.proposals.has(block.archive.toString()) || !await this.hasReachedProposalCap(block.slotNumber);
185
+ }
186
+ async canAddAttestation(attestation, committeeSize) {
187
+ const sender = attestation.getSender();
188
+ const slot = attestation.payload.header.slotNumber;
189
+ const pid = attestation.archive.toString();
190
+ return !!sender && ((this.attestations.get(slot)?.get(pid)?.has(sender.toString()) ?? false) || !await this.hasReachedAttestationCap(slot, pid, committeeSize));
191
+ }
135
192
  }
136
193
  /**
137
194
  * Get Slot or Default
@@ -140,7 +197,8 @@ export class InMemoryAttestationPool {
140
197
  * @param map - The map to fetch from
141
198
  * @param slot - The slot to fetch
142
199
  * @returns The slot mapping
143
- */ function getSlotOrDefault(map, slot) {
200
+ */ function getSlotOrDefault(// eslint-disable-next-line aztec-custom/no-non-primitive-in-collections
201
+ map, slot) {
144
202
  if (!map.has(slot)) {
145
203
  map.set(slot, new Map());
146
204
  }
@@ -1,13 +1,234 @@
1
- import type { Secp256k1Signer } from '@aztec/foundation/crypto';
2
- import { Fr } from '@aztec/foundation/fields';
1
+ import type { Secp256k1Signer } from '@aztec/foundation/crypto/secp256k1-signer';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import { BlockAttestation } from '@aztec/stdlib/p2p';
4
- import { type LocalAccount } from 'viem/accounts';
5
4
  /** Generate Account
6
5
  *
7
6
  * Create a random signer
8
7
  * @returns A random viem signer
9
8
  */
10
- export declare const generateAccount: () => LocalAccount;
9
+ export declare const generateAccount: () => {
10
+ address: `0x${string}`;
11
+ nonceManager?: import("viem/accounts").NonceManager | undefined;
12
+ sign?: ((parameters: {
13
+ hash: `0x${string}`;
14
+ }) => Promise<`0x${string}`>) | undefined;
15
+ signAuthorization?: ((parameters: import("viem").AuthorizationRequest) => Promise<import("viem/accounts").SignAuthorizationReturnType>) | undefined;
16
+ signMessage: ({ message }: {
17
+ message: import("viem").SignableMessage;
18
+ }) => Promise<`0x${string}`>;
19
+ signTransaction: <serializer extends import("viem").SerializeTransactionFn<import("viem").TransactionSerializable> = import("viem").SerializeTransactionFn<import("viem").TransactionSerializable>, transaction extends Parameters<serializer>[0] = Parameters<serializer>[0]>(transaction: transaction, options?: {
20
+ serializer?: serializer | undefined;
21
+ } | undefined) => Promise<`0x${string}`>;
22
+ signTypedData: <const typedData extends Record<string, unknown> | {
23
+ [x: string]: readonly import("viem").TypedDataParameter[];
24
+ [x: `address[${string}]`]: undefined;
25
+ [x: `bool[${string}]`]: undefined;
26
+ [x: `bytes10[${string}]`]: undefined;
27
+ [x: `bytes11[${string}]`]: undefined;
28
+ [x: `bytes12[${string}]`]: undefined;
29
+ [x: `bytes13[${string}]`]: undefined;
30
+ [x: `bytes14[${string}]`]: undefined;
31
+ [x: `bytes15[${string}]`]: undefined;
32
+ [x: `bytes16[${string}]`]: undefined;
33
+ [x: `bytes17[${string}]`]: undefined;
34
+ [x: `bytes18[${string}]`]: undefined;
35
+ [x: `bytes19[${string}]`]: undefined;
36
+ [x: `bytes1[${string}]`]: undefined;
37
+ [x: `bytes20[${string}]`]: undefined;
38
+ [x: `bytes21[${string}]`]: undefined;
39
+ [x: `bytes22[${string}]`]: undefined;
40
+ [x: `bytes23[${string}]`]: undefined;
41
+ [x: `bytes24[${string}]`]: undefined;
42
+ [x: `bytes25[${string}]`]: undefined;
43
+ [x: `bytes26[${string}]`]: undefined;
44
+ [x: `bytes27[${string}]`]: undefined;
45
+ [x: `bytes28[${string}]`]: undefined;
46
+ [x: `bytes29[${string}]`]: undefined;
47
+ [x: `bytes2[${string}]`]: undefined;
48
+ [x: `bytes30[${string}]`]: undefined;
49
+ [x: `bytes31[${string}]`]: undefined;
50
+ [x: `bytes32[${string}]`]: undefined;
51
+ [x: `bytes3[${string}]`]: undefined;
52
+ [x: `bytes4[${string}]`]: undefined;
53
+ [x: `bytes5[${string}]`]: undefined;
54
+ [x: `bytes6[${string}]`]: undefined;
55
+ [x: `bytes7[${string}]`]: undefined;
56
+ [x: `bytes8[${string}]`]: undefined;
57
+ [x: `bytes9[${string}]`]: undefined;
58
+ [x: `bytes[${string}]`]: undefined;
59
+ [x: `function[${string}]`]: undefined;
60
+ [x: `int104[${string}]`]: undefined;
61
+ [x: `int112[${string}]`]: undefined;
62
+ [x: `int120[${string}]`]: undefined;
63
+ [x: `int128[${string}]`]: undefined;
64
+ [x: `int136[${string}]`]: undefined;
65
+ [x: `int144[${string}]`]: undefined;
66
+ [x: `int152[${string}]`]: undefined;
67
+ [x: `int160[${string}]`]: undefined;
68
+ [x: `int168[${string}]`]: undefined;
69
+ [x: `int16[${string}]`]: undefined;
70
+ [x: `int176[${string}]`]: undefined;
71
+ [x: `int184[${string}]`]: undefined;
72
+ [x: `int192[${string}]`]: undefined;
73
+ [x: `int200[${string}]`]: undefined;
74
+ [x: `int208[${string}]`]: undefined;
75
+ [x: `int216[${string}]`]: undefined;
76
+ [x: `int224[${string}]`]: undefined;
77
+ [x: `int232[${string}]`]: undefined;
78
+ [x: `int240[${string}]`]: undefined;
79
+ [x: `int248[${string}]`]: undefined;
80
+ [x: `int24[${string}]`]: undefined;
81
+ [x: `int256[${string}]`]: undefined;
82
+ [x: `int32[${string}]`]: undefined;
83
+ [x: `int40[${string}]`]: undefined;
84
+ [x: `int48[${string}]`]: undefined;
85
+ [x: `int56[${string}]`]: undefined;
86
+ [x: `int64[${string}]`]: undefined;
87
+ [x: `int72[${string}]`]: undefined;
88
+ [x: `int80[${string}]`]: undefined;
89
+ [x: `int88[${string}]`]: undefined;
90
+ [x: `int8[${string}]`]: undefined;
91
+ [x: `int96[${string}]`]: undefined;
92
+ [x: `int[${string}]`]: undefined;
93
+ [x: `string[${string}]`]: undefined;
94
+ [x: `uint104[${string}]`]: undefined;
95
+ [x: `uint112[${string}]`]: undefined;
96
+ [x: `uint120[${string}]`]: undefined;
97
+ [x: `uint128[${string}]`]: undefined;
98
+ [x: `uint136[${string}]`]: undefined;
99
+ [x: `uint144[${string}]`]: undefined;
100
+ [x: `uint152[${string}]`]: undefined;
101
+ [x: `uint160[${string}]`]: undefined;
102
+ [x: `uint168[${string}]`]: undefined;
103
+ [x: `uint16[${string}]`]: undefined;
104
+ [x: `uint176[${string}]`]: undefined;
105
+ [x: `uint184[${string}]`]: undefined;
106
+ [x: `uint192[${string}]`]: undefined;
107
+ [x: `uint200[${string}]`]: undefined;
108
+ [x: `uint208[${string}]`]: undefined;
109
+ [x: `uint216[${string}]`]: undefined;
110
+ [x: `uint224[${string}]`]: undefined;
111
+ [x: `uint232[${string}]`]: undefined;
112
+ [x: `uint240[${string}]`]: undefined;
113
+ [x: `uint248[${string}]`]: undefined;
114
+ [x: `uint24[${string}]`]: undefined;
115
+ [x: `uint256[${string}]`]: undefined;
116
+ [x: `uint32[${string}]`]: undefined;
117
+ [x: `uint40[${string}]`]: undefined;
118
+ [x: `uint48[${string}]`]: undefined;
119
+ [x: `uint56[${string}]`]: undefined;
120
+ [x: `uint64[${string}]`]: undefined;
121
+ [x: `uint72[${string}]`]: undefined;
122
+ [x: `uint80[${string}]`]: undefined;
123
+ [x: `uint88[${string}]`]: undefined;
124
+ [x: `uint8[${string}]`]: undefined;
125
+ [x: `uint96[${string}]`]: undefined;
126
+ [x: `uint[${string}]`]: undefined;
127
+ address?: undefined;
128
+ bool?: undefined;
129
+ bytes?: undefined;
130
+ bytes1?: undefined;
131
+ bytes10?: undefined;
132
+ bytes11?: undefined;
133
+ bytes12?: undefined;
134
+ bytes13?: undefined;
135
+ bytes14?: undefined;
136
+ bytes15?: undefined;
137
+ bytes16?: undefined;
138
+ bytes17?: undefined;
139
+ bytes18?: undefined;
140
+ bytes19?: undefined;
141
+ bytes2?: undefined;
142
+ bytes20?: undefined;
143
+ bytes21?: undefined;
144
+ bytes22?: undefined;
145
+ bytes23?: undefined;
146
+ bytes24?: undefined;
147
+ bytes25?: undefined;
148
+ bytes26?: undefined;
149
+ bytes27?: undefined;
150
+ bytes28?: undefined;
151
+ bytes29?: undefined;
152
+ bytes3?: undefined;
153
+ bytes30?: undefined;
154
+ bytes31?: undefined;
155
+ bytes32?: undefined;
156
+ bytes4?: undefined;
157
+ bytes5?: undefined;
158
+ bytes6?: undefined;
159
+ bytes7?: undefined;
160
+ bytes8?: undefined;
161
+ bytes9?: undefined;
162
+ int104?: undefined;
163
+ int112?: undefined;
164
+ int120?: undefined;
165
+ int128?: undefined;
166
+ int136?: undefined;
167
+ int144?: undefined;
168
+ int152?: undefined;
169
+ int16?: undefined;
170
+ int160?: undefined;
171
+ int168?: undefined;
172
+ int176?: undefined;
173
+ int184?: undefined;
174
+ int192?: undefined;
175
+ int200?: undefined;
176
+ int208?: undefined;
177
+ int216?: undefined;
178
+ int224?: undefined;
179
+ int232?: undefined;
180
+ int24?: undefined;
181
+ int240?: undefined;
182
+ int248?: undefined;
183
+ int256?: undefined;
184
+ int32?: undefined;
185
+ int40?: undefined;
186
+ int48?: undefined;
187
+ int56?: undefined;
188
+ int64?: undefined;
189
+ int72?: undefined;
190
+ int8?: undefined;
191
+ int80?: undefined;
192
+ int88?: undefined;
193
+ int96?: undefined;
194
+ string?: undefined;
195
+ uint104?: undefined;
196
+ uint112?: undefined;
197
+ uint120?: undefined;
198
+ uint128?: undefined;
199
+ uint136?: undefined;
200
+ uint144?: undefined;
201
+ uint152?: undefined;
202
+ uint16?: undefined;
203
+ uint160?: undefined;
204
+ uint168?: undefined;
205
+ uint176?: undefined;
206
+ uint184?: undefined;
207
+ uint192?: undefined;
208
+ uint200?: undefined;
209
+ uint208?: undefined;
210
+ uint216?: undefined;
211
+ uint224?: undefined;
212
+ uint232?: undefined;
213
+ uint24?: undefined;
214
+ uint240?: undefined;
215
+ uint248?: undefined;
216
+ uint256?: undefined;
217
+ uint32?: undefined;
218
+ uint40?: undefined;
219
+ uint48?: undefined;
220
+ uint56?: undefined;
221
+ uint64?: undefined;
222
+ uint72?: undefined;
223
+ uint8?: undefined;
224
+ uint80?: undefined;
225
+ uint88?: undefined;
226
+ uint96?: undefined;
227
+ }, primaryType extends "EIP712Domain" | keyof typedData = keyof typedData>(parameters: import("viem").TypedDataDefinition<typedData, primaryType>) => Promise<`0x${string}`>;
228
+ publicKey: `0x${string}`;
229
+ source: string;
230
+ type: "local";
231
+ };
11
232
  /** Mock Attestation
12
233
  *
13
234
  * @param signer A viem signer to create a signature
@@ -15,4 +236,4 @@ export declare const generateAccount: () => LocalAccount;
15
236
  * @returns A Block Attestation
16
237
  */
17
238
  export declare const mockAttestation: (signer: Secp256k1Signer, slot?: number, archive?: Fr) => BlockAttestation;
18
- //# sourceMappingURL=mocks.d.ts.map
239
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja3MuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZW1fcG9vbHMvYXR0ZXN0YXRpb25fcG9vbC9tb2Nrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUNMLGdCQUFnQixFQUlqQixNQUFNLG1CQUFtQixDQUFDO0FBSzNCOzs7O0dBSUc7QUFDSCxlQUFPLE1BQU0sZUFBZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBRzNCLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILGVBQU8sTUFBTSxlQUFlLDRFQWdCM0IsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/mocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EACL,gBAAgB,EAIjB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,KAAK,YAAY,EAA2C,MAAM,eAAe,CAAC;AAE3F;;;;GAIG;AACH,eAAO,MAAM,eAAe,QAAO,YAGlC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAC1B,QAAQ,eAAe,EACvB,OAAM,MAAU,EAChB,UAAS,EAAgB,KACxB,gBASF,CAAC"}
1
+ {"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/mocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EACL,gBAAgB,EAIjB,MAAM,mBAAmB,CAAC;AAK3B;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAG3B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,4EAgB3B,CAAC"}
@@ -1,6 +1,6 @@
1
- import { Fr } from '@aztec/foundation/fields';
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import { BlockAttestation, ConsensusPayload, SignatureDomainSeparator, getHashedSignaturePayloadEthSignedMessage } from '@aztec/stdlib/p2p';
3
- import { makeHeader } from '@aztec/stdlib/testing';
3
+ import { makeL2BlockHeader } from '@aztec/stdlib/testing';
4
4
  import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';
5
5
  /** Generate Account
6
6
  *
@@ -17,9 +17,11 @@ import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';
17
17
  * @returns A Block Attestation
18
18
  */ export const mockAttestation = (signer, slot = 0, archive = Fr.random())=>{
19
19
  // Use arbitrary numbers for all other than slot
20
- const header = makeHeader(1, 2, slot);
21
- const payload = new ConsensusPayload(header.toPropose(), archive, header.state);
22
- const hash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.blockAttestation);
23
- const signature = signer.sign(hash);
24
- return new BlockAttestation(header.globalVariables.blockNumber, payload, signature);
20
+ const header = makeL2BlockHeader(1, 2, slot);
21
+ const payload = new ConsensusPayload(header.toCheckpointHeader(), archive);
22
+ const attestationHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.blockAttestation);
23
+ const attestationSignature = signer.sign(attestationHash);
24
+ const proposalHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.blockProposal);
25
+ const proposerSignature = signer.sign(proposalHash);
26
+ return new BlockAttestation(payload, attestationSignature, proposerSignature);
25
27
  };
@@ -1,4 +1,4 @@
1
1
  export { type AttestationPool } from './attestation_pool/attestation_pool.js';
2
2
  export { type MemPools } from './interface.js';
3
3
  export { type TxPool } from './tx_pool/tx_pool.js';
4
- //# sourceMappingURL=index.d.ts.map
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZW1fcG9vbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUMifQ==
@@ -1,4 +1,5 @@
1
1
  import type { Gossipable } from '@aztec/stdlib/p2p';
2
+ import type { Tx } from '@aztec/stdlib/tx';
2
3
  import { type LmdbStatsCallback, type TelemetryClient } from '@aztec/telemetry-client';
3
4
  export declare enum PoolName {
4
5
  TX_POOL = "TxPool",
@@ -14,13 +15,20 @@ export declare class PoolInstrumentation<PoolObject extends Gossipable> {
14
15
  private poolStats;
15
16
  /** The number of txs in the mempool */
16
17
  private objectsInMempool;
18
+ private addObjectCounter;
17
19
  /** Tracks tx size */
18
20
  private objectSize;
21
+ /** Track delay between transaction added and evicted */
22
+ private minedDelay;
19
23
  private dbMetrics;
20
24
  private defaultAttributes;
21
25
  private meter;
26
+ private txAddedTimestamp;
22
27
  constructor(telemetry: TelemetryClient, name: PoolName, poolStats: PoolStatsCallback, dbStats?: LmdbStatsCallback);
23
28
  recordSize(poolObject: PoolObject): void;
29
+ incrementAddedObjects(count: number): void;
30
+ transactionsAdded(transactions: Tx[]): void;
31
+ transactionsRemoved(hashes: Iterable<bigint> | Iterable<string>): void;
24
32
  private observeStats;
25
33
  }
26
- //# sourceMappingURL=instrumentation.d.ts.map
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWVtX3Bvb2xzL2luc3RydW1lbnRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzQyxPQUFPLEVBS0wsS0FBSyxpQkFBaUIsRUFLdEIsS0FBSyxlQUFlLEVBRXJCLE1BQU0seUJBQXlCLENBQUM7QUFFakMsb0JBQVksUUFBUTtJQUNsQixPQUFPLFdBQVc7SUFDbEIsZ0JBQWdCLG9CQUFvQjtDQUNyQztBQWtDRCxNQUFNLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxPQUFPLENBQUM7SUFDNUMsU0FBUyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0NBQzVDLENBQUMsQ0FBQztBQUVIOztHQUVHO0FBQ0gscUJBQWEsbUJBQW1CLENBQUMsVUFBVSxTQUFTLFVBQVU7SUFtQjFELE9BQU8sQ0FBQyxTQUFTO0lBbEJuQix1Q0FBdUM7SUFDdkMsT0FBTyxDQUFDLGdCQUFnQixDQUFrQjtJQUMxQyxPQUFPLENBQUMsZ0JBQWdCLENBQWdCO0lBQ3hDLHFCQUFxQjtJQUNyQixPQUFPLENBQUMsVUFBVSxDQUFZO0lBQzlCLHdEQUF3RDtJQUN4RCxPQUFPLENBQUMsVUFBVSxDQUFZO0lBRTlCLE9BQU8sQ0FBQyxTQUFTLENBQWM7SUFFL0IsT0FBTyxDQUFDLGlCQUFpQixDQUFDO0lBQzFCLE9BQU8sQ0FBQyxLQUFLLENBQVE7SUFFckIsT0FBTyxDQUFDLGdCQUFnQixDQUFrRDtJQUUxRSxZQUNFLFNBQVMsRUFBRSxlQUFlLEVBQzFCLElBQUksRUFBRSxRQUFRLEVBQ04sU0FBUyxFQUFFLGlCQUFpQixFQUNwQyxPQUFPLENBQUMsRUFBRSxpQkFBaUIsRUFpQzVCO0lBRU0sVUFBVSxDQUFDLFVBQVUsRUFBRSxVQUFVLFFBRXZDO0lBRU0scUJBQXFCLENBQUMsS0FBSyxFQUFFLE1BQU0sUUFFekM7SUFFTSxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsRUFBRSxFQUFFLFFBSzFDO0lBRU0sbUJBQW1CLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBWXJFO0lBRUQsT0FBTyxDQUFDLFlBQVksQ0FZbEI7Q0FDSCJ9
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/mem_pools/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAKL,KAAK,iBAAiB,EAKtB,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;AAEjC,oBAAY,QAAQ;IAClB,OAAO,WAAW;IAClB,gBAAgB,oBAAoB;CACrC;AA4BD,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC;IAC5C,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C,CAAC,CAAC;AAEH;;GAEG;AACH,qBAAa,mBAAmB,CAAC,UAAU,SAAS,UAAU;IAc1D,OAAO,CAAC,SAAS;IAbnB,uCAAuC;IACvC,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,qBAAqB;IACrB,OAAO,CAAC,UAAU,CAAY;IAE9B,OAAO,CAAC,SAAS,CAAc;IAE/B,OAAO,CAAC,iBAAiB,CAAC;IAC1B,OAAO,CAAC,KAAK,CAAQ;gBAGnB,SAAS,EAAE,eAAe,EAC1B,IAAI,EAAE,QAAQ,EACN,SAAS,EAAE,iBAAiB,EACpC,OAAO,CAAC,EAAE,iBAAiB;IA2BtB,UAAU,CAAC,UAAU,EAAE,UAAU;IAIxC,OAAO,CAAC,YAAY,CAYlB;CACH"}
1
+ {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/mem_pools/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAKL,KAAK,iBAAiB,EAKtB,KAAK,eAAe,EAErB,MAAM,yBAAyB,CAAC;AAEjC,oBAAY,QAAQ;IAClB,OAAO,WAAW;IAClB,gBAAgB,oBAAoB;CACrC;AAkCD,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC;IAC5C,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C,CAAC,CAAC;AAEH;;GAEG;AACH,qBAAa,mBAAmB,CAAC,UAAU,SAAS,UAAU;IAmB1D,OAAO,CAAC,SAAS;IAlBnB,uCAAuC;IACvC,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,gBAAgB,CAAgB;IACxC,qBAAqB;IACrB,OAAO,CAAC,UAAU,CAAY;IAC9B,wDAAwD;IACxD,OAAO,CAAC,UAAU,CAAY;IAE9B,OAAO,CAAC,SAAS,CAAc;IAE/B,OAAO,CAAC,iBAAiB,CAAC;IAC1B,OAAO,CAAC,KAAK,CAAQ;IAErB,OAAO,CAAC,gBAAgB,CAAkD;IAE1E,YACE,SAAS,EAAE,eAAe,EAC1B,IAAI,EAAE,QAAQ,EACN,SAAS,EAAE,iBAAiB,EACpC,OAAO,CAAC,EAAE,iBAAiB,EAiC5B;IAEM,UAAU,CAAC,UAAU,EAAE,UAAU,QAEvC;IAEM,qBAAqB,CAAC,KAAK,EAAE,MAAM,QAEzC;IAEM,iBAAiB,CAAC,YAAY,EAAE,EAAE,EAAE,QAK1C;IAEM,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,QAYrE;IAED,OAAO,CAAC,YAAY,CAYlB;CACH"}
@@ -12,12 +12,16 @@ export var PoolName = /*#__PURE__*/ function(PoolName) {
12
12
  if (name === "TxPool") {
13
13
  return {
14
14
  objectInMempool: Metrics.MEMPOOL_TX_COUNT,
15
- objectSize: Metrics.MEMPOOL_TX_SIZE
15
+ objectSize: Metrics.MEMPOOL_TX_SIZE,
16
+ itemsAdded: Metrics.MEMPOOL_TX_ADDED_COUNT,
17
+ itemMinedDelay: Metrics.MEMPOOL_TX_MINED_DELAY
16
18
  };
17
19
  } else if (name === "AttestationPool") {
18
20
  return {
19
21
  objectInMempool: Metrics.MEMPOOL_ATTESTATIONS_COUNT,
20
- objectSize: Metrics.MEMPOOL_ATTESTATIONS_SIZE
22
+ objectSize: Metrics.MEMPOOL_ATTESTATIONS_SIZE,
23
+ itemsAdded: Metrics.MEMPOOL_ATTESTATIONS_ADDED_COUNT,
24
+ itemMinedDelay: Metrics.MEMPOOL_ATTESTATIONS_MINED_DELAY
21
25
  };
22
26
  }
23
27
  throw new Error('Invalid pool type');
@@ -27,12 +31,16 @@ export var PoolName = /*#__PURE__*/ function(PoolName) {
27
31
  */ export class PoolInstrumentation {
28
32
  poolStats;
29
33
  /** The number of txs in the mempool */ objectsInMempool;
34
+ addObjectCounter;
30
35
  /** Tracks tx size */ objectSize;
36
+ /** Track delay between transaction added and evicted */ minedDelay;
31
37
  dbMetrics;
32
38
  defaultAttributes;
33
39
  meter;
40
+ txAddedTimestamp;
34
41
  constructor(telemetry, name, poolStats, dbStats){
35
42
  this.poolStats = poolStats;
43
+ this.txAddedTimestamp = new Map();
36
44
  this.observeStats = async (observer)=>{
37
45
  const { itemCount } = await this.poolStats();
38
46
  if (typeof itemCount === 'number') {
@@ -61,6 +69,12 @@ export var PoolName = /*#__PURE__*/ function(PoolName) {
61
69
  this.dbMetrics = new LmdbMetrics(this.meter, {
62
70
  [Attributes.DB_DATA_TYPE]: 'tx-pool'
63
71
  }, dbStats);
72
+ this.addObjectCounter = this.meter.createUpDownCounter(metricsLabels.itemsAdded, {
73
+ description: 'The number of transactions added to the mempool'
74
+ });
75
+ this.minedDelay = this.meter.createHistogram(metricsLabels.itemMinedDelay, {
76
+ description: 'Delay between transaction added and evicted from the mempool'
77
+ });
64
78
  this.meter.addBatchObservableCallback(this.observeStats, [
65
79
  this.objectsInMempool
66
80
  ]);
@@ -68,5 +82,27 @@ export var PoolName = /*#__PURE__*/ function(PoolName) {
68
82
  recordSize(poolObject) {
69
83
  this.objectSize.record(poolObject.getSize());
70
84
  }
85
+ incrementAddedObjects(count) {
86
+ this.addObjectCounter.add(count);
87
+ }
88
+ transactionsAdded(transactions) {
89
+ const timestamp = Date.now();
90
+ for (const transaction of transactions){
91
+ this.txAddedTimestamp.set(transaction.txHash.toBigInt(), timestamp);
92
+ }
93
+ }
94
+ transactionsRemoved(hashes) {
95
+ const timestamp = Date.now();
96
+ for (const hash of hashes){
97
+ const key = BigInt(hash);
98
+ const addedAt = this.txAddedTimestamp.get(key);
99
+ if (addedAt !== undefined) {
100
+ this.txAddedTimestamp.delete(key);
101
+ if (addedAt < timestamp) {
102
+ this.minedDelay.record(timestamp - addedAt);
103
+ }
104
+ }
105
+ }
106
+ }
71
107
  observeStats;
72
108
  }
@@ -1,11 +1,10 @@
1
- import type { P2PClientType } from '@aztec/stdlib/p2p';
2
1
  import type { AttestationPool } from './attestation_pool/attestation_pool.js';
3
2
  import type { TxPool } from './tx_pool/tx_pool.js';
4
3
  /**
5
4
  * A interface the combines all mempools
6
5
  */
7
- export type MemPools<T extends P2PClientType = P2PClientType.Full> = {
6
+ export type MemPools = {
8
7
  txPool: TxPool;
9
- attestationPool?: T extends P2PClientType.Full ? AttestationPool : undefined;
8
+ attestationPool: AttestationPool;
10
9
  };
11
- //# sourceMappingURL=interface.d.ts.map
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWVtX3Bvb2xzL2ludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRDs7R0FFRztBQUNILE1BQU0sTUFBTSxRQUFRLEdBQUc7SUFDckIsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLGVBQWUsRUFBRSxlQUFlLENBQUM7Q0FDbEMsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/mem_pools/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,CAAC,IAAI,IAAI;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,CAAC,SAAS,aAAa,CAAC,IAAI,GAAG,eAAe,GAAG,SAAS,CAAC;CAC9E,CAAC"}
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/mem_pools/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,eAAe,CAAC;CAClC,CAAC"}