@aztec/p2p 0.0.1-commit.d3ec352c → 0.0.1-commit.d58ff9d0

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 (575) hide show
  1. package/README.md +130 -3
  2. package/dest/bootstrap/bootstrap.d.ts +4 -3
  3. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  4. package/dest/bootstrap/bootstrap.js +26 -10
  5. package/dest/client/factory.d.ts +13 -12
  6. package/dest/client/factory.d.ts.map +1 -1
  7. package/dest/client/factory.js +70 -21
  8. package/dest/client/interface.d.ts +104 -41
  9. package/dest/client/interface.d.ts.map +1 -1
  10. package/dest/client/p2p_client.d.ts +72 -70
  11. package/dest/client/p2p_client.d.ts.map +1 -1
  12. package/dest/client/p2p_client.js +681 -346
  13. package/dest/config.d.ts +171 -89
  14. package/dest/config.d.ts.map +1 -1
  15. package/dest/config.js +169 -58
  16. package/dest/errors/p2p-service.error.d.ts +9 -0
  17. package/dest/errors/p2p-service.error.d.ts.map +1 -0
  18. package/dest/errors/p2p-service.error.js +10 -0
  19. package/dest/errors/reqresp.error.d.ts +9 -16
  20. package/dest/errors/reqresp.error.d.ts.map +1 -1
  21. package/dest/errors/reqresp.error.js +10 -17
  22. package/dest/errors/tx-pool.error.d.ts +8 -0
  23. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  24. package/dest/errors/tx-pool.error.js +9 -0
  25. package/dest/index.d.ts +2 -2
  26. package/dest/index.d.ts.map +1 -1
  27. package/dest/index.js +1 -1
  28. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +154 -77
  29. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  30. package/dest/mem_pools/attestation_pool/attestation_pool.js +518 -3
  31. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  32. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  33. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +694 -295
  34. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  35. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  36. package/dest/mem_pools/attestation_pool/index.js +1 -2
  37. package/dest/mem_pools/attestation_pool/mocks.d.ts +11 -8
  38. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  39. package/dest/mem_pools/attestation_pool/mocks.js +19 -13
  40. package/dest/mem_pools/index.d.ts +3 -3
  41. package/dest/mem_pools/index.d.ts.map +1 -1
  42. package/dest/mem_pools/index.js +1 -1
  43. package/dest/mem_pools/instrumentation.d.ts +14 -1
  44. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  45. package/dest/mem_pools/instrumentation.js +51 -12
  46. package/dest/mem_pools/interface.d.ts +6 -7
  47. package/dest/mem_pools/interface.d.ts.map +1 -1
  48. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  49. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  50. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  51. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +39 -0
  52. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  53. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +97 -0
  54. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  55. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  56. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  57. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  58. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  59. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  60. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  61. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  62. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +94 -0
  63. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  64. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  65. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
  66. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +11 -0
  67. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  68. package/dest/mem_pools/tx_pool_v2/eviction/index.js +12 -0
  69. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
  70. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
  71. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +62 -0
  72. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +180 -0
  73. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  74. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  75. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  76. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  77. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
  78. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  79. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  80. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  81. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  82. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  83. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
  84. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  85. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  86. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +75 -0
  87. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  88. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  89. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  90. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  91. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  92. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  93. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  94. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  95. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  96. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +243 -0
  97. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  98. package/dest/mem_pools/tx_pool_v2/interfaces.js +11 -0
  99. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +137 -0
  100. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  101. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +223 -0
  102. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  103. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  104. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  105. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +122 -0
  106. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  107. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +368 -0
  108. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +68 -0
  109. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  110. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +178 -0
  111. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +91 -0
  112. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  113. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +1013 -0
  114. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +12 -5
  115. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  116. package/dest/msg_validators/attestation_validator/attestation_validator.js +78 -22
  117. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +11 -7
  118. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  119. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +25 -17
  120. package/dest/msg_validators/index.d.ts +2 -2
  121. package/dest/msg_validators/index.d.ts.map +1 -1
  122. package/dest/msg_validators/index.js +1 -1
  123. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +16 -0
  124. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
  125. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +14 -0
  126. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +16 -0
  127. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
  128. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +26 -0
  129. package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
  130. package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
  131. package/dest/msg_validators/proposal_validator/index.js +3 -0
  132. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +40 -0
  133. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
  134. package/dest/msg_validators/proposal_validator/proposal_validator.js +186 -0
  135. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  136. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  137. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +11 -18
  138. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  139. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  140. package/dest/msg_validators/tx_validator/allowed_public_setup.js +25 -21
  141. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  142. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  143. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  144. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  145. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  146. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +20 -6
  147. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  148. package/dest/msg_validators/tx_validator/block_header_validator.js +4 -3
  149. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts +15 -0
  150. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts.map +1 -0
  151. package/dest/msg_validators/tx_validator/cached_tx_validator.js +19 -0
  152. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  153. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  154. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  155. package/dest/msg_validators/tx_validator/data_validator.d.ts +4 -1
  156. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  157. package/dest/msg_validators/tx_validator/data_validator.js +40 -3
  158. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -4
  159. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  160. package/dest/msg_validators/tx_validator/double_spend_validator.js +7 -6
  161. package/dest/msg_validators/tx_validator/factory.d.ts +137 -6
  162. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  163. package/dest/msg_validators/tx_validator/factory.js +268 -58
  164. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
  165. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
  166. package/dest/msg_validators/tx_validator/fee_payer_balance.js +24 -0
  167. package/dest/msg_validators/tx_validator/gas_validator.d.ts +105 -3
  168. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  169. package/dest/msg_validators/tx_validator/gas_validator.js +146 -67
  170. package/dest/msg_validators/tx_validator/index.d.ts +6 -1
  171. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  172. package/dest/msg_validators/tx_validator/index.js +5 -0
  173. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +4 -3
  174. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  175. package/dest/msg_validators/tx_validator/metadata_validator.js +6 -6
  176. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  177. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  178. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  179. package/dest/msg_validators/tx_validator/phases_validator.d.ts +24 -3
  180. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  181. package/dest/msg_validators/tx_validator/phases_validator.js +75 -27
  182. package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
  183. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
  184. package/dest/msg_validators/tx_validator/size_validator.js +23 -0
  185. package/dest/msg_validators/tx_validator/test_utils.d.ts +2 -2
  186. package/dest/msg_validators/tx_validator/test_utils.d.ts.map +1 -1
  187. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +22 -5
  188. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  189. package/dest/msg_validators/tx_validator/timestamp_validator.js +8 -8
  190. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  191. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  192. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  193. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +4 -2
  194. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  195. package/dest/msg_validators/tx_validator/tx_proof_validator.js +4 -2
  196. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts +48 -0
  197. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts.map +1 -0
  198. package/dest/msg_validators/tx_validator/tx_validation_cache.js +68 -0
  199. package/dest/services/data_store.d.ts +1 -1
  200. package/dest/services/data_store.d.ts.map +1 -1
  201. package/dest/services/data_store.js +14 -10
  202. package/dest/services/discv5/discV5_service.d.ts +13 -2
  203. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  204. package/dest/services/discv5/discV5_service.js +120 -24
  205. package/dest/services/discv5/persisted_enr_store.d.ts +38 -0
  206. package/dest/services/discv5/persisted_enr_store.d.ts.map +1 -0
  207. package/dest/services/discv5/persisted_enr_store.js +145 -0
  208. package/dest/services/dummy_service.d.ts +40 -16
  209. package/dest/services/dummy_service.d.ts.map +1 -1
  210. package/dest/services/dummy_service.js +61 -14
  211. package/dest/services/encoding.d.ts +24 -7
  212. package/dest/services/encoding.d.ts.map +1 -1
  213. package/dest/services/encoding.js +48 -30
  214. package/dest/services/gossipsub/index.d.ts +3 -0
  215. package/dest/services/gossipsub/index.d.ts.map +1 -0
  216. package/dest/services/gossipsub/index.js +2 -0
  217. package/dest/services/gossipsub/scoring.d.ts +21 -3
  218. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  219. package/dest/services/gossipsub/scoring.js +24 -7
  220. package/dest/services/gossipsub/topic_score_params.d.ts +167 -0
  221. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  222. package/dest/services/gossipsub/topic_score_params.js +336 -0
  223. package/dest/services/index.d.ts +2 -1
  224. package/dest/services/index.d.ts.map +1 -1
  225. package/dest/services/index.js +1 -0
  226. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  227. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  228. package/dest/services/libp2p/instrumentation.js +43 -71
  229. package/dest/services/libp2p/libp2p_service.d.ts +127 -54
  230. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  231. package/dest/services/libp2p/libp2p_service.js +1324 -556
  232. package/dest/services/peer-manager/metrics.d.ts +9 -2
  233. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  234. package/dest/services/peer-manager/metrics.js +39 -21
  235. package/dest/services/peer-manager/peer_manager.d.ts +21 -4
  236. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  237. package/dest/services/peer-manager/peer_manager.js +87 -38
  238. package/dest/services/peer-manager/peer_scoring.d.ts +34 -2
  239. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  240. package/dest/services/peer-manager/peer_scoring.js +134 -19
  241. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +44 -0
  242. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  243. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +534 -0
  244. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  245. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  246. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  247. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +50 -0
  248. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  249. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  250. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +35 -0
  251. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  252. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +136 -0
  253. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +62 -0
  254. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  255. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +176 -0
  256. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +11 -0
  257. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  258. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +7 -0
  259. package/dest/services/reqresp/config.d.ts +15 -3
  260. package/dest/services/reqresp/config.d.ts.map +1 -1
  261. package/dest/services/reqresp/config.js +11 -0
  262. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -1
  263. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  264. package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
  265. package/dest/services/reqresp/constants.d.ts +12 -0
  266. package/dest/services/reqresp/constants.d.ts.map +1 -0
  267. package/dest/services/reqresp/constants.js +7 -0
  268. package/dest/services/reqresp/interface.d.ts +27 -18
  269. package/dest/services/reqresp/interface.d.ts.map +1 -1
  270. package/dest/services/reqresp/interface.js +23 -19
  271. package/dest/services/reqresp/metrics.d.ts +6 -5
  272. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  273. package/dest/services/reqresp/metrics.js +16 -21
  274. package/dest/services/reqresp/protocols/auth.d.ts +2 -2
  275. package/dest/services/reqresp/protocols/auth.d.ts.map +1 -1
  276. package/dest/services/reqresp/protocols/auth.js +2 -2
  277. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +8 -3
  278. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  279. package/dest/services/reqresp/protocols/block_txs/bitvector.js +15 -2
  280. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  281. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  282. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +35 -14
  283. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +37 -9
  284. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  285. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +85 -21
  286. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  287. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  288. package/dest/services/reqresp/protocols/index.js +0 -1
  289. package/dest/services/reqresp/protocols/status.d.ts +1 -1
  290. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  291. package/dest/services/reqresp/protocols/status.js +4 -1
  292. package/dest/services/reqresp/protocols/tx.d.ts +8 -3
  293. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  294. package/dest/services/reqresp/protocols/tx.js +21 -3
  295. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  296. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  297. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  298. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  299. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  300. package/dest/services/reqresp/rate-limiter/rate_limits.js +3 -13
  301. package/dest/services/reqresp/reqresp.d.ts +12 -29
  302. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  303. package/dest/services/reqresp/reqresp.js +480 -200
  304. package/dest/services/service.d.ts +78 -13
  305. package/dest/services/service.d.ts.map +1 -1
  306. package/dest/services/tx_collection/config.d.ts +11 -11
  307. package/dest/services/tx_collection/config.d.ts.map +1 -1
  308. package/dest/services/tx_collection/config.js +28 -27
  309. package/dest/services/tx_collection/file_store_tx_collection.d.ts +37 -0
  310. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  311. package/dest/services/tx_collection/file_store_tx_collection.js +127 -0
  312. package/dest/services/tx_collection/file_store_tx_source.d.ts +38 -0
  313. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  314. package/dest/services/tx_collection/file_store_tx_source.js +100 -0
  315. package/dest/services/tx_collection/index.d.ts +3 -2
  316. package/dest/services/tx_collection/index.d.ts.map +1 -1
  317. package/dest/services/tx_collection/index.js +1 -0
  318. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  319. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  320. package/dest/services/tx_collection/instrumentation.js +9 -13
  321. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  322. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  323. package/dest/services/tx_collection/request_tracker.js +84 -0
  324. package/dest/services/tx_collection/tx_collection.d.ts +49 -55
  325. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  326. package/dest/services/tx_collection/tx_collection.js +299 -71
  327. package/dest/services/tx_collection/tx_collection_sink.d.ts +19 -9
  328. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  329. package/dest/services/tx_collection/tx_collection_sink.js +28 -31
  330. package/dest/services/tx_collection/tx_source.d.ts +13 -7
  331. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  332. package/dest/services/tx_collection/tx_source.js +29 -7
  333. package/dest/services/tx_file_store/config.d.ts +16 -0
  334. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  335. package/dest/services/tx_file_store/config.js +22 -0
  336. package/dest/services/tx_file_store/index.d.ts +4 -0
  337. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  338. package/dest/services/tx_file_store/index.js +3 -0
  339. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  340. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  341. package/dest/services/tx_file_store/instrumentation.js +29 -0
  342. package/dest/services/tx_file_store/tx_file_store.d.ts +46 -0
  343. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  344. package/dest/services/tx_file_store/tx_file_store.js +142 -0
  345. package/dest/services/tx_provider.d.ts +9 -6
  346. package/dest/services/tx_provider.d.ts.map +1 -1
  347. package/dest/services/tx_provider.js +23 -10
  348. package/dest/services/tx_provider_instrumentation.d.ts +5 -2
  349. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  350. package/dest/services/tx_provider_instrumentation.js +14 -14
  351. package/dest/test-helpers/index.d.ts +3 -1
  352. package/dest/test-helpers/index.d.ts.map +1 -1
  353. package/dest/test-helpers/index.js +2 -0
  354. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  355. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  356. package/dest/test-helpers/make-test-p2p-clients.js +5 -3
  357. package/dest/test-helpers/mock-pubsub.d.ts +46 -6
  358. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  359. package/dest/test-helpers/mock-pubsub.js +115 -14
  360. package/dest/test-helpers/mock-tx-helpers.js +1 -1
  361. package/dest/test-helpers/reqresp-nodes.d.ts +5 -7
  362. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  363. package/dest/test-helpers/reqresp-nodes.js +19 -20
  364. package/dest/test-helpers/test_tx_provider.d.ts +42 -0
  365. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  366. package/dest/test-helpers/test_tx_provider.js +44 -0
  367. package/dest/test-helpers/testbench-utils.d.ts +164 -0
  368. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  369. package/dest/test-helpers/testbench-utils.js +400 -0
  370. package/dest/testbench/p2p_client_testbench_worker.d.ts +26 -2
  371. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  372. package/dest/testbench/p2p_client_testbench_worker.js +289 -131
  373. package/dest/testbench/worker_client_manager.d.ts +57 -6
  374. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  375. package/dest/testbench/worker_client_manager.js +277 -44
  376. package/dest/util.d.ts +13 -8
  377. package/dest/util.d.ts.map +1 -1
  378. package/dest/util.js +35 -14
  379. package/dest/versioning.d.ts +3 -6
  380. package/dest/versioning.d.ts.map +1 -1
  381. package/dest/versioning.js +3 -24
  382. package/package.json +18 -18
  383. package/src/bootstrap/bootstrap.ts +24 -7
  384. package/src/client/factory.ts +141 -46
  385. package/src/client/interface.ts +113 -49
  386. package/src/client/p2p_client.ts +342 -418
  387. package/src/client/test/p2p_client.batch_tx_requester.bench.README.md +197 -0
  388. package/src/config.ts +298 -66
  389. package/src/errors/p2p-service.error.ts +11 -0
  390. package/src/errors/reqresp.error.ts +13 -19
  391. package/src/errors/tx-pool.error.ts +12 -0
  392. package/src/index.ts +1 -1
  393. package/src/mem_pools/attestation_pool/attestation_pool.ts +594 -76
  394. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +796 -329
  395. package/src/mem_pools/attestation_pool/index.ts +9 -2
  396. package/src/mem_pools/attestation_pool/mocks.ts +29 -17
  397. package/src/mem_pools/index.ts +2 -2
  398. package/src/mem_pools/instrumentation.ts +48 -13
  399. package/src/mem_pools/interface.ts +5 -7
  400. package/src/mem_pools/tx_pool_v2/README.md +283 -0
  401. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  402. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +112 -0
  403. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  404. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  405. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +122 -0
  406. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
  407. package/src/mem_pools/tx_pool_v2/eviction/index.ts +28 -0
  408. package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +65 -0
  409. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +219 -0
  410. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  411. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  412. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
  413. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +99 -0
  414. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +32 -0
  415. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  416. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  417. package/src/mem_pools/tx_pool_v2/interfaces.ts +274 -0
  418. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +349 -0
  419. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  420. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +465 -0
  421. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +252 -0
  422. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1215 -0
  423. package/src/msg_validators/attestation_validator/README.md +49 -0
  424. package/src/msg_validators/attestation_validator/attestation_validator.ts +71 -24
  425. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +34 -23
  426. package/src/msg_validators/index.ts +1 -1
  427. package/src/msg_validators/proposal_validator/README.md +123 -0
  428. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +32 -0
  429. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +49 -0
  430. package/src/msg_validators/proposal_validator/index.ts +3 -0
  431. package/src/msg_validators/proposal_validator/proposal_validator.ts +198 -0
  432. package/src/msg_validators/tx_validator/README.md +129 -0
  433. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +8 -17
  434. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  435. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  436. package/src/msg_validators/tx_validator/archive_cache.ts +2 -2
  437. package/src/msg_validators/tx_validator/block_header_validator.ts +21 -8
  438. package/src/msg_validators/tx_validator/cached_tx_validator.ts +31 -0
  439. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  440. package/src/msg_validators/tx_validator/data_validator.ts +62 -7
  441. package/src/msg_validators/tx_validator/double_spend_validator.ts +15 -9
  442. package/src/msg_validators/tx_validator/factory.ts +431 -57
  443. package/src/msg_validators/tx_validator/fee_payer_balance.ts +44 -0
  444. package/src/msg_validators/tx_validator/gas_validator.ts +206 -76
  445. package/src/msg_validators/tx_validator/index.ts +5 -0
  446. package/src/msg_validators/tx_validator/metadata_validator.ts +31 -12
  447. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  448. package/src/msg_validators/tx_validator/phases_validator.ts +87 -30
  449. package/src/msg_validators/tx_validator/size_validator.ts +22 -0
  450. package/src/msg_validators/tx_validator/test_utils.ts +1 -1
  451. package/src/msg_validators/tx_validator/timestamp_validator.ts +29 -19
  452. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  453. package/src/msg_validators/tx_validator/tx_proof_validator.ts +10 -3
  454. package/src/msg_validators/tx_validator/tx_validation_cache.ts +101 -0
  455. package/src/services/data_store.ts +14 -19
  456. package/src/services/discv5/discV5_service.ts +127 -15
  457. package/src/services/discv5/persisted_enr_store.ts +158 -0
  458. package/src/services/dummy_service.ts +82 -38
  459. package/src/services/encoding.ts +46 -29
  460. package/src/services/gossipsub/README.md +663 -0
  461. package/src/services/gossipsub/index.ts +2 -0
  462. package/src/services/gossipsub/scoring.ts +29 -5
  463. package/src/services/gossipsub/topic_score_params.ts +478 -0
  464. package/src/services/index.ts +1 -0
  465. package/src/services/libp2p/instrumentation.ts +48 -75
  466. package/src/services/libp2p/libp2p_service.ts +1073 -607
  467. package/src/services/peer-manager/metrics.ts +46 -21
  468. package/src/services/peer-manager/peer_manager.ts +96 -29
  469. package/src/services/peer-manager/peer_scoring.ts +130 -12
  470. package/src/services/reqresp/README.md +194 -0
  471. package/src/services/reqresp/batch-tx-requester/README.md +344 -0
  472. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +660 -0
  473. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  474. package/src/services/reqresp/batch-tx-requester/interface.ts +61 -0
  475. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +168 -0
  476. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +249 -0
  477. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +24 -0
  478. package/src/services/reqresp/config.ts +19 -2
  479. package/src/services/reqresp/connection-sampler/connection_sampler.ts +19 -1
  480. package/src/services/reqresp/constants.ts +14 -0
  481. package/src/services/reqresp/interface.ts +48 -46
  482. package/src/services/reqresp/metrics.ts +35 -27
  483. package/src/services/reqresp/protocols/auth.ts +2 -2
  484. package/src/services/reqresp/protocols/block_txs/bitvector.ts +19 -2
  485. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +44 -17
  486. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +109 -17
  487. package/src/services/reqresp/protocols/index.ts +0 -1
  488. package/src/services/reqresp/protocols/status.ts +7 -4
  489. package/src/services/reqresp/protocols/tx.ts +24 -5
  490. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  491. package/src/services/reqresp/rate-limiter/rate_limits.ts +3 -13
  492. package/src/services/reqresp/reqresp.ts +107 -223
  493. package/src/services/service.ts +102 -31
  494. package/src/services/tx_collection/config.ts +42 -37
  495. package/src/services/tx_collection/file_store_tx_collection.ts +153 -0
  496. package/src/services/tx_collection/file_store_tx_source.ts +129 -0
  497. package/src/services/tx_collection/index.ts +2 -1
  498. package/src/services/tx_collection/instrumentation.ts +5 -13
  499. package/src/services/tx_collection/request_tracker.ts +127 -0
  500. package/src/services/tx_collection/tx_collection.ts +367 -115
  501. package/src/services/tx_collection/tx_collection_sink.ts +32 -36
  502. package/src/services/tx_collection/tx_source.ts +29 -8
  503. package/src/services/tx_file_store/config.ts +37 -0
  504. package/src/services/tx_file_store/index.ts +3 -0
  505. package/src/services/tx_file_store/instrumentation.ts +36 -0
  506. package/src/services/tx_file_store/tx_file_store.ts +163 -0
  507. package/src/services/tx_provider.ts +34 -13
  508. package/src/services/tx_provider_instrumentation.ts +24 -14
  509. package/src/test-helpers/index.ts +2 -0
  510. package/src/test-helpers/make-test-p2p-clients.ts +7 -6
  511. package/src/test-helpers/mock-pubsub.ts +138 -15
  512. package/src/test-helpers/mock-tx-helpers.ts +1 -1
  513. package/src/test-helpers/reqresp-nodes.ts +18 -30
  514. package/src/test-helpers/test_tx_provider.ts +69 -0
  515. package/src/test-helpers/testbench-utils.ts +465 -0
  516. package/src/testbench/p2p_client_testbench_worker.ts +406 -130
  517. package/src/testbench/worker_client_manager.ts +355 -46
  518. package/src/util.ts +40 -19
  519. package/src/versioning.ts +3 -33
  520. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -37
  521. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  522. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -213
  523. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -30
  524. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  525. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -219
  526. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -116
  527. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  528. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -617
  529. package/dest/mem_pools/tx_pool/index.d.ts +0 -4
  530. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  531. package/dest/mem_pools/tx_pool/index.js +0 -3
  532. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +0 -81
  533. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +0 -1
  534. package/dest/mem_pools/tx_pool/memory_tx_pool.js +0 -239
  535. package/dest/mem_pools/tx_pool/priority.d.ts +0 -8
  536. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  537. package/dest/mem_pools/tx_pool/priority.js +0 -10
  538. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -123
  539. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  540. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  541. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  542. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  543. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -395
  544. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -12
  545. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
  546. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +0 -82
  547. package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
  548. package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
  549. package/dest/msg_validators/block_proposal_validator/index.js +0 -1
  550. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +0 -45
  551. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +0 -1
  552. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +0 -92
  553. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  554. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  555. package/dest/services/reqresp/protocols/block.js +0 -32
  556. package/dest/services/tx_collection/fast_tx_collection.d.ts +0 -51
  557. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +0 -1
  558. package/dest/services/tx_collection/fast_tx_collection.js +0 -300
  559. package/dest/services/tx_collection/slow_tx_collection.d.ts +0 -53
  560. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +0 -1
  561. package/dest/services/tx_collection/slow_tx_collection.js +0 -177
  562. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -298
  563. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -287
  564. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -751
  565. package/src/mem_pools/tx_pool/index.ts +0 -3
  566. package/src/mem_pools/tx_pool/memory_tx_pool.ts +0 -285
  567. package/src/mem_pools/tx_pool/priority.ts +0 -13
  568. package/src/mem_pools/tx_pool/tx_pool.ts +0 -136
  569. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -314
  570. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -97
  571. package/src/msg_validators/block_proposal_validator/index.ts +0 -1
  572. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +0 -100
  573. package/src/services/reqresp/protocols/block.ts +0 -37
  574. package/src/services/tx_collection/fast_tx_collection.ts +0 -341
  575. package/src/services/tx_collection/slow_tx_collection.ts +0 -233
