@aztec/p2p 0.0.1-commit.9372f48 → 0.0.1-commit.949a33fd8

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 (505) hide show
  1. package/README.md +129 -3
  2. package/dest/client/factory.d.ts +12 -11
  3. package/dest/client/factory.d.ts.map +1 -1
  4. package/dest/client/factory.js +57 -16
  5. package/dest/client/interface.d.ts +54 -34
  6. package/dest/client/interface.d.ts.map +1 -1
  7. package/dest/client/p2p_client.d.ts +43 -52
  8. package/dest/client/p2p_client.d.ts.map +1 -1
  9. package/dest/client/p2p_client.js +183 -226
  10. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +24 -11
  11. package/dest/config.d.ts +137 -87
  12. package/dest/config.d.ts.map +1 -1
  13. package/dest/config.js +116 -41
  14. package/dest/errors/p2p-service.error.d.ts +9 -0
  15. package/dest/errors/p2p-service.error.d.ts.map +1 -0
  16. package/dest/errors/p2p-service.error.js +10 -0
  17. package/dest/errors/tx-pool.error.d.ts +8 -0
  18. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  19. package/dest/errors/tx-pool.error.js +9 -0
  20. package/dest/index.d.ts +2 -2
  21. package/dest/index.d.ts.map +1 -1
  22. package/dest/index.js +1 -1
  23. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +106 -88
  24. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  25. package/dest/mem_pools/attestation_pool/attestation_pool.js +448 -3
  26. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  27. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  28. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +353 -87
  29. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  30. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  31. package/dest/mem_pools/attestation_pool/index.js +1 -2
  32. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  33. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  34. package/dest/mem_pools/attestation_pool/mocks.js +7 -5
  35. package/dest/mem_pools/index.d.ts +3 -3
  36. package/dest/mem_pools/index.d.ts.map +1 -1
  37. package/dest/mem_pools/index.js +1 -1
  38. package/dest/mem_pools/instrumentation.d.ts +4 -2
  39. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  40. package/dest/mem_pools/instrumentation.js +33 -15
  41. package/dest/mem_pools/interface.d.ts +5 -5
  42. package/dest/mem_pools/interface.d.ts.map +1 -1
  43. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  44. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  45. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  46. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  47. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  48. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  49. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  50. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  51. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  52. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  53. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  54. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  55. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  56. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  57. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +94 -0
  58. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  59. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  60. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
  61. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +11 -0
  62. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  63. package/dest/mem_pools/tx_pool_v2/eviction/index.js +12 -0
  64. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
  65. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
  66. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +62 -0
  67. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +180 -0
  68. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  69. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  70. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  71. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  72. package/dest/mem_pools/{tx_pool → tx_pool_v2}/eviction/invalid_txs_after_mining_rule.js +16 -35
  73. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  74. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  75. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  76. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  77. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  78. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
  79. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  80. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  81. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +75 -0
  82. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  83. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  84. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  85. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  86. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  87. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  88. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  89. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  90. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  91. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +218 -0
  92. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  93. package/dest/mem_pools/tx_pool_v2/interfaces.js +10 -0
  94. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +137 -0
  95. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  96. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +223 -0
  97. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  98. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  99. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  100. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  101. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  102. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +337 -0
  103. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +62 -0
  104. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  105. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +167 -0
  106. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +78 -0
  107. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  108. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +924 -0
  109. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +9 -3
  110. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  111. package/dest/msg_validators/attestation_validator/attestation_validator.js +37 -12
  112. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +8 -4
  113. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  114. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +2 -2
  115. package/dest/msg_validators/clock_tolerance.d.ts +12 -1
  116. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
  117. package/dest/msg_validators/clock_tolerance.js +61 -3
  118. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +8 -4
  119. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  120. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
  121. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +8 -4
  122. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  123. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
  124. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +17 -8
  125. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  126. package/dest/msg_validators/proposal_validator/proposal_validator.js +83 -48
  127. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  128. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  129. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  130. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  131. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  132. package/dest/msg_validators/tx_validator/allowed_public_setup.js +24 -20
  133. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  134. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  135. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  136. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  137. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +16 -3
  138. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  139. package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
  140. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  141. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  142. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  143. package/dest/msg_validators/tx_validator/data_validator.d.ts +1 -1
  144. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  145. package/dest/msg_validators/tx_validator/data_validator.js +35 -2
  146. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +13 -3
  147. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  148. package/dest/msg_validators/tx_validator/double_spend_validator.js +4 -4
  149. package/dest/msg_validators/tx_validator/factory.d.ts +133 -6
  150. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  151. package/dest/msg_validators/tx_validator/factory.js +247 -60
  152. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
  153. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
  154. package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
  155. package/dest/msg_validators/tx_validator/gas_validator.d.ts +99 -3
  156. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  157. package/dest/msg_validators/tx_validator/gas_validator.js +137 -53
  158. package/dest/msg_validators/tx_validator/index.d.ts +3 -1
  159. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  160. package/dest/msg_validators/tx_validator/index.js +2 -0
  161. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
  162. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  163. package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
  164. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  165. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  166. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  167. package/dest/msg_validators/tx_validator/phases_validator.d.ts +22 -2
  168. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  169. package/dest/msg_validators/tx_validator/phases_validator.js +72 -24
  170. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +20 -4
  171. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  172. package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
  173. package/dest/services/data_store.d.ts +1 -1
  174. package/dest/services/data_store.d.ts.map +1 -1
  175. package/dest/services/data_store.js +5 -5
  176. package/dest/services/dummy_service.d.ts +17 -6
  177. package/dest/services/dummy_service.d.ts.map +1 -1
  178. package/dest/services/dummy_service.js +16 -5
  179. package/dest/services/encoding.d.ts +7 -3
  180. package/dest/services/encoding.d.ts.map +1 -1
  181. package/dest/services/encoding.js +18 -11
  182. package/dest/services/gossipsub/index.d.ts +3 -0
  183. package/dest/services/gossipsub/index.d.ts.map +1 -0
  184. package/dest/services/gossipsub/index.js +2 -0
  185. package/dest/services/gossipsub/scoring.d.ts +21 -3
  186. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  187. package/dest/services/gossipsub/scoring.js +24 -7
  188. package/dest/services/gossipsub/topic_score_params.d.ts +184 -0
  189. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  190. package/dest/services/gossipsub/topic_score_params.js +363 -0
  191. package/dest/services/index.d.ts +2 -1
  192. package/dest/services/index.d.ts.map +1 -1
  193. package/dest/services/index.js +1 -0
  194. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  195. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  196. package/dest/services/libp2p/instrumentation.js +14 -0
  197. package/dest/services/libp2p/libp2p_service.d.ts +96 -52
  198. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  199. package/dest/services/libp2p/libp2p_service.js +580 -443
  200. package/dest/services/peer-manager/metrics.d.ts +3 -1
  201. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  202. package/dest/services/peer-manager/metrics.js +6 -0
  203. package/dest/services/peer-manager/peer_manager.d.ts +6 -2
  204. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  205. package/dest/services/peer-manager/peer_manager.js +39 -11
  206. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  207. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  208. package/dest/services/peer-manager/peer_scoring.js +57 -12
  209. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +14 -10
  210. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  211. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +89 -112
  212. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +4 -7
  213. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  214. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +11 -13
  215. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  216. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +31 -46
  217. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +19 -11
  218. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  219. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +52 -15
  220. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +2 -2
  221. package/dest/services/reqresp/config.d.ts +3 -3
  222. package/dest/services/reqresp/config.d.ts.map +1 -1
  223. package/dest/services/reqresp/interface.d.ts +23 -9
  224. package/dest/services/reqresp/interface.d.ts.map +1 -1
  225. package/dest/services/reqresp/interface.js +23 -10
  226. package/dest/services/reqresp/metrics.d.ts +1 -1
  227. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  228. package/dest/services/reqresp/metrics.js +0 -1
  229. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  230. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  231. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +16 -11
  232. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +21 -10
  233. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  234. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +27 -11
  235. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  236. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  237. package/dest/services/reqresp/protocols/index.js +0 -1
  238. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  239. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  240. package/dest/services/reqresp/protocols/tx.js +21 -3
  241. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  242. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  243. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  244. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  245. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  246. package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
  247. package/dest/services/reqresp/reqresp.d.ts +4 -2
  248. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  249. package/dest/services/reqresp/reqresp.js +40 -15
  250. package/dest/services/service.d.ts +43 -4
  251. package/dest/services/service.d.ts.map +1 -1
  252. package/dest/services/tx_collection/config.d.ts +22 -4
  253. package/dest/services/tx_collection/config.d.ts.map +1 -1
  254. package/dest/services/tx_collection/config.js +49 -3
  255. package/dest/services/tx_collection/fast_tx_collection.d.ts +6 -8
  256. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  257. package/dest/services/tx_collection/fast_tx_collection.js +88 -88
  258. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  259. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  260. package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
  261. package/dest/services/tx_collection/file_store_tx_source.d.ts +38 -0
  262. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  263. package/dest/services/tx_collection/file_store_tx_source.js +100 -0
  264. package/dest/services/tx_collection/index.d.ts +3 -2
  265. package/dest/services/tx_collection/index.d.ts.map +1 -1
  266. package/dest/services/tx_collection/index.js +1 -0
  267. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  268. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  269. package/dest/services/tx_collection/instrumentation.js +2 -1
  270. package/dest/services/tx_collection/proposal_tx_collector.d.ts +15 -15
  271. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  272. package/dest/services/tx_collection/proposal_tx_collector.js +6 -6
  273. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  274. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  275. package/dest/services/tx_collection/request_tracker.js +84 -0
  276. package/dest/services/tx_collection/slow_tx_collection.d.ts +7 -3
  277. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  278. package/dest/services/tx_collection/slow_tx_collection.js +60 -26
  279. package/dest/services/tx_collection/tx_collection.d.ts +23 -13
  280. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  281. package/dest/services/tx_collection/tx_collection.js +75 -3
  282. package/dest/services/tx_collection/tx_collection_sink.d.ts +18 -8
  283. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  284. package/dest/services/tx_collection/tx_collection_sink.js +26 -29
  285. package/dest/services/tx_collection/tx_source.d.ts +13 -7
  286. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  287. package/dest/services/tx_collection/tx_source.js +26 -7
  288. package/dest/services/tx_file_store/config.d.ts +16 -0
  289. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  290. package/dest/services/tx_file_store/config.js +22 -0
  291. package/dest/services/tx_file_store/index.d.ts +4 -0
  292. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  293. package/dest/services/tx_file_store/index.js +3 -0
  294. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  295. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  296. package/dest/services/tx_file_store/instrumentation.js +29 -0
  297. package/dest/services/tx_file_store/tx_file_store.d.ts +48 -0
  298. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  299. package/dest/services/tx_file_store/tx_file_store.js +152 -0
  300. package/dest/services/tx_provider.d.ts +4 -4
  301. package/dest/services/tx_provider.d.ts.map +1 -1
  302. package/dest/services/tx_provider.js +9 -8
  303. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  304. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  305. package/dest/test-helpers/make-test-p2p-clients.js +4 -2
  306. package/dest/test-helpers/mock-pubsub.d.ts +40 -6
  307. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  308. package/dest/test-helpers/mock-pubsub.js +139 -13
  309. package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
  310. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  311. package/dest/test-helpers/reqresp-nodes.js +8 -5
  312. package/dest/test-helpers/testbench-utils.d.ts +43 -38
  313. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  314. package/dest/test-helpers/testbench-utils.js +150 -61
  315. package/dest/testbench/p2p_client_testbench_worker.d.ts +2 -2
  316. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  317. package/dest/testbench/p2p_client_testbench_worker.js +85 -28
  318. package/dest/testbench/worker_client_manager.d.ts +10 -1
  319. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  320. package/dest/testbench/worker_client_manager.js +55 -3
  321. package/dest/util.d.ts +3 -3
  322. package/dest/util.d.ts.map +1 -1
  323. package/package.json +14 -14
  324. package/src/client/factory.ts +114 -29
  325. package/src/client/interface.ts +65 -35
  326. package/src/client/p2p_client.ts +221 -272
  327. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +36 -15
  328. package/src/config.ts +187 -46
  329. package/src/errors/p2p-service.error.ts +11 -0
  330. package/src/errors/tx-pool.error.ts +12 -0
  331. package/src/index.ts +1 -1
  332. package/src/mem_pools/attestation_pool/attestation_pool.ts +501 -91
  333. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +442 -102
  334. package/src/mem_pools/attestation_pool/index.ts +9 -2
  335. package/src/mem_pools/attestation_pool/mocks.ts +14 -8
  336. package/src/mem_pools/index.ts +2 -2
  337. package/src/mem_pools/instrumentation.ts +22 -14
  338. package/src/mem_pools/interface.ts +4 -4
  339. package/src/mem_pools/tx_pool_v2/README.md +283 -0
  340. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  341. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  342. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  343. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  344. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +122 -0
  345. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
  346. package/src/mem_pools/tx_pool_v2/eviction/index.ts +28 -0
  347. package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +65 -0
  348. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +219 -0
  349. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  350. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  351. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
  352. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +99 -0
  353. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +32 -0
  354. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  355. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  356. package/src/mem_pools/tx_pool_v2/interfaces.ts +250 -0
  357. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +349 -0
  358. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  359. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +430 -0
  360. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +238 -0
  361. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1107 -0
  362. package/src/msg_validators/attestation_validator/README.md +49 -0
  363. package/src/msg_validators/attestation_validator/attestation_validator.ts +41 -9
  364. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +14 -4
  365. package/src/msg_validators/clock_tolerance.ts +79 -3
  366. package/src/msg_validators/proposal_validator/README.md +123 -0
  367. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +22 -4
  368. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +33 -7
  369. package/src/msg_validators/proposal_validator/proposal_validator.ts +99 -49
  370. package/src/msg_validators/tx_validator/README.md +127 -0
  371. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +5 -5
  372. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  373. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  374. package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
  375. package/src/msg_validators/tx_validator/block_header_validator.ts +15 -3
  376. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  377. package/src/msg_validators/tx_validator/data_validator.ts +42 -1
  378. package/src/msg_validators/tx_validator/double_spend_validator.ts +11 -6
  379. package/src/msg_validators/tx_validator/factory.ts +396 -78
  380. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  381. package/src/msg_validators/tx_validator/gas_validator.ts +199 -54
  382. package/src/msg_validators/tx_validator/index.ts +2 -0
  383. package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
  384. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  385. package/src/msg_validators/tx_validator/phases_validator.ts +82 -27
  386. package/src/msg_validators/tx_validator/timestamp_validator.ts +23 -18
  387. package/src/services/data_store.ts +5 -13
  388. package/src/services/dummy_service.ts +25 -7
  389. package/src/services/encoding.ts +18 -10
  390. package/src/services/gossipsub/README.md +641 -0
  391. package/src/services/gossipsub/index.ts +2 -0
  392. package/src/services/gossipsub/scoring.ts +29 -5
  393. package/src/services/gossipsub/topic_score_params.ts +519 -0
  394. package/src/services/index.ts +1 -0
  395. package/src/services/libp2p/instrumentation.ts +14 -0
  396. package/src/services/libp2p/libp2p_service.ts +611 -478
  397. package/src/services/peer-manager/metrics.ts +7 -0
  398. package/src/services/peer-manager/peer_manager.ts +45 -11
  399. package/src/services/peer-manager/peer_scoring.ts +52 -5
  400. package/src/services/reqresp/README.md +229 -0
  401. package/src/services/reqresp/batch-tx-requester/README.md +53 -14
  402. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +89 -122
  403. package/src/services/reqresp/batch-tx-requester/interface.ts +3 -6
  404. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +30 -71
  405. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +68 -24
  406. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +2 -2
  407. package/src/services/reqresp/config.ts +2 -2
  408. package/src/services/reqresp/interface.ts +45 -10
  409. package/src/services/reqresp/metrics.ts +0 -1
  410. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +23 -14
  411. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +38 -15
  412. package/src/services/reqresp/protocols/index.ts +0 -1
  413. package/src/services/reqresp/protocols/tx.ts +23 -3
  414. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  415. package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
  416. package/src/services/reqresp/reqresp.ts +53 -16
  417. package/src/services/service.ts +57 -3
  418. package/src/services/tx_collection/config.ts +74 -6
  419. package/src/services/tx_collection/fast_tx_collection.ts +94 -97
  420. package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
  421. package/src/services/tx_collection/file_store_tx_source.ts +129 -0
  422. package/src/services/tx_collection/index.ts +2 -1
  423. package/src/services/tx_collection/instrumentation.ts +7 -1
  424. package/src/services/tx_collection/proposal_tx_collector.ts +21 -27
  425. package/src/services/tx_collection/request_tracker.ts +127 -0
  426. package/src/services/tx_collection/slow_tx_collection.ts +66 -33
  427. package/src/services/tx_collection/tx_collection.ts +114 -19
  428. package/src/services/tx_collection/tx_collection_sink.ts +30 -34
  429. package/src/services/tx_collection/tx_source.ts +28 -8
  430. package/src/services/tx_file_store/config.ts +37 -0
  431. package/src/services/tx_file_store/index.ts +3 -0
  432. package/src/services/tx_file_store/instrumentation.ts +36 -0
  433. package/src/services/tx_file_store/tx_file_store.ts +175 -0
  434. package/src/services/tx_provider.ts +10 -9
  435. package/src/test-helpers/make-test-p2p-clients.ts +6 -6
  436. package/src/test-helpers/mock-pubsub.ts +180 -14
  437. package/src/test-helpers/reqresp-nodes.ts +9 -9
  438. package/src/test-helpers/testbench-utils.ts +157 -74
  439. package/src/testbench/p2p_client_testbench_worker.ts +94 -31
  440. package/src/testbench/worker_client_manager.ts +68 -6
  441. package/src/util.ts +8 -2
  442. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
  443. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  444. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
  445. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
  446. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  447. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
  448. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  449. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  450. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  451. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  452. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  453. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  454. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  455. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  456. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  457. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  458. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  459. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -122
  460. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  461. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  462. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  463. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  464. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  465. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  466. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  467. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  468. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  469. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  470. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  471. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  472. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  473. package/dest/mem_pools/tx_pool/index.js +0 -2
  474. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  475. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  476. package/dest/mem_pools/tx_pool/priority.js +0 -15
  477. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  478. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  479. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  480. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  481. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  482. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -400
  483. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
  484. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  485. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
  486. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  487. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  488. package/dest/services/reqresp/protocols/block.js +0 -32
  489. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
  490. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
  491. package/src/mem_pools/tx_pool/README.md +0 -270
  492. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  493. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  494. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  495. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -162
  496. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  497. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  498. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  499. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  500. package/src/mem_pools/tx_pool/index.ts +0 -2
  501. package/src/mem_pools/tx_pool/priority.ts +0 -20
  502. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  503. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -319
  504. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
  505. package/src/services/reqresp/protocols/block.ts +0 -37
