@aztec/p2p 3.0.3 → 3.9.9-nightly.20260312

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 (552) hide show
  1. package/dest/bootstrap/bootstrap.d.ts +4 -3
  2. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  3. package/dest/bootstrap/bootstrap.js +4 -4
  4. package/dest/client/factory.d.ts +10 -10
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +50 -19
  7. package/dest/client/interface.d.ts +61 -35
  8. package/dest/client/interface.d.ts.map +1 -1
  9. package/dest/client/p2p_client.d.ts +47 -60
  10. package/dest/client/p2p_client.d.ts.map +1 -1
  11. package/dest/client/p2p_client.js +602 -333
  12. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +2 -0
  13. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +1 -0
  14. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +304 -0
  15. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +73 -0
  16. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +1 -0
  17. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +8 -0
  18. package/dest/config.d.ts +60 -17
  19. package/dest/config.d.ts.map +1 -1
  20. package/dest/config.js +104 -44
  21. package/dest/errors/tx-pool.error.d.ts +8 -0
  22. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  23. package/dest/errors/tx-pool.error.js +9 -0
  24. package/dest/index.d.ts +2 -1
  25. package/dest/index.d.ts.map +1 -1
  26. package/dest/index.js +1 -0
  27. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +111 -76
  28. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  29. package/dest/mem_pools/attestation_pool/attestation_pool.js +441 -3
  30. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  31. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  32. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +527 -287
  33. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  34. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  35. package/dest/mem_pools/attestation_pool/index.js +1 -2
  36. package/dest/mem_pools/attestation_pool/mocks.d.ts +9 -6
  37. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  38. package/dest/mem_pools/attestation_pool/mocks.js +16 -12
  39. package/dest/mem_pools/index.d.ts +3 -2
  40. package/dest/mem_pools/index.d.ts.map +1 -1
  41. package/dest/mem_pools/index.js +1 -1
  42. package/dest/mem_pools/instrumentation.d.ts +7 -1
  43. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  44. package/dest/mem_pools/instrumentation.js +31 -13
  45. package/dest/mem_pools/interface.d.ts +6 -7
  46. package/dest/mem_pools/interface.d.ts.map +1 -1
  47. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +35 -26
  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 +313 -334
  50. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +32 -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 +112 -0
  53. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +157 -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 +52 -0
  56. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +16 -0
  57. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  58. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +122 -0
  59. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +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 +78 -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/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
  69. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
  70. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
  71. package/dest/mem_pools/tx_pool/index.d.ts +1 -2
  72. package/dest/mem_pools/tx_pool/index.d.ts.map +1 -1
  73. package/dest/mem_pools/tx_pool/index.js +0 -1
  74. package/dest/mem_pools/tx_pool/priority.d.ts +5 -1
  75. package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
  76. package/dest/mem_pools/tx_pool/priority.js +8 -3
  77. package/dest/mem_pools/tx_pool/tx_pool.d.ts +8 -4
  78. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
  79. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
  80. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  81. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +28 -21
  82. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  83. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  84. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  85. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  86. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  87. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  88. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  89. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  90. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  91. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  92. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  93. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  94. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  95. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  96. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +93 -0
  97. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  98. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  99. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
  100. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  101. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  102. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  103. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +180 -0
  104. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  105. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  106. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  107. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  108. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
  109. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  110. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  111. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  112. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  113. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  114. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
  115. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  116. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  117. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +75 -0
  118. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  119. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  120. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  121. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  122. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  123. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  124. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  125. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  126. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  127. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +211 -0
  128. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  129. package/dest/mem_pools/tx_pool_v2/interfaces.js +9 -0
  130. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +128 -0
  131. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  132. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +210 -0
  133. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  134. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  135. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  136. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  137. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  138. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +354 -0
  139. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +60 -0
  140. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  141. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +161 -0
  142. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +77 -0
  143. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  144. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +899 -0
  145. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +4 -4
  146. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  147. package/dest/msg_validators/attestation_validator/attestation_validator.js +51 -18
  148. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +7 -7
  149. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  150. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +22 -13
  151. package/dest/msg_validators/clock_tolerance.d.ts +21 -0
  152. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
  153. package/dest/msg_validators/clock_tolerance.js +37 -0
  154. package/dest/msg_validators/index.d.ts +2 -2
  155. package/dest/msg_validators/index.d.ts.map +1 -1
  156. package/dest/msg_validators/index.js +1 -1
  157. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +11 -0
  158. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
  159. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +14 -0
  160. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +11 -0
  161. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
  162. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +20 -0
  163. package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
  164. package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
  165. package/dest/msg_validators/proposal_validator/index.js +3 -0
  166. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +18 -0
  167. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
  168. package/dest/msg_validators/proposal_validator/proposal_validator.js +116 -0
  169. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  170. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  171. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  172. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  173. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  174. package/dest/msg_validators/tx_validator/allowed_public_setup.js +24 -20
  175. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  176. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  177. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  178. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  179. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  180. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  181. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +20 -6
  182. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  183. package/dest/msg_validators/tx_validator/block_header_validator.js +4 -3
  184. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  185. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  186. package/dest/msg_validators/tx_validator/data_validator.js +4 -1
  187. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -4
  188. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  189. package/dest/msg_validators/tx_validator/double_spend_validator.js +7 -6
  190. package/dest/msg_validators/tx_validator/factory.d.ts +129 -5
  191. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  192. package/dest/msg_validators/tx_validator/factory.js +235 -57
  193. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
  194. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
  195. package/dest/msg_validators/tx_validator/fee_payer_balance.js +24 -0
  196. package/dest/msg_validators/tx_validator/gas_validator.d.ts +68 -3
  197. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  198. package/dest/msg_validators/tx_validator/gas_validator.js +114 -52
  199. package/dest/msg_validators/tx_validator/index.d.ts +4 -1
  200. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  201. package/dest/msg_validators/tx_validator/index.js +3 -0
  202. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -2
  203. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  204. package/dest/msg_validators/tx_validator/metadata_validator.js +2 -2
  205. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  206. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  207. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  208. package/dest/msg_validators/tx_validator/phases_validator.d.ts +4 -3
  209. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  210. package/dest/msg_validators/tx_validator/phases_validator.js +47 -26
  211. package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
  212. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
  213. package/dest/msg_validators/tx_validator/size_validator.js +23 -0
  214. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +22 -5
  215. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  216. package/dest/msg_validators/tx_validator/timestamp_validator.js +8 -8
  217. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  218. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  219. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  220. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  221. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  222. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
  223. package/dest/services/data_store.d.ts +1 -1
  224. package/dest/services/data_store.d.ts.map +1 -1
  225. package/dest/services/data_store.js +10 -6
  226. package/dest/services/discv5/discV5_service.js +1 -1
  227. package/dest/services/dummy_service.d.ts +28 -4
  228. package/dest/services/dummy_service.d.ts.map +1 -1
  229. package/dest/services/dummy_service.js +49 -1
  230. package/dest/services/encoding.d.ts +3 -3
  231. package/dest/services/encoding.d.ts.map +1 -1
  232. package/dest/services/encoding.js +16 -14
  233. package/dest/services/gossipsub/index.d.ts +3 -0
  234. package/dest/services/gossipsub/index.d.ts.map +1 -0
  235. package/dest/services/gossipsub/index.js +2 -0
  236. package/dest/services/gossipsub/scoring.d.ts +21 -3
  237. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  238. package/dest/services/gossipsub/scoring.js +24 -7
  239. package/dest/services/gossipsub/topic_score_params.d.ts +173 -0
  240. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  241. package/dest/services/gossipsub/topic_score_params.js +346 -0
  242. package/dest/services/index.d.ts +2 -1
  243. package/dest/services/index.d.ts.map +1 -1
  244. package/dest/services/index.js +1 -0
  245. package/dest/services/libp2p/instrumentation.d.ts +1 -1
  246. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  247. package/dest/services/libp2p/instrumentation.js +30 -72
  248. package/dest/services/libp2p/libp2p_service.d.ts +117 -42
  249. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  250. package/dest/services/libp2p/libp2p_service.js +1038 -381
  251. package/dest/services/peer-manager/metrics.d.ts +7 -2
  252. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  253. package/dest/services/peer-manager/metrics.js +33 -21
  254. package/dest/services/peer-manager/peer_manager.d.ts +2 -2
  255. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  256. package/dest/services/peer-manager/peer_manager.js +2 -10
  257. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  258. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  259. package/dest/services/peer-manager/peer_scoring.js +32 -6
  260. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +48 -0
  261. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  262. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +562 -0
  263. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  264. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  265. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  266. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +46 -0
  267. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  268. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  269. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +34 -0
  270. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  271. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +130 -0
  272. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +54 -0
  273. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  274. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +139 -0
  275. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
  276. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  277. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
  278. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +22 -3
  279. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  280. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +63 -4
  281. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -1
  282. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  283. package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
  284. package/dest/services/reqresp/constants.d.ts +12 -0
  285. package/dest/services/reqresp/constants.d.ts.map +1 -0
  286. package/dest/services/reqresp/constants.js +7 -0
  287. package/dest/services/reqresp/interface.d.ts +12 -1
  288. package/dest/services/reqresp/interface.d.ts.map +1 -1
  289. package/dest/services/reqresp/interface.js +15 -1
  290. package/dest/services/reqresp/metrics.d.ts +6 -5
  291. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  292. package/dest/services/reqresp/metrics.js +17 -21
  293. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
  294. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  295. package/dest/services/reqresp/protocols/block_txs/bitvector.js +12 -0
  296. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  297. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  298. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +27 -9
  299. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +29 -6
  300. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  301. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +59 -13
  302. package/dest/services/reqresp/protocols/status.d.ts +1 -1
  303. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  304. package/dest/services/reqresp/protocols/status.js +4 -1
  305. package/dest/services/reqresp/protocols/tx.d.ts +8 -3
  306. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  307. package/dest/services/reqresp/protocols/tx.js +20 -0
  308. package/dest/services/reqresp/reqresp.d.ts +6 -1
  309. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  310. package/dest/services/reqresp/reqresp.js +471 -50
  311. package/dest/services/service.d.ts +56 -4
  312. package/dest/services/service.d.ts.map +1 -1
  313. package/dest/services/tx_collection/config.d.ts +22 -1
  314. package/dest/services/tx_collection/config.d.ts.map +1 -1
  315. package/dest/services/tx_collection/config.js +55 -1
  316. package/dest/services/tx_collection/fast_tx_collection.d.ts +7 -4
  317. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  318. package/dest/services/tx_collection/fast_tx_collection.js +71 -44
  319. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  320. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  321. package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
  322. package/dest/services/tx_collection/file_store_tx_source.d.ts +37 -0
  323. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  324. package/dest/services/tx_collection/file_store_tx_source.js +90 -0
  325. package/dest/services/tx_collection/index.d.ts +3 -1
  326. package/dest/services/tx_collection/index.d.ts.map +1 -1
  327. package/dest/services/tx_collection/index.js +2 -0
  328. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  329. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  330. package/dest/services/tx_collection/instrumentation.js +11 -13
  331. package/dest/services/tx_collection/missing_txs_tracker.d.ts +32 -0
  332. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +1 -0
  333. package/dest/services/tx_collection/missing_txs_tracker.js +27 -0
  334. package/dest/services/tx_collection/proposal_tx_collector.d.ts +49 -0
  335. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
  336. package/dest/services/tx_collection/proposal_tx_collector.js +50 -0
  337. package/dest/services/tx_collection/slow_tx_collection.d.ts +9 -5
  338. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  339. package/dest/services/tx_collection/slow_tx_collection.js +60 -26
  340. package/dest/services/tx_collection/tx_collection.d.ts +29 -16
  341. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  342. package/dest/services/tx_collection/tx_collection.js +79 -7
  343. package/dest/services/tx_collection/tx_collection_sink.d.ts +18 -8
  344. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  345. package/dest/services/tx_collection/tx_collection_sink.js +26 -29
  346. package/dest/services/tx_collection/tx_source.d.ts +8 -3
  347. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  348. package/dest/services/tx_collection/tx_source.js +19 -2
  349. package/dest/services/tx_file_store/config.d.ts +16 -0
  350. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  351. package/dest/services/tx_file_store/config.js +22 -0
  352. package/dest/services/tx_file_store/index.d.ts +4 -0
  353. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  354. package/dest/services/tx_file_store/index.js +3 -0
  355. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  356. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  357. package/dest/services/tx_file_store/instrumentation.js +29 -0
  358. package/dest/services/tx_file_store/tx_file_store.d.ts +48 -0
  359. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  360. package/dest/services/tx_file_store/tx_file_store.js +152 -0
  361. package/dest/services/tx_provider.d.ts +7 -6
  362. package/dest/services/tx_provider.d.ts.map +1 -1
  363. package/dest/services/tx_provider.js +20 -10
  364. package/dest/services/tx_provider_instrumentation.d.ts +5 -2
  365. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  366. package/dest/services/tx_provider_instrumentation.js +14 -14
  367. package/dest/test-helpers/index.d.ts +3 -1
  368. package/dest/test-helpers/index.d.ts.map +1 -1
  369. package/dest/test-helpers/index.js +2 -0
  370. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  371. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  372. package/dest/test-helpers/make-test-p2p-clients.js +1 -2
  373. package/dest/test-helpers/mock-pubsub.d.ts +30 -4
  374. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  375. package/dest/test-helpers/mock-pubsub.js +105 -4
  376. package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
  377. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  378. package/dest/test-helpers/reqresp-nodes.js +4 -3
  379. package/dest/test-helpers/test_tx_provider.d.ts +40 -0
  380. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  381. package/dest/test-helpers/test_tx_provider.js +41 -0
  382. package/dest/test-helpers/testbench-utils.d.ts +163 -0
  383. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  384. package/dest/test-helpers/testbench-utils.js +367 -0
  385. package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
  386. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  387. package/dest/testbench/p2p_client_testbench_worker.js +226 -130
  388. package/dest/testbench/worker_client_manager.d.ts +53 -6
  389. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  390. package/dest/testbench/worker_client_manager.js +230 -40
  391. package/dest/util.d.ts +2 -2
  392. package/dest/util.d.ts.map +1 -1
  393. package/package.json +16 -16
  394. package/src/bootstrap/bootstrap.ts +7 -4
  395. package/src/client/factory.ts +91 -43
  396. package/src/client/interface.ts +73 -36
  397. package/src/client/p2p_client.ts +259 -390
  398. package/src/client/test/tx_proposal_collector/README.md +227 -0
  399. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +345 -0
  400. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
  401. package/src/config.ts +161 -50
  402. package/src/errors/tx-pool.error.ts +12 -0
  403. package/src/index.ts +1 -0
  404. package/src/mem_pools/attestation_pool/attestation_pool.ts +510 -78
  405. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +612 -320
  406. package/src/mem_pools/attestation_pool/index.ts +9 -2
  407. package/src/mem_pools/attestation_pool/mocks.ts +20 -13
  408. package/src/mem_pools/index.ts +4 -1
  409. package/src/mem_pools/instrumentation.ts +39 -14
  410. package/src/mem_pools/interface.ts +5 -7
  411. package/src/mem_pools/tx_pool/README.md +270 -0
  412. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +361 -366
  413. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +132 -0
  414. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +208 -0
  415. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +162 -0
  416. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +104 -0
  417. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +93 -0
  418. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +106 -0
  419. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
  420. package/src/mem_pools/tx_pool/index.ts +0 -1
  421. package/src/mem_pools/tx_pool/priority.ts +10 -3
  422. package/src/mem_pools/tx_pool/tx_pool.ts +8 -3
  423. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +21 -14
  424. package/src/mem_pools/tx_pool_v2/README.md +283 -0
  425. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  426. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  427. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  428. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  429. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +121 -0
  430. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
  431. package/src/mem_pools/tx_pool_v2/eviction/index.ts +27 -0
  432. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +219 -0
  433. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  434. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  435. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
  436. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +99 -0
  437. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +32 -0
  438. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  439. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  440. package/src/mem_pools/tx_pool_v2/interfaces.ts +242 -0
  441. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +327 -0
  442. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  443. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +444 -0
  444. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +223 -0
  445. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1079 -0
  446. package/src/msg_validators/attestation_validator/attestation_validator.ts +36 -21
  447. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +21 -18
  448. package/src/msg_validators/clock_tolerance.ts +51 -0
  449. package/src/msg_validators/index.ts +1 -1
  450. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +20 -0
  451. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +26 -0
  452. package/src/msg_validators/proposal_validator/index.ts +3 -0
  453. package/src/msg_validators/proposal_validator/proposal_validator.ts +115 -0
  454. package/src/msg_validators/tx_validator/README.md +115 -0
  455. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +5 -5
  456. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  457. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  458. package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
  459. package/src/msg_validators/tx_validator/block_header_validator.ts +21 -8
  460. package/src/msg_validators/tx_validator/data_validator.ts +18 -6
  461. package/src/msg_validators/tx_validator/double_spend_validator.ts +15 -9
  462. package/src/msg_validators/tx_validator/factory.ts +385 -55
  463. package/src/msg_validators/tx_validator/fee_payer_balance.ts +44 -0
  464. package/src/msg_validators/tx_validator/gas_validator.ts +140 -55
  465. package/src/msg_validators/tx_validator/index.ts +3 -0
  466. package/src/msg_validators/tx_validator/metadata_validator.ts +18 -7
  467. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  468. package/src/msg_validators/tx_validator/phases_validator.ts +56 -29
  469. package/src/msg_validators/tx_validator/size_validator.ts +22 -0
  470. package/src/msg_validators/tx_validator/timestamp_validator.ts +29 -19
  471. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  472. package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
  473. package/src/services/data_store.ts +10 -7
  474. package/src/services/discv5/discV5_service.ts +1 -1
  475. package/src/services/dummy_service.ts +65 -2
  476. package/src/services/encoding.ts +13 -12
  477. package/src/services/gossipsub/README.md +641 -0
  478. package/src/services/gossipsub/index.ts +2 -0
  479. package/src/services/gossipsub/scoring.ts +29 -5
  480. package/src/services/gossipsub/topic_score_params.ts +487 -0
  481. package/src/services/index.ts +1 -0
  482. package/src/services/libp2p/instrumentation.ts +32 -73
  483. package/src/services/libp2p/libp2p_service.ts +732 -387
  484. package/src/services/peer-manager/metrics.ts +39 -21
  485. package/src/services/peer-manager/peer_manager.ts +3 -2
  486. package/src/services/peer-manager/peer_scoring.ts +28 -4
  487. package/src/services/reqresp/batch-tx-requester/README.md +305 -0
  488. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +706 -0
  489. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  490. package/src/services/reqresp/batch-tx-requester/interface.ts +53 -0
  491. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +161 -0
  492. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +205 -0
  493. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
  494. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +65 -4
  495. package/src/services/reqresp/connection-sampler/connection_sampler.ts +19 -1
  496. package/src/services/reqresp/constants.ts +14 -0
  497. package/src/services/reqresp/interface.ts +29 -1
  498. package/src/services/reqresp/metrics.ts +36 -27
  499. package/src/services/reqresp/protocols/block_txs/bitvector.ts +16 -0
  500. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +35 -12
  501. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +74 -9
  502. package/src/services/reqresp/protocols/status.ts +7 -4
  503. package/src/services/reqresp/protocols/tx.ts +23 -2
  504. package/src/services/reqresp/reqresp.ts +79 -22
  505. package/src/services/service.ts +73 -5
  506. package/src/services/tx_collection/config.ts +83 -1
  507. package/src/services/tx_collection/fast_tx_collection.ts +93 -47
  508. package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
  509. package/src/services/tx_collection/file_store_tx_source.ts +117 -0
  510. package/src/services/tx_collection/index.ts +6 -0
  511. package/src/services/tx_collection/instrumentation.ts +11 -13
  512. package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
  513. package/src/services/tx_collection/proposal_tx_collector.ts +113 -0
  514. package/src/services/tx_collection/slow_tx_collection.ts +68 -35
  515. package/src/services/tx_collection/tx_collection.ts +121 -24
  516. package/src/services/tx_collection/tx_collection_sink.ts +30 -34
  517. package/src/services/tx_collection/tx_source.ts +22 -3
  518. package/src/services/tx_file_store/config.ts +37 -0
  519. package/src/services/tx_file_store/index.ts +3 -0
  520. package/src/services/tx_file_store/instrumentation.ts +36 -0
  521. package/src/services/tx_file_store/tx_file_store.ts +175 -0
  522. package/src/services/tx_provider.ts +29 -13
  523. package/src/services/tx_provider_instrumentation.ts +24 -14
  524. package/src/test-helpers/index.ts +2 -0
  525. package/src/test-helpers/make-test-p2p-clients.ts +3 -5
  526. package/src/test-helpers/mock-pubsub.ts +147 -10
  527. package/src/test-helpers/reqresp-nodes.ts +5 -7
  528. package/src/test-helpers/test_tx_provider.ts +64 -0
  529. package/src/test-helpers/testbench-utils.ts +431 -0
  530. package/src/testbench/p2p_client_testbench_worker.ts +351 -128
  531. package/src/testbench/worker_client_manager.ts +311 -42
  532. package/src/util.ts +7 -1
  533. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -37
  534. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  535. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -213
  536. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -30
  537. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  538. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -219
  539. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +0 -81
  540. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +0 -1
  541. package/dest/mem_pools/tx_pool/memory_tx_pool.js +0 -239
  542. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -12
  543. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
  544. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +0 -82
  545. package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
  546. package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
  547. package/dest/msg_validators/block_proposal_validator/index.js +0 -1
  548. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -298
  549. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -287
  550. package/src/mem_pools/tx_pool/memory_tx_pool.ts +0 -285
  551. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -97
  552. package/src/msg_validators/block_proposal_validator/index.ts +0 -1