package/src/versioning.ts CHANGED
@@ -1,33 +1,21 @@
1
- import { toBufferBE } from '@aztec/foundation/bigint-buffer';
2
1
  import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
3
2
  import { protocolContractsHash } from '@aztec/protocol-contracts';
4
3
  import type { ChainConfig } from '@aztec/stdlib/config';
5
- import {
6
- type ComponentsVersions,
7
- checkCompressedComponentVersion,
8
- compressComponentVersions,
9
- getComponentsVersionsFromConfig,
10
- } from '@aztec/stdlib/versioning';
4
+ import { compressComponentVersions, getComponentsVersionsFromConfig } from '@aztec/stdlib/versioning';
11
5
 
12
6
  import type { SignableENR } from '@nethermindeth/enr';
13
- import xxhashFactory from 'xxhash-wasm';
14
7
 
15
8
  import { AZTEC_ENR_CLIENT_VERSION_KEY, AZTEC_ENR_KEY } from './types/index.js';
16
9
 
17
- const USE_XX_HASH = false; // Enable to reduce the size of the ENR record for production
18
- const XX_HASH_LEN = 8;
19
- const xxhash = await xxhashFactory();
20
-
21
10
  /** Returns the component versions based on config and this build. */
22
11
  export function getVersions(config: ChainConfig) {
23
12
  return getComponentsVersionsFromConfig(config, protocolContractsHash, getVKTreeRoot());
24
13
  }
