@aztec/p2p 0.0.1-commit.135b523 → 0.0.1-commit.181e2d196

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 (380) hide show
  1. package/dest/client/factory.d.ts +10 -10
  2. package/dest/client/factory.d.ts.map +1 -1
  3. package/dest/client/factory.js +40 -14
  4. package/dest/client/interface.d.ts +46 -33
  5. package/dest/client/interface.d.ts.map +1 -1
  6. package/dest/client/p2p_client.d.ts +41 -51
  7. package/dest/client/p2p_client.d.ts.map +1 -1
  8. package/dest/client/p2p_client.js +149 -200
  9. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +7 -8
  10. package/dest/config.d.ts +37 -16
  11. package/dest/config.d.ts.map +1 -1
  12. package/dest/config.js +44 -37
  13. package/dest/errors/tx-pool.error.d.ts +8 -0
  14. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  15. package/dest/errors/tx-pool.error.js +9 -0
  16. package/dest/index.d.ts +2 -1
  17. package/dest/index.d.ts.map +1 -1
  18. package/dest/index.js +1 -0
  19. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +104 -88
  20. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  21. package/dest/mem_pools/attestation_pool/attestation_pool.js +445 -3
  22. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  23. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  24. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +353 -87
  25. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  26. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  27. package/dest/mem_pools/attestation_pool/index.js +1 -2
  28. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  29. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  30. package/dest/mem_pools/attestation_pool/mocks.js +2 -2
  31. package/dest/mem_pools/index.d.ts +3 -2
  32. package/dest/mem_pools/index.d.ts.map +1 -1
  33. package/dest/mem_pools/index.js +1 -1
  34. package/dest/mem_pools/instrumentation.d.ts +4 -2
  35. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  36. package/dest/mem_pools/instrumentation.js +16 -14
  37. package/dest/mem_pools/interface.d.ts +5 -5
  38. package/dest/mem_pools/interface.d.ts.map +1 -1
  39. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +3 -3
  40. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  41. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  42. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  43. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  44. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  45. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  46. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  47. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  48. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  49. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  50. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  51. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  52. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  53. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  54. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +93 -0
  55. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  56. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  57. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
  58. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  59. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  60. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  61. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +174 -0
  62. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  63. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  64. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  65. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  66. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
  67. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  68. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  69. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  70. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  71. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  72. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
  73. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  74. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  75. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +73 -0
  76. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  77. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  78. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  79. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  80. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  81. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  82. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  83. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  84. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  85. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +211 -0
  86. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  87. package/dest/mem_pools/tx_pool_v2/interfaces.js +9 -0
  88. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +119 -0
  89. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  90. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +193 -0
  91. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  92. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  93. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  94. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  95. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  96. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +354 -0
  97. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +60 -0
  98. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  99. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +164 -0
  100. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +78 -0
  101. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  102. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +908 -0
  103. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +3 -3
  104. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  105. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +2 -1
  106. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  107. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +2 -1
  108. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  109. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +3 -1
  110. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  111. package/dest/msg_validators/proposal_validator/proposal_validator.js +10 -0
  112. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +2 -1
  113. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -1
  114. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +166 -0
  115. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  116. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  117. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  118. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  119. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  120. package/dest/msg_validators/tx_validator/allowed_public_setup.js +25 -10
  121. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +16 -3
  122. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  123. package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
  124. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +13 -3
  125. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  126. package/dest/msg_validators/tx_validator/double_spend_validator.js +4 -4
  127. package/dest/msg_validators/tx_validator/factory.d.ts +114 -6
  128. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  129. package/dest/msg_validators/tx_validator/factory.js +219 -58
  130. package/dest/msg_validators/tx_validator/gas_validator.d.ts +58 -3
  131. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  132. package/dest/msg_validators/tx_validator/gas_validator.js +73 -36
  133. package/dest/msg_validators/tx_validator/index.d.ts +2 -1
  134. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  135. package/dest/msg_validators/tx_validator/index.js +1 -0
  136. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  137. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  138. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  139. package/dest/msg_validators/tx_validator/phases_validator.d.ts +2 -2
  140. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  141. package/dest/msg_validators/tx_validator/phases_validator.js +25 -24
  142. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +20 -4
  143. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  144. package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
  145. package/dest/services/dummy_service.d.ts +13 -5
  146. package/dest/services/dummy_service.d.ts.map +1 -1
  147. package/dest/services/dummy_service.js +10 -4
  148. package/dest/services/encoding.d.ts +3 -3
  149. package/dest/services/encoding.d.ts.map +1 -1
  150. package/dest/services/encoding.js +11 -10
  151. package/dest/services/gossipsub/index.d.ts +3 -0
  152. package/dest/services/gossipsub/index.d.ts.map +1 -0
  153. package/dest/services/gossipsub/index.js +2 -0
  154. package/dest/services/gossipsub/scoring.d.ts +21 -3
  155. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  156. package/dest/services/gossipsub/scoring.js +24 -7
  157. package/dest/services/gossipsub/topic_score_params.d.ts +173 -0
  158. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  159. package/dest/services/gossipsub/topic_score_params.js +346 -0
  160. package/dest/services/index.d.ts +2 -1
  161. package/dest/services/index.d.ts.map +1 -1
  162. package/dest/services/index.js +1 -0
  163. package/dest/services/libp2p/libp2p_service.d.ts +94 -42
  164. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  165. package/dest/services/libp2p/libp2p_service.js +428 -340
  166. package/dest/services/peer-manager/metrics.d.ts +3 -1
  167. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  168. package/dest/services/peer-manager/metrics.js +6 -0
  169. package/dest/services/peer-manager/peer_manager.d.ts +1 -1
  170. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  171. package/dest/services/peer-manager/peer_manager.js +2 -1
  172. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  173. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  174. package/dest/services/peer-manager/peer_scoring.js +25 -2
  175. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +6 -5
  176. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  177. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +26 -53
  178. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +2 -6
  179. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  180. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +10 -13
  181. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  182. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +25 -46
  183. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +17 -11
  184. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  185. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +49 -15
  186. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +2 -2
  187. package/dest/services/reqresp/interface.d.ts +10 -1
  188. package/dest/services/reqresp/interface.d.ts.map +1 -1
  189. package/dest/services/reqresp/interface.js +15 -1
  190. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  191. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  192. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +16 -11
  193. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +21 -10
  194. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  195. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +27 -11
  196. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  197. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  198. package/dest/services/reqresp/protocols/tx.js +20 -0
  199. package/dest/services/reqresp/reqresp.d.ts +1 -1
  200. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  201. package/dest/services/reqresp/reqresp.js +13 -5
  202. package/dest/services/service.d.ts +39 -3
  203. package/dest/services/service.d.ts.map +1 -1
  204. package/dest/services/tx_collection/config.d.ts +22 -4
  205. package/dest/services/tx_collection/config.d.ts.map +1 -1
  206. package/dest/services/tx_collection/config.js +49 -3
  207. package/dest/services/tx_collection/fast_tx_collection.d.ts +6 -5
  208. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  209. package/dest/services/tx_collection/fast_tx_collection.js +64 -48
  210. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  211. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  212. package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
  213. package/dest/services/tx_collection/file_store_tx_source.d.ts +37 -0
  214. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  215. package/dest/services/tx_collection/file_store_tx_source.js +90 -0
  216. package/dest/services/tx_collection/index.d.ts +3 -2
  217. package/dest/services/tx_collection/index.d.ts.map +1 -1
  218. package/dest/services/tx_collection/index.js +1 -0
  219. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  220. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  221. package/dest/services/tx_collection/instrumentation.js +2 -1
  222. package/dest/services/tx_collection/missing_txs_tracker.d.ts +32 -0
  223. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +1 -0
  224. package/dest/services/tx_collection/missing_txs_tracker.js +27 -0
  225. package/dest/services/tx_collection/proposal_tx_collector.d.ts +15 -14
  226. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  227. package/dest/services/tx_collection/proposal_tx_collector.js +6 -6
  228. package/dest/services/tx_collection/slow_tx_collection.d.ts +7 -3
  229. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  230. package/dest/services/tx_collection/slow_tx_collection.js +60 -26
  231. package/dest/services/tx_collection/tx_collection.d.ts +23 -10
  232. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  233. package/dest/services/tx_collection/tx_collection.js +75 -3
  234. package/dest/services/tx_collection/tx_collection_sink.d.ts +18 -8
  235. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  236. package/dest/services/tx_collection/tx_collection_sink.js +26 -29
  237. package/dest/services/tx_collection/tx_source.d.ts +8 -3
  238. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  239. package/dest/services/tx_collection/tx_source.js +19 -2
  240. package/dest/services/tx_file_store/config.d.ts +16 -0
  241. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  242. package/dest/services/tx_file_store/config.js +22 -0
  243. package/dest/services/tx_file_store/index.d.ts +4 -0
  244. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  245. package/dest/services/tx_file_store/index.js +3 -0
  246. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  247. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  248. package/dest/services/tx_file_store/instrumentation.js +29 -0
  249. package/dest/services/tx_file_store/tx_file_store.d.ts +48 -0
  250. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  251. package/dest/services/tx_file_store/tx_file_store.js +152 -0
  252. package/dest/services/tx_provider.d.ts +4 -4
  253. package/dest/services/tx_provider.d.ts.map +1 -1
  254. package/dest/services/tx_provider.js +9 -8
  255. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  256. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  257. package/dest/test-helpers/make-test-p2p-clients.js +1 -2
  258. package/dest/test-helpers/mock-pubsub.d.ts +30 -4
  259. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  260. package/dest/test-helpers/mock-pubsub.js +105 -4
  261. package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
  262. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  263. package/dest/test-helpers/reqresp-nodes.js +4 -3
  264. package/dest/test-helpers/testbench-utils.d.ts +43 -38
  265. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  266. package/dest/test-helpers/testbench-utils.js +128 -59
  267. package/dest/testbench/p2p_client_testbench_worker.d.ts +2 -2
  268. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  269. package/dest/testbench/p2p_client_testbench_worker.js +15 -15
  270. package/dest/util.d.ts +2 -2
  271. package/dest/util.d.ts.map +1 -1
  272. package/package.json +14 -14
  273. package/src/client/factory.ts +77 -26
  274. package/src/client/interface.ts +56 -34
  275. package/src/client/p2p_client.ts +185 -247
  276. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +20 -11
  277. package/src/config.ts +76 -43
  278. package/src/errors/tx-pool.error.ts +12 -0
  279. package/src/index.ts +1 -0
  280. package/src/mem_pools/attestation_pool/attestation_pool.ts +497 -91
  281. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +442 -102
  282. package/src/mem_pools/attestation_pool/index.ts +9 -2
  283. package/src/mem_pools/attestation_pool/mocks.ts +2 -1
  284. package/src/mem_pools/index.ts +4 -1
  285. package/src/mem_pools/instrumentation.ts +17 -13
  286. package/src/mem_pools/interface.ts +4 -4
  287. package/src/mem_pools/tx_pool/README.md +1 -1
  288. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +3 -3
  289. package/src/mem_pools/tx_pool_v2/README.md +275 -0
  290. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  291. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  292. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  293. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  294. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +121 -0
  295. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
  296. package/src/mem_pools/tx_pool_v2/eviction/index.ts +27 -0
  297. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +209 -0
  298. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  299. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  300. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
  301. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +90 -0
  302. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +31 -0
  303. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  304. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  305. package/src/mem_pools/tx_pool_v2/interfaces.ts +242 -0
  306. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +297 -0
  307. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  308. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +444 -0
  309. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +226 -0
  310. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1088 -0
  311. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +2 -2
  312. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +1 -1
  313. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +1 -1
  314. package/src/msg_validators/proposal_validator/proposal_validator.ts +15 -1
  315. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +144 -1
  316. package/src/msg_validators/tx_validator/README.md +115 -0
  317. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +5 -5
  318. package/src/msg_validators/tx_validator/allowed_public_setup.ts +27 -13
  319. package/src/msg_validators/tx_validator/block_header_validator.ts +15 -3
  320. package/src/msg_validators/tx_validator/double_spend_validator.ts +11 -6
  321. package/src/msg_validators/tx_validator/factory.ts +353 -77
  322. package/src/msg_validators/tx_validator/gas_validator.ts +90 -27
  323. package/src/msg_validators/tx_validator/index.ts +1 -0
  324. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  325. package/src/msg_validators/tx_validator/phases_validator.ts +25 -29
  326. package/src/msg_validators/tx_validator/timestamp_validator.ts +23 -18
  327. package/src/services/dummy_service.ts +18 -6
  328. package/src/services/encoding.ts +9 -9
  329. package/src/services/gossipsub/README.md +641 -0
  330. package/src/services/gossipsub/index.ts +2 -0
  331. package/src/services/gossipsub/scoring.ts +29 -5
  332. package/src/services/gossipsub/topic_score_params.ts +487 -0
  333. package/src/services/index.ts +1 -0
  334. package/src/services/libp2p/libp2p_service.ts +454 -362
  335. package/src/services/peer-manager/metrics.ts +7 -0
  336. package/src/services/peer-manager/peer_manager.ts +2 -1
  337. package/src/services/peer-manager/peer_scoring.ts +25 -0
  338. package/src/services/reqresp/batch-tx-requester/README.md +7 -7
  339. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +31 -59
  340. package/src/services/reqresp/batch-tx-requester/interface.ts +1 -5
  341. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +23 -71
  342. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +63 -24
  343. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +2 -2
  344. package/src/services/reqresp/interface.ts +26 -1
  345. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +23 -14
  346. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +38 -15
  347. package/src/services/reqresp/protocols/tx.ts +22 -0
  348. package/src/services/reqresp/reqresp.ts +16 -4
  349. package/src/services/service.ts +51 -2
  350. package/src/services/tx_collection/config.ts +74 -6
  351. package/src/services/tx_collection/fast_tx_collection.ts +74 -51
  352. package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
  353. package/src/services/tx_collection/file_store_tx_source.ts +117 -0
  354. package/src/services/tx_collection/index.ts +2 -1
  355. package/src/services/tx_collection/instrumentation.ts +7 -1
  356. package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
  357. package/src/services/tx_collection/proposal_tx_collector.ts +20 -21
  358. package/src/services/tx_collection/slow_tx_collection.ts +66 -33
  359. package/src/services/tx_collection/tx_collection.ts +113 -16
  360. package/src/services/tx_collection/tx_collection_sink.ts +30 -34
  361. package/src/services/tx_collection/tx_source.ts +22 -3
  362. package/src/services/tx_file_store/config.ts +37 -0
  363. package/src/services/tx_file_store/index.ts +3 -0
  364. package/src/services/tx_file_store/instrumentation.ts +36 -0
  365. package/src/services/tx_file_store/tx_file_store.ts +175 -0
  366. package/src/services/tx_provider.ts +10 -9
  367. package/src/test-helpers/make-test-p2p-clients.ts +3 -5
  368. package/src/test-helpers/mock-pubsub.ts +146 -9
  369. package/src/test-helpers/reqresp-nodes.ts +4 -6
  370. package/src/test-helpers/testbench-utils.ts +127 -71
  371. package/src/testbench/p2p_client_testbench_worker.ts +24 -21
  372. package/src/util.ts +7 -1
  373. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
  374. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  375. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
  376. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
  377. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  378. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
  379. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
  380. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
