@aztec/p2p 0.0.1-commit.86469d5 → 0.0.1-commit.8655d4a

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 (549) hide show
  1. package/README.md +129 -3
  2. package/dest/bootstrap/bootstrap.d.ts +1 -1
  3. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  4. package/dest/bootstrap/bootstrap.js +9 -1
  5. package/dest/client/factory.d.ts +13 -12
  6. package/dest/client/factory.d.ts.map +1 -1
  7. package/dest/client/factory.js +61 -17
  8. package/dest/client/interface.d.ts +58 -36
  9. package/dest/client/interface.d.ts.map +1 -1
  10. package/dest/client/p2p_client.d.ts +52 -58
  11. package/dest/client/p2p_client.d.ts.map +1 -1
  12. package/dest/client/p2p_client.js +228 -235
  13. package/dest/config.d.ts +162 -89
  14. package/dest/config.d.ts.map +1 -1
  15. package/dest/config.js +153 -42
  16. package/dest/errors/p2p-service.error.d.ts +9 -0
  17. package/dest/errors/p2p-service.error.d.ts.map +1 -0
  18. package/dest/errors/p2p-service.error.js +10 -0
  19. package/dest/errors/reqresp.error.d.ts +1 -20
  20. package/dest/errors/reqresp.error.d.ts.map +1 -1
  21. package/dest/errors/reqresp.error.js +0 -21
  22. package/dest/errors/tx-pool.error.d.ts +8 -0
  23. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  24. package/dest/errors/tx-pool.error.js +9 -0
  25. package/dest/index.d.ts +2 -2
  26. package/dest/index.d.ts.map +1 -1
  27. package/dest/index.js +1 -1
  28. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +162 -106
  29. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  30. package/dest/mem_pools/attestation_pool/attestation_pool.js +511 -3
  31. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  32. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  33. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +507 -125
  34. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  35. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  36. package/dest/mem_pools/attestation_pool/index.js +1 -2
  37. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  38. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  39. package/dest/mem_pools/attestation_pool/mocks.js +7 -5
  40. package/dest/mem_pools/index.d.ts +3 -3
  41. package/dest/mem_pools/index.d.ts.map +1 -1
  42. package/dest/mem_pools/index.js +1 -1
  43. package/dest/mem_pools/instrumentation.d.ts +4 -2
  44. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  45. package/dest/mem_pools/instrumentation.js +33 -15
  46. package/dest/mem_pools/interface.d.ts +5 -5
  47. package/dest/mem_pools/interface.d.ts.map +1 -1
  48. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  49. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  50. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  51. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  52. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  53. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  54. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  55. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  56. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  57. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  58. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  59. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  60. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  61. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  62. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +94 -0
  63. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  64. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  65. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
  66. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +11 -0
  67. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  68. package/dest/mem_pools/tx_pool_v2/eviction/index.js +12 -0
  69. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
  70. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
  71. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +62 -0
  72. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +180 -0
  73. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  74. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  75. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  76. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  77. package/dest/mem_pools/{tx_pool → tx_pool_v2}/eviction/invalid_txs_after_mining_rule.js +16 -35
  78. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  79. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  80. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  81. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  82. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  83. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
  84. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  85. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  86. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +75 -0
  87. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  88. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  89. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  90. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  91. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  92. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  93. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  94. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  95. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  96. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +218 -0
  97. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  98. package/dest/mem_pools/tx_pool_v2/interfaces.js +10 -0
  99. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +137 -0
  100. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  101. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +223 -0
  102. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  103. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  104. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  105. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  106. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  107. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +337 -0
  108. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +62 -0
  109. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  110. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +167 -0
  111. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +78 -0
  112. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  113. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +914 -0
  114. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +9 -3
  115. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  116. package/dest/msg_validators/attestation_validator/attestation_validator.js +37 -12
  117. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +8 -4
  118. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  119. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +4 -5
  120. package/dest/msg_validators/clock_tolerance.d.ts +12 -1
  121. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
  122. package/dest/msg_validators/clock_tolerance.js +61 -3
  123. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +10 -4
  124. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  125. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
  126. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +10 -4
  127. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  128. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
  129. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +21 -8
  130. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  131. package/dest/msg_validators/proposal_validator/proposal_validator.js +90 -44
  132. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  133. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  134. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +11 -18
  135. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  136. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  137. package/dest/msg_validators/tx_validator/allowed_public_setup.js +25 -21
  138. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  139. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  140. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  141. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  142. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +16 -3
  143. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  144. package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
  145. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts +15 -0
  146. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts.map +1 -0
  147. package/dest/msg_validators/tx_validator/cached_tx_validator.js +19 -0
  148. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  149. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  150. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  151. package/dest/msg_validators/tx_validator/data_validator.d.ts +2 -1
  152. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  153. package/dest/msg_validators/tx_validator/data_validator.js +36 -2
  154. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +13 -3
  155. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  156. package/dest/msg_validators/tx_validator/double_spend_validator.js +4 -4
  157. package/dest/msg_validators/tx_validator/factory.d.ts +135 -7
  158. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  159. package/dest/msg_validators/tx_validator/factory.js +252 -61
  160. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
  161. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
  162. package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
  163. package/dest/msg_validators/tx_validator/gas_validator.d.ts +99 -3
  164. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  165. package/dest/msg_validators/tx_validator/gas_validator.js +137 -53
  166. package/dest/msg_validators/tx_validator/index.d.ts +5 -1
  167. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  168. package/dest/msg_validators/tx_validator/index.js +4 -0
  169. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
  170. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  171. package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
  172. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  173. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  174. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  175. package/dest/msg_validators/tx_validator/phases_validator.d.ts +22 -2
  176. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  177. package/dest/msg_validators/tx_validator/phases_validator.js +72 -24
  178. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +20 -4
  179. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  180. package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
  181. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +2 -1
  182. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  183. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -0
  184. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts +48 -0
  185. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts.map +1 -0
  186. package/dest/msg_validators/tx_validator/tx_validation_cache.js +69 -0
  187. package/dest/services/data_store.d.ts +1 -1
  188. package/dest/services/data_store.d.ts.map +1 -1
  189. package/dest/services/data_store.js +5 -5
  190. package/dest/services/discv5/discV5_service.d.ts +2 -1
  191. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  192. package/dest/services/discv5/discV5_service.js +35 -8
  193. package/dest/services/dummy_service.d.ts +22 -18
  194. package/dest/services/dummy_service.d.ts.map +1 -1
  195. package/dest/services/dummy_service.js +22 -20
  196. package/dest/services/encoding.d.ts +7 -3
  197. package/dest/services/encoding.d.ts.map +1 -1
  198. package/dest/services/encoding.js +18 -11
  199. package/dest/services/gossipsub/index.d.ts +3 -0
  200. package/dest/services/gossipsub/index.d.ts.map +1 -0
  201. package/dest/services/gossipsub/index.js +2 -0
  202. package/dest/services/gossipsub/scoring.d.ts +21 -3
  203. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  204. package/dest/services/gossipsub/scoring.js +24 -7
  205. package/dest/services/gossipsub/topic_score_params.d.ts +184 -0
  206. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  207. package/dest/services/gossipsub/topic_score_params.js +363 -0
  208. package/dest/services/index.d.ts +2 -1
  209. package/dest/services/index.d.ts.map +1 -1
  210. package/dest/services/index.js +1 -0
  211. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  212. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  213. package/dest/services/libp2p/instrumentation.js +14 -0
  214. package/dest/services/libp2p/libp2p_service.d.ts +102 -60
  215. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  216. package/dest/services/libp2p/libp2p_service.js +665 -530
  217. package/dest/services/peer-manager/metrics.d.ts +3 -1
  218. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  219. package/dest/services/peer-manager/metrics.js +6 -0
  220. package/dest/services/peer-manager/peer_manager.d.ts +6 -2
  221. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  222. package/dest/services/peer-manager/peer_manager.js +40 -11
  223. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  224. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  225. package/dest/services/peer-manager/peer_scoring.js +57 -12
  226. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +14 -10
  227. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  228. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +104 -118
  229. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +11 -11
  230. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  231. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +11 -13
  232. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  233. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +31 -46
  234. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +19 -11
  235. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  236. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +52 -15
  237. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +5 -14
  238. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -1
  239. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +6 -20
  240. package/dest/services/reqresp/config.d.ts +3 -3
  241. package/dest/services/reqresp/config.d.ts.map +1 -1
  242. package/dest/services/reqresp/interface.d.ts +25 -18
  243. package/dest/services/reqresp/interface.d.ts.map +1 -1
  244. package/dest/services/reqresp/interface.js +23 -19
  245. package/dest/services/reqresp/metrics.d.ts +1 -1
  246. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  247. package/dest/services/reqresp/metrics.js +0 -1
  248. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  249. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  250. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +18 -11
  251. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +21 -10
  252. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  253. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +27 -11
  254. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  255. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  256. package/dest/services/reqresp/protocols/index.js +0 -1
  257. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  258. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  259. package/dest/services/reqresp/protocols/tx.js +21 -3
  260. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  261. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  262. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  263. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  264. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  265. package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
  266. package/dest/services/reqresp/reqresp.d.ts +7 -29
  267. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  268. package/dest/services/reqresp/reqresp.js +53 -218
  269. package/dest/services/service.d.ts +46 -13
  270. package/dest/services/service.d.ts.map +1 -1
  271. package/dest/services/tx_collection/config.d.ts +11 -14
  272. package/dest/services/tx_collection/config.d.ts.map +1 -1
  273. package/dest/services/tx_collection/config.js +26 -33
  274. package/dest/services/tx_collection/file_store_tx_collection.d.ts +37 -0
  275. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  276. package/dest/services/tx_collection/file_store_tx_collection.js +127 -0
  277. package/dest/services/tx_collection/file_store_tx_source.d.ts +38 -0
  278. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  279. package/dest/services/tx_collection/file_store_tx_source.js +100 -0
  280. package/dest/services/tx_collection/index.d.ts +3 -3
  281. package/dest/services/tx_collection/index.d.ts.map +1 -1
  282. package/dest/services/tx_collection/index.js +1 -1
  283. package/dest/services/tx_collection/instrumentation.js +1 -2
  284. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  285. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  286. package/dest/services/tx_collection/request_tracker.js +84 -0
  287. package/dest/services/tx_collection/tx_collection.d.ts +45 -51
  288. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  289. package/dest/services/tx_collection/tx_collection.js +296 -68
  290. package/dest/services/tx_collection/tx_collection_sink.d.ts +19 -9
  291. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  292. package/dest/services/tx_collection/tx_collection_sink.js +28 -31
  293. package/dest/services/tx_collection/tx_source.d.ts +13 -7
  294. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  295. package/dest/services/tx_collection/tx_source.js +26 -7
  296. package/dest/services/tx_file_store/config.d.ts +16 -0
  297. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  298. package/dest/services/tx_file_store/config.js +22 -0
  299. package/dest/services/tx_file_store/index.d.ts +4 -0
  300. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  301. package/dest/services/tx_file_store/index.js +3 -0
  302. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  303. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  304. package/dest/services/tx_file_store/instrumentation.js +29 -0
  305. package/dest/services/tx_file_store/tx_file_store.d.ts +46 -0
  306. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  307. package/dest/services/tx_file_store/tx_file_store.js +142 -0
  308. package/dest/services/tx_provider.d.ts +6 -4
  309. package/dest/services/tx_provider.d.ts.map +1 -1
  310. package/dest/services/tx_provider.js +12 -8
  311. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  312. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  313. package/dest/test-helpers/make-test-p2p-clients.js +5 -3
  314. package/dest/test-helpers/mock-pubsub.d.ts +46 -6
  315. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  316. package/dest/test-helpers/mock-pubsub.js +115 -14
  317. package/dest/test-helpers/reqresp-nodes.d.ts +5 -7
  318. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  319. package/dest/test-helpers/reqresp-nodes.js +19 -20
  320. package/dest/test-helpers/test_tx_provider.d.ts +3 -1
  321. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -1
  322. package/dest/test-helpers/test_tx_provider.js +3 -0
  323. package/dest/test-helpers/testbench-utils.d.ts +53 -50
  324. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  325. package/dest/test-helpers/testbench-utils.js +171 -75
  326. package/dest/testbench/p2p_client_testbench_worker.d.ts +3 -5
  327. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  328. package/dest/testbench/p2p_client_testbench_worker.js +94 -48
  329. package/dest/testbench/worker_client_manager.d.ts +12 -6
  330. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  331. package/dest/testbench/worker_client_manager.js +57 -11
  332. package/dest/util.d.ts +13 -8
  333. package/dest/util.d.ts.map +1 -1
  334. package/dest/util.js +35 -14
  335. package/dest/versioning.d.ts +3 -6
  336. package/dest/versioning.d.ts.map +1 -1
  337. package/dest/versioning.js +3 -24
  338. package/package.json +15 -14
  339. package/src/bootstrap/bootstrap.ts +9 -1
  340. package/src/client/factory.ts +130 -30
  341. package/src/client/interface.ts +70 -44
  342. package/src/client/p2p_client.ts +273 -299
  343. package/src/client/test/{tx_proposal_collector/README.md → p2p_client.batch_tx_requester.bench.README.md} +23 -53
  344. package/src/config.ts +267 -46
  345. package/src/errors/p2p-service.error.ts +11 -0
  346. package/src/errors/reqresp.error.ts +0 -25
  347. package/src/errors/tx-pool.error.ts +12 -0
  348. package/src/index.ts +1 -1
  349. package/src/mem_pools/attestation_pool/attestation_pool.ts +575 -94
  350. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +617 -141
  351. package/src/mem_pools/attestation_pool/index.ts +9 -2
  352. package/src/mem_pools/attestation_pool/mocks.ts +14 -8
  353. package/src/mem_pools/index.ts +2 -2
  354. package/src/mem_pools/instrumentation.ts +22 -14
  355. package/src/mem_pools/interface.ts +4 -4
  356. package/src/mem_pools/tx_pool_v2/README.md +283 -0
  357. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  358. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  359. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  360. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  361. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +122 -0
  362. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
  363. package/src/mem_pools/tx_pool_v2/eviction/index.ts +28 -0
  364. package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +65 -0
  365. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +219 -0
  366. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  367. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  368. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
  369. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +99 -0
  370. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +32 -0
  371. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  372. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  373. package/src/mem_pools/tx_pool_v2/interfaces.ts +250 -0
  374. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +349 -0
  375. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  376. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +430 -0
  377. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +238 -0
  378. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1090 -0
  379. package/src/msg_validators/attestation_validator/README.md +49 -0
  380. package/src/msg_validators/attestation_validator/attestation_validator.ts +41 -9
  381. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +16 -9
  382. package/src/msg_validators/clock_tolerance.ts +79 -3
  383. package/src/msg_validators/proposal_validator/README.md +123 -0
  384. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +24 -4
  385. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +35 -7
  386. package/src/msg_validators/proposal_validator/proposal_validator.ts +114 -47
  387. package/src/msg_validators/tx_validator/README.md +127 -0
  388. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +8 -17
  389. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  390. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  391. package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
  392. package/src/msg_validators/tx_validator/block_header_validator.ts +15 -3
  393. package/src/msg_validators/tx_validator/cached_tx_validator.ts +31 -0
  394. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  395. package/src/msg_validators/tx_validator/data_validator.ts +44 -1
  396. package/src/msg_validators/tx_validator/double_spend_validator.ts +11 -6
  397. package/src/msg_validators/tx_validator/factory.ts +407 -80
  398. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  399. package/src/msg_validators/tx_validator/gas_validator.ts +199 -54
  400. package/src/msg_validators/tx_validator/index.ts +4 -0
  401. package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
  402. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  403. package/src/msg_validators/tx_validator/phases_validator.ts +82 -27
  404. package/src/msg_validators/tx_validator/timestamp_validator.ts +23 -18
  405. package/src/msg_validators/tx_validator/tx_proof_validator.ts +2 -0
  406. package/src/msg_validators/tx_validator/tx_validation_cache.ts +102 -0
  407. package/src/services/data_store.ts +5 -13
  408. package/src/services/discv5/discV5_service.ts +38 -5
  409. package/src/services/dummy_service.ts +32 -45
  410. package/src/services/encoding.ts +18 -10
  411. package/src/services/gossipsub/README.md +641 -0
  412. package/src/services/gossipsub/index.ts +2 -0
  413. package/src/services/gossipsub/scoring.ts +29 -5
  414. package/src/services/gossipsub/topic_score_params.ts +519 -0
  415. package/src/services/index.ts +1 -0
  416. package/src/services/libp2p/instrumentation.ts +14 -0
  417. package/src/services/libp2p/libp2p_service.ts +716 -586
  418. package/src/services/peer-manager/metrics.ts +7 -0
  419. package/src/services/peer-manager/peer_manager.ts +46 -11
  420. package/src/services/peer-manager/peer_scoring.ts +52 -5
  421. package/src/services/reqresp/README.md +215 -0
  422. package/src/services/reqresp/batch-tx-requester/README.md +53 -14
  423. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +108 -130
  424. package/src/services/reqresp/batch-tx-requester/interface.ts +14 -10
  425. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +30 -71
  426. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +68 -24
  427. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +12 -25
  428. package/src/services/reqresp/config.ts +2 -2
  429. package/src/services/reqresp/interface.ts +45 -46
  430. package/src/services/reqresp/metrics.ts +0 -1
  431. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +25 -14
  432. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +38 -15
  433. package/src/services/reqresp/protocols/index.ts +0 -1
  434. package/src/services/reqresp/protocols/tx.ts +23 -3
  435. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  436. package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
  437. package/src/services/reqresp/reqresp.ts +61 -264
  438. package/src/services/service.ts +62 -29
  439. package/src/services/tx_collection/config.ts +40 -49
  440. package/src/services/tx_collection/file_store_tx_collection.ts +153 -0
  441. package/src/services/tx_collection/file_store_tx_source.ts +129 -0
  442. package/src/services/tx_collection/index.ts +2 -6
  443. package/src/services/tx_collection/instrumentation.ts +1 -1
  444. package/src/services/tx_collection/request_tracker.ts +127 -0
  445. package/src/services/tx_collection/tx_collection.ts +362 -110
  446. package/src/services/tx_collection/tx_collection_sink.ts +32 -36
  447. package/src/services/tx_collection/tx_source.ts +28 -8
  448. package/src/services/tx_file_store/config.ts +37 -0
  449. package/src/services/tx_file_store/index.ts +3 -0
  450. package/src/services/tx_file_store/instrumentation.ts +36 -0
  451. package/src/services/tx_file_store/tx_file_store.ts +163 -0
  452. package/src/services/tx_provider.ts +15 -9
  453. package/src/test-helpers/make-test-p2p-clients.ts +7 -6
  454. package/src/test-helpers/mock-pubsub.ts +137 -14
  455. package/src/test-helpers/reqresp-nodes.ts +17 -29
  456. package/src/test-helpers/test_tx_provider.ts +5 -0
  457. package/src/test-helpers/testbench-utils.ts +177 -96
  458. package/src/testbench/p2p_client_testbench_worker.ts +100 -63
  459. package/src/testbench/worker_client_manager.ts +72 -25
  460. package/src/util.ts +40 -19
  461. package/src/versioning.ts +3 -33
  462. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +0 -2
  463. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +0 -1
  464. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +0 -305
  465. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +0 -73
  466. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +0 -1
  467. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +0 -8
  468. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
  469. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  470. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
  471. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
  472. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  473. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
  474. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  475. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  476. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  477. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  478. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  479. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  480. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  481. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  482. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  483. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  484. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  485. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -122
  486. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  487. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  488. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  489. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  490. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  491. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  492. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  493. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  494. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  495. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  496. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  497. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  498. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  499. package/dest/mem_pools/tx_pool/index.js +0 -2
  500. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  501. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  502. package/dest/mem_pools/tx_pool/priority.js +0 -15
  503. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  504. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  505. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  506. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  507. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  508. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -400
  509. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
  510. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  511. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
  512. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +0 -64
  513. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +0 -1
  514. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +0 -151
  515. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  516. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  517. package/dest/services/reqresp/protocols/block.js +0 -32
  518. package/dest/services/tx_collection/fast_tx_collection.d.ts +0 -53
  519. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +0 -1
  520. package/dest/services/tx_collection/fast_tx_collection.js +0 -311
  521. package/dest/services/tx_collection/proposal_tx_collector.d.ts +0 -48
  522. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +0 -1
  523. package/dest/services/tx_collection/proposal_tx_collector.js +0 -50
  524. package/dest/services/tx_collection/slow_tx_collection.d.ts +0 -53
  525. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +0 -1
  526. package/dest/services/tx_collection/slow_tx_collection.js +0 -177
  527. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +0 -336
  528. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +0 -43
  529. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
  530. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
  531. package/src/mem_pools/tx_pool/README.md +0 -270
  532. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  533. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  534. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  535. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -162
  536. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  537. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  538. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  539. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  540. package/src/mem_pools/tx_pool/index.ts +0 -2
  541. package/src/mem_pools/tx_pool/priority.ts +0 -20
  542. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  543. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -319
  544. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
  545. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +0 -161
  546. package/src/services/reqresp/protocols/block.ts +0 -37
  547. package/src/services/tx_collection/fast_tx_collection.ts +0 -364
  548. package/src/services/tx_collection/proposal_tx_collector.ts +0 -114
  549. package/src/services/tx_collection/slow_tx_collection.ts +0 -233
