@aztec/p2p 0.0.1-commit.24de95ac → 0.0.1-commit.2e2504e2

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 (538) hide show
  1. package/dest/bootstrap/bootstrap.d.ts +4 -3
  2. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  3. package/dest/bootstrap/bootstrap.js +4 -4
  4. package/dest/client/factory.d.ts +2 -2
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +11 -9
  7. package/dest/client/index.d.ts +1 -1
  8. package/dest/client/interface.d.ts +18 -3
  9. package/dest/client/interface.d.ts.map +1 -1
  10. package/dest/client/p2p_client.d.ts +18 -37
  11. package/dest/client/p2p_client.d.ts.map +1 -1
  12. package/dest/client/p2p_client.js +477 -128
  13. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +2 -0
  14. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +1 -0
  15. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +305 -0
  16. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +73 -0
  17. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +1 -0
  18. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +8 -0
  19. package/dest/config.d.ts +75 -60
  20. package/dest/config.d.ts.map +1 -1
  21. package/dest/config.js +26 -15
  22. package/dest/enr/generate-enr.d.ts +1 -1
  23. package/dest/enr/index.d.ts +1 -1
  24. package/dest/errors/attestation-pool.error.d.ts +7 -0
  25. package/dest/errors/attestation-pool.error.d.ts.map +1 -0
  26. package/dest/errors/attestation-pool.error.js +12 -0
  27. package/dest/errors/reqresp.error.d.ts +1 -1
  28. package/dest/errors/reqresp.error.d.ts.map +1 -1
  29. package/dest/index.d.ts +1 -1
  30. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +77 -36
  31. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  32. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
  33. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  34. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +241 -266
  35. package/dest/mem_pools/attestation_pool/index.d.ts +1 -1
  36. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +24 -14
  37. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
  38. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +123 -95
  39. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +18 -12
  40. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
  41. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +91 -108
  42. package/dest/mem_pools/attestation_pool/mocks.d.ts +234 -10
  43. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  44. package/dest/mem_pools/attestation_pool/mocks.js +17 -13
  45. package/dest/mem_pools/index.d.ts +1 -1
  46. package/dest/mem_pools/instrumentation.d.ts +9 -1
  47. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  48. package/dest/mem_pools/instrumentation.js +37 -10
  49. package/dest/mem_pools/interface.d.ts +3 -4
  50. package/dest/mem_pools/interface.d.ts.map +1 -1
  51. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +33 -58
  52. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  53. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +314 -335
  54. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +32 -0
  55. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -0
  56. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +112 -0
  57. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +157 -0
  58. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -0
  59. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +52 -0
  60. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +16 -0
  61. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  62. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +122 -0
  63. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +17 -0
  64. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  65. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +84 -0
  66. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +19 -0
  67. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  68. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +78 -0
  69. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +26 -0
  70. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  71. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +84 -0
  72. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
  73. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
  74. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
  75. package/dest/mem_pools/tx_pool/index.d.ts +1 -2
  76. package/dest/mem_pools/tx_pool/index.d.ts.map +1 -1
  77. package/dest/mem_pools/tx_pool/index.js +0 -1
  78. package/dest/mem_pools/tx_pool/priority.d.ts +5 -1
  79. package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
  80. package/dest/mem_pools/tx_pool/priority.js +6 -1
  81. package/dest/mem_pools/tx_pool/tx_pool.d.ts +11 -6
  82. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
  83. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
  84. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  85. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +30 -24
  86. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  87. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  88. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  89. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  90. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  91. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  92. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  93. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  94. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +119 -0
  95. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  96. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  97. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +90 -0
  98. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  99. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  100. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +89 -0
  101. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  102. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  103. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  104. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +131 -0
  105. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  106. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +17 -0
  107. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  108. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  109. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +63 -0
  110. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  111. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  112. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +91 -0
  113. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  114. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  115. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +70 -0
  116. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  117. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  118. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +63 -0
  119. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  120. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  121. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  122. package/dest/mem_pools/tx_pool_v2/index.d.ts +5 -0
  123. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  124. package/dest/mem_pools/tx_pool_v2/index.js +4 -0
  125. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +193 -0
  126. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  127. package/dest/mem_pools/tx_pool_v2/interfaces.js +6 -0
  128. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +71 -0
  129. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  130. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +94 -0
  131. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  132. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  133. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  134. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +55 -0
  135. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  136. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +150 -0
  137. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +69 -0
  138. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  139. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +1041 -0
  140. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +7 -6
  141. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  142. package/dest/msg_validators/attestation_validator/attestation_validator.js +57 -24
  143. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +20 -0
  144. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -0
  145. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +76 -0
  146. package/dest/msg_validators/attestation_validator/index.d.ts +2 -1
  147. package/dest/msg_validators/attestation_validator/index.d.ts.map +1 -1
  148. package/dest/msg_validators/attestation_validator/index.js +1 -0
  149. package/dest/msg_validators/clock_tolerance.d.ts +21 -0
  150. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
  151. package/dest/msg_validators/clock_tolerance.js +37 -0
  152. package/dest/msg_validators/index.d.ts +2 -2
  153. package/dest/msg_validators/index.d.ts.map +1 -1
  154. package/dest/msg_validators/index.js +1 -1
  155. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts +1 -1
  156. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts.map +1 -1
  157. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +9 -0
  158. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
  159. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +6 -0
  160. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +9 -0
  161. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
  162. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +6 -0
  163. package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
  164. package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
  165. package/dest/msg_validators/proposal_validator/index.js +3 -0
  166. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -0
  167. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
  168. package/dest/msg_validators/proposal_validator/proposal_validator.js +104 -0
  169. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +23 -0
  170. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -0
  171. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +212 -0
  172. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +1 -1
  173. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  174. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +1 -1
  175. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  176. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  177. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  178. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +5 -4
  179. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  180. package/dest/msg_validators/tx_validator/block_header_validator.js +3 -2
  181. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  182. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  183. package/dest/msg_validators/tx_validator/data_validator.js +4 -1
  184. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +3 -2
  185. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  186. package/dest/msg_validators/tx_validator/double_spend_validator.js +3 -2
  187. package/dest/msg_validators/tx_validator/factory.d.ts +10 -4
  188. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  189. package/dest/msg_validators/tx_validator/factory.js +22 -12
  190. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
  191. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
  192. package/dest/msg_validators/tx_validator/fee_payer_balance.js +20 -0
  193. package/dest/msg_validators/tx_validator/gas_validator.d.ts +3 -2
  194. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  195. package/dest/msg_validators/tx_validator/gas_validator.js +11 -16
  196. package/dest/msg_validators/tx_validator/index.d.ts +2 -1
  197. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  198. package/dest/msg_validators/tx_validator/index.js +1 -0
  199. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +4 -3
  200. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  201. package/dest/msg_validators/tx_validator/metadata_validator.js +2 -2
  202. package/dest/msg_validators/tx_validator/phases_validator.d.ts +3 -2
  203. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  204. package/dest/msg_validators/tx_validator/phases_validator.js +6 -4
  205. package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
  206. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
  207. package/dest/msg_validators/tx_validator/size_validator.js +23 -0
  208. package/dest/msg_validators/tx_validator/test_utils.d.ts +2 -2
  209. package/dest/msg_validators/tx_validator/test_utils.d.ts.map +1 -1
  210. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +5 -3
  211. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  212. package/dest/msg_validators/tx_validator/timestamp_validator.js +2 -2
  213. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  214. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  215. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  216. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  217. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  218. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
  219. package/dest/services/data_store.d.ts +1 -1
  220. package/dest/services/data_store.d.ts.map +1 -1
  221. package/dest/services/data_store.js +10 -6
  222. package/dest/services/discv5/discV5_service.d.ts +1 -1
  223. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  224. package/dest/services/discv5/discV5_service.js +1 -1
  225. package/dest/services/dummy_service.d.ts +18 -2
  226. package/dest/services/dummy_service.d.ts.map +1 -1
  227. package/dest/services/dummy_service.js +42 -0
  228. package/dest/services/encoding.d.ts +1 -1
  229. package/dest/services/encoding.d.ts.map +1 -1
  230. package/dest/services/encoding.js +7 -6
  231. package/dest/services/gossipsub/scoring.d.ts +1 -1
  232. package/dest/services/index.d.ts +2 -1
  233. package/dest/services/index.d.ts.map +1 -1
  234. package/dest/services/index.js +1 -0
  235. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  236. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  237. package/dest/services/libp2p/instrumentation.js +36 -71
  238. package/dest/services/libp2p/libp2p_service.d.ts +48 -81
  239. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  240. package/dest/services/libp2p/libp2p_service.js +926 -193
  241. package/dest/services/peer-manager/interface.d.ts +1 -1
  242. package/dest/services/peer-manager/metrics.d.ts +9 -2
  243. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  244. package/dest/services/peer-manager/metrics.js +39 -16
  245. package/dest/services/peer-manager/peer_manager.d.ts +2 -33
  246. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  247. package/dest/services/peer-manager/peer_manager.js +6 -12
  248. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  249. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  250. package/dest/services/peer-manager/peer_scoring.js +43 -2
  251. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +47 -0
  252. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  253. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +566 -0
  254. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  255. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  256. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  257. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +50 -0
  258. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  259. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  260. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +37 -0
  261. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  262. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +151 -0
  263. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +54 -0
  264. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  265. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +139 -0
  266. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
  267. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  268. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
  269. package/dest/services/reqresp/config.d.ts +1 -1
  270. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +22 -3
  271. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  272. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +63 -4
  273. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -4
  274. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  275. package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
  276. package/dest/services/reqresp/constants.d.ts +12 -0
  277. package/dest/services/reqresp/constants.d.ts.map +1 -0
  278. package/dest/services/reqresp/constants.js +7 -0
  279. package/dest/services/reqresp/index.d.ts +1 -1
  280. package/dest/services/reqresp/interface.d.ts +4 -2
  281. package/dest/services/reqresp/interface.d.ts.map +1 -1
  282. package/dest/services/reqresp/interface.js +1 -1
  283. package/dest/services/reqresp/metrics.d.ts +6 -5
  284. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  285. package/dest/services/reqresp/metrics.js +17 -21
  286. package/dest/services/reqresp/protocols/auth.d.ts +2 -2
  287. package/dest/services/reqresp/protocols/auth.d.ts.map +1 -1
  288. package/dest/services/reqresp/protocols/auth.js +2 -2
  289. package/dest/services/reqresp/protocols/block.d.ts +1 -1
  290. package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
  291. package/dest/services/reqresp/protocols/block.js +3 -2
  292. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
  293. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  294. package/dest/services/reqresp/protocols/block_txs/bitvector.js +12 -0
  295. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +1 -1
  296. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  297. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +16 -3
  298. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +19 -9
  299. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  300. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +44 -14
  301. package/dest/services/reqresp/protocols/block_txs/index.d.ts +1 -1
  302. package/dest/services/reqresp/protocols/goodbye.d.ts +1 -1
  303. package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
  304. package/dest/services/reqresp/protocols/index.d.ts +1 -1
  305. package/dest/services/reqresp/protocols/ping.d.ts +1 -1
  306. package/dest/services/reqresp/protocols/status.d.ts +6 -5
  307. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  308. package/dest/services/reqresp/protocols/status.js +7 -3
  309. package/dest/services/reqresp/protocols/tx.d.ts +2 -3
  310. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  311. package/dest/services/reqresp/rate-limiter/index.d.ts +1 -1
  312. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +2 -2
  313. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  314. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  315. package/dest/services/reqresp/reqresp.d.ts +6 -41
  316. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  317. package/dest/services/reqresp/reqresp.js +460 -46
  318. package/dest/services/reqresp/status.d.ts +2 -2
  319. package/dest/services/reqresp/status.d.ts.map +1 -1
  320. package/dest/services/service.d.ts +19 -3
  321. package/dest/services/service.d.ts.map +1 -1
  322. package/dest/services/tx_collection/config.d.ts +4 -1
  323. package/dest/services/tx_collection/config.d.ts.map +1 -1
  324. package/dest/services/tx_collection/config.js +10 -2
  325. package/dest/services/tx_collection/fast_tx_collection.d.ts +9 -12
  326. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  327. package/dest/services/tx_collection/fast_tx_collection.js +16 -5
  328. package/dest/services/tx_collection/index.d.ts +2 -1
  329. package/dest/services/tx_collection/index.d.ts.map +1 -1
  330. package/dest/services/tx_collection/index.js +1 -0
  331. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  332. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  333. package/dest/services/tx_collection/instrumentation.js +10 -13
  334. package/dest/services/tx_collection/proposal_tx_collector.d.ts +48 -0
  335. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
  336. package/dest/services/tx_collection/proposal_tx_collector.js +50 -0
  337. package/dest/services/tx_collection/slow_tx_collection.d.ts +4 -5
  338. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  339. package/dest/services/tx_collection/slow_tx_collection.js +2 -1
  340. package/dest/services/tx_collection/tx_collection.d.ts +10 -10
  341. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  342. package/dest/services/tx_collection/tx_collection.js +5 -5
  343. package/dest/services/tx_collection/tx_collection_sink.d.ts +3 -3
  344. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  345. package/dest/services/tx_collection/tx_source.d.ts +1 -1
  346. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  347. package/dest/services/tx_file_store/config.d.ts +18 -0
  348. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  349. package/dest/services/tx_file_store/config.js +26 -0
  350. package/dest/services/tx_file_store/index.d.ts +4 -0
  351. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  352. package/dest/services/tx_file_store/index.js +3 -0
  353. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  354. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  355. package/dest/services/tx_file_store/instrumentation.js +29 -0
  356. package/dest/services/tx_file_store/tx_file_store.d.ts +47 -0
  357. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  358. package/dest/services/tx_file_store/tx_file_store.js +149 -0
  359. package/dest/services/tx_provider.d.ts +4 -2
  360. package/dest/services/tx_provider.d.ts.map +1 -1
  361. package/dest/services/tx_provider.js +11 -2
  362. package/dest/services/tx_provider_instrumentation.d.ts +5 -2
  363. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  364. package/dest/services/tx_provider_instrumentation.js +14 -14
  365. package/dest/test-helpers/generate-peer-id-private-keys.d.ts +1 -1
  366. package/dest/test-helpers/get-ports.d.ts +1 -1
  367. package/dest/test-helpers/get-ports.d.ts.map +1 -1
  368. package/dest/test-helpers/index.d.ts +3 -1
  369. package/dest/test-helpers/index.d.ts.map +1 -1
  370. package/dest/test-helpers/index.js +2 -0
  371. package/dest/test-helpers/make-enrs.d.ts +1 -1
  372. package/dest/test-helpers/make-test-p2p-clients.d.ts +2 -2
  373. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  374. package/dest/test-helpers/mock-pubsub.d.ts +4 -4
  375. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  376. package/dest/test-helpers/mock-tx-helpers.d.ts +2 -2
  377. package/dest/test-helpers/mock-tx-helpers.d.ts.map +1 -1
  378. package/dest/test-helpers/mock-tx-helpers.js +1 -1
  379. package/dest/test-helpers/reqresp-nodes.d.ts +2 -2
  380. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  381. package/dest/test-helpers/test_tx_provider.d.ts +40 -0
  382. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  383. package/dest/test-helpers/test_tx_provider.js +41 -0
  384. package/dest/test-helpers/testbench-utils.d.ts +158 -0
  385. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  386. package/dest/test-helpers/testbench-utils.js +297 -0
  387. package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
  388. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  389. package/dest/testbench/p2p_client_testbench_worker.js +218 -120
  390. package/dest/testbench/parse_log_file.d.ts +1 -1
  391. package/dest/testbench/testbench.d.ts +1 -1
  392. package/dest/testbench/worker_client_manager.d.ts +51 -6
  393. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  394. package/dest/testbench/worker_client_manager.js +226 -39
  395. package/dest/types/index.d.ts +1 -1
  396. package/dest/util.d.ts +2 -1
  397. package/dest/util.d.ts.map +1 -1
  398. package/dest/util.js +11 -2
  399. package/dest/versioning.d.ts +1 -1
  400. package/package.json +19 -18
  401. package/src/bootstrap/bootstrap.ts +7 -4
  402. package/src/client/factory.ts +15 -20
  403. package/src/client/interface.ts +20 -2
  404. package/src/client/p2p_client.ts +121 -156
  405. package/src/client/test/tx_proposal_collector/README.md +227 -0
  406. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +336 -0
  407. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
  408. package/src/config.ts +43 -20
  409. package/src/errors/attestation-pool.error.ts +13 -0
  410. package/src/mem_pools/attestation_pool/attestation_pool.ts +86 -35
  411. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +243 -278
  412. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +175 -111
  413. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +147 -136
  414. package/src/mem_pools/attestation_pool/mocks.ts +21 -15
  415. package/src/mem_pools/instrumentation.ts +48 -10
  416. package/src/mem_pools/interface.ts +2 -4
  417. package/src/mem_pools/tx_pool/README.md +270 -0
  418. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +367 -371
  419. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +132 -0
  420. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +208 -0
  421. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +162 -0
  422. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +104 -0
  423. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +93 -0
  424. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +106 -0
  425. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
  426. package/src/mem_pools/tx_pool/index.ts +0 -1
  427. package/src/mem_pools/tx_pool/priority.ts +8 -1
  428. package/src/mem_pools/tx_pool/tx_pool.ts +11 -5
  429. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +23 -17
  430. package/src/mem_pools/tx_pool_v2/README.md +188 -0
  431. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  432. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  433. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +147 -0
  434. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +118 -0
  435. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +111 -0
  436. package/src/mem_pools/tx_pool_v2/eviction/index.ts +23 -0
  437. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +164 -0
  438. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  439. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  440. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +86 -0
  441. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +72 -0
  442. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +31 -0
  443. package/src/mem_pools/tx_pool_v2/index.ts +11 -0
  444. package/src/mem_pools/tx_pool_v2/interfaces.ts +225 -0
  445. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +160 -0
  446. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  447. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +209 -0
  448. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1265 -0
  449. package/src/msg_validators/attestation_validator/attestation_validator.ts +45 -32
  450. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +94 -0
  451. package/src/msg_validators/attestation_validator/index.ts +1 -0
  452. package/src/msg_validators/clock_tolerance.ts +51 -0
  453. package/src/msg_validators/index.ts +1 -1
  454. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +10 -0
  455. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +13 -0
  456. package/src/msg_validators/proposal_validator/index.ts +3 -0
  457. package/src/msg_validators/proposal_validator/proposal_validator.ts +92 -0
  458. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +230 -0
  459. package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
  460. package/src/msg_validators/tx_validator/block_header_validator.ts +6 -5
  461. package/src/msg_validators/tx_validator/data_validator.ts +18 -6
  462. package/src/msg_validators/tx_validator/double_spend_validator.ts +4 -3
  463. package/src/msg_validators/tx_validator/factory.ts +67 -25
  464. package/src/msg_validators/tx_validator/fee_payer_balance.ts +40 -0
  465. package/src/msg_validators/tx_validator/gas_validator.ts +17 -28
  466. package/src/msg_validators/tx_validator/index.ts +1 -0
  467. package/src/msg_validators/tx_validator/metadata_validator.ts +19 -8
  468. package/src/msg_validators/tx_validator/phases_validator.ts +8 -4
  469. package/src/msg_validators/tx_validator/size_validator.ts +22 -0
  470. package/src/msg_validators/tx_validator/test_utils.ts +1 -1
  471. package/src/msg_validators/tx_validator/timestamp_validator.ts +11 -5
  472. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  473. package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
  474. package/src/services/data_store.ts +10 -7
  475. package/src/services/discv5/discV5_service.ts +1 -1
  476. package/src/services/dummy_service.ts +51 -0
  477. package/src/services/encoding.ts +6 -5
  478. package/src/services/index.ts +1 -0
  479. package/src/services/libp2p/instrumentation.ts +39 -71
  480. package/src/services/libp2p/libp2p_service.ts +629 -195
  481. package/src/services/peer-manager/metrics.ts +44 -16
  482. package/src/services/peer-manager/peer_manager.ts +7 -4
  483. package/src/services/peer-manager/peer_scoring.ts +45 -3
  484. package/src/services/reqresp/batch-tx-requester/README.md +305 -0
  485. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +706 -0
  486. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  487. package/src/services/reqresp/batch-tx-requester/interface.ts +57 -0
  488. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +209 -0
  489. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +205 -0
  490. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
  491. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +65 -4
  492. package/src/services/reqresp/connection-sampler/connection_sampler.ts +19 -1
  493. package/src/services/reqresp/constants.ts +14 -0
  494. package/src/services/reqresp/interface.ts +4 -1
  495. package/src/services/reqresp/metrics.ts +36 -27
  496. package/src/services/reqresp/protocols/auth.ts +2 -2
  497. package/src/services/reqresp/protocols/block.ts +3 -2
  498. package/src/services/reqresp/protocols/block_txs/bitvector.ts +16 -0
  499. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +18 -4
  500. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +52 -10
  501. package/src/services/reqresp/protocols/status.ts +16 -12
  502. package/src/services/reqresp/protocols/tx.ts +1 -2
  503. package/src/services/reqresp/reqresp.ts +66 -19
  504. package/src/services/service.ts +23 -4
  505. package/src/services/tx_collection/config.ts +16 -2
  506. package/src/services/tx_collection/fast_tx_collection.ts +39 -15
  507. package/src/services/tx_collection/index.ts +5 -0
  508. package/src/services/tx_collection/instrumentation.ts +5 -13
  509. package/src/services/tx_collection/proposal_tx_collector.ts +114 -0
  510. package/src/services/tx_collection/slow_tx_collection.ts +5 -4
  511. package/src/services/tx_collection/tx_collection.ts +10 -9
  512. package/src/services/tx_file_store/config.ts +43 -0
  513. package/src/services/tx_file_store/index.ts +3 -0
  514. package/src/services/tx_file_store/instrumentation.ts +36 -0
  515. package/src/services/tx_file_store/tx_file_store.ts +173 -0
  516. package/src/services/tx_provider.ts +19 -3
  517. package/src/services/tx_provider_instrumentation.ts +24 -14
  518. package/src/test-helpers/index.ts +2 -0
  519. package/src/test-helpers/mock-pubsub.ts +1 -1
  520. package/src/test-helpers/mock-tx-helpers.ts +1 -1
  521. package/src/test-helpers/reqresp-nodes.ts +1 -1
  522. package/src/test-helpers/test_tx_provider.ts +64 -0
  523. package/src/test-helpers/testbench-utils.ts +374 -0
  524. package/src/testbench/p2p_client_testbench_worker.ts +338 -116
  525. package/src/testbench/worker_client_manager.ts +304 -42
  526. package/src/util.ts +12 -2
  527. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +0 -80
  528. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +0 -1
  529. package/dest/mem_pools/tx_pool/memory_tx_pool.js +0 -238
  530. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -12
  531. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
  532. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +0 -70
  533. package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
  534. package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
  535. package/dest/msg_validators/block_proposal_validator/index.js +0 -1
  536. package/src/mem_pools/tx_pool/memory_tx_pool.ts +0 -283
  537. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -81
  538. package/src/msg_validators/block_proposal_validator/index.ts +0 -1