package/dest/config.js CHANGED
@@ -1,13 +1,30 @@
1
- import { booleanConfigHelper, floatConfigHelper, getConfigFromMappings, getDefaultConfig, numberConfigHelper, pickConfigMappings, secretStringConfigHelper } from '@aztec/foundation/config';
1
+ import { bigintConfigHelper, booleanConfigHelper, getConfigFromMappings, getDefaultConfig, numberConfigHelper, percentageConfigHelper, pickConfigMappings, secretStringConfigHelper } from '@aztec/foundation/config';
2
2
  import { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import { dataConfigMappings } from '@aztec/kv-store/config';
4
4
  import { FunctionSelector } from '@aztec/stdlib/abi/function-selector';
5
5
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
6
- import { chainConfigMappings } from '@aztec/stdlib/config';
6
+ import { chainConfigMappings, sharedSequencerConfigMappings } from '@aztec/stdlib/config';
7
+ import { batchTxRequesterConfigMappings } from './services/reqresp/batch-tx-requester/config.js';
7
8
  import { p2pReqRespConfigMappings } from './services/reqresp/config.js';
8
9
  import { txCollectionConfigMappings } from './services/tx_collection/config.js';
10
+ import { txFileStoreConfigMappings } from './services/tx_file_store/config.js';
9
11
  export const DEFAULT_P2P_PORT = 40400;
10
12
  export const p2pConfigMappings = {
13
+ validateMaxTxsPerBlock: {
14
+ env: 'VALIDATOR_MAX_TX_PER_BLOCK',
15
+ description: 'Maximum transactions per block for validation. Overrides maxTxsPerBlock for gossip validation when set.',
16
+ parseEnv: (val)=>val ? parseInt(val, 10) : undefined
17
+ },
18
+ validateMaxL2BlockGas: {
19
+ env: 'VALIDATOR_MAX_L2_BLOCK_GAS',
20
+ description: 'Maximum L2 gas per block for validation. When set, txs exceeding this limit are rejected.',
21
+ parseEnv: (val)=>val ? parseInt(val, 10) : undefined
22
+ },
23
+ validateMaxDABlockGas: {
24
+ env: 'VALIDATOR_MAX_DA_BLOCK_GAS',
25
+ description: 'Maximum DA gas per block for validation. When set, txs exceeding this limit are rejected.',
26
+ parseEnv: (val)=>val ? parseInt(val, 10) : undefined
27
+ },
11
28
  p2pEnabled: {
12
29
  env: 'P2P_ENABLED',
13
30
  description: 'A flag dictating whether the P2P subsystem should be enabled.',
@@ -23,6 +40,11 @@ export const p2pConfigMappings = {
23
40
  description: 'The frequency in which to check for new L2 blocks.',
24
41
  ...numberConfigHelper(100)
25
42
  },
43
+ slotCheckIntervalMS: {
44
+ env: 'P2P_SLOT_CHECK_INTERVAL_MS',
45
+ description: 'The frequency in which to check for new L2 slots.',
46
+ ...numberConfigHelper(1000)
47
+ },
26
48
  debugDisableColocationPenalty: {
27
49
  env: 'DEBUG_P2P_DISABLE_COLOCATION_PENALTY',
28
50
  description: 'DEBUG: Disable colocation penalty - NEVER set to true in production',
@@ -199,21 +221,18 @@ export const p2pConfigMappings = {
199
221
  parseEnv: (val)=>val ? +val : undefined,
200
222
  description: 'The maximum possible size of the P2P DB in KB. Overwrites the general dataStoreMapSizeKb.'
201
223
  },
202
- txPublicSetupAllowList: {
224
+ txPublicSetupAllowListExtend: {
203
225
  env: 'TX_PUBLIC_SETUP_ALLOWLIST',
204
226
  parseEnv: (val)=>parseAllowList(val),
205
- description: 'The list of functions calls allowed to run in setup',
206
- printDefault: ()=>'AuthRegistry, FeeJuice.increase_public_balance, Token.increase_public_balance, FPC.prepare_fee'
207
- },
208
- maxTxPoolSize: {
209
- env: 'P2P_MAX_TX_POOL_SIZE',
210
- description: 'The maximum cumulative tx size of pending txs (in bytes) before evicting lower priority txs.',
211
- ...numberConfigHelper(100_000_000)
212
- },
213
- txPoolOverflowFactor: {
214
- env: 'P2P_TX_POOL_OVERFLOW_FACTOR',
215
- description: 'How much the tx pool can overflow before it starts evicting txs. Must be greater than 1',
216
- ...floatConfigHelper(1.1)
227
+ description: 'Additional entries to extend the default setup allow list. Format: I:address:selector[:flags],C:classId:selector[:flags]. Flags: os (onlySelf), rn (rejectNullMsgSender), cl=N (calldataLength), joined with +.',
228
+ printDefault: ()=>'Default: AuthRegistry._set_authorized, AuthRegistry.set_authorized, FeeJuice._increase_public_balance'
229
+ },
230
+ maxPendingTxCount: {
231
+ env: 'P2P_MAX_PENDING_TX_COUNT',
232
+ description: 'The maximum number of pending txs before evicting lower priority txs.',
233
+ // Worst case scenario: Uncompressed public/private tx is ~ 156kb
234
+ // This implies we are using ~156MB of memory for pending pool
235
+ ...numberConfigHelper(1_000)
217
236
  },
218
237
  seenMessageCacheSize: {
219
238
  env: 'P2P_SEEN_MSG_CACHE_SIZE',
@@ -243,7 +262,7 @@ export const p2pConfigMappings = {
243
262
  dropTransactionsProbability: {
244
263
  env: 'P2P_DROP_TX_CHANCE',
245
264
  description: 'The probability that a transaction is discarded (0 - 1). - For testing purposes only',
246
- ...floatConfigHelper(0)
265
+ ...percentageConfigHelper(0)
247
266
  },
248
267
  disableTransactions: {
249
268
  env: 'TRANSACTIONS_DISABLED',
@@ -265,9 +284,26 @@ export const p2pConfigMappings = {
265
284
  description: 'Whether to run in fisherman mode: validates all proposals and attestations but does not broadcast attestations or participate in consensus.',
266
285
  ...booleanConfigHelper(false)
267
286
  },
287
+ broadcastEquivocatedProposals: {
288
+ description: 'Broadcast block proposals even when a conflicting proposal for the same slot already exists in the pool (for testing purposes only).',
289
+ ...booleanConfigHelper(false)
290
+ },
291
+ minTxPoolAgeMs: {
292
+ env: 'P2P_MIN_TX_POOL_AGE_MS',
293
+ description: 'Minimum age (ms) a transaction must have been in the pool before it is eligible for block building.',
294
+ ...numberConfigHelper(2_000)
295
+ },
296
+ priceBumpPercentage: {
297
+ env: 'P2P_RPC_PRICE_BUMP_PERCENTAGE',
298
+ description: 'Minimum percentage fee increase required to replace an existing tx via RPC. Even at 0%, replacement still requires paying at least 1 unit more.',
299
+ ...bigintConfigHelper(10n)
300
+ },
301
+ ...sharedSequencerConfigMappings,
268
302
  ...p2pReqRespConfigMappings,
303
+ ...batchTxRequesterConfigMappings,
269
304
  ...chainConfigMappings,
270
- ...txCollectionConfigMappings
305
+ ...txCollectionConfigMappings,
306
+ ...txFileStoreConfigMappings
271
307
  };
272
308
  /**
273
309
  * Gets the config values for p2p client from environment variables.
@@ -296,13 +332,37 @@ export const bootnodeConfigMappings = pickConfigMappings({
296
332
  ...dataConfigMappings,
297
333
  ...chainConfigMappings
298
334
  }, bootnodeConfigKeys);
335
+ /**
336
+ * Parses a `+`-separated flags string into validation properties for an allow list entry.
337
+ * Supported flags: `os` (onlySelf), `rn` (rejectNullMsgSender), `cl=N` (calldataLength).
338
+ */ function parseFlags(flags, entry) {
339
+ const result = {};
340
+ for (const flag of flags.split('+')){
341
+ if (flag === 'os') {
342
+ result.onlySelf = true;
343
+ } else if (flag === 'rn') {
344
+ result.rejectNullMsgSender = true;
345
+ } else if (flag.startsWith('cl=')) {
346
+ const n = parseInt(flag.slice(3), 10);
347
+ if (isNaN(n) || n < 0) {
348
+ throw new Error(`Invalid allow list entry "${entry}": invalid calldataLength in flag "${flag}". Expected a non-negative integer.`);
349
+ }
350
+ result.calldataLength = n;
351
+ } else {
352
+ throw new Error(`Invalid allow list entry "${entry}": unknown flag "${flag}". Supported flags: os, rn, cl=N.`);
353
+ }
354
+ }
355
+ return result;
356
+ }
299
357
  /**
300
358
  * Parses a string to a list of allowed elements.
301
- * Each encoded is expected to be of one of the following formats
302
- * `I:${address}`
303
- * `I:${address}:${selector}`
304
- * `C:${classId}`
305
- * `C:${classId}:${selector}`
359
+ * Each entry is expected to be of one of the following formats:
360
+ * `I:${address}:${selector}` — instance (contract address) with function selector
361
+ * `C:${classId}:${selector}` — class with function selector
362
+ *
363
+ * An optional flags segment can be appended after the selector:
364
+ * `I:${address}:${selector}:${flags}` or `C:${classId}:${selector}:${flags}`
365
+ * where flags is a `+`-separated list of: `os` (onlySelf), `rn` (rejectNullMsgSender), `cl=N` (calldataLength).
306
366
  *
307
367
  * @param value The string to parse
308
368
  * @returns A list of allowed elements
@@ -312,30 +372,30 @@ export const bootnodeConfigMappings = pickConfigMappings({
312
372
  return entries;
313
373
  }
314
374
  for (const val of value.split(',')){
315
- const [typeString, identifierString, selectorString] = val.split(':');
316
- const selector = selectorString !== undefined ? FunctionSelector.fromString(selectorString) : undefined;
375
+ const trimmed = val.trim();
376
+ if (!trimmed) {
377
+ continue;
378
+ }
379
+ const [typeString, identifierString, selectorString, flagsString] = trimmed.split(':');
380
+ if (!selectorString) {
381
+ throw new Error(`Invalid allow list entry "${trimmed}": selector is required. Expected format: I:address:selector or C:classId:selector`);
382
+ }
383
+ const selector = FunctionSelector.fromString(selectorString);
384
+ const flags = flagsString ? parseFlags(flagsString, trimmed) : {};
317
385
  if (typeString === 'I') {
318
- if (selector) {
319
- entries.push({
320
- address: AztecAddress.fromString(identifierString),
321
- selector
322
- });
323
- } else {
324
- entries.push({
325
- address: AztecAddress.fromString(identifierString)
326
- });
327
- }
386
+ entries.push({
387
+ address: AztecAddress.fromString(identifierString),
388
+ selector,
389
+ ...flags
390
+ });
328
391
  } else if (typeString === 'C') {
329
- if (selector) {
330
- entries.push({
331
- classId: Fr.fromHexString(identifierString),
332
- selector
333
- });
334
- } else {
335
- entries.push({
336
- classId: Fr.fromHexString(identifierString)
337
- });
338
- }
392
+ entries.push({
393
+ classId: Fr.fromHexString(identifierString),
394
+ selector,
395
+ ...flags
396
+ });
397
+ } else {
398
+ throw new Error(`Invalid allow list entry "${trimmed}": unknown type "${typeString}". Expected "I" (instance) or "C" (class).`);
339
399
  }
340
400
  }
341
401
  return entries;
@@ -0,0 +1,8 @@
1
+ import type { TxPoolRejectionError } from '../mem_pools/tx_pool_v2/eviction/interfaces.js';
2
+ /** Error thrown when a transaction is not added to the mempool. */
3
+ export declare class TxPoolError extends Error {
4
+ readonly reason: TxPoolRejectionError;
5
+ readonly data: TxPoolRejectionError;
6
+ constructor(reason: TxPoolRejectionError);
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHgtcG9vbC5lcnJvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Vycm9ycy90eC1wb29sLmVycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFM0YsbUVBQW1FO0FBQ25FLHFCQUFhLFdBQVksU0FBUSxLQUFLO2FBR1IsTUFBTSxFQUFFLG9CQUFvQjtJQUZ4RCxTQUFnQixJQUFJLEVBQUUsb0JBQW9CLENBQUM7SUFFM0MsWUFBNEIsTUFBTSxFQUFFLG9CQUFvQixFQUl2RDtDQUNGIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx-pool.error.d.ts","sourceRoot":"","sources":["../../src/errors/tx-pool.error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AAE3F,mEAAmE;AACnE,qBAAa,WAAY,SAAQ,KAAK;aAGR,MAAM,EAAE,oBAAoB;IAFxD,SAAgB,IAAI,EAAE,oBAAoB,CAAC;IAE3C,YAA4B,MAAM,EAAE,oBAAoB,EAIvD;CACF"}
@@ -0,0 +1,9 @@
1
+ /** Error thrown when a transaction is not added to the mempool. */ export class TxPoolError extends Error {
2
+ reason;
3
+ data;
4
+ constructor(reason){
5
+ super(reason.message), this.reason = reason;
6
+ this.name = 'TxPoolError';
7
+ this.data = reason;
8
+ }
9
+ }
package/dest/index.d.ts CHANGED
@@ -6,6 +6,7 @@ export * from './enr/index.js';
6
6
  export * from './config.js';
7
7
  export * from './mem_pools/attestation_pool/index.js';
8
8
  export * from './mem_pools/tx_pool/index.js';
9
+ export * from './mem_pools/tx_pool_v2/index.js';
9
10
  export * from './msg_validators/index.js';
10
11
  export * from './services/index.js';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFaEQsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxxQkFBcUIsQ0FBQyJ9
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFaEQsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHFCQUFxQixDQUFDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,uCAAuC,CAAC;AACtD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,uCAAuC,CAAC;AACtD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC"}
package/dest/index.js CHANGED
@@ -5,5 +5,6 @@ export * from './enr/index.js';
5
5
  export * from './config.js';
6
6
  export * from './mem_pools/attestation_pool/index.js';
7
7
  export * from './mem_pools/tx_pool/index.js';
8
+ export * from './mem_pools/tx_pool_v2/index.js';
8
9
  export * from './msg_validators/index.js';
9
10
  export * from './services/index.js';
@@ -1,117 +1,152 @@
1
- import type { SlotNumber } from '@aztec/foundation/branded-types';
2
- import type { BlockAttestation, BlockProposal } from '@aztec/stdlib/p2p';
1
+ import { SlotNumber } from '@aztec/foundation/branded-types';
2
+ import type { AztecAsyncKVStore } from '@aztec/kv-store';
3
+ import { BlockProposal, CheckpointAttestation, type CheckpointProposalCore } from '@aztec/stdlib/p2p';
4
+ import { type TelemetryClient } from '@aztec/telemetry-client';
5
+ /** Result of trying to add an item (proposal or attestation) to the pool */
6
+ export type TryAddResult = {
7
+ /** Whether the item was added */
8
+ added: boolean;
9
+ /** Whether the exact item already existed */
10
+ alreadyExists: boolean;
11
+ /** Count of items for the position. Meaning varies by method:
12
+ * - tryAddBlockProposal: proposals at (slot, indexWithinCheckpoint)
13
+ * - tryAddCheckpointProposal: proposals at slot
14
+ * - tryAddCheckpointAttestation: attestations by this signer for this slot */
15
+ count: number;
16
+ };
17
+ export declare const MAX_CHECKPOINT_PROPOSALS_PER_SLOT = 5;
18
+ export declare const MAX_BLOCK_PROPOSALS_PER_POSITION = 3;
19
+ /** Maximum attestations a single signer can make per slot before being rejected. */
20
+ export declare const MAX_ATTESTATIONS_PER_SLOT_AND_SIGNER = 3;
21
+ /** Public API interface for attestation pools. Used for typing mocks and test implementations. */
22
+ export type AttestationPoolApi = Pick<AttestationPool, 'tryAddBlockProposal' | 'getBlockProposal' | 'tryAddCheckpointProposal' | 'getCheckpointProposal' | 'addOwnCheckpointAttestations' | 'tryAddCheckpointAttestation' | 'deleteOlderThan' | 'getCheckpointAttestationsForSlot' | 'getCheckpointAttestationsForSlotAndProposal' | 'hasBlockProposalsForSlot' | 'isEmpty'>;
3
23
  /**
4
- * An Attestation Pool contains attestations collected by a validator
24
+ * Pool for storing attestations and proposals collected by a validator.
5
25
  *
6
- * Attestations that are observed via the p2p network are stored for requests
26
+ * Attestations and proposals observed via the p2p network are stored for requests
7
27
  * from the validator to produce a block, or to serve to other peers.
8
28
  */
9
- export interface AttestationPool {
29
+ export declare class AttestationPool {
30
+ private store;
31
+ private log;
32
+ private metrics;
33
+ private checkpointAttestations;
34
+ private checkpointProposals;
35
+ private checkpointProposalsForSlot;
36
+ private blockProposals;
37
+ private blockProposalsForSlotAndIndex;
38
+ private checkpointAttestationsPerSlotAndSigner;
39
+ constructor(store: AztecAsyncKVStore, telemetry?: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
40
+ private poolStats;
41
+ /** Returns whether the pool is empty. */
42
+ isEmpty(): Promise<boolean>;
43
+ private getProposalKey;
44
+ private getAttestationKey;
45
+ /** Returns range bounds for querying all attestations for a given slot. */
46
+ private getAttestationKeyRangeForSlot;
47
+ /** Returns range bounds for querying all attestations for a given (slot, proposalId). */
48
+ private getAttestationKeyRangeForProposal;
49
+ /** Creates a key for the per-signer-per-slot attestation index. Uses padded slot for lexicographic ordering. */
50
+ private getSlotSignerKey;
51
+ /** Number of bits reserved for indexWithinCheckpoint in position keys. */
52
+ private static readonly INDEX_BITS;
53
+ /** Maximum indexWithinCheckpoint value (2^10 - 1 = 1023). */
54
+ private static readonly MAX_INDEX;
55
+ /** Creates a position key for block proposals: (slot << 10) | indexWithinCheckpoint. */
56
+ private getBlockPositionKey;
10
57
  /**
11
- * Adds new block proposal to the pool
58
+ * Attempts to add a block proposal to the pool.
59
+ *
60
+ * This method performs validation and addition in a single call:
61
+ * - Checks if the proposal already exists (returns alreadyExists: true if so)
62
+ * - Checks if the position has reached the proposal cap (returns added: false if so)
63
+ * - Adds the proposal if validation passes
64
+ *
65
+ * @param blockProposal - The block proposal to add
66
+ * @returns Result indicating whether the proposal was added and duplicate detection info
12
67
  */
13
- addBlockProposal(blockProposal: BlockProposal): Promise<void>;
68
+ tryAddBlockProposal(blockProposal: BlockProposal): Promise<TryAddResult>;
69
+ /** Gets the count of block proposals for a given position (slot, indexWithinCheckpoint). */
70
+ private getBlockProposalCountForPosition;
71
+ private addBlockProposal;
14
72
  /**
15
- * Get block proposal by it's ID
73
+ * Get block proposal by its ID.
16
74
  *
17
75
  * @param id - The ID of the block proposal to retrieve. The ID is proposal.payload.archive
18
76
  *
19
77
  * @return The block proposal if it exists, otherwise undefined.
20
78
  */
21
79
  getBlockProposal(id: string): Promise<BlockProposal | undefined>;
80
+ /** Checks if any block proposals exist for a given slot (at index 0). */
81
+ hasBlockProposalsForSlot(slot: SlotNumber): Promise<boolean>;
22
82
  /**
23
- * Check if a block proposal exists in the pool
83
+ * Attempts to add a checkpoint proposal to the pool.
24
84
  *
25
- * @param idOrProposal - The ID of the block proposal or the block proposal itself to check. The ID is proposal.payload.archive
85
+ * This method performs validation and addition in a single call:
86
+ * - Checks if the proposal already exists (returns alreadyExists: true if so)
87
+ * - Checks if the slot has reached the proposal cap (returns added: false if so)
88
+ * - Adds the proposal if validation passes
26
89
  *
27
- * @return True if the block proposal exists, false otherwise.
28
- */
29
- hasBlockProposal(idOrProposal: string | BlockProposal): Promise<boolean>;
30
- /**
31
- * AddAttestations
90
+ * Note: This method only handles the CheckpointProposalCore. If the original
91
+ * CheckpointProposal contains a lastBlock, the caller should extract it via
92
+ * getBlockProposal() and add it separately via tryAddBlockProposal().
32
93
  *
33
- * @param attestations - Attestations to add into the pool
94
+ * @param proposal - The checkpoint proposal core to add
95
+ * @returns Result indicating whether the proposal was added and duplicate detection info
34
96
  */
35
- addAttestations(attestations: BlockAttestation[]): Promise<void>;
97
+ tryAddCheckpointProposal(proposal: CheckpointProposalCore): Promise<TryAddResult>;
98
+ private addCheckpointProposal;
36
99
  /**
37
- * DeleteAttestation
100
+ * Get checkpoint proposal by its ID.
38
101
  *
39
- * @param attestations - Attestations to remove from the pool
40
- */
41
- deleteAttestations(attestations: BlockAttestation[]): Promise<void>;
42
- /**
43
- * Delete Attestations with a slot number smaller than the given slot
44
- *
45
- * Removes all attestations associated with a slot
102
+ * Returns a CheckpointProposalCore (without lastBlock info) since the lastBlock
103
+ * is extracted and stored separately as a BlockProposal when added.
46
104
  *
47
- * @param slot - The oldest slot to keep.
105
+ * @param id - The ID of the checkpoint proposal to retrieve (proposal.archive)
106
+ * @return The checkpoint proposal core if it exists, otherwise undefined.
48
107
  */
49
- deleteAttestationsOlderThan(slot: SlotNumber): Promise<void>;
108
+ getCheckpointProposal(id: string): Promise<CheckpointProposalCore | undefined>;
50
109
  /**
51
- * Delete Attestations for slot
52
- *
53
- * Removes all attestations associated with a slot
54
- *
55
- * @param slot - The slot to delete.
110
+ * Adds own checkpoint attestations to the pool.
111
+ * Skips validations on number of checkpoint attestations stored for the given slot.
56
112
  */
57
- deleteAttestationsForSlot(slot: SlotNumber): Promise<void>;
113
+ addOwnCheckpointAttestations(attestations: CheckpointAttestation[]): Promise<void>;
58
114
  /**
59
- * Delete Attestations for slot and proposal
60
- *
61
- * Removes all attestations associated with a slot and proposal
62
- *
63
- * @param slot - The slot to delete.
64
- * @param proposalId - The proposal to delete.
65
- */
66
- deleteAttestationsForSlotAndProposal(slot: SlotNumber, proposalId: string): Promise<void>;
67
- /**
68
- * Get all Attestations for all proposals for a given slot
69
- *
70
- * Retrieve all of the attestations observed pertaining to a given slot
115
+ * Get all checkpoint attestations for a given slot.
71
116
  *
72
117
  * @param slot - The slot to query
73
- * @return BlockAttestations
118
+ * @return CheckpointAttestations
74
119
  */
75
- getAttestationsForSlot(slot: SlotNumber): Promise<BlockAttestation[]>;
120
+ getCheckpointAttestationsForSlot(slot: SlotNumber): Promise<CheckpointAttestation[]>;
76
121
  /**
77
- * Get Attestations for slot and given proposal
78
- *
79
- * Retrieve all of the attestations observed pertaining to a given slot
122
+ * Get checkpoint attestations for slot and given proposal.
80
123
  *
81
124
  * @param slot - The slot to query
82
125
  * @param proposalId - The proposal to query
83
- * @return BlockAttestations
126
+ * @return CheckpointAttestations
84
127
  */
85
- getAttestationsForSlotAndProposal(slot: SlotNumber, proposalId: string): Promise<BlockAttestation[]>;
128
+ getCheckpointAttestationsForSlotAndProposal(slot: SlotNumber, proposalId: string): Promise<CheckpointAttestation[]>;
86
129
  /**
87
- * Check if a specific attestation exists in the pool
130
+ * Delete all pool data (attestations, proposals) older than the given slot.
88
131
  *
89
- * @param attestation - The attestation to check
90
- * @return True if the attestation exists, false otherwise
132
+ * @param oldestSlot - The oldest slot to keep.
91
133
  */
92
- hasAttestation(attestation: BlockAttestation): Promise<boolean>;
134
+ deleteOlderThan(oldestSlot: SlotNumber): Promise<void>;
93
135
  /**
94
- * Returns whether adding this proposal is permitted at current capacity:
95
- * - True if the proposal already exists, allow overwrite to keep parity with tests.
96
- * - True if the slot is below the proposal cap.
97
- * - False if the slot is at/above cap and this would be a new unique proposal.
136
+ * Attempts to add a checkpoint attestation to the pool.
98
137
  *
99
- * @param block - The block proposal to check
100
- * @returns True if the proposal can be added (or already exists), false otherwise.
101
- */
102
- canAddProposal(block: BlockProposal): Promise<boolean>;
103
- /**
104
- * Returns whether an attestation would be accepted for (slot, proposalId):
105
- * - True if the attestation already exists for this sender.
106
- * - True if the attestation cap for (slot, proposalId) has not been reached.
107
- * - False if the cap is reached and this attestation would be a new unique entry.
138
+ * This method performs validation and addition in a single call:
139
+ * - Checks if the attestation already exists (returns alreadyExists: true if so)
140
+ * - Checks if this signer has reached the per-signer attestation cap for this slot
141
+ * - Adds the attestation if validation passes
108
142
  *
109
- * @param attestation - The attestation to check
110
- * @param committeeSize - Committee size for the attestation's slot, implementation may add a small buffer
111
- * @returns True if the attestation can be added, false otherwise.
143
+ * @param attestation - The checkpoint attestation to add
144
+ * @returns Result indicating whether the attestation was added, existence info, and count of
145
+ * attestations by this signer for this slot (for equivocation detection)
112
146
  */
113
- canAddAttestation(attestation: BlockAttestation, committeeSize: number): Promise<boolean>;
114
- /** Returns whether the pool is empty. */
115
- isEmpty(): Promise<boolean>;
147
+ tryAddCheckpointAttestation(attestation: CheckpointAttestation): Promise<TryAddResult>;
148
+ private getSignerAttestationCountForSlot;
116
149
  }
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb25fcG9vbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21lbV9wb29scy9hdHRlc3RhdGlvbl9wb29sL2F0dGVzdGF0aW9uX3Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFekU7Ozs7O0dBS0c7QUFDSCxNQUFNLFdBQVcsZUFBZTtJQUM5Qjs7T0FFRztJQUNILGdCQUFnQixDQUFDLGFBQWEsRUFBRSxhQUFhLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTlEOzs7Ozs7T0FNRztJQUNILGdCQUFnQixDQUFDLEVBQUUsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsQ0FBQztJQUVqRTs7Ozs7O09BTUc7SUFDSCxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsTUFBTSxHQUFHLGFBQWEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFekU7Ozs7T0FJRztJQUNILGVBQWUsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFakU7Ozs7T0FJRztJQUNILGtCQUFrQixDQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVwRTs7Ozs7O09BTUc7SUFDSCwyQkFBMkIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUU3RDs7Ozs7O09BTUc7SUFDSCx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUUzRDs7Ozs7OztPQU9HO0lBQ0gsb0NBQW9DLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUUxRjs7Ozs7OztPQU9HO0lBQ0gsc0JBQXNCLENBQUMsSUFBSSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBRXRFOzs7Ozs7OztPQVFHO0lBQ0gsaUNBQWlDLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFFckc7Ozs7O09BS0c7SUFDSCxjQUFjLENBQUMsV0FBVyxFQUFFLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVoRTs7Ozs7Ozs7T0FRRztJQUNILGNBQWMsQ0FBQyxLQUFLLEVBQUUsYUFBYSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUV2RDs7Ozs7Ozs7O09BU0c7SUFDSCxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFMUYseUNBQXlDO0lBQ3pDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7Q0FDN0IifQ==
150
+ /** Creates an AttestationPool backed by a temporary store for testing. */
151
+ export declare function createTestAttestationPool(telemetry?: TelemetryClient): Promise<AttestationPool>;
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb25fcG9vbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21lbV9wb29scy9hdHRlc3RhdGlvbl9wb29sL2F0dGVzdGF0aW9uX3Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF5QixVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUlwRixPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBcUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RixPQUFPLEVBQ0wsYUFBYSxFQUNiLHFCQUFxQixFQUVyQixLQUFLLHNCQUFzQixFQUM1QixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUluRiw0RUFBNEU7QUFDNUUsTUFBTSxNQUFNLFlBQVksR0FBRztJQUN6QixpQ0FBaUM7SUFDakMsS0FBSyxFQUFFLE9BQU8sQ0FBQztJQUNmLDZDQUE2QztJQUM3QyxhQUFhLEVBQUUsT0FBTyxDQUFDO0lBQ3ZCOzs7bUZBRytFO0lBQy9FLEtBQUssRUFBRSxNQUFNLENBQUM7Q0FDZixDQUFDO0FBRUYsZUFBTyxNQUFNLGlDQUFpQyxJQUFJLENBQUM7QUFDbkQsZUFBTyxNQUFNLGdDQUFnQyxJQUFJLENBQUM7QUFDbEQsb0ZBQW9GO0FBQ3BGLGVBQU8sTUFBTSxvQ0FBb0MsSUFBSSxDQUFDO0FBRXRELGtHQUFrRztBQUNsRyxNQUFNLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUNuQyxlQUFlLEVBQ2IscUJBQXFCLEdBQ3JCLGtCQUFrQixHQUNsQiwwQkFBMEIsR0FDMUIsdUJBQXVCLEdBQ3ZCLDhCQUE4QixHQUM5Qiw2QkFBNkIsR0FDN0IsaUJBQWlCLEdBQ2pCLGtDQUFrQyxHQUNsQyw2Q0FBNkMsR0FDN0MsMEJBQTBCLEdBQzFCLFNBQVMsQ0FDWixDQUFDO0FBRUY7Ozs7O0dBS0c7QUFDSCxxQkFBYSxlQUFlO0lBMEJ4QixPQUFP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
@@ -1 +1 @@
1
- {"version":3,"file":"attestation_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/attestation_pool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEzE;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9D;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;IAEjE;;;;;;OAMG;IACH,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEzE;;;;OAIG;IACH,eAAe,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjE;;;;OAIG;IACH,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpE;;;;;;OAMG;IACH,2BAA2B,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7D;;;;;;OAMG;IACH,yBAAyB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3D;;;;;;;OAOG;IACH,oCAAoC,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1F;;;;;;;OAOG;IACH,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAEtE;;;;;;;;OAQG;IACH,iCAAiC,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAErG;;;;;OAKG;IACH,cAAc,CAAC,WAAW,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhE;;;;;;;;OAQG;IACH,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvD;;;;;;;;;OASG;IACH,iBAAiB,CAAC,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1F,yCAAyC;IACzC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7B"}
1
+ {"version":3,"file":"attestation_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/attestation_pool.ts"],"names":[],"mappings":"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"}