25
14
 
26
15
  /** Sets the aztec key on the ENR record with versioning info. */
27
- export function setAztecEnrKey(enr: SignableENR, config: ChainConfig, useXxHash = USE_XX_HASH) {
16
+ export function setAztecEnrKey(enr: SignableENR, config: ChainConfig) {
28
17
  const versions = getVersions(config);
29
- const value = versionsToEnrValue(versions, useXxHash);
30
- enr.set(AZTEC_ENR_KEY, value);
18
+ enr.set(AZTEC_ENR_KEY, Buffer.from(compressComponentVersions(versions)));
31
19
  return versions;
32
20
  }
33
21
 
@@ -37,21 +25,3 @@ export function setAztecClientVersionEnrKey(enr: SignableENR, clientVersion: str
37
25
  enr.set(AZTEC_ENR_CLIENT_VERSION_KEY, Buffer.from(clientVersion));
38
26
  }
39
27
  }
40
-
41
- /** Checks the given value from an ENR record against the expected versions. */
42
- export function checkAztecEnrVersion(enrValue: Buffer, expectedVersions: ComponentsVersions) {
43
- if (enrValue.length === XX_HASH_LEN) {
44
- const expected = versionsToEnrValue(expectedVersions, true);
45
- if (!Buffer.from(enrValue).equals(expected)) {
46
- throw new Error(`Expected ENR version ${expected.toString('hex')} but received ${enrValue.toString('hex')}`);
47
- }
48
- } else {
49
- const actual = Buffer.from(enrValue).toString();
50
- checkCompressedComponentVersion(actual, expectedVersions);
51
- }
52
- }
53
-
54
- function versionsToEnrValue(versions: ComponentsVersions, useXxHash: boolean) {
55
- const compressed = compressComponentVersions(versions);
56
- return useXxHash ? toBufferBE(xxhash.h64(compressed), XX_HASH_LEN) : Buffer.from(compressed);
57
- }
@@ -1,37 +0,0 @@
1
- import { SlotNumber } from '@aztec/foundation/branded-types';
2
- import type { AztecAsyncKVStore } from '@aztec/kv-store';
3
- import { BlockAttestation, BlockProposal } from '@aztec/stdlib/p2p';
4
- import { type TelemetryClient } from '@aztec/telemetry-client';
5
- import type { AttestationPool } from './attestation_pool.js';
6
- export declare const MAX_PROPOSALS_PER_SLOT = 5;
7
- export declare const ATTESTATION_CAP_BUFFER = 10;
8
- export declare class KvAttestationPool implements AttestationPool {
9
- private store;
10
- private log;
11
- private metrics;
12
- private attestations;
13
- private proposals;
14
- private proposalsForSlot;
15
- private attestationsForProposal;
16
- constructor(store: AztecAsyncKVStore, telemetry?: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
17
- private poolStats;
18
- isEmpty(): Promise<boolean>;
19
- private getProposalKey;
20
- private getAttestationKey;
21
- addAttestations(attestations: BlockAttestation[]): Promise<void>;
22
- getAttestationsForSlot(slot: SlotNumber): Promise<BlockAttestation[]>;
23
- getAttestationsForSlotAndProposal(slot: SlotNumber, proposalId: string): Promise<BlockAttestation[]>;
24
- deleteAttestationsOlderThan(oldestSlot: SlotNumber): Promise<void>;
25
- deleteAttestationsForSlot(slot: SlotNumber): Promise<void>;
26
- deleteAttestationsForSlotAndProposal(slot: SlotNumber, proposalId: string): Promise<void>;
27
- deleteAttestations(attestations: BlockAttestation[]): Promise<void>;
28
- hasAttestation(attestation: BlockAttestation): Promise<boolean>;
29
- getBlockProposal(id: string): Promise<BlockProposal | undefined>;
30
- hasBlockProposal(idOrProposal: string | BlockProposal): Promise<boolean>;
31
- addBlockProposal(blockProposal: BlockProposal): Promise<void>;
32
- hasReachedProposalCap(slot: SlotNumber): Promise<boolean>;
33
- hasReachedAttestationCap(slot: SlotNumber, proposalId: string, committeeSize: number): Promise<boolean>;
34
- canAddProposal(block: BlockProposal): Promise<boolean>;
35
- canAddAttestation(attestation: BlockAttestation, committeeSize: number): Promise<boolean>;
36
- }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3ZfYXR0ZXN0YXRpb25fcG9vbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21lbV9wb29scy9hdHRlc3RhdGlvbl9wb29sL2t2X2F0dGVzdGF0aW9uX3Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSTdELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFxQyxNQUFNLGlCQUFpQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXNCLE1BQU0seUJBQXlCLENBQUM7QUFJbkYsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFN0QsZUFBTyxNQUFNLHNCQUFzQixJQUFJLENBQUM7QUFDeEMsZUFBTyxNQUFNLHNCQUFzQixLQUFLLENBQUM7QUFFekMscUJBQWEsaUJBQWtCLFlBQVcsZUFBZTtJQVlyRCxPQUFPLENBQUMsS0FBSztJQUViLE9BQU8sQ0FBQyxHQUFHO0lBYmIsT0FBTyxDQUFDLE9BQU8sQ0FBd0M7SUFFdkQsT0FBTyxDQUFDLFlBQVksQ0FBZ0M7SUFDcEQsT0FBTyxDQUFDLFNBQVMsQ0FHZjtJQUNGLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBcUM7SUFDN0QsT0FBTyxDQUFDLHVCQUF1QixDQUFxQztJQUVwRSxZQUNVLEtBQUssRUFBRSxpQkFBaUIsRUFDaEMsU0FBUyxHQUFFLGVBQXNDLEVBQ3pDLEdBQUcseUNBQXlDLEVBUXJEO0lBRUQsT0FBTyxDQUFDLFNBQVMsQ0FJZjtJQUVXLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBS3ZDO0lBRUQsT0FBTyxDQUFDLGNBQWM7SUFZdEIsT0FBTyxDQUFDLGlCQUFpQjtJQUlaLGVBQWUsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBbUM1RTtJQUVZLHNCQUFzQixDQUFDLElBQUksRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FTakY7SUFFWSxpQ0FBaUMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FvQmhIO0lBRVksMkJBQTJCLENBQUMsVUFBVSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBSzlFO0lBRVkseUJBQXlCLENBQUMsSUFBSSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBdUJ0RTtJQUVZLG9DQUFvQyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBa0JyRztJQUVZLGtCQUFrQixDQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0E0Qi9FO0lBRVksY0FBYyxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBYzNFO0lBRVksZ0JBQWdCLENBQUMsRUFBRSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQyxDQVc1RTtJQUVZLGdCQUFnQixDQUFDLFlBQVksRUFBRSxNQUFNLEdBQUcsYUFBYSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FHcEY7SUFFWSxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsYUFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FlekU7SUFFWSxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FHckU7SUFFWSx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBR25IO0lBRVksY0FBYyxDQUFDLEtBQUssRUFBRSxhQUFhLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUlsRTtJQUVZLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FTckc7Q0FDRiJ9
@@ -1 +0,0 @@
1
- {"version":3,"file":"kv_attestation_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/kv_attestation_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAI7D,OAAO,KAAK,EAAE,iBAAiB,EAAqC,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAInF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,qBAAa,iBAAkB,YAAW,eAAe;IAYrD,OAAO,CAAC,KAAK;IAEb,OAAO,CAAC,GAAG;IAbb,OAAO,CAAC,OAAO,CAAwC;IAEvD,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,SAAS,CAGf;IACF,OAAO,CAAC,gBAAgB,CAAqC;IAC7D,OAAO,CAAC,uBAAuB,CAAqC;IAEpE,YACU,KAAK,EAAE,iBAAiB,EAChC,SAAS,GAAE,eAAsC,EACzC,GAAG,yCAAyC,EAQrD;IAED,OAAO,CAAC,SAAS,CAIf;IAEW,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAKvC;IAED,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,iBAAiB;IAIZ,eAAe,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmC5E;IAEY,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CASjF;IAEY,iCAAiC,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAoBhH;IAEY,2BAA2B,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAK9E;IAEY,yBAAyB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBtE;IAEY,oCAAoC,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBrG;IAEY,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B/E;IAEY,cAAc,CAAC,WAAW,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAc3E;IAEY,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAW5E;IAEY,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAGpF;IAEY,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAezE;IAEY,qBAAqB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAGrE;IAEY,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGnH;IAEY,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAIlE;IAEY,iBAAiB,CAAC,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASrG;CACF"}
@@ -1,213 +0,0 @@
1
- import { SlotNumber } from '@aztec/foundation/branded-types';
2
- import { Fr } from '@aztec/foundation/fields';
3
- import { toArray } from '@aztec/foundation/iterable';
4
- import { createLogger } from '@aztec/foundation/log';
5
- import { BlockAttestation, BlockProposal } from '@aztec/stdlib/p2p';
6
- import { getTelemetryClient } from '@aztec/telemetry-client';
7
- import { ProposalSlotCapExceededError } from '../../errors/attestation-pool.error.js';
8
- import { PoolInstrumentation, PoolName } from '../instrumentation.js';
9
- export const MAX_PROPOSALS_PER_SLOT = 5;
10
- export const ATTESTATION_CAP_BUFFER = 10;
11
- export class KvAttestationPool {
12
- store;
13
- log;
14
- metrics;
15
- attestations;
16
- proposals;
17
- proposalsForSlot;
18
- attestationsForProposal;
19
- constructor(store, telemetry = getTelemetryClient(), log = createLogger('aztec:attestation_pool')){
20
- this.store = store;
21
- this.log = log;
22
- this.poolStats = async ()=>{
23
- return {
24
- itemCount: await this.attestations.sizeAsync()
25
- };
26
- };
27
- this.attestations = store.openMap('attestations');
28
- this.proposals = store.openMap('proposals');
29
- this.proposalsForSlot = store.openMultiMap('proposals_for_slot');
30
- this.attestationsForProposal = store.openMultiMap('attestations_for_proposal');
31
- this.metrics = new PoolInstrumentation(telemetry, PoolName.ATTESTATION_POOL, this.poolStats);
32
- }
33
- poolStats;
34
- async isEmpty() {
35
- for await (const _ of this.attestations.entriesAsync()){
36
- return false;
37
- }
38
- return true;
39
- }
40
- getProposalKey(slot, proposalId) {
41
- const slotStr = typeof slot === 'string' ? slot : new Fr(slot).toString();
42
- const proposalIdStr = typeof proposalId === 'string' ? proposalId : Buffer.isBuffer(proposalId) ? Fr.fromBuffer(proposalId).toString() : proposalId.toString();
43
- return `${slotStr}-${proposalIdStr}`;
44
- }
45
- getAttestationKey(slot, proposalId, address) {
46
- return `${this.getProposalKey(slot, proposalId)}-${address}`;
47
- }
48
- async addAttestations(attestations) {
49
- await this.store.transactionAsync(async ()=>{
50
- for (const attestation of attestations){
51
- const slotNumber = attestation.payload.header.slotNumber;
52
- const proposalId = attestation.archive;
53
- const sender = attestation.getSender();
54
- // Skip attestations with invalid signatures
55
- if (!sender) {
56
- this.log.warn(`Skipping attestation with invalid signature for slot ${slotNumber}`, {
57
- signature: attestation.signature.toString(),
58
- slotNumber,
59
- proposalId
60
- });
61
- continue;
62
- }
63
- const address = sender.toString();
64
- await this.attestations.set(this.getAttestationKey(slotNumber, proposalId, address), attestation.toBuffer());
65
- await this.proposalsForSlot.set(slotNumber, proposalId.toString());
66
- await this.attestationsForProposal.set(this.getProposalKey(slotNumber, proposalId), this.getAttestationKey(slotNumber, proposalId, address));
67
- this.log.verbose(`Added attestation for slot ${slotNumber} from ${address}`, {
68
- signature: attestation.signature.toString(),
69
- slotNumber,
70
- address,
71
- proposalId
72
- });
73
- }
74
- });
75
- }
76
- async getAttestationsForSlot(slot) {
77
- const proposalIds = await toArray(this.proposalsForSlot.getValuesAsync(slot));
78
- const attestations = [];
79
- for (const proposalId of proposalIds){
80
- attestations.push(...await this.getAttestationsForSlotAndProposal(slot, proposalId));
81
- }
82
- return attestations;
83
- }
84
- async getAttestationsForSlotAndProposal(slot, proposalId) {
85
- const attestationIds = await toArray(this.attestationsForProposal.getValuesAsync(this.getProposalKey(slot, proposalId)));
86
- const attestations = [];
87
- // alternatively iterate this.attestaions starting from slot-proposal-EthAddress.zero
88
- for (const id of attestationIds){
89
- const buf = await this.attestations.getAsync(id);
90
- if (!buf) {
91
- // this should not happen unless we lost writes
92
- throw new Error('Attestation not found ' + id);
93
- }
94
- const attestation = BlockAttestation.fromBuffer(buf);
95
- attestations.push(attestation);
96
- }
97
- return attestations;
98
- }
99
- async deleteAttestationsOlderThan(oldestSlot) {
100
- const olderThan = await toArray(this.proposalsForSlot.keysAsync({
101
- end: oldestSlot
102
- }));
103
- for (const oldSlot of olderThan){
104
- await this.deleteAttestationsForSlot(SlotNumber(oldSlot));
105
- }
106
- }
107
- async deleteAttestationsForSlot(slot) {
108
- let numberOfAttestations = 0;
109
- await this.store.transactionAsync(async ()=>{
110
- const proposalIds = await toArray(this.proposalsForSlot.getValuesAsync(slot));
111
- for (const proposalId of proposalIds){
112
- const attestations = await toArray(this.attestationsForProposal.getValuesAsync(this.getProposalKey(slot, proposalId)));
113
- numberOfAttestations += attestations.length;
114
- for (const attestation of attestations){
115
- await this.attestations.delete(attestation);
116
- }
117
- await this.proposals.delete(proposalId);
118
- await this.attestationsForProposal.delete(this.getProposalKey(slot, proposalId));
119
- }
120
- // Delete from proposalsForSlot
121
- await this.proposalsForSlot.delete(slot);
122
- this.log.verbose(`Removed ${numberOfAttestations} attestations for slot ${slot}`);
123
- });
124
- }
125
- async deleteAttestationsForSlotAndProposal(slot, proposalId) {
126
- let numberOfAttestations = 0;
127
- await this.store.transactionAsync(async ()=>{
128
- const attestations = await toArray(this.attestationsForProposal.getValuesAsync(this.getProposalKey(slot, proposalId)));
129
- numberOfAttestations += attestations.length;
130
- for (const attestation of attestations){
131
- await this.attestations.delete(attestation);
132
- }
133
- await this.proposals.delete(proposalId);
134
- await this.proposalsForSlot.deleteValue(slot, proposalId);
135
- await this.attestationsForProposal.delete(this.getProposalKey(slot, proposalId));
136
- this.log.verbose(`Removed ${numberOfAttestations} attestations for slot ${slot} and proposal ${proposalId}`);
137
- });
138
- }
139
- async deleteAttestations(attestations) {
140
- await this.store.transactionAsync(async ()=>{
141
- for (const attestation of attestations){
142
- const slotNumber = attestation.payload.header.slotNumber;
143
- const proposalId = attestation.archive;
144
- const sender = attestation.getSender();
145
- // Skip attestations with invalid signatures
146
- if (!sender) {
147
- this.log.warn(`Skipping deletion of attestation with invalid signature for slot ${slotNumber}`);
148
- continue;
149
- }
150
- const address = sender.toString();
151
- const key = this.getAttestationKey(slotNumber, proposalId, address);
152
- if (await this.attestations.hasAsync(key)) {
153
- await this.attestations.delete(key);
154
- }
155
- await this.attestationsForProposal.deleteValue(this.getProposalKey(slotNumber, proposalId), this.getAttestationKey(slotNumber, proposalId, address));
156
- this.log.debug(`Deleted attestation for slot ${slotNumber} from ${address}`);
157
- }
158
- });
159
- }
160
- async hasAttestation(attestation) {
161
- const slotNumber = attestation.payload.header.slotNumber;
162
- const proposalId = attestation.archive;
163
- const sender = attestation.getSender();
164
- // Attestations with invalid signatures are never in the pool
165
- if (!sender) {
166
- return false;
167
- }
168
- const address = sender.toString();
169
- const key = this.getAttestationKey(slotNumber, proposalId, address);
170
- return await this.attestations.hasAsync(key);
171
- }
172
- async getBlockProposal(id) {
173
- const buffer = await this.proposals.getAsync(id);
174
- try {
175
- if (buffer && buffer.length > 0) {
176
- return BlockProposal.fromBuffer(buffer);
177
- }
178
- } catch {
179
- return Promise.resolve(undefined);
180
- }
181
- return Promise.resolve(undefined);
182
- }
183
- async hasBlockProposal(idOrProposal) {
184
- const id = typeof idOrProposal === 'string' ? idOrProposal : idOrProposal.payload.archive.toString();
185
- return await this.proposals.hasAsync(id);
186
- }
187
- async addBlockProposal(blockProposal) {
188
- await this.store.transactionAsync(async ()=>{
189
- const slotKey = blockProposal.slotNumber;
190
- const proposalId = blockProposal.archive.toString();
191
- if (!await this.canAddProposal(blockProposal)) {
192
- throw new ProposalSlotCapExceededError(`Maximum proposals per slot reached: slot=${slotKey} cap=${MAX_PROPOSALS_PER_SLOT} proposal=${proposalId}`);
193
- }
194
- await this.proposalsForSlot.set(slotKey, proposalId);
195
- // Always update the stored proposal buffer so re-adds overwrite with latest data
196
- await this.proposals.set(proposalId, blockProposal.toBuffer());
197
- });
198
- }
199
- async hasReachedProposalCap(slot) {
200
- const uniqueProposalCount = await this.proposalsForSlot.getValueCountAsync(slot);
201
- return uniqueProposalCount >= MAX_PROPOSALS_PER_SLOT;
202
- }
203
- async hasReachedAttestationCap(slot, proposalId, committeeSize) {
204
- const limit = committeeSize + ATTESTATION_CAP_BUFFER;
205
- return await this.attestationsForProposal.getValueCountAsync(this.getProposalKey(slot, proposalId)) >= limit;
206
- }
207
- async canAddProposal(block) {
208
- return await this.proposals.hasAsync(block.archive.toString()) || !await this.hasReachedProposalCap(block.slotNumber);
209
- }
210
- async canAddAttestation(attestation, committeeSize) {
211
- return await this.hasAttestation(attestation) || !await this.hasReachedAttestationCap(attestation.payload.header.slotNumber, attestation.archive.toString(), committeeSize);
212
- }
213
- }
@@ -1,30 +0,0 @@
1
- import type { SlotNumber } from '@aztec/foundation/branded-types';
2
- import type { BlockAttestation, BlockProposal } from '@aztec/stdlib/p2p';
3
- import { type TelemetryClient } from '@aztec/telemetry-client';
4
- import type { AttestationPool } from './attestation_pool.js';
5
- export declare class InMemoryAttestationPool implements AttestationPool {
6
- #private;
7
- private log;
8
- private metrics;
9
- private attestations;
10
- private proposals;
11
- constructor(telemetry?: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
12
- private poolStats;
13
- isEmpty(): Promise<boolean>;
14
- getAttestationsForSlot(slot: SlotNumber): Promise<BlockAttestation[]>;
15
- getAttestationsForSlotAndProposal(slot: SlotNumber, proposalId: string): Promise<BlockAttestation[]>;
16
- addAttestations(attestations: BlockAttestation[]): Promise<void>;
17
- deleteAttestationsOlderThan(oldestSlot: SlotNumber): Promise<void>;
18
- deleteAttestationsForSlot(slot: SlotNumber): Promise<void>;
19
- deleteAttestationsForSlotAndProposal(slot: SlotNumber, proposalId: string): Promise<void>;
20
- deleteAttestations(attestations: BlockAttestation[]): Promise<void>;
21
- hasAttestation(attestation: BlockAttestation): Promise<boolean>;
22
- addBlockProposal(blockProposal: BlockProposal): Promise<void>;
23
- getBlockProposal(id: string): Promise<BlockProposal | undefined>;
24
- hasBlockProposal(idOrProposal: string | BlockProposal): Promise<boolean>;
25
- hasReachedProposalCap(slot: SlotNumber): Promise<boolean>;
26
- hasReachedAttestationCap(slot: SlotNumber, proposalId: string, committeeSize: number): Promise<boolean>;
27
- canAddProposal(block: BlockProposal): Promise<boolean>;
28
- canAddAttestation(attestation: BlockAttestation, committeeSize: number): Promise<boolean>;
29
- }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5X2F0dGVzdGF0aW9uX3Bvb2wuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZW1fcG9vbHMvYXR0ZXN0YXRpb25fcG9vbC9tZW1vcnlfYXR0ZXN0YXRpb25fcG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVsRSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXNCLE1BQU0seUJBQXlCLENBQUM7QUFHbkYsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHN0QscUJBQWEsdUJBQXdCLFlBQVcsZUFBZTs7SUFZM0QsT0FBTyxDQUFDLEdBQUc7SUFYYixPQUFPLENBQUMsT0FBTyxDQUF3QztJQUd2RCxPQUFPLENBQUMsWUFBWSxDQUdsQjtJQUNGLE9BQU8sQ0FBQyxTQUFTLENBQTZCO0lBRTlDLFlBQ0UsU0FBUyxHQUFFLGVBQXNDLEVBQ3pDLEdBQUcseUNBQXVDLEVBS25EO0lBRUQsT0FBTyxDQUFDLFNBQVMsQ0FJZjtJQUVLLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBRWpDO0lBRU0sc0JBQXNCLENBQUMsSUFBSSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQU0zRTtJQUVNLGlDQUFpQyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQVMxRztJQUVNLGVBQWUsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBK0J0RTtJQWNZLDJCQUEyQixDQUFDLFVBQVUsRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQW1COUU7SUFFTSx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FnQmhFO0lBRU0sb0NBQW9DLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FjL0Y7SUFFTSxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBc0J6RTtJQUVNLGNBQWMsQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQXFCckU7SUFFTSxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsYUFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FRbkU7SUFFTSxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLENBRXRFO0lBRU0sZ0JBQWdCLENBQUMsWUFBWSxFQUFFLE1BQU0sR0FBRyxhQUFhLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUc5RTtJQUVNLHFCQUFxQixDQUFDLElBQUksRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUkvRDtJQUVNLHdCQUF3QixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FJN0c7SUFFWSxjQUFjLENBQUMsS0FBSyxFQUFFLGFBQWEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBRWxFO0lBRVksaUJBQWlCLENBQUMsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQVNyRztDQUNGIn0=
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory_attestation_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/memory_attestation_pool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAGnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7D,qBAAa,uBAAwB,YAAW,eAAe;;IAY3D,OAAO,CAAC,GAAG;IAXb,OAAO,CAAC,OAAO,CAAwC;IAGvD,OAAO,CAAC,YAAY,CAGlB;IACF,OAAO,CAAC,SAAS,CAA6B;IAE9C,YACE,SAAS,GAAE,eAAsC,EACzC,GAAG,yCAAuC,EAKnD;IAED,OAAO,CAAC,SAAS,CAIf;IAEK,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAEjC;IAEM,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAM3E;IAEM,iCAAiC,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAS1G;IAEM,eAAe,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BtE;IAcY,2BAA2B,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB9E;IAEM,yBAAyB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhE;IAEM,oCAAoC,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAc/F;IAEM,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBzE;IAEM,cAAc,CAAC,WAAW,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAqBrE;IAEM,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAQnE;IAEM,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAEtE;IAEM,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAG9E;IAEM,qBAAqB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAI/D;IAEM,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAI7G;IAEY,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAElE;IAEY,iBAAiB,CAAC,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASrG;CACF"}
@@ -1,219 +0,0 @@
1
- import { createLogger } from '@aztec/foundation/log';
2
- import { getTelemetryClient } from '@aztec/telemetry-client';
3
- import { PoolInstrumentation, PoolName } from '../instrumentation.js';
4
- import { ATTESTATION_CAP_BUFFER, MAX_PROPOSALS_PER_SLOT } from './kv_attestation_pool.js';
5
- export class InMemoryAttestationPool {
6
- log;
7
- metrics;
8
- // eslint-disable-next-line aztec-custom/no-non-primitive-in-collections
9
- attestations;
10
- proposals;
11
- constructor(telemetry = getTelemetryClient(), log = createLogger('p2p:attestation_pool')){
12
- this.log = log;
13
- this.poolStats = ()=>{
14
- return Promise.resolve({
15
- itemCount: this.attestations.size
16
- });
17
- };
18
- this.attestations = new Map();
19
- this.proposals = new Map();
20
- this.metrics = new PoolInstrumentation(telemetry, PoolName.ATTESTATION_POOL, this.poolStats);
21
- }
22
- poolStats;
23
- isEmpty() {
24
- return Promise.resolve(this.attestations.size === 0);
25
- }
26
- getAttestationsForSlot(slot) {
27
- return Promise.resolve(Array.from(this.attestations.get(slot)?.values() ?? []).flatMap((proposalAttestationMap)=>Array.from(proposalAttestationMap.values())));
28
- }
29
- getAttestationsForSlotAndProposal(slot, proposalId) {
30
- const slotAttestationMap = this.attestations.get(slot);
31
- if (slotAttestationMap) {
32
- const proposalAttestationMap = slotAttestationMap.get(proposalId);
33
- if (proposalAttestationMap) {
34
- return Promise.resolve(Array.from(proposalAttestationMap.values()));
35
- }
36
- }
37
- return Promise.resolve([]);
38
- }
39
- addAttestations(attestations) {
40
- for (const attestation of attestations){
41
- // Perf: order and group by slot before insertion
42
- const slotNumber = attestation.payload.header.slotNumber;
43
- const proposalId = attestation.archive.toString();
44
- const sender = attestation.getSender();
45
- // Skip attestations with invalid signatures
46
- if (!sender) {
47
- this.log.warn(`Skipping attestation with invalid signature for slot ${slotNumber}`, {
48
- signature: attestation.signature.toString(),
49
- slotNumber,
50
- proposalId
51
- });
52
- continue;
53
- }
54
- const slotAttestationMap = getSlotOrDefault(this.attestations, slotNumber);
55
- const proposalAttestationMap = getProposalOrDefault(slotAttestationMap, proposalId);
56
- proposalAttestationMap.set(sender.toString(), attestation);
57
- this.log.verbose(`Added attestation for slot ${slotNumber} from ${sender}`, {
58
- signature: attestation.signature.toString(),
59
- slotNumber,
60
- address: sender,
61
- proposalId
62
- });
63
- }
64
- return Promise.resolve();
65
- }
66
- #getNumberOfAttestationsInSlot(slot) {
67
- let total = 0;
68
- const slotAttestationMap = getSlotOrDefault(this.attestations, slot);
69
- if (slotAttestationMap) {
70
- for (const proposalAttestationMap of slotAttestationMap.values() ?? []){
71
- total += proposalAttestationMap.size;
72
- }
73
- }
74
- return total;
75
- }
76
- async deleteAttestationsOlderThan(oldestSlot) {
77
- const olderThan = [];
78
- // Entries are iterated in insertion order, so we can break as soon as we find a slot that is older than the oldestSlot.
79
- // Note: this will only prune correctly if attestations are added in order of rising slot, it is important that we do not allow
80
- // insertion of attestations that are old. #(https://github.com/AztecProtocol/aztec-packages/issues/10322)
81
- const slots = this.attestations.keys();
82
- for (const slot of slots){
83
- if (slot < oldestSlot) {
84
- olderThan.push(slot);
85
- } else {
86
- break;
87
- }
88
- }
89
- for (const oldSlot of olderThan){
90
- await this.deleteAttestationsForSlot(oldSlot);
91
- }
92
- return Promise.resolve();
93
- }
94
- deleteAttestationsForSlot(slot) {
95
- // We count the number of attestations we are removing
96
- const numberOfAttestations = this.#getNumberOfAttestationsInSlot(slot);
97
- const proposalIdsToDelete = this.attestations.get(slot)?.keys();
98
- let proposalIdsToDeleteCount = 0;
99
- proposalIdsToDelete?.forEach((proposalId)=>{
100
- this.proposals.delete(proposalId);
101
- proposalIdsToDeleteCount++;
102
- });
103
- this.attestations.delete(slot);
104
- this.log.verbose(`Removed ${numberOfAttestations} attestations and ${proposalIdsToDeleteCount} proposals for slot ${slot}`);
105
- return Promise.resolve();
106
- }
107
- deleteAttestationsForSlotAndProposal(slot, proposalId) {
108
- const slotAttestationMap = getSlotOrDefault(this.attestations, slot);
109
- if (slotAttestationMap) {
110
- if (slotAttestationMap.has(proposalId)) {
111
- const numberOfAttestations = slotAttestationMap.get(proposalId)?.size ?? 0;
112
- slotAttestationMap.delete(proposalId);
113
- this.log.verbose(`Removed ${numberOfAttestations} attestations for slot ${slot} and proposal ${proposalId}`);
114
- }
115
- }
116
- this.proposals.delete(proposalId);
117
- return Promise.resolve();
118
- }
119
- deleteAttestations(attestations) {
120
- for (const attestation of attestations){
121
- const slotNumber = attestation.payload.header.slotNumber;
122
- const slotAttestationMap = this.attestations.get(slotNumber);
123
- if (slotAttestationMap) {
124
- const proposalId = attestation.archive.toString();
125
- const proposalAttestationMap = getProposalOrDefault(slotAttestationMap, proposalId);
126
- if (proposalAttestationMap) {
127
- const sender = attestation.getSender();
128
- // Skip attestations with invalid signatures
129
- if (!sender) {
130
- this.log.warn(`Skipping deletion of attestation with invalid signature for slot ${slotNumber}`);
131
- continue;
132
- }
133
- proposalAttestationMap.delete(sender.toString());
134
- this.log.debug(`Deleted attestation for slot ${slotNumber} from ${sender}`);
135
- }
136
- }
137
- }
138
- return Promise.resolve();
139
- }
140
- hasAttestation(attestation) {
141
- const slotNumber = attestation.payload.header.slotNumber;
142
- const proposalId = attestation.archive.toString();
143
- const sender = attestation.getSender();
144
- // Attestations with invalid signatures are never in the pool
145
- if (!sender) {
146
- return Promise.resolve(false);
147
- }
148
- const slotAttestationMap = this.attestations.get(slotNumber);
149
- if (!slotAttestationMap) {
150
- return Promise.resolve(false);
151
- }
152
- const proposalAttestationMap = slotAttestationMap.get(proposalId);
153
- if (!proposalAttestationMap) {
154
- return Promise.resolve(false);
155
- }
156
- return Promise.resolve(proposalAttestationMap.has(sender.toString()));
157
- }
158
- addBlockProposal(blockProposal) {
159
- // We initialize slot-proposal mapping if it does not exist
160
- // This is important to ensure we can delete this proposal if there were not attestations for it
161
- const slotProposalMapping = getSlotOrDefault(this.attestations, blockProposal.slotNumber);
162
- slotProposalMapping.set(blockProposal.payload.archive.toString(), new Map());
163
- this.proposals.set(blockProposal.payload.archive.toString(), blockProposal);
164
- return Promise.resolve();
165
- }
166
- getBlockProposal(id) {
167
- return Promise.resolve(this.proposals.get(id));
168
- }
169
- hasBlockProposal(idOrProposal) {
170
- const id = typeof idOrProposal === 'string' ? idOrProposal : idOrProposal.payload.archive.toString();
171
- return Promise.resolve(this.proposals.has(id));
172
- }
173
- hasReachedProposalCap(slot) {
174
- const slotAttestationMap = this.attestations.get(slot);
175
- const proposalCount = slotAttestationMap?.size ?? 0;
176
- return Promise.resolve(proposalCount >= MAX_PROPOSALS_PER_SLOT);
177
- }
178
- hasReachedAttestationCap(slot, proposalId, committeeSize) {
179
- const limit = committeeSize + ATTESTATION_CAP_BUFFER;
180
- const count = this.attestations.get(slot)?.get(proposalId)?.size ?? 0;
181
- return Promise.resolve(limit <= 0 || count >= limit);
182
- }
183
- async canAddProposal(block) {
184
- return this.proposals.has(block.archive.toString()) || !await this.hasReachedProposalCap(block.slotNumber);
185
- }
186
- async canAddAttestation(attestation, committeeSize) {
187
- const sender = attestation.getSender();
188
- const slot = attestation.payload.header.slotNumber;
189
- const pid = attestation.archive.toString();
190
- return !!sender && ((this.attestations.get(slot)?.get(pid)?.has(sender.toString()) ?? false) || !await this.hasReachedAttestationCap(slot, pid, committeeSize));
191
- }
192
- }
193
- /**
194
- * Get Slot or Default
195
- *
196
- * Fetch the slot mapping, if it does not exist, then create a mapping and return it
197
- * @param map - The map to fetch from
198
- * @param slot - The slot to fetch
199
- * @returns The slot mapping
200
- */ function getSlotOrDefault(// eslint-disable-next-line aztec-custom/no-non-primitive-in-collections
201
- map, slot) {
202
- if (!map.has(slot)) {
203
- map.set(slot, new Map());
204
- }
205
- return map.get(slot);
206
- }
207
- /**
208
- * Get Proposal or Default
209
- *
210
- * Fetch the proposal mapping, if it does not exist, then create a mapping and return it
211
- * @param map - The map to fetch from
212
- * @param proposalId - The proposal id to fetch
213
- * @returns The proposal mapping
214
- */ function getProposalOrDefault(map, proposalId) {
215
- if (!map.has(proposalId)) {
216
- map.set(proposalId, new Map());
217
- }
218
- return map.get(proposalId);
219
- }