package/dest/config.d.ts CHANGED
@@ -1,17 +1,20 @@
1
1
  import { type ConfigMappingsType, SecretValue } from '@aztec/foundation/config';
2
2
  import { type DataStoreConfig } from '@aztec/kv-store/config';
3
- import { type AllowedElement, type ChainConfig } from '@aztec/stdlib/config';
3
+ import { type AllowedElement, type ChainConfig, type SequencerConfig } from '@aztec/stdlib/config';
4
4
  import { type BatchTxRequesterConfig } from './services/reqresp/batch-tx-requester/config.js';
5
5
  import { type P2PReqRespConfig } from './services/reqresp/config.js';
6
6
  import { type TxCollectionConfig } from './services/tx_collection/config.js';
7
+ import { type TxFileStoreConfig } from './services/tx_file_store/config.js';
7
8
  /**
8
9
  * P2P client configuration values.
9
10
  */
10
- export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, ChainConfig, TxCollectionConfig {
11
+ export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, ChainConfig, TxCollectionConfig, TxFileStoreConfig, Pick<SequencerConfig, 'blockDurationMs' | 'expectedBlockProposalsPerSlot' | 'maxTxsPerBlock'> {
11
12
  /** A flag dictating whether the P2P subsystem should be enabled. */
12
13
  p2pEnabled: boolean;
13
14
  /** The frequency in which to check for new L2 blocks. */
14
15
  blockCheckIntervalMS: number;
16
+ /** The frequency in which to check for new L2 slots. */
17
+ slotCheckIntervalMS: number;
15
18
  /** The number of blocks to fetch in a single batch. */
16
19
  blockRequestBatchSize: number;
17
20
  /** DEBUG: Disable colocation penalty - for testing purposes only */
@@ -80,8 +83,8 @@ export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, Cha
80
83
  preferredPeers: string[];
81
84
  /** The maximum possible size of the P2P DB in KB. Overwrites the general dataStoreMapSizeKb. */
82
85
  p2pStoreMapSizeKb?: number;
83
- /** Which calls are allowed in the public setup phase of a tx. */
84
- txPublicSetupAllowList: AllowedElement[];
86
+ /** Additional entries to extend the default setup allow list. */
87
+ txPublicSetupAllowListExtend: AllowedElement[];
85
88
  /** The maximum number of pending txs before evicting lower priority txs. */
86
89
  maxPendingTxCount: number;
87
90
  /** The node's seen message ID cache size */
@@ -96,9 +99,7 @@ export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, Cha
96
99
  p2pMaxFailedAuthAttemptsAllowed: number;
97
100
  /** Whether transactions are disabled for this node. This means transactions will be rejected at the RPC and P2P layers. */
98
101
  disableTransactions: boolean;
99
- /** True to simulate discarding transactions. - For testing purposes only*/
100
- dropTransactions: boolean;
101
- /** The probability that a transaction is discarded. - For testing purposes only */
102
+ /** The probability that a transaction is discarded (0 = disabled). - For testing purposes only */
102
103
  dropTransactionsProbability: number;
103
104
  /** Whether to delete transactions from the pool after a reorg instead of moving them back to pending. */
104
105
  txPoolDeleteTxsAfterReorg: boolean;
@@ -106,6 +107,10 @@ export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, Cha
106
107
  debugP2PInstrumentMessages: boolean;
107
108
  /** Whether to run in fisherman mode: validates all proposals and attestations but does not broadcast attestations or participate in consensus */
108
109
  fishermanMode: boolean;
110
+ /** Broadcast block proposals even when a conflicting proposal for the same slot already exists in the pool (for testing purposes only). */
111
+ broadcastEquivocatedProposals?: boolean;
112
+ /** Minimum age (ms) a transaction must have been in the pool before it's eligible for block building. */
113
+ minTxPoolAgeMs: number;
109
114
  }
110
115
  export declare const DEFAULT_P2P_PORT = 40400;
111
116
  export declare const p2pConfigMappings: ConfigMappingsType<P2PConfig>;
@@ -126,10 +131,12 @@ export declare const bootnodeConfigMappings: ConfigMappingsType<Pick<{
126
131
  batchTxRequesterSmartParallelWorkerCount: unknown;
127
132
  batchTxRequesterTxBatchSize: unknown;
128
133
  blockCheckIntervalMS: unknown;
134
+ blockDurationMs: unknown;
129
135
  blockRequestBatchSize: unknown;
130
136
  bootstrapNodeEnrVersionCheck: unknown;
131
137
  bootstrapNodes: unknown;
132
138
  bootstrapNodesAsFullPeers: unknown;
139
+ broadcastEquivocatedProposals: unknown;
133
140
  dataDirectory: unknown;
134
141
  dataStoreMapSizeKb: unknown;
135
142
  debugDisableColocationPenalty: unknown;
@@ -137,8 +144,8 @@ export declare const bootnodeConfigMappings: ConfigMappingsType<Pick<{
137
144
  dialTimeoutMs: unknown;
138
145
  disableTransactions: unknown;
139
146
  doubleSpendSeverePeerPenaltyWindow: unknown;
140
- dropTransactions: unknown;
141
147
  dropTransactionsProbability: unknown;
148
+ expectedBlockProposalsPerSlot: unknown;
142
149
  fishermanMode: unknown;
143
150
  gossipsubD: unknown;
144
151
  gossipsubDLazy: unknown;
@@ -159,6 +166,8 @@ export declare const bootnodeConfigMappings: ConfigMappingsType<Pick<{
159
166
  listenAddress: unknown;
160
167
  maxPeerCount: unknown;
161
168
  maxPendingTxCount: unknown;
169
+ maxTxsPerBlock: unknown;
170
+ minTxPoolAgeMs: unknown;
162
171
  overallRequestTimeoutMs: unknown;
163
172
  p2pAllowOnlyValidators: unknown;
164
173
  p2pBroadcastPort: unknown;
@@ -179,31 +188,43 @@ export declare const bootnodeConfigMappings: ConfigMappingsType<Pick<{
179
188
  queryForIp: unknown;
180
189
  rollupVersion: unknown;
181
190
  seenMessageCacheSize: unknown;
191
+ slotCheckIntervalMS: unknown;
182
192
  trustedPeers: unknown;
183
193
  txCollectionDisableSlowDuringFastRequests: unknown;
184
194
  txCollectionFastMaxParallelRequestsPerNode: unknown;
185
195
  txCollectionFastNodeIntervalMs: unknown;
186
196
  txCollectionFastNodesTimeoutBeforeReqRespMs: unknown;
197
+ txCollectionFileStoreFastBackoffBaseMs: unknown;
198
+ txCollectionFileStoreFastBackoffMaxMs: unknown;
199
+ txCollectionFileStoreFastDelayMs: unknown;
200
+ txCollectionFileStoreFastWorkerCount: unknown;
201
+ txCollectionFileStoreSlowBackoffBaseMs: unknown;
202
+ txCollectionFileStoreSlowBackoffMaxMs: unknown;
203
+ txCollectionFileStoreSlowDelayMs: unknown;
204
+ txCollectionFileStoreSlowWorkerCount: unknown;
205
+ txCollectionFileStoreUrls: unknown;
206
+ txCollectionMissingTxsCollectorType: unknown;
187
207
  txCollectionNodeRpcMaxBatchSize: unknown;
188
208
  txCollectionNodeRpcUrls: unknown;
189
- txCollectionProposalTxCollectorType: unknown;
190
209
  txCollectionReconcileIntervalMs: unknown;
191
210
  txCollectionSlowNodesIntervalMs: unknown;
192
211
  txCollectionSlowReqRespIntervalMs: unknown;
193
212
  txCollectionSlowReqRespTimeoutMs: unknown;
213
+ txFileStoreEnabled: unknown;
214
+ txFileStoreMaxQueueSize: unknown;
215
+ txFileStoreUploadConcurrency: unknown;
216
+ txFileStoreUrl: unknown;
194
217
  txPoolDeleteTxsAfterReorg: unknown;
195
- txPublicSetupAllowList: unknown;
218
+ txPublicSetupAllowListExtend: unknown;
196
219
  }, "bootstrapNodes" | "dataDirectory" | "dataStoreMapSizeKb" | "l1ChainId" | "listenAddress" | "p2pBroadcastPort" | "p2pIp" | "p2pPort" | "peerIdPrivateKey" | "peerIdPrivateKeyPath" | "queryForIp">>;
197
220
  /**
198
221
  * Parses a string to a list of allowed elements.
199
- * Each encoded is expected to be of one of the following formats
200
- * `I:${address}`
201
- * `I:${address}:${selector}`
202
- * `C:${classId}`
203
- * `C:${classId}:${selector}`
222
+ * Each entry is expected to be of one of the following formats:
223
+ * `I:${address}:${selector}` — instance (contract address) with function selector
224
+ * `C:${classId}:${selector}` — class with function selector
204
225
  *
205
226
  * @param value The string to parse
206
227
  * @returns A list of allowed elements
207
228
  */
208
229
  export declare function parseAllowList(value: string): AllowedElement[];
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQUN2QixXQUFXLEVBUVosTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXNCLE1BQU0sd0JBQXdCLENBQUM7QUFHbEYsT0FBTyxFQUFFLEtBQUssY0FBYyxFQUFFLEtBQUssV0FBVyxFQUF1QixNQUFNLHNCQUFzQixDQUFDO0FBRWxHLE9BQU8sRUFDTCxLQUFLLHNCQUFzQixFQUU1QixNQUFNLGlEQUFpRCxDQUFDO0FBQ3pELE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUE0QixNQUFNLDhCQUE4QixDQUFDO0FBQy9GLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUE4QixNQUFNLG9DQUFvQyxDQUFDO0FBRXpHOztHQUVHO0FBQ0gsTUFBTSxXQUFXLFNBQVUsU0FBUSxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsa0JBQWtCO0lBQzFHLG9FQUFvRTtJQUNwRSxVQUFVLEVBQUUsT0FBTyxDQUFDO0lBRXBCLHlEQUF5RDtJQUN6RCxvQkFBb0IsRUFBRSxNQUFNLENBQUM7SUFFN0IsdURBQXVEO0lBQ3ZELHFCQUFxQixFQUFFLE1BQU0sQ0FBQztJQUU5QixvRUFBb0U7SUFDcEUsNkJBQTZCLEVBQUUsT0FBTyxDQUFDO0lBRXZDLHFEQUFxRDtJQUNyRCxtQkFBbUIsRUFBRSxNQUFNLENBQUM7SUFFNUIsMkNBQTJDO0lBQzNDLFdBQVcsRUFBRSxNQUFNLENBQUM7SUFFcEIsb0NBQW9DO0lBQ3BDLE9BQU8sRUFBRSxNQUFNLENBQUM7SUFFaEIsNkVBQTZFO0lBQzdFLGdCQUFnQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBRTFCLDBDQUEwQztJQUMxQyxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUM7SUFFZiwwQkFBMEI7SUFDMUIsYUFB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
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQUN2QixXQUFXLEVBUVosTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXNCLE1BQU0sd0JBQXdCLENBQUM7QUFHbEYsT0FBTyxFQUNMLEtBQUssY0FBYyxFQUNuQixLQUFLLFdBQVcsRUFDaEIsS0FBSyxlQUFlLEVBR3JCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUNMLEtBQUssc0JBQXNCLEVBRTVCLE1BQU0saURBQWlELENBQUM7QUFDekQsT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQTRCLE1BQU0sOEJBQThCLENBQUM7QUFDL0YsT0FBTyxFQUFFLEtBQUssa0JBQWtCLEVBQThCLE1BQU0sb0NBQW9DLENBQUM7QUFDekcsT0FBTyxFQUFFLEtBQUssaUJBQWlCLEVBQTZCLE1BQU0sb0NBQW9DLENBQUM7QUFFdkc7O0dBRUc7QUFDSCxNQUFNLFdBQVcsU0FDZixTQUFRLGdCQUFnQixFQUN0QixzQkFBc0IsRUFDdEIsV0FBVyxFQUNYLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsSUFBSSxDQUFDLGVBQWUsRUFBRSxpQkFBaUIsR0FBRywrQkFBK0IsR0FBRyxnQkFBZ0IsQ0FBQztJQUMvRixvRUFBb0U7SUFDcEUsVUFBVSxFQUFFLE9BQU8sQ0FBQztJQUVwQix5REFBeUQ7SUFDekQsb0JBQW9CLEVBQUUsTUFBTSxDQUFDO0lBRTdCLHdEQUF3RDtJQUN4RCxtQkFBbUIsRUFBRSxNQUFNLENBQUM7SUFFNUIsdURBQXVEO0lBQ3ZELHFCQUFxQixFQUFFLE1BQU0sQ0FBQztJQUU5QixvRUFBb0U7SUFDcEUsNkJBQTZCLEVBQUUsT0FBTyxDQUFDO0lBRXZDLHFEQUFxRDtJQUNyRCxtQkFBbUIsRUFBRSxNQUFNLENBQUM7SUFF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
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dest/config.js CHANGED
@@ -3,10 +3,11 @@ 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
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 = {
12
13
  p2pEnabled: {
@@ -24,6 +25,11 @@ export const p2pConfigMappings = {
24
25
  description: 'The frequency in which to check for new L2 blocks.',
25
26
  ...numberConfigHelper(100)
26
27
  },
28
+ slotCheckIntervalMS: {
29
+ env: 'P2P_SLOT_CHECK_INTERVAL_MS',
30
+ description: 'The frequency in which to check for new L2 slots.',
31
+ ...numberConfigHelper(1000)
32
+ },
27
33
  debugDisableColocationPenalty: {
28
34
  env: 'DEBUG_P2P_DISABLE_COLOCATION_PENALTY',
29
35
  description: 'DEBUG: Disable colocation penalty - NEVER set to true in production',
@@ -200,11 +206,11 @@ export const p2pConfigMappings = {
200
206
  parseEnv: (val)=>val ? +val : undefined,
201
207
  description: 'The maximum possible size of the P2P DB in KB. Overwrites the general dataStoreMapSizeKb.'
202
208
  },
203
- txPublicSetupAllowList: {
209
+ txPublicSetupAllowListExtend: {
204
210
  env: 'TX_PUBLIC_SETUP_ALLOWLIST',
205
211
  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'
212
+ description: 'Additional entries to extend the default setup allow list. Format: I:address:selector,C:classId:selector',
213
+ printDefault: ()=>'Default: AuthRegistry._set_authorized, FeeJuice._increase_public_balance, Token._increase_public_balance, Token.transfer_in_public'
208
214
  },
209
215
  maxPendingTxCount: {
210
216
  env: 'P2P_MAX_PENDING_TX_COUNT',
@@ -233,11 +239,6 @@ export const p2pConfigMappings = {
233
239
  description: 'Number of auth attempts to allow before peer is banned. Number is inclusive',
234
240
  ...numberConfigHelper(3)
235
241
  },
236
- dropTransactions: {
237
- env: 'P2P_DROP_TX',
238
- description: 'True to simulate discarding transactions. - For testing purposes only',
239
- ...booleanConfigHelper(false)
240
- },
241
242
  dropTransactionsProbability: {
242
243
  env: 'P2P_DROP_TX_CHANCE',
243
244
  description: 'The probability that a transaction is discarded (0 - 1). - For testing purposes only',
@@ -263,10 +264,21 @@ export const p2pConfigMappings = {
263
264
  description: 'Whether to run in fisherman mode: validates all proposals and attestations but does not broadcast attestations or participate in consensus.',
264
265
  ...booleanConfigHelper(false)
265
266
  },
267
+ broadcastEquivocatedProposals: {
268
+ description: 'Broadcast block proposals even when a conflicting proposal for the same slot already exists in the pool (for testing purposes only).',
269
+ ...booleanConfigHelper(false)
270
+ },
271
+ minTxPoolAgeMs: {
272
+ env: 'P2P_MIN_TX_POOL_AGE_MS',
273
+ description: 'Minimum age (ms) a transaction must have been in the pool before it is eligible for block building.',
274
+ ...numberConfigHelper(2_000)
275
+ },
276
+ ...sharedSequencerConfigMappings,
266
277
  ...p2pReqRespConfigMappings,
267
278
  ...batchTxRequesterConfigMappings,
268
279
  ...chainConfigMappings,
269
- ...txCollectionConfigMappings
280
+ ...txCollectionConfigMappings,
281
+ ...txFileStoreConfigMappings
270
282
  };
271
283
  /**
272
284
  * Gets the config values for p2p client from environment variables.
@@ -297,11 +309,9 @@ export const bootnodeConfigMappings = pickConfigMappings({
297
309
  }, bootnodeConfigKeys);
298
310
  /**
299
311
  * 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}`
312
+ * Each entry is expected to be of one of the following formats:
313
+ * `I:${address}:${selector}` — instance (contract address) with function selector
314
+ * `C:${classId}:${selector}` — class with function selector
305
315
  *
306
316
  * @param value The string to parse
307
317
  * @returns A list of allowed elements
@@ -311,30 +321,27 @@ export const bootnodeConfigMappings = pickConfigMappings({
311
321
  return entries;
312
322
  }
313
323
  for (const val of value.split(',')){
314
- const [typeString, identifierString, selectorString] = val.split(':');
315
- const selector = selectorString !== undefined ? FunctionSelector.fromString(selectorString) : undefined;
324
+ const trimmed = val.trim();
325
+ if (!trimmed) {
326
+ continue;
327
+ }
328
+ const [typeString, identifierString, selectorString] = trimmed.split(':');
329
+ if (!selectorString) {
330
+ throw new Error(`Invalid allow list entry "${trimmed}": selector is required. Expected format: I:address:selector or C:classId:selector`);
331
+ }
332
+ const selector = FunctionSelector.fromString(selectorString);
316
333
  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
- }
334
+ entries.push({
335
+ address: AztecAddress.fromString(identifierString),
336
+ selector
337
+ });
327
338
  } 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
- }
339
+ entries.push({
340
+ classId: Fr.fromHexString(identifierString),
341
+ selector
342
+ });
343
+ } else {
344
+ throw new Error(`Invalid allow list entry "${trimmed}": unknown type "${typeString}". Expected "I" (instance) or "C" (class).`);
338
345
  }
339
346
  }
340
347
  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,43 +1,101 @@
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 = 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 {
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 << 10) | indexWithinCheckpoint. */
56
+ private getBlockPositionKey;
57
+ /**
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
67
+ */
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;
72
+ /**
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
24
- *
25
- * @param idOrProposal - The ID of the block proposal or the block proposal itself to check. The ID is proposal.payload.archive
83
+ * Attempts to add a checkpoint proposal to the pool.
26
84
  *
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.
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
32
89
  *
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).
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().
36
93
  *
37
- * @param proposal - The checkpoint proposal to add
38
- * @throws ProposalSlotCapExceededError if the slot has reached the maximum number of proposals
94
+ * @param proposal - The checkpoint proposal core to add
95
+ * @returns Result indicating whether the proposal was added and duplicate detection info
39
96
  */
40
- addCheckpointProposal(proposal: CheckpointProposal): Promise<void>;
97
+ tryAddCheckpointProposal(proposal: CheckpointProposalCore): Promise<TryAddResult>;
98
+ private addCheckpointProposal;
41
99
  /**
42
100
  * Get checkpoint proposal by its ID.
43
101
  *
@@ -49,33 +107,19 @@ export interface AttestationPool {
49
107
  */
50
108
  getCheckpointProposal(id: string): Promise<CheckpointProposalCore | undefined>;
51
109
  /**
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.
110
+ * Adds own checkpoint attestations to the pool.
111
+ * Skips validations on number of checkpoint attestations stored for the given slot.
68
112
  */
69
- deleteCheckpointAttestationsOlderThan(slot: SlotNumber): Promise<void>;
113
+ addOwnCheckpointAttestations(attestations: CheckpointAttestation[]): Promise<void>;
70
114
  /**
71
- * Get all checkpoint attestations for a given slot
115
+ * Get all checkpoint attestations for a given slot.
72
116
  *
73
117
  * @param slot - The slot to query
74
118
  * @return CheckpointAttestations
75
119
  */
76
120
  getCheckpointAttestationsForSlot(slot: SlotNumber): Promise<CheckpointAttestation[]>;
77
121
  /**
78
- * Get checkpoint attestations for slot and given proposal
122
+ * Get checkpoint attestations for slot and given proposal.
79
123
  *
80
124
  * @param slot - The slot to query
81
125
  * @param proposalId - The proposal to query
@@ -83,54 +127,26 @@ export interface AttestationPool {
83
127
  */
84
128
  getCheckpointAttestationsForSlotAndProposal(slot: SlotNumber, proposalId: string): Promise<CheckpointAttestation[]>;
85
129
  /**
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.
130
+ * Delete all pool data (attestations, proposals) older than the given slot.
104
131
  *
105
- * @param proposal - The checkpoint proposal to check
106
- * @returns True if the proposal can be added, false otherwise.
132
+ * @param oldestSlot - The oldest slot to keep.
107
133
  */
108
- canAddCheckpointProposal(proposal: CheckpointProposal): Promise<boolean>;
134
+ deleteOlderThan(oldestSlot: SlotNumber): Promise<void>;
109
135
  /**
110
- * Returns whether a checkpoint attestation would be accepted for (slot, proposalId).
136
+ * Attempts to add a checkpoint attestation to the pool.
111
137
  *
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.
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
119
142
  *
120
- * @param slot - The slot to check
121
- * @returns True if the cap has been reached, 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)
122
146
  */
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>;
147
+ tryAddCheckpointAttestation(attestation: CheckpointAttestation): Promise<TryAddResult>;
148
+ private getSignerAttestationCountForSlot;
135
149
  }
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb25fcG9vbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21lbV9wb29scy9hdHRlc3RhdGlvbl9wb29sL2F0dGVzdGF0aW9uX3Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQ1YsYUFBYSxFQUNiLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3ZCLE1BQU0sbUJBQW1CLENBQUM7QUFFM0I7Ozs7O0dBS0c7QUFDSCxNQUFNLFdBQVcsZUFBZTtJQUM5Qjs7T0FFRztJQUNILGdCQUFnQixDQUFDLGFBQWEsRUFBRSxhQUFhLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTlEOzs7Ozs7T0FNRztJQUNILGdCQUFnQixDQUFDLEVBQUUsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsQ0FBQztJQUVqRTs7Ozs7O09BTUc7SUFDSCxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsTUFBTSxHQUFHLGFBQWEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFekU7Ozs7Ozs7OztPQVNHO0lBQ0gscUJBQXFCLENBQUMsUUFBUSxFQUFFLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVuRTs7Ozs7Ozs7T0FRRztJQUNILHFCQUFxQixDQUFDLEVBQUUsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBRS9FOzs7OztPQUtHO0lBQ0gscUJBQXFCLENBQUMsWUFBWSxFQUFFLE1BQU0sR0FBRyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFbkY7Ozs7T0FJRztJQUNILHlCQUF5QixDQUFDLFlBQVksRUFBRSxxQkFBcUIsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVoRjs7OztPQUlHO0lBQ0gscUNBQXFDLENBQUMsSUFBSSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFdkU7Ozs7O09BS0c7SUFDSCxnQ0FBZ0MsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7SUFFckY7Ozs7OztPQU1HO0lBQ0gsMkNBQTJDLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7SUFFcEg7Ozs7O09BS0c7SUFDSCx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUscUJBQXFCLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRS9FOzs7Ozs7OztPQVFHO0lBQ0gsY0FBYyxDQUFDLEtBQUssRUFBRSxhQUFhLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXZEOzs7OztPQUtHO0lBQ0gsd0JBQXdCLENBQUMsUUFBUSxFQUFFLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUV6RTs7Ozs7O09BTUc7SUFDSCwyQkFBMkIsQ0FBQyxXQUFXLEVBQUUscUJBQXFCLEVBQUUsYUFBYSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFekc7Ozs7O09BS0c7SUFDSCwrQkFBK0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVwRTs7Ozs7OztPQU9HO0lBQ0gsa0NBQWtDLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRWxILHlDQUF5QztJQUN6QyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0NBQzdCIn0=
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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