@@ -1,58 +1,93 @@
1
1
  import { createLogger } from '@aztec/foundation/log';
2
2
  import { getTelemetryClient } from '@aztec/telemetry-client';
3
+ import { ProposalSlotCapExceededError } from '../../errors/attestation-pool.error.js';
3
4
  import { PoolInstrumentation, PoolName } from '../instrumentation.js';
5
+ import { ATTESTATION_CAP_BUFFER, MAX_PROPOSALS_PER_SLOT } from './kv_attestation_pool.js';
4
6
  export class InMemoryAttestationPool {
5
7
  log;
6
8
  metrics;
7
- attestations;
8
9
  proposals;
10
+ // Checkpoint attestations
11
+ // eslint-disable-next-line aztec-custom/no-non-primitive-in-collections
12
+ checkpointAttestations;
13
+ checkpointProposals;
9
14
  constructor(telemetry = getTelemetryClient(), log = createLogger('p2p:attestation_pool')){
10
15
  this.log = log;
11
16
  this.poolStats = ()=>{
12
17
  return Promise.resolve({
13
- itemCount: this.attestations.size
18
+ itemCount: this.checkpointAttestations.size
14
19
  });
15
20
  };
16
- this.attestations = new Map();
17
21
  this.proposals = new Map();
22
+ this.checkpointAttestations = new Map();
23
+ this.checkpointProposals = new Map();
18
24
  this.metrics = new PoolInstrumentation(telemetry, PoolName.ATTESTATION_POOL, this.poolStats);
19
25
  }
20
26
  poolStats;
21
27
  isEmpty() {
22
- return Promise.resolve(this.attestations.size === 0);
28
+ return Promise.resolve(this.checkpointAttestations.size === 0 && this.proposals.size === 0);
23
29
  }
24
- getAttestationsForSlot(slot) {
25
- return Promise.resolve(Array.from(this.attestations.get(slot)?.values() ?? []).flatMap((proposalAttestationMap)=>Array.from(proposalAttestationMap.values())));
30
+ addBlockProposal(blockProposal) {
31
+ // Strip signedTxs before storing to avoid holding full tx data in memory
32
+ this.proposals.set(blockProposal.archive.toString(), blockProposal.withoutSignedTxs());
33
+ return Promise.resolve();
26
34
  }
27
- getAttestationsForSlotAndProposal(slot, proposalId) {
28
- const slotAttestationMap = this.attestations.get(slot);
29
- if (slotAttestationMap) {
30
- const proposalAttestationMap = slotAttestationMap.get(proposalId);
31
- if (proposalAttestationMap) {
32
- return Promise.resolve(Array.from(proposalAttestationMap.values()));
33
- }
35
+ getBlockProposal(id) {
36
+ return Promise.resolve(this.proposals.get(id));
37
+ }
38
+ hasBlockProposal(idOrProposal) {
39
+ const id = typeof idOrProposal === 'string' ? idOrProposal : idOrProposal.archive.toString();
40
+ return Promise.resolve(this.proposals.has(id));
41
+ }
42
+ canAddProposal(_block) {
43
+ // TODO(palla/mbps): See when to allow
44
+ return Promise.resolve(true);
45
+ }
46
+ // Checkpoint attestation methods
47
+ async addCheckpointProposal(proposal) {
48
+ if (!await this.canAddCheckpointProposal(proposal)) {
49
+ throw new ProposalSlotCapExceededError(`Maximum checkpoint proposals per slot reached: slot=${proposal.slotNumber} cap=${MAX_PROPOSALS_PER_SLOT} proposal=${proposal.archive.toString()}`);
34
50
  }
35
- return Promise.resolve([]);
51
+ // Extract and validate the block proposal if present
52
+ const blockProposal = proposal.getBlockProposal();
53
+ if (blockProposal && !await this.canAddProposal(blockProposal)) {
54
+ throw new ProposalSlotCapExceededError(`Maximum block proposals per slot reached when extracting from checkpoint: slot=${proposal.slotNumber} proposal=${blockProposal.archive.toString()}`);
55
+ }
56
+ const slotProposalMapping = getCheckpointSlotOrDefault(this.checkpointAttestations, proposal.slotNumber);
57
+ slotProposalMapping.set(proposal.archive.toString(), new Map());
58
+ // Store the checkpoint proposal as core (without lastBlock) to avoid duplication
59
+ this.checkpointProposals.set(proposal.archive.toString(), proposal.toCore());
60
+ // Store the extracted block proposal separately
61
+ if (blockProposal) {
62
+ this.proposals.set(blockProposal.archive.toString(), blockProposal.withoutSignedTxs());
63
+ }
64
+ return Promise.resolve();
36
65
  }
37
- addAttestations(attestations) {
66
+ getCheckpointProposal(id) {
67
+ return Promise.resolve(this.checkpointProposals.get(id));
68
+ }
69
+ hasCheckpointProposal(idOrProposal) {
70
+ const id = typeof idOrProposal === 'string' ? idOrProposal : idOrProposal.archive.toString();
71
+ return Promise.resolve(this.checkpointProposals.has(id));
72
+ }
73
+ addCheckpointAttestations(attestations) {
38
74
  for (const attestation of attestations){
39
- // Perf: order and group by slot before insertion
40
75
  const slotNumber = attestation.payload.header.slotNumber;
41
76
  const proposalId = attestation.archive.toString();
42
77
  const sender = attestation.getSender();
43
78
  // Skip attestations with invalid signatures
44
79
  if (!sender) {
45
- this.log.warn(`Skipping attestation with invalid signature for slot ${slotNumber.toBigInt()}`, {
80
+ this.log.warn(`Skipping checkpoint attestation with invalid signature for slot ${slotNumber}`, {
46
81
  signature: attestation.signature.toString(),
47
82
  slotNumber,
48
83
  proposalId
49
84
  });
50
85
  continue;
51
86
  }
52
- const slotAttestationMap = getSlotOrDefault(this.attestations, slotNumber.toBigInt());
53
- const proposalAttestationMap = getProposalOrDefault(slotAttestationMap, proposalId);
87
+ const slotAttestationMap = getCheckpointSlotOrDefault(this.checkpointAttestations, slotNumber);
88
+ const proposalAttestationMap = getCheckpointProposalOrDefault(slotAttestationMap, proposalId);
54
89
  proposalAttestationMap.set(sender.toString(), attestation);
55
- this.log.verbose(`Added attestation for slot ${slotNumber.toBigInt()} from ${sender}`, {
90
+ this.log.verbose(`Added checkpoint attestation for slot ${slotNumber} from ${sender}`, {
56
91
  signature: attestation.signature.toString(),
57
92
  slotNumber,
58
93
  address: sender,
@@ -61,22 +96,22 @@ export class InMemoryAttestationPool {
61
96
  }
62
97
  return Promise.resolve();
63
98
  }
64
- #getNumberOfAttestationsInSlot(slot) {
65
- let total = 0;
66
- const slotAttestationMap = getSlotOrDefault(this.attestations, slot);
99
+ getCheckpointAttestationsForSlot(slot) {
100
+ return Promise.resolve(Array.from(this.checkpointAttestations.get(slot)?.values() ?? []).flatMap((proposalAttestationMap)=>Array.from(proposalAttestationMap.values())));
101
+ }
102
+ getCheckpointAttestationsForSlotAndProposal(slot, proposalId) {
103
+ const slotAttestationMap = this.checkpointAttestations.get(slot);
67
104
  if (slotAttestationMap) {
68
- for (const proposalAttestationMap of slotAttestationMap.values() ?? []){
69
- total += proposalAttestationMap.size;
105
+ const proposalAttestationMap = slotAttestationMap.get(proposalId);
106
+ if (proposalAttestationMap) {
107
+ return Promise.resolve(Array.from(proposalAttestationMap.values()));
70
108
  }
71
109
  }
72
- return total;
110
+ return Promise.resolve([]);
73
111
  }
74
- async deleteAttestationsOlderThan(oldestSlot) {
112
+ deleteCheckpointAttestationsOlderThan(oldestSlot) {
75
113
  const olderThan = [];
76
- // Entries are iterated in insertion order, so we can break as soon as we find a slot that is older than the oldestSlot.
77
- // Note: this will only prune correctly if attestations are added in order of rising slot, it is important that we do not allow
78
- // insertion of attestations that are old. #(https://github.com/AztecProtocol/aztec-packages/issues/10322)
79
- const slots = this.attestations.keys();
114
+ const slots = this.checkpointAttestations.keys();
80
115
  for (const slot of slots){
81
116
  if (slot < oldestSlot) {
82
117
  olderThan.push(slot);
@@ -85,57 +120,32 @@ export class InMemoryAttestationPool {
85
120
  }
86
121
  }
87
122
  for (const oldSlot of olderThan){
88
- await this.deleteAttestationsForSlot(oldSlot);
123
+ const proposalIds = this.checkpointAttestations.get(oldSlot)?.keys();
124
+ proposalIds?.forEach((proposalId)=>this.checkpointProposals.delete(proposalId));
125
+ this.checkpointAttestations.delete(oldSlot);
89
126
  }
90
127
  return Promise.resolve();
91
128
  }
92
- deleteAttestationsForSlot(slot) {
93
- // We count the number of attestations we are removing
94
- const numberOfAttestations = this.#getNumberOfAttestationsInSlot(slot);
95
- const proposalIdsToDelete = this.attestations.get(slot)?.keys();
96
- let proposalIdsToDeleteCount = 0;
97
- proposalIdsToDelete?.forEach((proposalId)=>{
98
- this.proposals.delete(proposalId);
99
- proposalIdsToDeleteCount++;
100
- });
101
- this.attestations.delete(slot);
102
- this.log.verbose(`Removed ${numberOfAttestations} attestations and ${proposalIdsToDeleteCount} proposals for slot ${slot}`);
103
- return Promise.resolve();
129
+ hasReachedCheckpointProposalCap(slot) {
130
+ const slotAttestationMap = this.checkpointAttestations.get(slot);
131
+ const proposalCount = slotAttestationMap?.size ?? 0;
132
+ return Promise.resolve(proposalCount >= MAX_PROPOSALS_PER_SLOT);
104
133
  }
105
- deleteAttestationsForSlotAndProposal(slot, proposalId) {
106
- const slotAttestationMap = getSlotOrDefault(this.attestations, slot);
107
- if (slotAttestationMap) {
108
- if (slotAttestationMap.has(proposalId)) {
109
- const numberOfAttestations = slotAttestationMap.get(proposalId)?.size ?? 0;
110
- slotAttestationMap.delete(proposalId);
111
- this.log.verbose(`Removed ${numberOfAttestations} attestations for slot ${slot} and proposal ${proposalId}`);
112
- }
113
- }
114
- this.proposals.delete(proposalId);
115
- return Promise.resolve();
134
+ hasReachedCheckpointAttestationCap(slot, proposalId, committeeSize) {
135
+ const limit = committeeSize + ATTESTATION_CAP_BUFFER;
136
+ const count = this.checkpointAttestations.get(slot)?.get(proposalId)?.size ?? 0;
137
+ return Promise.resolve(limit <= 0 || count >= limit);
116
138
  }
117
- deleteAttestations(attestations) {
118
- for (const attestation of attestations){
119
- const slotNumber = attestation.payload.header.slotNumber;
120
- const slotAttestationMap = this.attestations.get(slotNumber.toBigInt());
121
- if (slotAttestationMap) {
122
- const proposalId = attestation.archive.toString();
123
- const proposalAttestationMap = getProposalOrDefault(slotAttestationMap, proposalId);
124
- if (proposalAttestationMap) {
125
- const sender = attestation.getSender();
126
- // Skip attestations with invalid signatures
127
- if (!sender) {
128
- this.log.warn(`Skipping deletion of attestation with invalid signature for slot ${slotNumber.toBigInt()}`);
129
- continue;
130
- }
131
- proposalAttestationMap.delete(sender.toString());
132
- this.log.debug(`Deleted attestation for slot ${slotNumber} from ${sender}`);
133
- }
134
- }
135
- }
136
- return Promise.resolve();
139
+ async canAddCheckpointProposal(proposal) {
140
+ return this.checkpointProposals.has(proposal.archive.toString()) || !await this.hasReachedCheckpointProposalCap(proposal.slotNumber);
137
141
  }
138
- hasAttestation(attestation) {
142
+ async canAddCheckpointAttestation(attestation, committeeSize) {
143
+ const sender = attestation.getSender();
144
+ const slot = attestation.payload.header.slotNumber;
145
+ const pid = attestation.archive.toString();
146
+ return !!sender && ((this.checkpointAttestations.get(slot)?.get(pid)?.has(sender.toString()) ?? false) || !await this.hasReachedCheckpointAttestationCap(slot, pid, committeeSize));
147
+ }
148
+ hasCheckpointAttestation(attestation) {
139
149
  const slotNumber = attestation.payload.header.slotNumber;
140
150
  const proposalId = attestation.archive.toString();
141
151
  const sender = attestation.getSender();
@@ -143,7 +153,7 @@ export class InMemoryAttestationPool {
143
153
  if (!sender) {
144
154
  return Promise.resolve(false);
145
155
  }
146
- const slotAttestationMap = this.attestations.get(slotNumber.toBigInt());
156
+ const slotAttestationMap = this.checkpointAttestations.get(slotNumber);
147
157
  if (!slotAttestationMap) {
148
158
  return Promise.resolve(false);
149
159
  }
@@ -153,43 +163,16 @@ export class InMemoryAttestationPool {
153
163
  }
154
164
  return Promise.resolve(proposalAttestationMap.has(sender.toString()));
155
165
  }
156
- addBlockProposal(blockProposal) {
157
- // We initialize slot-proposal mapping if it does not exist
158
- // This is important to ensure we can delete this proposal if there were not attestations for it
159
- const slotProposalMapping = getSlotOrDefault(this.attestations, blockProposal.slotNumber.toBigInt());
160
- slotProposalMapping.set(blockProposal.payload.archive.toString(), new Map());
161
- this.proposals.set(blockProposal.payload.archive.toString(), blockProposal);
162
- return Promise.resolve();
163
- }
164
- getBlockProposal(id) {
165
- return Promise.resolve(this.proposals.get(id));
166
- }
167
- hasBlockProposal(idOrProposal) {
168
- const id = typeof idOrProposal === 'string' ? idOrProposal : idOrProposal.payload.archive.toString();
169
- return Promise.resolve(this.proposals.has(id));
170
- }
171
166
  }
172
- /**
173
- * Get Slot or Default
174
- *
175
- * Fetch the slot mapping, if it does not exist, then create a mapping and return it
176
- * @param map - The map to fetch from
177
- * @param slot - The slot to fetch
178
- * @returns The slot mapping
179
- */ function getSlotOrDefault(map, slot) {
167
+ // Checkpoint attestation helper functions
168
+ function getCheckpointSlotOrDefault(// eslint-disable-next-line aztec-custom/no-non-primitive-in-collections
169
+ map, slot) {
180
170
  if (!map.has(slot)) {
181
171
  map.set(slot, new Map());
182
172
  }
183
173
  return map.get(slot);
184
174
  }
185
- /**
186
- * Get Proposal or Default
187
- *
188
- * Fetch the proposal mapping, if it does not exist, then create a mapping and return it
189
- * @param map - The map to fetch from
190
- * @param proposalId - The proposal id to fetch
191
- * @returns The proposal mapping
192
- */ function getProposalOrDefault(map, proposalId) {
175
+ function getCheckpointProposalOrDefault(map, proposalId) {
193
176
  if (!map.has(proposalId)) {
194
177
  map.set(proposalId, new Map());
195
178
  }
@@ -1,18 +1,242 @@
1
- import type { Secp256k1Signer } from '@aztec/foundation/crypto';
2
- import { Fr } from '@aztec/foundation/fields';
3
- import { BlockAttestation } from '@aztec/stdlib/p2p';
4
- import { type LocalAccount } from 'viem/accounts';
1
+ import type { Secp256k1Signer } from '@aztec/foundation/crypto/secp256k1-signer';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
+ import { CheckpointAttestation } from '@aztec/stdlib/p2p';
4
+ import { CheckpointHeader } from '@aztec/stdlib/rollup';
5
5
  /** Generate Account
6
6
  *
7
7
  * Create a random signer
8
8
  * @returns A random viem signer
9
9
  */
10
- export declare const generateAccount: () => LocalAccount;
11
- /** Mock Attestation
10
+ export declare const generateAccount: () => {
11
+ address: `0x${string}`;
12
+ nonceManager?: import("viem/accounts").NonceManager | undefined;
13
+ sign?: ((parameters: {
14
+ hash: `0x${string}`;
15
+ }) => Promise<`0x${string}`>) | undefined;
16
+ signAuthorization?: ((parameters: import("viem").AuthorizationRequest) => Promise<import("viem/accounts").SignAuthorizationReturnType>) | undefined;
17
+ signMessage: ({ message }: {
18
+ message: import("viem").SignableMessage;
19
+ }) => Promise<`0x${string}`>;
20
+ signTransaction: <serializer extends import("viem").SerializeTransactionFn<import("viem").TransactionSerializable> = import("viem").SerializeTransactionFn<import("viem").TransactionSerializable>, transaction extends Parameters<serializer>[0] = Parameters<serializer>[0]>(transaction: transaction, options?: {
21
+ serializer?: serializer | undefined;
22
+ } | undefined) => Promise<`0x${string}`>;
23
+ signTypedData: <const typedData extends Record<string, unknown> | {
24
+ [x: string]: readonly import("viem").TypedDataParameter[];
25
+ [x: `address[${string}]`]: undefined;
26
+ [x: `bool[${string}]`]: undefined;
27
+ [x: `bytes10[${string}]`]: undefined;
28
+ [x: `bytes11[${string}]`]: undefined;
29
+ [x: `bytes12[${string}]`]: undefined;
30
+ [x: `bytes13[${string}]`]: undefined;
31
+ [x: `bytes14[${string}]`]: undefined;
32
+ [x: `bytes15[${string}]`]: undefined;
33
+ [x: `bytes16[${string}]`]: undefined;
34
+ [x: `bytes17[${string}]`]: undefined;
35
+ [x: `bytes18[${string}]`]: undefined;
36
+ [x: `bytes19[${string}]`]: undefined;
37
+ [x: `bytes1[${string}]`]: undefined;
38
+ [x: `bytes20[${string}]`]: undefined;
39
+ [x: `bytes21[${string}]`]: undefined;
40
+ [x: `bytes22[${string}]`]: undefined;
41
+ [x: `bytes23[${string}]`]: undefined;
42
+ [x: `bytes24[${string}]`]: undefined;
43
+ [x: `bytes25[${string}]`]: undefined;
44
+ [x: `bytes26[${string}]`]: undefined;
45
+ [x: `bytes27[${string}]`]: undefined;
46
+ [x: `bytes28[${string}]`]: undefined;
47
+ [x: `bytes29[${string}]`]: undefined;
48
+ [x: `bytes2[${string}]`]: undefined;
49
+ [x: `bytes30[${string}]`]: undefined;
50
+ [x: `bytes31[${string}]`]: undefined;
51
+ [x: `bytes32[${string}]`]: undefined;
52
+ [x: `bytes3[${string}]`]: undefined;
53
+ [x: `bytes4[${string}]`]: undefined;
54
+ [x: `bytes5[${string}]`]: undefined;
55
+ [x: `bytes6[${string}]`]: undefined;
56
+ [x: `bytes7[${string}]`]: undefined;
57
+ [x: `bytes8[${string}]`]: undefined;
58
+ [x: `bytes9[${string}]`]: undefined;
59
+ [x: `bytes[${string}]`]: undefined;
60
+ [x: `function[${string}]`]: undefined;
61
+ [x: `int104[${string}]`]: undefined;
62
+ [x: `int112[${string}]`]: undefined;
63
+ [x: `int120[${string}]`]: undefined;
64
+ [x: `int128[${string}]`]: undefined;
65
+ [x: `int136[${string}]`]: undefined;
66
+ [x: `int144[${string}]`]: undefined;
67
+ [x: `int152[${string}]`]: undefined;
68
+ [x: `int160[${string}]`]: undefined;
69
+ [x: `int168[${string}]`]: undefined;
70
+ [x: `int16[${string}]`]: undefined;
71
+ [x: `int176[${string}]`]: undefined;
72
+ [x: `int184[${string}]`]: undefined;
73
+ [x: `int192[${string}]`]: undefined;
74
+ [x: `int200[${string}]`]: undefined;
75
+ [x: `int208[${string}]`]: undefined;
76
+ [x: `int216[${string}]`]: undefined;
77
+ [x: `int224[${string}]`]: undefined;
78
+ [x: `int232[${string}]`]: undefined;
79
+ [x: `int240[${string}]`]: undefined;
80
+ [x: `int248[${string}]`]: undefined;
81
+ [x: `int24[${string}]`]: undefined;
82
+ [x: `int256[${string}]`]: undefined;
83
+ [x: `int32[${string}]`]: undefined;
84
+ [x: `int40[${string}]`]: undefined;
85
+ [x: `int48[${string}]`]: undefined;
86
+ [x: `int56[${string}]`]: undefined;
87
+ [x: `int64[${string}]`]: undefined;
88
+ [x: `int72[${string}]`]: undefined;
89
+ [x: `int80[${string}]`]: undefined;
90
+ [x: `int88[${string}]`]: undefined;
91
+ [x: `int8[${string}]`]: undefined;
92
+ [x: `int96[${string}]`]: undefined;
93
+ [x: `int[${string}]`]: undefined;
94
+ [x: `string[${string}]`]: undefined;
95
+ [x: `uint104[${string}]`]: undefined;
96
+ [x: `uint112[${string}]`]: undefined;
97
+ [x: `uint120[${string}]`]: undefined;
98
+ [x: `uint128[${string}]`]: undefined;
99
+ [x: `uint136[${string}]`]: undefined;
100
+ [x: `uint144[${string}]`]: undefined;
101
+ [x: `uint152[${string}]`]: undefined;
102
+ [x: `uint160[${string}]`]: undefined;
103
+ [x: `uint168[${string}]`]: undefined;
104
+ [x: `uint16[${string}]`]: undefined;
105
+ [x: `uint176[${string}]`]: undefined;
106
+ [x: `uint184[${string}]`]: undefined;
107
+ [x: `uint192[${string}]`]: undefined;
108
+ [x: `uint200[${string}]`]: undefined;
109
+ [x: `uint208[${string}]`]: undefined;
110
+ [x: `uint216[${string}]`]: undefined;
111
+ [x: `uint224[${string}]`]: undefined;
112
+ [x: `uint232[${string}]`]: undefined;
113
+ [x: `uint240[${string}]`]: undefined;
114
+ [x: `uint248[${string}]`]: undefined;
115
+ [x: `uint24[${string}]`]: undefined;
116
+ [x: `uint256[${string}]`]: undefined;
117
+ [x: `uint32[${string}]`]: undefined;
118
+ [x: `uint40[${string}]`]: undefined;
119
+ [x: `uint48[${string}]`]: undefined;
120
+ [x: `uint56[${string}]`]: undefined;
121
+ [x: `uint64[${string}]`]: undefined;
122
+ [x: `uint72[${string}]`]: undefined;
123
+ [x: `uint80[${string}]`]: undefined;
124
+ [x: `uint88[${string}]`]: undefined;
125
+ [x: `uint8[${string}]`]: undefined;
126
+ [x: `uint96[${string}]`]: undefined;
127
+ [x: `uint[${string}]`]: undefined;
128
+ address?: undefined;
129
+ bool?: undefined;
130
+ bytes?: undefined;
131
+ bytes1?: undefined;
132
+ bytes10?: undefined;
133
+ bytes11?: undefined;
134
+ bytes12?: undefined;
135
+ bytes13?: undefined;
136
+ bytes14?: undefined;
137
+ bytes15?: undefined;
138
+ bytes16?: undefined;
139
+ bytes17?: undefined;
140
+ bytes18?: undefined;
141
+ bytes19?: undefined;
142
+ bytes2?: undefined;
143
+ bytes20?: undefined;
144
+ bytes21?: undefined;
145
+ bytes22?: undefined;
146
+ bytes23?: undefined;
147
+ bytes24?: undefined;
148
+ bytes25?: undefined;
149
+ bytes26?: undefined;
150
+ bytes27?: undefined;
151
+ bytes28?: undefined;
152
+ bytes29?: undefined;
153
+ bytes3?: undefined;
154
+ bytes30?: undefined;
155
+ bytes31?: undefined;
156
+ bytes32?: undefined;
157
+ bytes4?: undefined;
158
+ bytes5?: undefined;
159
+ bytes6?: undefined;
160
+ bytes7?: undefined;
161
+ bytes8?: undefined;
162
+ bytes9?: undefined;
163
+ int104?: undefined;
164
+ int112?: undefined;
165
+ int120?: undefined;
166
+ int128?: undefined;
167
+ int136?: undefined;
168
+ int144?: undefined;
169
+ int152?: undefined;
170
+ int16?: undefined;
171
+ int160?: undefined;
172
+ int168?: undefined;
173
+ int176?: undefined;
174
+ int184?: undefined;
175
+ int192?: undefined;
176
+ int200?: undefined;
177
+ int208?: undefined;
178
+ int216?: undefined;
179
+ int224?: undefined;
180
+ int232?: undefined;
181
+ int24?: undefined;
182
+ int240?: undefined;
183
+ int248?: undefined;
184
+ int256?: undefined;
185
+ int32?: undefined;
186
+ int40?: undefined;
187
+ int48?: undefined;
188
+ int56?: undefined;
189
+ int64?: undefined;
190
+ int72?: undefined;
191
+ int8?: undefined;
192
+ int80?: undefined;
193
+ int88?: undefined;
194
+ int96?: undefined;
195
+ string?: undefined;
196
+ uint104?: undefined;
197
+ uint112?: undefined;
198
+ uint120?: undefined;
199
+ uint128?: undefined;
200
+ uint136?: undefined;
201
+ uint144?: undefined;
202
+ uint152?: undefined;
203
+ uint16?: undefined;
204
+ uint160?: undefined;
205
+ uint168?: undefined;
206
+ uint176?: undefined;
207
+ uint184?: undefined;
208
+ uint192?: undefined;
209
+ uint200?: undefined;
210
+ uint208?: undefined;
211
+ uint216?: undefined;
212
+ uint224?: undefined;
213
+ uint232?: undefined;
214
+ uint24?: undefined;
215
+ uint240?: undefined;
216
+ uint248?: undefined;
217
+ uint256?: undefined;
218
+ uint32?: undefined;
219
+ uint40?: undefined;
220
+ uint48?: undefined;
221
+ uint56?: undefined;
222
+ uint64?: undefined;
223
+ uint72?: undefined;
224
+ uint8?: undefined;
225
+ uint80?: undefined;
226
+ uint88?: undefined;
227
+ uint96?: undefined;
228
+ }, primaryType extends "EIP712Domain" | keyof typedData = keyof typedData>(parameters: import("viem").TypedDataDefinition<typedData, primaryType>) => Promise<`0x${string}`>;
229
+ publicKey: `0x${string}`;
230
+ source: string;
231
+ type: "local";
232
+ };
233
+ /** Mock Checkpoint Attestation
12
234
  *
13
- * @param signer A viem signer to create a signature
235
+ * @param signer A Secp256k1Signer to create a signature
14
236
  * @param slot The slot number the attestation is for
15
- * @returns A Block Attestation
237
+ * @param archive The archive root (defaults to random)
238
+ * @param header The checkpoint header (defaults to random with given slot)
239
+ * @returns A Checkpoint Attestation
16
240
  */
17
- export declare const mockAttestation: (signer: Secp256k1Signer, slot?: number, archive?: Fr) => BlockAttestation;
18
- //# sourceMappingURL=mocks.d.ts.map
241
+ export declare const mockCheckpointAttestation: (signer: Secp256k1Signer, slot?: number, archive?: Fr, header?: CheckpointHeader | undefined) => CheckpointAttestation;
242
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja3MuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZW1fcG9vbHMvYXR0ZXN0YXRpb25fcG9vbC9tb2Nrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUNMLHFCQUFxQixFQUl0QixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSXhEOzs7O0dBSUc7QUFDSCxlQUFPLE1BQU0sZUFBZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBRzNCLENBQUM7QUFFRjs7Ozs7OztHQU9HO0FBQ0gsZUFBTyxNQUFNLHlCQUF5Qix3SEFtQnJDLENBQUMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/mocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EACL,gBAAgB,EAIjB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,KAAK,YAAY,EAA2C,MAAM,eAAe,CAAC;AAE3F;;;;GAIG;AACH,eAAO,MAAM,eAAe,QAAO,YAGlC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAC1B,QAAQ,eAAe,EACvB,OAAM,MAAU,EAChB,UAAS,EAAgB,KACxB,gBAYF,CAAC"}
1
+ {"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/mocks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EACL,qBAAqB,EAItB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIxD;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAG3B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,wHAmBrC,CAAC"}
@@ -1,6 +1,7 @@
1
- import { Fr } from '@aztec/foundation/fields';
2
- import { BlockAttestation, ConsensusPayload, SignatureDomainSeparator, getHashedSignaturePayloadEthSignedMessage } from '@aztec/stdlib/p2p';
3
- import { makeL2BlockHeader } from '@aztec/stdlib/testing';
1
+ import { SlotNumber } from '@aztec/foundation/branded-types';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
+ import { CheckpointAttestation, ConsensusPayload, SignatureDomainSeparator, getHashedSignaturePayloadEthSignedMessage } from '@aztec/stdlib/p2p';
4
+ import { CheckpointHeader } from '@aztec/stdlib/rollup';
4
5
  import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';
5
6
  /** Generate Account
6
7
  *
@@ -10,18 +11,21 @@ import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';
10
11
  const privateKey = generatePrivateKey();
11
12
  return privateKeyToAccount(privateKey);
12
13
  };
13
- /** Mock Attestation
14
+ /** Mock Checkpoint Attestation
14
15
  *
15
- * @param signer A viem signer to create a signature
16
+ * @param signer A Secp256k1Signer to create a signature
16
17
  * @param slot The slot number the attestation is for
17
- * @returns A Block Attestation
18
- */ export const mockAttestation = (signer, slot = 0, archive = Fr.random())=>{
19
- // Use arbitrary numbers for all other than slot
20
- const header = makeL2BlockHeader(1, 2, slot);
21
- const payload = new ConsensusPayload(header.toCheckpointHeader(), archive, header.state);
22
- const attestationHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.blockAttestation);
18
+ * @param archive The archive root (defaults to random)
19
+ * @param header The checkpoint header (defaults to random with given slot)
20
+ * @returns A Checkpoint Attestation
21
+ */ export const mockCheckpointAttestation = (signer, slot = 0, archive = Fr.random(), header)=>{
22
+ header = header ?? CheckpointHeader.random({
23
+ slotNumber: SlotNumber(slot)
24
+ });
25
+ const payload = new ConsensusPayload(header, archive);
26
+ const attestationHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.checkpointAttestation);
23
27
  const attestationSignature = signer.sign(attestationHash);
24
- const proposalHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.blockProposal);
28
+ const proposalHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.checkpointProposal);
25
29
  const proposerSignature = signer.sign(proposalHash);
26
- return new BlockAttestation(payload, attestationSignature, proposerSignature);
30
+ return new CheckpointAttestation(payload, attestationSignature, proposerSignature);
27
31
  };
@@ -1,4 +1,4 @@
1
1
  export { type AttestationPool } from './attestation_pool/attestation_pool.js';
2
2
  export { type MemPools } from './interface.js';
3
3
  export { type TxPool } from './tx_pool/tx_pool.js';
4
- //# sourceMappingURL=index.d.ts.map
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZW1fcG9vbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUMifQ==
@@ -1,4 +1,5 @@
1
1
  import type { Gossipable } from '@aztec/stdlib/p2p';
2
+ import type { Tx } from '@aztec/stdlib/tx';
2
3
  import { type LmdbStatsCallback, type TelemetryClient } from '@aztec/telemetry-client';
3
4
  export declare enum PoolName {
4
5
  TX_POOL = "TxPool",
@@ -14,13 +15,20 @@ export declare class PoolInstrumentation<PoolObject extends Gossipable> {
14
15
  private poolStats;
15
16
  /** The number of txs in the mempool */
16
17
  private objectsInMempool;
18
+ private addObjectCounter;
17
19
  /** Tracks tx size */
18
20
  private objectSize;
21
+ /** Track delay between transaction added and evicted */
22
+ private minedDelay;
19
23
  private dbMetrics;
20
24
  private defaultAttributes;
21
25
  private meter;
26
+ private txAddedTimestamp;
22
27
  constructor(telemetry: TelemetryClient, name: PoolName, poolStats: PoolStatsCallback, dbStats?: LmdbStatsCallback);
23
28
  recordSize(poolObject: PoolObject): void;
29
+ incrementAddedObjects(count: number): void;
30
+ transactionsAdded(transactions: Tx[]): void;
31
+ transactionsRemoved(hashes: Iterable<bigint> | Iterable<string>): void;
24
32
  private observeStats;
25
33
  }
26
- //# sourceMappingURL=instrumentation.d.ts.map
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWVtX3Bvb2xzL2luc3RydW1lbnRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzQyxPQUFPLEVBS0wsS0FBSyxpQkFBaUIsRUFLdEIsS0FBSyxlQUFlLEVBR3JCLE1BQU0seUJBQXlCLENBQUM7QUFFakMsb0JBQVksUUFBUTtJQUNsQixPQUFPLFdBQVc7SUFDbEIsZ0JBQWdCLG9CQUFvQjtDQUNyQztBQWtDRCxNQUFNLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxPQUFPLENBQUM7SUFDNUMsU0FBUyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0NBQzVDLENBQUMsQ0FBQztBQUVIOztHQUVHO0FBQ0gscUJBQWEsbUJBQW1CLENBQUMsVUFBVSxTQUFTLFVBQVU7SUFtQjFELE9BQU8sQ0FBQyxTQUFTO0lBbEJuQix1Q0FBdUM7SUFDdkMsT0FBTyxDQUFDLGdCQUFnQixDQUFrQjtJQUMxQyxPQUFPLENBQUMsZ0JBQWdCLENBQWdCO0lBQ3hDLHFCQUFxQjtJQUNyQixPQUFPLENBQUMsVUFBVSxDQUFZO0lBQzlCLHdEQUF3RDtJQUN4RCxPQUFPLENBQUMsVUFBVSxDQUFZO0lBRTlCLE9BQU8sQ0FBQyxTQUFTLENBQWM7SUFFL0IsT0FBTyxDQUFDLGlCQUFpQixDQUFDO0lBQzFCLE9BQU8sQ0FBQyxLQUFLLENBQVE7SUFFckIsT0FBTyxDQUFDLGdCQUFnQixDQUFrRDtJQUUxRSxZQUNFLFNBQVMsRUFBRSxlQUFlLEVBQzFCLElBQUksRUFBRSxRQUFRLEVBQ04sU0FBUyxFQUFFLGlCQUFpQixFQUNwQyxPQUFPLENBQUMsRUFBRSxpQkFBaUIsRUF3QjVCO0lBRU0sVUFBVSxDQUFDLFVBQVUsRUFBRSxVQUFVLFFBRXZDO0lBRU0scUJBQXFCLENBQUMsS0FBSyxFQUFFLE1BQU0sUUFFekM7SUFFTSxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsRUFBRSxFQUFFLFFBSzFDO0lBRU0sbUJBQW1CLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBWXJFO0lBRUQsT0FBTyxDQUFDLFlBQVksQ0FZbEI7Q0FDSCJ9
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/mem_pools/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAKL,KAAK,iBAAiB,EAKtB,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;AAEjC,oBAAY,QAAQ;IAClB,OAAO,WAAW;IAClB,gBAAgB,oBAAoB;CACrC;AA4BD,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC;IAC5C,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C,CAAC,CAAC;AAEH;;GAEG;AACH,qBAAa,mBAAmB,CAAC,UAAU,SAAS,UAAU;IAc1D,OAAO,CAAC,SAAS;IAbnB,uCAAuC;IACvC,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,qBAAqB;IACrB,OAAO,CAAC,UAAU,CAAY;IAE9B,OAAO,CAAC,SAAS,CAAc;IAE/B,OAAO,CAAC,iBAAiB,CAAC;IAC1B,OAAO,CAAC,KAAK,CAAQ;gBAGnB,SAAS,EAAE,eAAe,EAC1B,IAAI,EAAE,QAAQ,EACN,SAAS,EAAE,iBAAiB,EACpC,OAAO,CAAC,EAAE,iBAAiB;IA2BtB,UAAU,CAAC,UAAU,EAAE,UAAU;IAIxC,OAAO,CAAC,YAAY,CAYlB;CACH"}
1
+ {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/mem_pools/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAKL,KAAK,iBAAiB,EAKtB,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAEjC,oBAAY,QAAQ;IAClB,OAAO,WAAW;IAClB,gBAAgB,oBAAoB;CACrC;AAkCD,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC;IAC5C,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C,CAAC,CAAC;AAEH;;GAEG;AACH,qBAAa,mBAAmB,CAAC,UAAU,SAAS,UAAU;IAmB1D,OAAO,CAAC,SAAS;IAlBnB,uCAAuC;IACvC,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,gBAAgB,CAAgB;IACxC,qBAAqB;IACrB,OAAO,CAAC,UAAU,CAAY;IAC9B,wDAAwD;IACxD,OAAO,CAAC,UAAU,CAAY;IAE9B,OAAO,CAAC,SAAS,CAAc;IAE/B,OAAO,CAAC,iBAAiB,CAAC;IAC1B,OAAO,CAAC,KAAK,CAAQ;IAErB,OAAO,CAAC,gBAAgB,CAAkD;IAE1E,YACE,SAAS,EAAE,eAAe,EAC1B,IAAI,EAAE,QAAQ,EACN,SAAS,EAAE,iBAAiB,EACpC,OAAO,CAAC,EAAE,iBAAiB,EAwB5B;IAEM,UAAU,CAAC,UAAU,EAAE,UAAU,QAEvC;IAEM,qBAAqB,CAAC,KAAK,EAAE,MAAM,QAEzC;IAEM,iBAAiB,CAAC,YAAY,EAAE,EAAE,EAAE,QAK1C;IAEM,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,QAYrE;IAED,OAAO,CAAC,YAAY,CAYlB;CACH"}