@@ -1,6 +1,514 @@
1
+ import { toArray } from '@aztec/foundation/iterable';
2
+ import { createLogger } from '@aztec/foundation/log';
3
+ import { BlockProposal, CheckpointAttestation, CheckpointProposal } from '@aztec/stdlib/p2p';
4
+ import { getTelemetryClient } from '@aztec/telemetry-client';
5
+ import { PoolInstrumentation, PoolName } from '../instrumentation.js';
6
+ export const MAX_CHECKPOINT_PROPOSALS_PER_SLOT = 2;
7
+ export const MAX_BLOCK_PROPOSALS_PER_POSITION = 2;
8
+ /** Maximum attestations a single signer can make per slot before being rejected. */ export const MAX_ATTESTATIONS_PER_SLOT_AND_SIGNER = 2;
1
9
  /**
2
- * An Attestation Pool contains attestations collected by a validator
10
+ * Pool for storing attestations and proposals collected by a validator.
3
11
  *
4
- * Attestations that are observed via the p2p network are stored for requests
12
+ * Attestations and proposals observed via the p2p network are stored for requests
5
13
  * from the validator to produce a block, or to serve to other peers.
6
- */ export { };
14
+ *
15
+ * Equivocation detection: distinct *signed payload hashes* arriving at the same
16
+ * position are tracked in the matching index multimap so the equivocation count
17
+ * reaches 2 even when archive collides on `feeAssetPriceModifier` variants.
18
+ * Proposal bytes are retained per accepted payload hash, up to the same equivocation
19
+ * caps, for slashing watchers that need signed P2P proposals.
20
+ */ export class AttestationPool {
21
+ store;
22
+ log;
23
+ metrics;
24
+ // Checkpoint attestations from `${paddedSlot}-${signer}` to serialized CheckpointAttestation.
25
+ // Stores the first attestation seen per (slot, signer); subsequent distinct payload
26
+ // hashes from the same signer are tracked only in `attestationHashesPerSlotAndSigner`
27
+ // for equivocation detection.
28
+ attestationPerSlotAndSigner;
29
+ // Distinct payload hashes seen per (slot, signer) for tracking attestation equivocations.
30
+ // Key: `${paddedSlot}-${signerAddress}`, Value: CheckpointProposalHash (`0x`-prefixed hex)
31
+ attestationHashesPerSlotAndSigner;
32
+ // Checkpoint proposals from `${paddedSlot}-${payloadHash}` to serialized CheckpointProposalCore.
33
+ // Stores every accepted distinct payload up to MAX_CHECKPOINT_PROPOSALS_PER_SLOT.
34
+ checkpointProposalsPerSlotAndHash;
35
+ // Distinct payload hashes seen per slot. Hash collision = duplicate.
36
+ // Hash count reaching 2 = equivocation.
37
+ // Key: slot number, Value: CheckpointProposalHash (`0x`-prefixed hex)
38
+ checkpointProposalHashesPerSlot;
39
+ // Block proposals from `${paddedSlot}-${paddedIndex}-${payloadHash}` to serialized BlockProposal.
40
+ // Stores every accepted distinct payload up to MAX_BLOCK_PROPOSALS_PER_POSITION.
41
+ blockProposalsPerSlotIndexAndHash;
42
+ // Distinct payload hashes seen per (slot, indexWithinCheckpoint).
43
+ // Key: slot * (1 << INDEX_BITS) + indexWithinCheckpoint, Value: BlockProposalHash (`0x`-prefixed hex)
44
+ blockProposalHashesPerSlotAndIndex;
45
+ // Secondary index from archive root to all retained block proposal keys.
46
+ blockProposalKeysPerArchive;
47
+ constructor(store, telemetry = getTelemetryClient(), log = createLogger('aztec:attestation_pool')){
48
+ this.store = store;
49
+ this.log = log;
50
+ this.poolStats = async ()=>{
51
+ return {
52
+ itemCount: await this.attestationPerSlotAndSigner.sizeAsync()
53
+ };
54
+ };
55
+ // Initialize block proposal storage
56
+ this.blockProposalsPerSlotIndexAndHash = store.openMap('block_proposals_by_slot_index_and_hash');
57
+ this.blockProposalHashesPerSlotAndIndex = store.openMultiMap('block_proposals_for_slot_and_index');
58
+ this.blockProposalKeysPerArchive = store.openMultiMap('block_proposals_by_archive');
59
+ // Initialize checkpoint attestations storage
60
+ this.attestationPerSlotAndSigner = store.openMap('checkpoint_attestations');
61
+ this.attestationHashesPerSlotAndSigner = store.openMultiMap('checkpoint_attestations_per_slot_and_signer');
62
+ // Initialize checkpoint proposal storage
63
+ this.checkpointProposalsPerSlotAndHash = store.openMap('checkpoint_proposals_by_slot_and_hash');
64
+ this.checkpointProposalHashesPerSlot = store.openMultiMap('checkpoint_proposals_for_slot');
65
+ this.metrics = new PoolInstrumentation(telemetry, PoolName.ATTESTATION_POOL, this.poolStats);
66
+ }
67
+ poolStats;
68
+ /** Returns whether the pool is empty. */ async isEmpty() {
69
+ const [attestationCount, blockProposalCount, checkpointProposalCount] = await Promise.all([
70
+ this.attestationPerSlotAndSigner.sizeAsync(),
71
+ this.blockProposalsPerSlotIndexAndHash.sizeAsync(),
72
+ this.checkpointProposalsPerSlotAndHash.sizeAsync()
73
+ ]);
74
+ return attestationCount === 0 && blockProposalCount === 0 && checkpointProposalCount === 0;
75
+ }
76
+ /** Number of bits reserved for indexWithinCheckpoint in position keys. */ static INDEX_BITS = 10;
77
+ /** Maximum indexWithinCheckpoint value (2^10 - 1 = 1023). */ static MAX_INDEX = (1 << AttestationPool.INDEX_BITS) - 1;
78
+ /** Decimal digits used to left-pad slot numbers in string keys.
79
+ * 10 digits ≈ 3500 years at 36 s/slot, leaving ample headroom. */ static SLOT_PAD_DIGITS = 10;
80
+ /** Fixed-width decimal slot string for use in composite string keys. */ slotPaddedKey(slot) {
81
+ return slot.toString().padStart(AttestationPool.SLOT_PAD_DIGITS, '0');
82
+ }
83
+ /** Fixed-width decimal index string for use in composite string keys. */ indexPaddedKey(indexWithinCheckpoint) {
84
+ return indexWithinCheckpoint.toString().padStart(4, '0');
85
+ }
86
+ /** Key for retained block proposals. */ getBlockProposalKey(slot, indexWithinCheckpoint, payloadHash) {
87
+ return `${this.slotPaddedKey(slot)}-${this.indexPaddedKey(indexWithinCheckpoint)}-${payloadHash}`;
88
+ }
89
+ /** Range bounds for all retained block proposals in a slot. */ getBlockProposalKeyRangeForSlot(slot) {
90
+ return {
91
+ start: `${this.slotPaddedKey(slot)}-`,
92
+ end: `${this.slotPaddedKey(slot + 1)}-`
93
+ };
94
+ }
95
+ /** Key for retained checkpoint proposals. */ getCheckpointProposalKey(slot, payloadHash) {
96
+ return `${this.slotPaddedKey(slot)}-${payloadHash}`;
97
+ }
98
+ /** Range bounds for all retained checkpoint proposals in a slot. */ getCheckpointProposalKeyRangeForSlot(slot) {
99
+ return {
100
+ start: `${this.slotPaddedKey(slot)}-`,
101
+ end: `${this.slotPaddedKey(slot + 1)}-`
102
+ };
103
+ }
104
+ /** Key for the per-(slot, signer) attestation main store and equivocation index. */ getSlotSignerKey(slot, signerAddress) {
105
+ return `${this.slotPaddedKey(slot)}-${signerAddress}`;
106
+ }
107
+ /**
108
+ * Returns range bounds for querying all attestations for a given slot.
109
+ * Fixed-width padding ensures the slot prefix sorts cleanly, so using the next
110
+ * slot's prefix as the upper bound captures exactly the current slot's entries.
111
+ */ getAttestationKeyRangeForSlot(slot) {
112
+ return {
113
+ start: `${this.slotPaddedKey(slot)}-`,
114
+ end: `${this.slotPaddedKey(slot + 1)}-`
115
+ };
116
+ }
117
+ /** Creates a position key for block proposals: slot * 1024 + indexWithinCheckpoint.
118
+ * Uses multiplication instead of bit-shift to avoid 32-bit signed integer overflow
119
+ * (bit-shift overflows after slot ~2^21, roughly 278 days of uptime). */ getBlockPositionKey(slot, indexWithinCheckpoint) {
120
+ if (indexWithinCheckpoint > AttestationPool.MAX_INDEX) {
121
+ throw new Error(`Value for indexWithinCheckpoint ${indexWithinCheckpoint} exceeds maximum ${AttestationPool.MAX_INDEX}`);
122
+ }
123
+ return slot * (1 << AttestationPool.INDEX_BITS) + indexWithinCheckpoint;
124
+ }
125
+ /** Returns true if the multimap already contains the given value for the given key. */ async multimapHasValue(map, key, value) {
126
+ const values = await toArray(map.getValuesAsync(key));
127
+ return values.includes(value);
128
+ }
129
+ /**
130
+ * Attempts to add a block proposal to the pool.
131
+ *
132
+ * - Detects duplicates by signed-payload hash (not archive); a re-broadcast of the
133
+ * exact same signed payload returns `alreadyExists: true`.
134
+ * - Distinct payload hashes at the same `(slot, indexWithinCheckpoint)` are tracked
135
+ * in the equivocation index and retained up to the cap.
136
+ *
137
+ * @param blockProposal - The block proposal to add
138
+ * @returns Result indicating whether the proposal was added and duplicate detection info
139
+ */ async tryAddBlockProposal(blockProposal) {
140
+ return await this.store.transactionAsync(async ()=>{
141
+ const positionKey = this.getBlockPositionKey(blockProposal.slotNumber, blockProposal.indexWithinCheckpoint);
142
+ const payloadHash = blockProposal.getPayloadHash();
143
+ // Hash already tracked => exact same signed payload was already received.
144
+ if (await this.multimapHasValue(this.blockProposalHashesPerSlotAndIndex, positionKey, payloadHash)) {
145
+ const count = await this.blockProposalHashesPerSlotAndIndex.getValueCountAsync(positionKey);
146
+ return {
147
+ added: false,
148
+ alreadyExists: true,
149
+ count
150
+ };
151
+ }
152
+ // Cap reached for this position (no more new payload hashes accepted).
153
+ const count = await this.blockProposalHashesPerSlotAndIndex.getValueCountAsync(positionKey);
154
+ if (count >= MAX_BLOCK_PROPOSALS_PER_POSITION) {
155
+ return {
156
+ added: false,
157
+ alreadyExists: false,
158
+ count
159
+ };
160
+ }
161
+ // Track the new payload hash for equivocation detection.
162
+ await this.blockProposalHashesPerSlotAndIndex.set(positionKey, payloadHash);
163
+ const proposalKey = this.getBlockProposalKey(blockProposal.slotNumber, blockProposal.indexWithinCheckpoint, payloadHash);
164
+ await this.blockProposalsPerSlotIndexAndHash.set(proposalKey, blockProposal.withoutSignedTxs().toBuffer());
165
+ await this.blockProposalKeysPerArchive.set(blockProposal.archive.toString(), proposalKey);
166
+ this.log.debug(`Added block proposal for slot ${blockProposal.slotNumber} and index ${blockProposal.indexWithinCheckpoint}`, {
167
+ archive: blockProposal.archive.toString(),
168
+ payloadHash,
169
+ slotNumber: blockProposal.slotNumber,
170
+ indexWithinCheckpoint: blockProposal.indexWithinCheckpoint
171
+ });
172
+ return {
173
+ added: true,
174
+ alreadyExists: false,
175
+ count: count + 1
176
+ };
177
+ });
178
+ }
179
+ /**
180
+ * Get block proposal by archive root.
181
+ *
182
+ * Resolves the archive root through the archive index and returns the first
183
+ * retained proposal for that archive. This lookup is used by block-txs req/resp,
184
+ * where any retained proposal for the requested archive gives the tx hash list.
185
+ *
186
+ * @param archiveRoot - The archive root to look up
187
+ * @return The block proposal if it exists and its archive matches, otherwise undefined.
188
+ */ async getBlockProposalByArchive(archiveRoot) {
189
+ for await (const proposalKey of this.blockProposalKeysPerArchive.getValuesAsync(archiveRoot)){
190
+ const buffer = await this.blockProposalsPerSlotIndexAndHash.getAsync(proposalKey);
191
+ if (!buffer || buffer.length === 0) {
192
+ continue;
193
+ }
194
+ try {
195
+ const proposal = BlockProposal.fromBuffer(buffer);
196
+ if (proposal.archive.toString() === archiveRoot) {
197
+ return proposal;
198
+ }
199
+ } catch {
200
+ continue;
201
+ }
202
+ }
203
+ return undefined;
204
+ }
205
+ /** Returns retained signed proposals for a slot. */ async getProposalsForSlot(slot) {
206
+ const blockProposals = [];
207
+ const checkpointProposals = [];
208
+ for await (const [_, buffer] of this.blockProposalsPerSlotIndexAndHash.entriesAsync(this.getBlockProposalKeyRangeForSlot(slot))){
209
+ try {
210
+ blockProposals.push(BlockProposal.fromBuffer(buffer));
211
+ } catch {
212
+ continue;
213
+ }
214
+ }
215
+ for await (const [_, buffer] of this.checkpointProposalsPerSlotAndHash.entriesAsync(this.getCheckpointProposalKeyRangeForSlot(slot))){
216
+ try {
217
+ checkpointProposals.push(CheckpointProposal.fromBuffer(buffer));
218
+ } catch {
219
+ continue;
220
+ }
221
+ }
222
+ return {
223
+ blockProposals,
224
+ checkpointProposals
225
+ };
226
+ }
227
+ /** Checks if any block proposals exist for a given slot (at index 0). */ async hasBlockProposalsForSlot(slot) {
228
+ const positionKey = this.getBlockPositionKey(slot, 0);
229
+ const count = await this.blockProposalHashesPerSlotAndIndex.getValueCountAsync(positionKey);
230
+ return count > 0;
231
+ }
232
+ /**
233
+ * Attempts to add a checkpoint proposal to the pool.
234
+ *
235
+ * - Detects duplicates by signed-payload hash (not archive); a re-broadcast of the
236
+ * exact same signed payload returns `alreadyExists: true`.
237
+ * - Distinct payload hashes at the same slot are tracked in the equivocation index.
238
+ * Distinct payload bytes are retained up to the same cap so slashing watchers
239
+ * can recover signed proposals.
240
+ *
241
+ * Note: This method only handles the CheckpointProposalCore. If the original
242
+ * CheckpointProposal contains a lastBlock, the caller should extract it via
243
+ * getBlockProposal() and add it separately via tryAddBlockProposal().
244
+ *
245
+ * @param proposal - The checkpoint proposal core to add
246
+ * @returns Result indicating whether the proposal was added and duplicate detection info
247
+ */ async tryAddCheckpointProposal(proposal) {
248
+ return await this.store.transactionAsync(async ()=>{
249
+ const slot = proposal.slotNumber;
250
+ const payloadHash = proposal.getPayloadHash();
251
+ if (await this.multimapHasValue(this.checkpointProposalHashesPerSlot, slot, payloadHash)) {
252
+ const count = await this.checkpointProposalHashesPerSlot.getValueCountAsync(slot);
253
+ return {
254
+ added: false,
255
+ alreadyExists: true,
256
+ count
257
+ };
258
+ }
259
+ const count = await this.checkpointProposalHashesPerSlot.getValueCountAsync(slot);
260
+ if (count >= MAX_CHECKPOINT_PROPOSALS_PER_SLOT) {
261
+ return {
262
+ added: false,
263
+ alreadyExists: false,
264
+ count
265
+ };
266
+ }
267
+ // Track the new payload hash for equivocation detection.
268
+ await this.checkpointProposalHashesPerSlot.set(slot, payloadHash);
269
+ await this.checkpointProposalsPerSlotAndHash.set(this.getCheckpointProposalKey(slot, payloadHash), proposal.toBuffer());
270
+ this.log.debug(`Added checkpoint proposal for slot ${slot}`, {
271
+ archive: proposal.archive.toString(),
272
+ payloadHash,
273
+ slotNumber: slot
274
+ });
275
+ return {
276
+ added: true,
277
+ alreadyExists: false,
278
+ count: count + 1
279
+ };
280
+ });
281
+ }
282
+ /**
283
+ * Get a retained checkpoint proposal stored for the given slot.
284
+ * If multiple proposals were retained for an equivocation, returns the lowest
285
+ * payload hash deterministically.
286
+ *
287
+ * Returns a CheckpointProposalCore (without lastBlock info) since the lastBlock
288
+ * is extracted and stored separately as a BlockProposal when added.
289
+ *
290
+ * @param slot - The slot to look up
291
+ * @return The checkpoint proposal core if one is stored, otherwise undefined.
292
+ */ async getCheckpointProposal(slot) {
293
+ for await (const [_, buffer] of this.checkpointProposalsPerSlotAndHash.entriesAsync(this.getCheckpointProposalKeyRangeForSlot(slot))){
294
+ try {
295
+ if (buffer && buffer.length > 0) {
296
+ return CheckpointProposal.fromBuffer(buffer);
297
+ }
298
+ } catch {
299
+ continue;
300
+ }
301
+ }
302
+ return undefined;
303
+ }
304
+ /**
305
+ * Adds own checkpoint attestations to the pool.
306
+ * Skips per-signer cap and equivocation tracking; the caller is trusted.
307
+ * Each (slot, signer) gets a single stored attestation; later additions overwrite.
308
+ */ async addOwnCheckpointAttestations(attestations) {
309
+ await this.store.transactionAsync(async ()=>{
310
+ for (const attestation of attestations){
311
+ const slotNumber = attestation.payload.header.slotNumber;
312
+ const sender = attestation.getSender();
313
+ // Skip attestations with invalid signatures
314
+ if (!sender) {
315
+ this.log.warn(`Skipping own checkpoint attestation with invalid signature for slot ${slotNumber}`, {
316
+ signature: attestation.signature.toString(),
317
+ slotNumber,
318
+ archive: attestation.archive.toString()
319
+ });
320
+ continue;
321
+ }
322
+ const address = sender.toString();
323
+ const ownKey = this.getSlotSignerKey(slotNumber, address);
324
+ const payloadHash = attestation.getPayloadHash();
325
+ await this.attestationPerSlotAndSigner.set(ownKey, attestation.toBuffer());
326
+ this.metrics.trackMempoolItemAdded(ownKey);
327
+ // Track our own payload hash so that an equivocating attestation from another
328
+ // peer at the same (slot, signer) is detected as a duplicate.
329
+ if (!await this.multimapHasValue(this.attestationHashesPerSlotAndSigner, ownKey, payloadHash)) {
330
+ await this.attestationHashesPerSlotAndSigner.set(ownKey, payloadHash);
331
+ }
332
+ this.log.debug(`Added own checkpoint attestation for slot ${slotNumber} from ${address}`, {
333
+ signature: attestation.signature.toString(),
334
+ slotNumber,
335
+ address,
336
+ archive: attestation.archive.toString(),
337
+ payloadHash
338
+ });
339
+ }
340
+ });
341
+ }
342
+ /**
343
+ * Get all checkpoint attestations for a given slot.
344
+ *
345
+ * Returns one attestation per (slot, signer) — the first seen for each signer.
346
+ * Later equivocating attestations from the same signer are tracked in the index
347
+ * but their bytes are not retained.
348
+ *
349
+ * @param slot - The slot to query
350
+ * @return CheckpointAttestations
351
+ */ async getCheckpointAttestationsForSlot(slot) {
352
+ const range = this.getAttestationKeyRangeForSlot(slot);
353
+ const attestations = [];
354
+ for await (const [_, buf] of this.attestationPerSlotAndSigner.entriesAsync(range)){
355
+ attestations.push(CheckpointAttestation.fromBuffer(buf));
356
+ }
357
+ return attestations;
358
+ }
359
+ /**
360
+ * Get checkpoint attestations for a slot whose signed payload matches the given
361
+ * proposal payload hash.
362
+ *
363
+ * @param slot - The slot to query
364
+ * @param proposalPayloadHash - Hex-encoded keccak256 of the target proposal's signed payload
365
+ * @return CheckpointAttestations whose `getPayloadHash()` matches `proposalPayloadHash`
366
+ */ async getCheckpointAttestationsForSlotAndProposal(slot, proposalPayloadHash) {
367
+ const all = await this.getCheckpointAttestationsForSlot(slot);
368
+ return all.filter((att)=>att.getPayloadHash() === proposalPayloadHash);
369
+ }
370
+ /**
371
+ * Delete all pool data (attestations, proposals) older than the given slot.
372
+ *
373
+ * @param oldestSlot - The oldest slot to keep.
374
+ */ async deleteOlderThan(oldestSlot) {
375
+ let numberOfAttestations = 0;
376
+ let numberOfCheckpointProposals = 0;
377
+ let numberOfBlockProposals = 0;
378
+ await this.store.transactionAsync(async ()=>{
379
+ const oldestSlotPadded = this.slotPaddedKey(oldestSlot);
380
+ // Delete checkpoint attestations whose key < `${oldestSlotPadded}-`. Fixed-width
381
+ // decimal padding means the slot prefix sorts strictly before any key at that slot.
382
+ for await (const key of this.attestationPerSlotAndSigner.keysAsync({
383
+ end: `${oldestSlotPadded}-`
384
+ })){
385
+ await this.attestationPerSlotAndSigner.delete(key);
386
+ this.metrics.trackMempoolItemRemoved(key);
387
+ numberOfAttestations++;
388
+ }
389
+ // Clean up per-signer-per-slot index using the same end bound.
390
+ for await (const key of this.attestationHashesPerSlotAndSigner.keysAsync({
391
+ end: `${oldestSlotPadded}-`
392
+ })){
393
+ await this.attestationHashesPerSlotAndSigner.delete(key);
394
+ }
395
+ // Delete checkpoint proposals for slots < oldestSlot.
396
+ for await (const slot of this.checkpointProposalHashesPerSlot.keysAsync({
397
+ end: oldestSlot
398
+ })){
399
+ await this.checkpointProposalHashesPerSlot.delete(slot);
400
+ }
401
+ for await (const key of this.checkpointProposalsPerSlotAndHash.keysAsync({
402
+ end: `${oldestSlotPadded}-`
403
+ })){
404
+ await this.checkpointProposalsPerSlotAndHash.delete(key);
405
+ numberOfCheckpointProposals++;
406
+ }
407
+ // Delete block proposals for slots < oldestSlot, using blockProposalHashesPerSlotAndIndex as index.
408
+ // Key format: slot * (1 << INDEX_BITS) + indexWithinCheckpoint
409
+ const blockPositionEndKey = oldestSlot * (1 << AttestationPool.INDEX_BITS);
410
+ for await (const positionKey of this.blockProposalHashesPerSlotAndIndex.keysAsync({
411
+ end: blockPositionEndKey
412
+ })){
413
+ await this.blockProposalHashesPerSlotAndIndex.delete(positionKey);
414
+ }
415
+ for await (const [key, buffer] of this.blockProposalsPerSlotIndexAndHash.entriesAsync({
416
+ end: `${oldestSlotPadded}-`
417
+ })){
418
+ try {
419
+ const proposal = BlockProposal.fromBuffer(buffer);
420
+ await this.blockProposalKeysPerArchive.deleteValue(proposal.archive.toString(), key);
421
+ } catch {
422
+ // ignore decode errors when cleaning up
423
+ }
424
+ await this.blockProposalsPerSlotIndexAndHash.delete(key);
425
+ numberOfBlockProposals++;
426
+ }
427
+ });
428
+ this.log.verbose(`Deleted old pool data`, {
429
+ oldestSlot,
430
+ numberOfAttestations,
431
+ numberOfCheckpointProposals,
432
+ numberOfBlockProposals
433
+ });
434
+ }
435
+ /**
436
+ * Attempts to add a checkpoint attestation to the pool.
437
+ *
438
+ * - Detects duplicates by signed-payload hash (not archive); a re-broadcast of the
439
+ * exact same signed payload from the same signer returns `alreadyExists: true`.
440
+ * - Distinct payload hashes from the same (slot, signer) are tracked in the
441
+ * equivocation index. The first one's bytes are stored; later distinct hashes
442
+ * bump `count` so libp2p can fire its duplicate callback.
443
+ *
444
+ * @param attestation - The checkpoint attestation to add
445
+ * @returns Result indicating whether the attestation was added, existence info,
446
+ * and number of distinct payload hashes by this signer for this slot
447
+ * (for equivocation detection).
448
+ */ async tryAddCheckpointAttestation(attestation) {
449
+ const slotNumber = attestation.payload.header.slotNumber;
450
+ const sender = attestation.getSender();
451
+ if (!sender) {
452
+ return {
453
+ added: false,
454
+ alreadyExists: false,
455
+ count: 0
456
+ };
457
+ }
458
+ const signerAddress = sender.toString();
459
+ const slotSignerKey = this.getSlotSignerKey(slotNumber, signerAddress);
460
+ const payloadHash = attestation.getPayloadHash();
461
+ return await this.store.transactionAsync(async ()=>{
462
+ if (await this.multimapHasValue(this.attestationHashesPerSlotAndSigner, slotSignerKey, payloadHash)) {
463
+ const count = await this.attestationHashesPerSlotAndSigner.getValueCountAsync(slotSignerKey);
464
+ return {
465
+ added: false,
466
+ alreadyExists: true,
467
+ count
468
+ };
469
+ }
470
+ const signerAttestationCount = await this.attestationHashesPerSlotAndSigner.getValueCountAsync(slotSignerKey);
471
+ if (signerAttestationCount >= MAX_ATTESTATIONS_PER_SLOT_AND_SIGNER) {
472
+ this.log.debug(`Rejecting attestation: signer ${signerAddress} exceeded per-slot cap for slot ${slotNumber}`, {
473
+ slotNumber,
474
+ signerAddress,
475
+ archive: attestation.archive.toString(),
476
+ payloadHash,
477
+ signerAttestationCount
478
+ });
479
+ return {
480
+ added: false,
481
+ alreadyExists: false,
482
+ count: signerAttestationCount
483
+ };
484
+ }
485
+ // Track the new payload hash for equivocation detection.
486
+ await this.attestationHashesPerSlotAndSigner.set(slotSignerKey, payloadHash);
487
+ // Only the first distinct payload at (slot, signer) is stored; later
488
+ // equivocations are detected via the multimap but their bytes are not retained.
489
+ const alreadyHasStored = await this.attestationPerSlotAndSigner.hasAsync(slotSignerKey);
490
+ if (!alreadyHasStored) {
491
+ await this.attestationPerSlotAndSigner.set(slotSignerKey, attestation.toBuffer());
492
+ this.metrics.trackMempoolItemAdded(slotSignerKey);
493
+ }
494
+ this.log.debug(`Added checkpoint attestation for slot ${slotNumber} from ${signerAddress}`, {
495
+ signature: attestation.signature.toString(),
496
+ slotNumber,
497
+ address: signerAddress,
498
+ archive: attestation.archive.toString(),
499
+ payloadHash,
500
+ stored: !alreadyHasStored
501
+ });
502
+ return {
503
+ added: true,
504
+ alreadyExists: false,
505
+ count: signerAttestationCount + 1
506
+ };
507
+ });
508
+ }
509
+ }
510
+ /** Creates an AttestationPool backed by a temporary store for testing. */ export async function createTestAttestationPool(telemetry) {
511
+ const { openTmpStore } = await import('@aztec/kv-store/lmdb-v2');
512
+ const store = await openTmpStore('test-attestation-pool');
513
+ return new AttestationPool(store, telemetry);
514
+ }
@@ -1,3 +1,3 @@
1
- import type { AttestationPool } from './attestation_pool.js';
1
+ import { type AttestationPool } from './attestation_pool.js';
2
2
  export declare function describeAttestationPool(getAttestationPool: () => AttestationPool): void;
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb25fcG9vbF90ZXN0X3N1aXRlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWVtX3Bvb2xzL2F0dGVzdGF0aW9uX3Bvb2wvYXR0ZXN0YXRpb25fcG9vbF90ZXN0X3N1aXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBTTdELHdCQUFnQix1QkFBdUIsQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsUUEwV2hGIn0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb25fcG9vbF90ZXN0X3N1aXRlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWVtX3Bvb2xzL2F0dGVzdGF0aW9uX3Bvb2wvYXR0ZXN0YXRpb25fcG9vbF90ZXN0X3N1aXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE9BQU8sRUFDTCxLQUFLLGVBQWUsRUFHckIsTUFBTSx1QkFBdUIsQ0FBQztBQUsvQix3QkFBZ0IsdUJBQXVCLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLFFBbTBCaEYifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"attestation_pool_test_suite.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/attestation_pool_test_suite.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAM7D,wBAAgB,uBAAuB,CAAC,kBAAkB,EAAE,MAAM,eAAe,QA0WhF"}
1
+ {"version":3,"file":"attestation_pool_test_suite.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/attestation_pool_test_suite.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,uBAAuB,CAAC;AAK/B,wBAAgB,uBAAuB,CAAC,kBAAkB,EAAE,MAAM,eAAe,QAm0BhF"}