package/dest/config.js CHANGED
@@ -1,14 +1,35 @@
1
- import { booleanConfigHelper, getConfigFromMappings, getDefaultConfig, numberConfigHelper, percentageConfigHelper, pickConfigMappings, secretStringConfigHelper } from '@aztec/foundation/config';
1
+ import { bigintConfigHelper, booleanConfigHelper, getConfigFromMappings, getDefaultConfig, numberConfigHelper, optionalNumberConfigHelper, percentageConfigHelper, pickConfigMappings, secretStringConfigHelper } from '@aztec/foundation/config';
2
2
  import { Fr } from '@aztec/foundation/curves/bn254';
3
- import { dataConfigMappings } from '@aztec/kv-store/config';
4
3
  import { FunctionSelector } from '@aztec/stdlib/abi/function-selector';
5
4
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
6
- import { chainConfigMappings } from '@aztec/stdlib/config';
5
+ import { chainConfigMappings, sharedSequencerConfigMappings } from '@aztec/stdlib/config';
6
+ import { dataConfigMappings } from '@aztec/stdlib/kv-store';
7
7
  import { batchTxRequesterConfigMappings } from './services/reqresp/batch-tx-requester/config.js';
8
8
  import { p2pReqRespConfigMappings } from './services/reqresp/config.js';
9
9
  import { txCollectionConfigMappings } from './services/tx_collection/config.js';
10
+ import { txFileStoreConfigMappings } from './services/tx_file_store/config.js';
10
11
  export const DEFAULT_P2P_PORT = 40400;
11
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
+ ...optionalNumberConfigHelper()
17
+ },
18
+ validateMaxTxsPerCheckpoint: {
19
+ env: 'VALIDATOR_MAX_TX_PER_CHECKPOINT',
20
+ description: 'Maximum transactions per checkpoint for validation. Used as fallback for maxTxsPerBlock when that is not set.',
21
+ ...optionalNumberConfigHelper()
22
+ },
23
+ validateMaxL2BlockGas: {
24
+ env: 'VALIDATOR_MAX_L2_BLOCK_GAS',
25
+ description: 'Maximum L2 gas per block for validation. When set, txs exceeding this limit are rejected.',
26
+ ...optionalNumberConfigHelper()
27
+ },
28
+ validateMaxDABlockGas: {
29
+ env: 'VALIDATOR_MAX_DA_BLOCK_GAS',
30
+ description: 'Maximum DA gas per block for validation. When set, txs exceeding this limit are rejected.',
31
+ ...optionalNumberConfigHelper()
32
+ },
12
33
  p2pEnabled: {
13
34
  env: 'P2P_ENABLED',
14
35
  description: 'A flag dictating whether the P2P subsystem should be enabled.',
@@ -24,6 +45,11 @@ export const p2pConfigMappings = {
24
45
  description: 'The frequency in which to check for new L2 blocks.',
25
46
  ...numberConfigHelper(100)
26
47
  },
48
+ slotCheckIntervalMS: {
49
+ env: 'P2P_SLOT_CHECK_INTERVAL_MS',
50
+ description: 'The frequency in which to check for new L2 slots.',
51
+ ...numberConfigHelper(1000)
52
+ },
27
53
  debugDisableColocationPenalty: {
28
54
  env: 'DEBUG_P2P_DISABLE_COLOCATION_PENALTY',
29
55
  description: 'DEBUG: Disable colocation penalty - NEVER set to true in production',
@@ -34,6 +60,11 @@ export const p2pConfigMappings = {
34
60
  description: 'The frequency in which to check for new peers.',
35
61
  ...numberConfigHelper(30_000)
36
62
  },
63
+ peerFailedBanTimeMs: {
64
+ env: 'P2P_PEER_FAILED_BAN_TIME_MS',
65
+ description: 'How long to ban a peer after it fails maximum dial attempts.',
66
+ ...numberConfigHelper(5 * 60 * 1000)
67
+ },
37
68
  l2QueueSize: {
38
69
  env: 'P2P_L2_QUEUE_SIZE',
39
70
  description: 'Size of queue of L2 blocks to store.',
@@ -125,7 +156,7 @@ export const p2pConfigMappings = {
125
156
  gossipsubMcacheLength: {
126
157
  env: 'P2P_GOSSIPSUB_MCACHE_LENGTH',
127
158
  description: 'The number of gossipsub interval message cache windows to keep.',
128
- ...numberConfigHelper(6)
159
+ ...numberConfigHelper(12)
129
160
  },
130
161
  gossipsubMcacheGossip: {
131
162
  env: 'P2P_GOSSIPSUB_MCACHE_GOSSIP',
@@ -197,14 +228,14 @@ export const p2pConfigMappings = {
197
228
  },
198
229
  p2pStoreMapSizeKb: {
199
230
  env: 'P2P_STORE_MAP_SIZE_KB',
200
- parseEnv: (val)=>val ? +val : undefined,
231
+ ...optionalNumberConfigHelper(),
201
232
  description: 'The maximum possible size of the P2P DB in KB. Overwrites the general dataStoreMapSizeKb.'
202
233
  },
203
- txPublicSetupAllowList: {
234
+ txPublicSetupAllowListExtend: {
204
235
  env: 'TX_PUBLIC_SETUP_ALLOWLIST',
205
236
  parseEnv: (val)=>parseAllowList(val),
206
- description: 'The list of functions calls allowed to run in setup',
207
- printDefault: ()=>'AuthRegistry, FeeJuice.increase_public_balance, Token.increase_public_balance, FPC.prepare_fee'
237
+ 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 +.',
238
+ printDefault: ()=>'Default: AuthRegistry._set_authorized, AuthRegistry.set_authorized, FeeJuice._increase_public_balance'
208
239
  },
209
240
  maxPendingTxCount: {
210
241
  env: 'P2P_MAX_PENDING_TX_COUNT',
@@ -233,11 +264,6 @@ export const p2pConfigMappings = {
233
264
  description: 'Number of auth attempts to allow before peer is banned. Number is inclusive',
234
265
  ...numberConfigHelper(3)
235
266
  },
236
- dropTransactions: {
237
- env: 'P2P_DROP_TX',
238
- description: 'True to simulate discarding transactions. - For testing purposes only',
239
- ...booleanConfigHelper(false)
240
- },
241
267
  dropTransactionsProbability: {
242
268
  env: 'P2P_DROP_TX_CHANCE',
243
269
  description: 'The probability that a transaction is discarded (0 - 1). - For testing purposes only',
@@ -258,15 +284,40 @@ export const p2pConfigMappings = {
258
284
  description: 'Alters the format of p2p messages to include things like broadcast timestamp FOR TESTING ONLY',
259
285
  ...booleanConfigHelper(false)
260
286
  },
287
+ l1PublishingTime: {
288
+ env: 'SEQ_L1_PUBLISHING_TIME_ALLOWANCE_IN_SLOT',
289
+ description: 'How much time (in seconds) we allow in the slot for publishing the L1 tx (defaults to 1 L1 slot).',
290
+ ...optionalNumberConfigHelper()
291
+ },
261
292
  fishermanMode: {
262
293
  env: 'FISHERMAN_MODE',
263
294
  description: 'Whether to run in fisherman mode: validates all proposals and attestations but does not broadcast attestations or participate in consensus.',
264
295
  ...booleanConfigHelper(false)
265
296
  },
297
+ broadcastEquivocatedProposals: {
298
+ description: 'Broadcast block proposals even when a conflicting proposal for the same slot already exists in the pool (for testing purposes only).',
299
+ ...booleanConfigHelper(false)
300
+ },
301
+ skipIncomingProposals: {
302
+ description: 'Drop incoming block and checkpoint proposals at the libp2p dispatch layer (for testing only)',
303
+ ...booleanConfigHelper(false)
304
+ },
305
+ minTxPoolAgeMs: {
306
+ env: 'P2P_MIN_TX_POOL_AGE_MS',
307
+ description: 'Minimum age (ms) a transaction must have been in the pool before it is eligible for block building.',
308
+ ...numberConfigHelper(2_000)
309
+ },
310
+ priceBumpPercentage: {
311
+ env: 'P2P_RPC_PRICE_BUMP_PERCENTAGE',
312
+ 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.',
313
+ ...bigintConfigHelper(10n)
314
+ },
315
+ ...sharedSequencerConfigMappings,
266
316
  ...p2pReqRespConfigMappings,
267
317
  ...batchTxRequesterConfigMappings,
268
318
  ...chainConfigMappings,
269
- ...txCollectionConfigMappings
319
+ ...txCollectionConfigMappings,
320
+ ...txFileStoreConfigMappings
270
321
  };
271
322
  /**
272
323
  * Gets the config values for p2p client from environment variables.
@@ -295,13 +346,37 @@ export const bootnodeConfigMappings = pickConfigMappings({
295
346
  ...dataConfigMappings,
296
347
  ...chainConfigMappings
297
348
  }, bootnodeConfigKeys);
349
+ /**
350
+ * Parses a `+`-separated flags string into validation properties for an allow list entry.
351
+ * Supported flags: `os` (onlySelf), `rn` (rejectNullMsgSender), `cl=N` (calldataLength).
352
+ */ function parseFlags(flags, entry) {
353
+ const result = {};
354
+ for (const flag of flags.split('+')){
355
+ if (flag === 'os') {
356
+ result.onlySelf = true;
357
+ } else if (flag === 'rn') {
358
+ result.rejectNullMsgSender = true;
359
+ } else if (flag.startsWith('cl=')) {
360
+ const n = parseInt(flag.slice(3), 10);
361
+ if (isNaN(n) || n < 0) {
362
+ throw new Error(`Invalid allow list entry "${entry}": invalid calldataLength in flag "${flag}". Expected a non-negative integer.`);
363
+ }
364
+ result.calldataLength = n;
365
+ } else {
366
+ throw new Error(`Invalid allow list entry "${entry}": unknown flag "${flag}". Supported flags: os, rn, cl=N.`);
367
+ }
368
+ }
369
+ return result;
370
+ }
298
371
  /**
299
372
  * Parses a string to a list of allowed elements.
300
- * Each encoded is expected to be of one of the following formats
301
- * `I:${address}`
302
- * `I:${address}:${selector}`
303
- * `C:${classId}`
304
- * `C:${classId}:${selector}`
373
+ * Each entry is expected to be of one of the following formats:
374
+ * `I:${address}:${selector}` — instance (contract address) with function selector
375
+ * `C:${classId}:${selector}` — class with function selector
376
+ *
377
+ * An optional flags segment can be appended after the selector:
378
+ * `I:${address}:${selector}:${flags}` or `C:${classId}:${selector}:${flags}`
379
+ * where flags is a `+`-separated list of: `os` (onlySelf), `rn` (rejectNullMsgSender), `cl=N` (calldataLength).
305
380
  *
306
381
  * @param value The string to parse
307
382
  * @returns A list of allowed elements
@@ -311,30 +386,30 @@ export const bootnodeConfigMappings = pickConfigMappings({
311
386
  return entries;
312
387
  }
313
388
  for (const val of value.split(',')){
314
- const [typeString, identifierString, selectorString] = val.split(':');
315
- const selector = selectorString !== undefined ? FunctionSelector.fromString(selectorString) : undefined;
389
+ const trimmed = val.trim();
390
+ if (!trimmed) {
391
+ continue;
392
+ }
393
+ const [typeString, identifierString, selectorString, flagsString] = trimmed.split(':');
394
+ if (!selectorString) {
395
+ throw new Error(`Invalid allow list entry "${trimmed}": selector is required. Expected format: I:address:selector or C:classId:selector`);
396
+ }
397
+ const selector = FunctionSelector.fromString(selectorString);
398
+ const flags = flagsString ? parseFlags(flagsString, trimmed) : {};
316
399
  if (typeString === 'I') {
317
- if (selector) {
318
- entries.push({
319
- address: AztecAddress.fromString(identifierString),
320
- selector
321
- });
322
- } else {
323
- entries.push({
324
- address: AztecAddress.fromString(identifierString)
325
- });
326
- }
400
+ entries.push({
401
+ address: AztecAddress.fromString(identifierString),
402
+ selector,
403
+ ...flags
404
+ });
327
405
  } else if (typeString === 'C') {
328
- if (selector) {
329
- entries.push({
330
- classId: Fr.fromHexString(identifierString),
331
- selector
332
- });
333
- } else {
334
- entries.push({
335
- classId: Fr.fromHexString(identifierString)
336
- });
337
- }
406
+ entries.push({
407
+ classId: Fr.fromHexString(identifierString),
408
+ selector,
409
+ ...flags
410
+ });
411
+ } else {
412
+ throw new Error(`Invalid allow list entry "${trimmed}": unknown type "${typeString}". Expected "I" (instance) or "C" (class).`);
338
413
  }
339
414
  }
340
415
  return entries;
@@ -0,0 +1,9 @@
1
+ /** Checkpoint Proposal Received Callback Not Registered Error
2
+ *
3
+ * Error triggered if the allNodesCheckpointReceivedCallback is not registered
4
+ * @category Errors
5
+ */
6
+ export declare class CheckpointProposalReceivedCallbackNotRegisteredError extends Error {
7
+ constructor();
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJwLXNlcnZpY2UuZXJyb3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lcnJvcnMvcDJwLXNlcnZpY2UuZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILHFCQUFhLG9EQUFxRCxTQUFRLEtBQUs7SUFDN0UsY0FHQztDQUNGIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"p2p-service.error.d.ts","sourceRoot":"","sources":["../../src/errors/p2p-service.error.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,oDAAqD,SAAQ,KAAK;IAC7E,cAGC;CACF"}
@@ -0,0 +1,10 @@
1
+ /** Checkpoint Proposal Received Callback Not Registered Error
2
+ *
3
+ * Error triggered if the allNodesCheckpointReceivedCallback is not registered
4
+ * @category Errors
5
+ */ export class CheckpointProposalReceivedCallbackNotRegisteredError extends Error {
6
+ constructor(){
7
+ super('FATAL (allNodesCheckpointReceivedCallback): All nodes should register a checkpoint proposal handler');
8
+ this.name = 'CheckpointProposalReceivedCallbackNotRegisteredError';
9
+ }
10
+ }
@@ -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
@@ -5,7 +5,7 @@ export * from './client/index.js';
5
5
  export * from './enr/index.js';
6
6
  export * from './config.js';
7
7
  export * from './mem_pools/attestation_pool/index.js';
8
- export * from './mem_pools/tx_pool/index.js';
8
+ export * from './mem_pools/tx_pool_v2/index.js';
9
9
  export * from './msg_validators/index.js';
10
10
  export * from './services/index.js';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFaEQsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxxQkFBcUIsQ0FBQyJ9
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFaEQsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxxQkFBcUIsQ0FBQyJ9
@@ -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,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC"}
package/dest/index.js CHANGED
@@ -4,6 +4,6 @@ export * from './client/index.js';
4
4
  export * from './enr/index.js';
5
5
  export * from './config.js';
6
6
  export * from './mem_pools/attestation_pool/index.js';
7
- export * from './mem_pools/tx_pool/index.js';
7
+ export * from './mem_pools/tx_pool_v2/index.js';
8
8
  export * from './msg_validators/index.js';
9
9
  export * from './services/index.js';
@@ -1,43 +1,103 @@
1
- import type { SlotNumber } from '@aztec/foundation/branded-types';
2
- import type { BlockProposal, CheckpointAttestation, CheckpointProposal, CheckpointProposalCore } 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 = 2;
18
+ export declare const MAX_BLOCK_PROPOSALS_PER_POSITION = 2;
19
+ /** Maximum attestations a single signer can make per slot before being rejected. */
20
+ export declare const MAX_ATTESTATIONS_PER_SLOT_AND_SIGNER = 2;
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 {
10
- /**
11
- * Adds new block proposal to the pool
12
- */
13
- addBlockProposal(blockProposal: BlockProposal): Promise<void>;
14
- /**
15
- * Get block proposal by it's ID
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 * 1024 + indexWithinCheckpoint.
56
+ * Uses multiplication instead of bit-shift to avoid 32-bit signed integer overflow
57
+ * (bit-shift overflows after slot ~2^21, roughly 278 days of uptime). */
58
+ private getBlockPositionKey;
59
+ /**
60
+ * Attempts to add a block proposal to the pool.
61
+ *
62
+ * This method performs validation and addition in a single call:
63
+ * - Checks if the proposal already exists (returns alreadyExists: true if so)
64
+ * - Checks if the position has reached the proposal cap (returns added: false if so)
65
+ * - Adds the proposal if validation passes
66
+ *
67
+ * @param blockProposal - The block proposal to add
68
+ * @returns Result indicating whether the proposal was added and duplicate detection info
69
+ */
70
+ tryAddBlockProposal(blockProposal: BlockProposal): Promise<TryAddResult>;
71
+ /** Gets the count of block proposals for a given position (slot, indexWithinCheckpoint). */
72
+ private getBlockProposalCountForPosition;
73
+ private addBlockProposal;
74
+ /**
75
+ * Get block proposal by its ID.
16
76
  *
17
77
  * @param id - The ID of the block proposal to retrieve. The ID is proposal.payload.archive
18
78
  *
19
79
  * @return The block proposal if it exists, otherwise undefined.
20
80
  */
21
81
  getBlockProposal(id: string): Promise<BlockProposal | undefined>;
82
+ /** Checks if any block proposals exist for a given slot (at index 0). */
83
+ hasBlockProposalsForSlot(slot: SlotNumber): Promise<boolean>;
22
84
  /**
23
- * Check if a block proposal exists in the pool
24
- *
25
- * @param idOrProposal - The ID of the block proposal or the block proposal itself to check. The ID is proposal.payload.archive
85
+ * Attempts to add a checkpoint proposal to the pool.
26
86
  *
27
- * @return True if the block proposal exists, false otherwise.
28
- */
29
- hasBlockProposal(idOrProposal: string | BlockProposal): Promise<boolean>;
30
- /**
31
- * Adds a checkpoint proposal to the pool.
87
+ * This method performs validation and addition in a single call:
88
+ * - Checks if the proposal already exists (returns alreadyExists: true if so)
89
+ * - Checks if the slot has reached the proposal cap (returns added: false if so)
90
+ * - Adds the proposal if validation passes
32
91
  *
33
- * If the proposal contains a lastBlock, the BlockProposal is automatically extracted
34
- * and stored separately via addBlockProposal. The checkpoint proposal is then stored
35
- * without the lastBlock info (as CheckpointProposalCore).
92
+ * Note: This method only handles the CheckpointProposalCore. If the original
93
+ * CheckpointProposal contains a lastBlock, the caller should extract it via
94
+ * getBlockProposal() and add it separately via tryAddBlockProposal().
36
95
  *
37
- * @param proposal - The checkpoint proposal to add
38
- * @throws ProposalSlotCapExceededError if the slot has reached the maximum number of proposals
96
+ * @param proposal - The checkpoint proposal core to add
97
+ * @returns Result indicating whether the proposal was added and duplicate detection info
39
98
  */
40
- addCheckpointProposal(proposal: CheckpointProposal): Promise<void>;
99
+ tryAddCheckpointProposal(proposal: CheckpointProposalCore): Promise<TryAddResult>;
100
+ private addCheckpointProposal;
41
101
  /**
42
102
  * Get checkpoint proposal by its ID.
43
103
  *
@@ -49,33 +109,19 @@ export interface AttestationPool {
49
109
  */
50
110
  getCheckpointProposal(id: string): Promise<CheckpointProposalCore | undefined>;
51
111
  /**
52
- * Check if a checkpoint proposal exists in the pool
53
- *
54
- * @param idOrProposal - The ID of the checkpoint proposal or the proposal itself
55
- * @return True if the proposal exists, false otherwise.
56
- */
57
- hasCheckpointProposal(idOrProposal: string | CheckpointProposal): Promise<boolean>;
58
- /**
59
- * Add checkpoint attestations to the pool
60
- *
61
- * @param attestations - Checkpoint attestations to add into the pool
62
- */
63
- addCheckpointAttestations(attestations: CheckpointAttestation[]): Promise<void>;
64
- /**
65
- * Delete checkpoint attestations older than the given slot
66
- *
67
- * @param slot - The oldest slot to keep.
112
+ * Adds own checkpoint attestations to the pool.
113
+ * Skips validations on number of checkpoint attestations stored for the given slot.
68
114
  */
69
- deleteCheckpointAttestationsOlderThan(slot: SlotNumber): Promise<void>;
115
+ addOwnCheckpointAttestations(attestations: CheckpointAttestation[]): Promise<void>;
70
116
  /**
71
- * Get all checkpoint attestations for a given slot
117
+ * Get all checkpoint attestations for a given slot.
72
118
  *
73
119
  * @param slot - The slot to query
74
120
  * @return CheckpointAttestations
75
121
  */
76
122
  getCheckpointAttestationsForSlot(slot: SlotNumber): Promise<CheckpointAttestation[]>;
77
123
  /**
78
- * Get checkpoint attestations for slot and given proposal
124
+ * Get checkpoint attestations for slot and given proposal.
79
125
  *
80
126
  * @param slot - The slot to query
81
127
  * @param proposalId - The proposal to query
@@ -83,54 +129,26 @@ export interface AttestationPool {
83
129
  */
84
130
  getCheckpointAttestationsForSlotAndProposal(slot: SlotNumber, proposalId: string): Promise<CheckpointAttestation[]>;
85
131
  /**
86
- * Check if a specific checkpoint attestation exists in the pool
87
- *
88
- * @param attestation - The attestation to check
89
- * @return True if the attestation exists, false otherwise
90
- */
91
- hasCheckpointAttestation(attestation: CheckpointAttestation): Promise<boolean>;
92
- /**
93
- * Returns whether adding this proposal is permitted at current capacity:
94
- * - True if the proposal already exists, allow overwrite to keep parity with tests.
95
- * - True if the slot is below the proposal cap.
96
- * - False if the slot is at/above cap and this would be a new unique proposal.
97
- *
98
- * @param block - The block proposal to check
99
- * @returns True if the proposal can be added (or already exists), false otherwise.
100
- */
101
- canAddProposal(block: BlockProposal): Promise<boolean>;
102
- /**
103
- * Returns whether adding this checkpoint proposal is permitted at current capacity.
132
+ * Delete all pool data (attestations, proposals) older than the given slot.
104
133
  *
105
- * @param proposal - The checkpoint proposal to check
106
- * @returns True if the proposal can be added, false otherwise.
134
+ * @param oldestSlot - The oldest slot to keep.
107
135
  */
108
- canAddCheckpointProposal(proposal: CheckpointProposal): Promise<boolean>;
136
+ deleteOlderThan(oldestSlot: SlotNumber): Promise<void>;
109
137
  /**
110
- * Returns whether a checkpoint attestation would be accepted for (slot, proposalId).
138
+ * Attempts to add a checkpoint attestation to the pool.
111
139
  *
112
- * @param attestation - The attestation to check
113
- * @param committeeSize - Committee size for the attestation's slot
114
- * @returns True if the attestation can be added, false otherwise.
115
- */
116
- canAddCheckpointAttestation(attestation: CheckpointAttestation, committeeSize: number): Promise<boolean>;
117
- /**
118
- * Returns whether the checkpoint proposal cap for the given slot has been reached.
140
+ * This method performs validation and addition in a single call:
141
+ * - Checks if the attestation already exists (returns alreadyExists: true if so)
142
+ * - Checks if this signer has reached the per-signer attestation cap for this slot
143
+ * - Adds the attestation if validation passes
119
144
  *
120
- * @param slot - The slot to check
121
- * @returns True if the cap has been reached, false otherwise.
145
+ * @param attestation - The checkpoint attestation to add
146
+ * @returns Result indicating whether the attestation was added, existence info, and count of
147
+ * attestations by this signer for this slot (for equivocation detection)
122
148
  */
123
- hasReachedCheckpointProposalCap(slot: SlotNumber): Promise<boolean>;
124
- /**
125
- * Returns whether the checkpoint attestation cap for the given slot and proposal has been reached.
126
- *
127
- * @param slot - The slot to check
128
- * @param proposalId - The proposal to check
129
- * @param committeeSize - Committee size for the slot
130
- * @returns True if the cap has been reached, false otherwise.
131
- */
132
- hasReachedCheckpointAttestationCap(slot: SlotNumber, proposalId: string, committeeSize: number): Promise<boolean>;
133
- /** Returns whether the pool is empty. */
134
- isEmpty(): Promise<boolean>;
149
+ tryAddCheckpointAttestation(attestation: CheckpointAttestation): Promise<TryAddResult>;
150
+ private getSignerAttestationCountForSlot;
135
151
  }
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb25fcG9vbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21lbV9wb29scy9hdHRlc3RhdGlvbl9wb29sL2F0dGVzdGF0aW9uX3Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQ1YsYUFBYSxFQUNiLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3ZCLE1BQU0sbUJBQW1CLENBQUM7QUFFM0I7Ozs7O0dBS0c7QUFDSCxNQUFNLFdBQVcsZUFBZTtJQUM5Qjs7T0FFRztJQUNILGdCQUFnQixDQUFDLGFBQWEsRUFBRSxhQUFhLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTlEOzs7Ozs7T0FNRztJQUNILGdCQUFnQixDQUFDLEVBQUUsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsQ0FBQztJQUVqRTs7Ozs7O09BTUc7SUFDSCxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsTUFBTSxHQUFHLGFBQWEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFekU7Ozs7Ozs7OztPQVNHO0lBQ0gscUJBQXFCLENBQUMsUUFBUSxFQUFFLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVuRTs7Ozs7Ozs7T0FRRztJQUNILHFCQUFxQixDQUFDLEVBQUUsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBRS9FOzs7OztPQUtHO0lBQ0gscUJBQXFCLENBQUMsWUFBWSxFQUFFLE1BQU0sR0FBRyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFbkY7Ozs7T0FJRztJQUNILHlCQUF5QixDQUFDLFlBQVksRUFBRSxxQkFBcUIsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVoRjs7OztPQUlHO0lBQ0gscUNBQXFDLENBQUMsSUFBSSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFdkU7Ozs7O09BS0c7SUFDSCxnQ0FBZ0MsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7SUFFckY7Ozs7OztPQU1HO0lBQ0gsMkNBQTJDLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7SUFFcEg7Ozs7O09BS0c7SUFDSCx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUscUJBQXFCLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRS9FOzs7Ozs7OztPQVFHO0lBQ0gsY0FBYyxDQUFDLEtBQUssRUFBRSxhQUFhLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXZEOzs7OztPQUtHO0lBQ0gsd0JBQXdCLENBQUMsUUFBUSxFQUFFLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUV6RTs7Ozs7O09BTUc7SUFDSCwyQkFBMkIsQ0FBQyxXQUFXLEVBQUUscUJBQXFCLEVBQUUsYUFBYSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFekc7Ozs7O09BS0c7SUFDSCwrQkFBK0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVwRTs7Ozs7OztPQU9HO0lBQ0gsa0NBQWtDLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRWxILHlDQUF5QztJQUN6QyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0NBQzdCIn0=
152
+ /** Creates an AttestationPool backed by a temporary store for testing. */
153
+ export declare function createTestAttestationPool(telemetry?: TelemetryClient): Promise<AttestationPool>;
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb25fcG9vbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21lbV9wb29scy9hdHRlc3RhdGlvbl9wb29sL2F0dGVzdGF0aW9uX3Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF5QixVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUlwRixPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBcUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RixPQUFPLEVBQ0wsYUFBYSxFQUNiLHFCQUFxQixFQUVyQixLQUFLLHNCQUFzQixFQUM1QixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUluRiw0RUFBNEU7QUFDNUUsTUFBTSxNQUFNLFlBQVksR0FBRztJQUN6QixpQ0FBaUM7SUFDakMsS0FBSyxFQUFFLE9BQU8sQ0FBQztJQUNmLDZDQUE2QztJQUM3QyxhQUFhLEVBQUUsT0FBTyxDQUFDO0lBQ3ZCOzs7bUZBRytFO0lBQy9FLEtBQUssRUFBRSxNQUFNLENBQUM7Q0FDZixDQUFDO0FBRUYsZUFBTyxNQUFNLGlDQUFpQyxJQUFJLENBQUM7QUFDbkQsZUFBTyxNQUFNLGdDQUFnQyxJQUFJLENBQUM7QUFDbEQsb0ZBQW9GO0FBQ3BGLGVBQU8sTUFBTSxvQ0FBb0MsSUFBSSxDQUFDO0FBRXRELGtHQUFrRztBQUNsRyxNQUFNLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUNuQyxlQUFlLEVBQ2IscUJBQXFCLEdBQ3JCLGtCQUFrQixHQUNsQiwwQkFBMEIsR0FDMUIsdUJBQXVCLEdBQ3ZCLDhCQUE4QixHQUM5Qiw2QkFBNkIsR0FDN0IsaUJBQWlCLEdBQ2pCLGtDQUFrQyxHQUNsQyw2Q0FBNkMsR0FDN0MsMEJBQTBCLEdBQzFCLFNBQVMsQ0FDWixDQUFDO0FBRUY7Ozs7O0dBS0c7QUFDSCxxQkFBYSxlQUFlO0lBMEJ4QixPQUFPLENBQUMsS0FBSztJQUViLE9BQU8sQ0FBQyxHQUFHO0lBM0JiLE9BQU8sQ0FBQyxPQUFPLENBQTZDO0lBSTVELE9BQU8sQ0FBQyxzQkFBc0IsQ0FBZ0M7SUFHOUQsT0FBTyxDQUFDLG1CQUFtQixDQUFnQztJQUkzRCxPQUFPLENBQUMsMEJBQTBCLENBQXFDO0lBR3ZFLE9BQU8sQ0FBQyxjQUFjLENBQWdDO0lBSXRELE9BQU8sQ0FBQyw2QkFBNkIsQ0FBcUM7SUFJMUUsT0FBTyxDQUFDLHNDQUFzQyxDQUFxQztJQUVuRixZQUNVLEtBQUssRUFBRSxpQkFBaUIsRUFDaEMsU0FBUyxHQUFFLGVBQXNDLEVBQ3pDLEdBQUcseUNBQXlDLEVBZXJEO0lBRUQsT0FBTyxDQUFDLFNBQVMsQ0FJZjtJQUVGLHlDQUF5QztJQUM1QixPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQVF2QztJQUVELE9BQU8sQ0FBQyxjQUFjO0lBWXRCLE9BQU8sQ0FBQyxpQkFBaUI7SUFJekIsMkVBQTJFO0lBQzNFLE9BQU8sQ0FBQyw2QkFBNkI7SUFLckMseUZBQXlGO0lBQ3pGLE9BQU8sQ0FBQyxpQ0FBaUM7SUFLekMsZ0hBQWdIO0lBQ2hILE9BQU8sQ0FBQyxnQkFBZ0I7SUFLeEIsMEVBQTBFO0lBQzFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBTTtJQUN4Qyw2REFBNkQ7SUFDN0QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUF5QztJQUUxRTs7NkVBRXlFO0lBQ3pFLE9BQU8sQ0FBQyxtQkFBbUI7SUFTM0I7Ozs7Ozs7Ozs7T0FVRztJQUNVLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxhQUFhLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQXNDcEY7SUFFRCw0RkFBNEY7SUFDNUYsT0FBTyxDQUFDLGdDQUFnQztZQVMxQixnQkFBZ0I7SUFVOUI7Ozs7OztPQU1HO0lBQ1UsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQyxDQVc1RTtJQUVELHlFQUF5RTtJQUM1RCx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FJeEU7SUFFRDs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNVLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxzQkFBc0IsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBNkI3RjtZQUdhLHFCQUFxQjtJQVFuQzs7Ozs7Ozs7T0FRRztJQUNVLHFCQUFxQixDQUFDLEVBQUUsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixHQUFHLFNBQVMsQ0FBQyxDQVcxRjtJQUVEOzs7T0FHRztJQUNVLDRCQUE0QixDQUFDLFlBQVksRUFBRSxxQkFBcUIsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0ErQjlGO0lBRUQ7Ozs7O09BS0c7SUFDVSxnQ0FBZ0MsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBU2hHO0lBRUQ7Ozs7OztPQU1HO0lBQ1UsMkNBQTJDLENBQ3RELElBQUksRUFBRSxVQUFVLEVBQ2hCLFVBQVUsRUFBRSxNQUFNLEdBQ2pCLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBU2xDO0lBRUQ7Ozs7T0FJRztJQUNVLGVBQWUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FvRGxFO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDVSwyQkFBMkIsQ0FBQyxXQUFXLEVBQUUscUJBQXFCLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQStEbEc7WUFHYSxnQ0FBZ0M7Q0FJL0M7QUFFRCwwRUFBMEU7QUFDMUUsd0JBQXNCLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxFQUFFLGVBQWUsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBSXJHIn0=
@@ -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,EACV,aAAa,EACb,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAE3B;;;;;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;;;;;;;;;OASG;IACH,qBAAqB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnE;;;;;;;;OAQG;IACH,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAAC;IAE/E;;;;;OAKG;IACH,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEnF;;;;OAIG;IACH,yBAAyB,CAAC,YAAY,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhF;;;;OAIG;IACH,qCAAqC,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvE;;;;;OAKG;IACH,gCAAgC,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAErF;;;;;;OAMG;IACH,2CAA2C,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAEpH;;;;;OAKG;IACH,wBAAwB,CAAC,WAAW,EAAE,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE/E;;;;;;;;OAQG;IACH,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvD;;;;;OAKG;IACH,wBAAwB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEzE;;;;;;OAMG;IACH,2BAA2B,CAAC,WAAW,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEzG;;;;;OAKG;IACH,+BAA+B,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpE;;;;;;;OAOG;IACH,kCAAkC,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAElH,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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"}