@aztec/p2p 0.0.0-test.1 → 0.0.1-commit.001888fc

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 (659) hide show
  1. package/README.md +129 -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 -13
  5. package/dest/client/factory.d.ts +21 -11
  6. package/dest/client/factory.d.ts.map +1 -1
  7. package/dest/client/factory.js +101 -26
  8. package/dest/client/index.d.ts +2 -1
  9. package/dest/client/index.d.ts.map +1 -1
  10. package/dest/client/index.js +1 -0
  11. package/dest/client/interface.d.ts +183 -0
  12. package/dest/client/interface.d.ts.map +1 -0
  13. package/dest/client/interface.js +9 -0
  14. package/dest/client/p2p_client.d.ts +93 -221
  15. package/dest/client/p2p_client.d.ts.map +1 -1
  16. package/dest/client/p2p_client.js +760 -289
  17. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +2 -0
  18. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +1 -0
  19. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +304 -0
  20. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +73 -0
  21. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +1 -0
  22. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +8 -0
  23. package/dest/config.d.ts +192 -126
  24. package/dest/config.d.ts.map +1 -1
  25. package/dest/config.js +240 -36
  26. package/dest/enr/generate-enr.d.ts +11 -3
  27. package/dest/enr/generate-enr.d.ts.map +1 -1
  28. package/dest/enr/generate-enr.js +27 -5
  29. package/dest/enr/index.d.ts +1 -1
  30. package/dest/errors/attestation-pool.error.d.ts +7 -0
  31. package/dest/errors/attestation-pool.error.d.ts.map +1 -0
  32. package/dest/errors/attestation-pool.error.js +12 -0
  33. package/dest/errors/reqresp.error.d.ts +1 -1
  34. package/dest/errors/reqresp.error.d.ts.map +1 -1
  35. package/dest/errors/tx-pool.error.d.ts +8 -0
  36. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  37. package/dest/errors/tx-pool.error.js +9 -0
  38. package/dest/index.d.ts +5 -1
  39. package/dest/index.d.ts.map +1 -1
  40. package/dest/index.js +3 -0
  41. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +125 -30
  42. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  43. package/dest/mem_pools/attestation_pool/attestation_pool.js +445 -3
  44. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  45. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  46. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +564 -173
  47. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  48. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  49. package/dest/mem_pools/attestation_pool/index.js +1 -2
  50. package/dest/mem_pools/attestation_pool/mocks.d.ts +234 -11
  51. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  52. package/dest/mem_pools/attestation_pool/mocks.js +19 -21
  53. package/dest/mem_pools/index.d.ts +3 -2
  54. package/dest/mem_pools/index.d.ts.map +1 -1
  55. package/dest/mem_pools/index.js +1 -1
  56. package/dest/mem_pools/instrumentation.d.ts +18 -12
  57. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  58. package/dest/mem_pools/instrumentation.js +58 -41
  59. package/dest/mem_pools/interface.d.ts +6 -7
  60. package/dest/mem_pools/interface.d.ts.map +1 -1
  61. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +75 -16
  62. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  63. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +493 -142
  64. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +32 -0
  65. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -0
  66. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +112 -0
  67. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +157 -0
  68. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -0
  69. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +52 -0
  70. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +16 -0
  71. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  72. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +123 -0
  73. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +17 -0
  74. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  75. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +84 -0
  76. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +19 -0
  77. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  78. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +78 -0
  79. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +26 -0
  80. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  81. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +84 -0
  82. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
  83. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
  84. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
  85. package/dest/mem_pools/tx_pool/index.d.ts +1 -2
  86. package/dest/mem_pools/tx_pool/index.d.ts.map +1 -1
  87. package/dest/mem_pools/tx_pool/index.js +0 -1
  88. package/dest/mem_pools/tx_pool/priority.d.ts +5 -1
  89. package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
  90. package/dest/mem_pools/tx_pool/priority.js +8 -3
  91. package/dest/mem_pools/tx_pool/tx_pool.d.ts +72 -11
  92. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
  93. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
  94. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  95. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +279 -46
  96. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  97. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  98. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  99. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  100. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  101. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  102. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  103. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  104. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  105. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  106. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  107. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  108. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  109. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  110. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +94 -0
  111. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  112. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  113. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
  114. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  115. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  116. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  117. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +180 -0
  118. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  119. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  120. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  121. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  122. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
  123. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  124. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  125. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  126. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  127. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  128. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
  129. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  130. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  131. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +75 -0
  132. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  133. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  134. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  135. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  136. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  137. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  138. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  139. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  140. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  141. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +215 -0
  142. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  143. package/dest/mem_pools/tx_pool_v2/interfaces.js +10 -0
  144. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +134 -0
  145. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  146. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +216 -0
  147. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  148. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  149. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  150. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  151. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  152. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +337 -0
  153. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +62 -0
  154. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  155. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +167 -0
  156. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +78 -0
  157. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  158. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +923 -0
  159. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +7 -5
  160. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  161. package/dest/msg_validators/attestation_validator/attestation_validator.js +79 -10
  162. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +20 -0
  163. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -0
  164. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +76 -0
  165. package/dest/msg_validators/attestation_validator/index.d.ts +2 -1
  166. package/dest/msg_validators/attestation_validator/index.d.ts.map +1 -1
  167. package/dest/msg_validators/attestation_validator/index.js +1 -0
  168. package/dest/msg_validators/clock_tolerance.d.ts +21 -0
  169. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
  170. package/dest/msg_validators/clock_tolerance.js +37 -0
  171. package/dest/msg_validators/index.d.ts +2 -2
  172. package/dest/msg_validators/index.d.ts.map +1 -1
  173. package/dest/msg_validators/index.js +1 -1
  174. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts +10 -0
  175. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts.map +1 -0
  176. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.js +36 -0
  177. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +11 -0
  178. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
  179. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +14 -0
  180. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +11 -0
  181. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
  182. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +20 -0
  183. package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
  184. package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
  185. package/dest/msg_validators/proposal_validator/index.js +3 -0
  186. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +18 -0
  187. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
  188. package/dest/msg_validators/proposal_validator/proposal_validator.js +116 -0
  189. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  190. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  191. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  192. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +4 -0
  193. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -0
  194. package/dest/msg_validators/tx_validator/allowed_public_setup.js +31 -0
  195. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  196. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  197. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  198. package/dest/msg_validators/tx_validator/archive_cache.d.ts +14 -0
  199. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -0
  200. package/dest/msg_validators/tx_validator/archive_cache.js +22 -0
  201. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +20 -6
  202. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  203. package/dest/msg_validators/tx_validator/block_header_validator.js +7 -6
  204. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  205. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  206. package/dest/msg_validators/tx_validator/data_validator.js +60 -87
  207. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -6
  208. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  209. package/dest/msg_validators/tx_validator/double_spend_validator.js +24 -29
  210. package/dest/msg_validators/tx_validator/factory.d.ts +148 -0
  211. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -0
  212. package/dest/msg_validators/tx_validator/factory.js +265 -0
  213. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
  214. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
  215. package/dest/msg_validators/tx_validator/fee_payer_balance.js +24 -0
  216. package/dest/msg_validators/tx_validator/gas_validator.d.ts +76 -0
  217. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -0
  218. package/dest/msg_validators/tx_validator/gas_validator.js +177 -0
  219. package/dest/msg_validators/tx_validator/index.d.ts +11 -1
  220. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  221. package/dest/msg_validators/tx_validator/index.js +10 -0
  222. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +10 -5
  223. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  224. package/dest/msg_validators/tx_validator/metadata_validator.js +40 -21
  225. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  226. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  227. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  228. package/dest/msg_validators/tx_validator/phases_validator.d.ts +35 -0
  229. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -0
  230. package/dest/msg_validators/tx_validator/phases_validator.js +141 -0
  231. package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
  232. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
  233. package/dest/msg_validators/tx_validator/size_validator.js +23 -0
  234. package/dest/msg_validators/tx_validator/test_utils.d.ts +17 -0
  235. package/dest/msg_validators/tx_validator/test_utils.d.ts.map +1 -0
  236. package/dest/msg_validators/tx_validator/test_utils.js +22 -0
  237. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +30 -0
  238. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -0
  239. package/dest/msg_validators/tx_validator/timestamp_validator.js +32 -0
  240. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +9 -0
  241. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -0
  242. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +24 -0
  243. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  244. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  245. package/dest/msg_validators/tx_validator/tx_proof_validator.js +8 -7
  246. package/dest/services/data_store.d.ts +1 -1
  247. package/dest/services/data_store.d.ts.map +1 -1
  248. package/dest/services/data_store.js +10 -6
  249. package/dest/services/discv5/discV5_service.d.ts +10 -9
  250. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  251. package/dest/services/discv5/discV5_service.js +64 -37
  252. package/dest/services/dummy_service.d.ts +74 -11
  253. package/dest/services/dummy_service.d.ts.map +1 -1
  254. package/dest/services/dummy_service.js +136 -5
  255. package/dest/services/encoding.d.ts +26 -7
  256. package/dest/services/encoding.d.ts.map +1 -1
  257. package/dest/services/encoding.js +82 -12
  258. package/dest/services/gossipsub/index.d.ts +3 -0
  259. package/dest/services/gossipsub/index.d.ts.map +1 -0
  260. package/dest/services/gossipsub/index.js +2 -0
  261. package/dest/services/gossipsub/scoring.d.ts +21 -3
  262. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  263. package/dest/services/gossipsub/scoring.js +24 -7
  264. package/dest/services/gossipsub/topic_score_params.d.ts +173 -0
  265. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  266. package/dest/services/gossipsub/topic_score_params.js +346 -0
  267. package/dest/services/index.d.ts +6 -1
  268. package/dest/services/index.d.ts.map +1 -1
  269. package/dest/services/index.js +5 -0
  270. package/dest/services/libp2p/instrumentation.d.ts +20 -0
  271. package/dest/services/libp2p/instrumentation.d.ts.map +1 -0
  272. package/dest/services/libp2p/instrumentation.js +122 -0
  273. package/dest/services/libp2p/libp2p_service.d.ts +165 -101
  274. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  275. package/dest/services/libp2p/libp2p_service.js +1478 -350
  276. package/dest/services/peer-manager/interface.d.ts +23 -0
  277. package/dest/services/peer-manager/interface.d.ts.map +1 -0
  278. package/dest/services/peer-manager/interface.js +1 -0
  279. package/dest/services/peer-manager/metrics.d.ts +14 -3
  280. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  281. package/dest/services/peer-manager/metrics.js +50 -12
  282. package/dest/services/peer-manager/peer_manager.d.ts +103 -23
  283. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  284. package/dest/services/peer-manager/peer_manager.js +552 -82
  285. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  286. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  287. package/dest/services/peer-manager/peer_scoring.js +68 -4
  288. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +54 -0
  289. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  290. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +556 -0
  291. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  292. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  293. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  294. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +48 -0
  295. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  296. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  297. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +35 -0
  298. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  299. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +136 -0
  300. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +62 -0
  301. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  302. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +176 -0
  303. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
  304. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  305. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
  306. package/dest/services/reqresp/config.d.ts +11 -9
  307. package/dest/services/reqresp/config.d.ts.map +1 -1
  308. package/dest/services/reqresp/config.js +18 -4
  309. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +23 -4
  310. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  311. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +73 -10
  312. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +32 -17
  313. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  314. package/dest/services/reqresp/connection-sampler/connection_sampler.js +154 -84
  315. package/dest/services/reqresp/constants.d.ts +12 -0
  316. package/dest/services/reqresp/constants.d.ts.map +1 -0
  317. package/dest/services/reqresp/constants.js +7 -0
  318. package/dest/services/reqresp/index.d.ts +3 -2
  319. package/dest/services/reqresp/index.d.ts.map +1 -1
  320. package/dest/services/reqresp/index.js +2 -1
  321. package/dest/services/reqresp/interface.d.ts +84 -24
  322. package/dest/services/reqresp/interface.d.ts.map +1 -1
  323. package/dest/services/reqresp/interface.js +60 -27
  324. package/dest/services/reqresp/metrics.d.ts +6 -5
  325. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  326. package/dest/services/reqresp/metrics.js +17 -21
  327. package/dest/services/reqresp/protocols/auth.d.ts +43 -0
  328. package/dest/services/reqresp/protocols/auth.d.ts.map +1 -0
  329. package/dest/services/reqresp/protocols/auth.js +71 -0
  330. package/dest/services/reqresp/protocols/block.d.ts +6 -1
  331. package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
  332. package/dest/services/reqresp/protocols/block.js +30 -6
  333. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +34 -0
  334. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -0
  335. package/dest/services/reqresp/protocols/block_txs/bitvector.js +87 -0
  336. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +13 -0
  337. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -0
  338. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +57 -0
  339. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +70 -0
  340. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -0
  341. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +121 -0
  342. package/dest/services/reqresp/protocols/block_txs/index.d.ts +4 -0
  343. package/dest/services/reqresp/protocols/block_txs/index.d.ts.map +1 -0
  344. package/dest/services/reqresp/protocols/block_txs/index.js +3 -0
  345. package/dest/services/reqresp/protocols/goodbye.d.ts +3 -5
  346. package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
  347. package/dest/services/reqresp/protocols/goodbye.js +7 -7
  348. package/dest/services/reqresp/protocols/index.d.ts +3 -1
  349. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  350. package/dest/services/reqresp/protocols/index.js +2 -0
  351. package/dest/services/reqresp/protocols/ping.d.ts +1 -3
  352. package/dest/services/reqresp/protocols/ping.d.ts.map +1 -1
  353. package/dest/services/reqresp/protocols/status.d.ts +40 -7
  354. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  355. package/dest/services/reqresp/protocols/status.js +76 -5
  356. package/dest/services/reqresp/protocols/tx.d.ts +20 -4
  357. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  358. package/dest/services/reqresp/protocols/tx.js +54 -6
  359. package/dest/services/reqresp/rate-limiter/index.d.ts +1 -1
  360. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +6 -4
  361. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  362. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -2
  363. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  364. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  365. package/dest/services/reqresp/rate-limiter/rate_limits.js +21 -1
  366. package/dest/services/reqresp/reqresp.d.ts +29 -66
  367. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  368. package/dest/services/reqresp/reqresp.js +762 -249
  369. package/dest/services/reqresp/status.d.ts +10 -4
  370. package/dest/services/reqresp/status.d.ts.map +1 -1
  371. package/dest/services/reqresp/status.js +9 -2
  372. package/dest/services/service.d.ts +76 -20
  373. package/dest/services/service.d.ts.map +1 -1
  374. package/dest/services/tx_collection/config.d.ts +46 -0
  375. package/dest/services/tx_collection/config.d.ts.map +1 -0
  376. package/dest/services/tx_collection/config.js +112 -0
  377. package/dest/services/tx_collection/fast_tx_collection.d.ts +54 -0
  378. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -0
  379. package/dest/services/tx_collection/fast_tx_collection.js +327 -0
  380. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  381. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  382. package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
  383. package/dest/services/tx_collection/file_store_tx_source.d.ts +37 -0
  384. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  385. package/dest/services/tx_collection/file_store_tx_source.js +90 -0
  386. package/dest/services/tx_collection/index.d.ts +5 -0
  387. package/dest/services/tx_collection/index.d.ts.map +1 -0
  388. package/dest/services/tx_collection/index.js +4 -0
  389. package/dest/services/tx_collection/instrumentation.d.ts +10 -0
  390. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -0
  391. package/dest/services/tx_collection/instrumentation.js +32 -0
  392. package/dest/services/tx_collection/missing_txs_tracker.d.ts +32 -0
  393. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +1 -0
  394. package/dest/services/tx_collection/missing_txs_tracker.js +27 -0
  395. package/dest/services/tx_collection/proposal_tx_collector.d.ts +49 -0
  396. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
  397. package/dest/services/tx_collection/proposal_tx_collector.js +50 -0
  398. package/dest/services/tx_collection/slow_tx_collection.d.ts +57 -0
  399. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -0
  400. package/dest/services/tx_collection/slow_tx_collection.js +211 -0
  401. package/dest/services/tx_collection/tx_collection.d.ts +123 -0
  402. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -0
  403. package/dest/services/tx_collection/tx_collection.js +200 -0
  404. package/dest/services/tx_collection/tx_collection_sink.d.ts +40 -0
  405. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -0
  406. package/dest/services/tx_collection/tx_collection_sink.js +108 -0
  407. package/dest/services/tx_collection/tx_source.d.ts +23 -0
  408. package/dest/services/tx_collection/tx_source.d.ts.map +1 -0
  409. package/dest/services/tx_collection/tx_source.js +48 -0
  410. package/dest/services/tx_file_store/config.d.ts +16 -0
  411. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  412. package/dest/services/tx_file_store/config.js +22 -0
  413. package/dest/services/tx_file_store/index.d.ts +4 -0
  414. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  415. package/dest/services/tx_file_store/index.js +3 -0
  416. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  417. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  418. package/dest/services/tx_file_store/instrumentation.js +29 -0
  419. package/dest/services/tx_file_store/tx_file_store.d.ts +48 -0
  420. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  421. package/dest/services/tx_file_store/tx_file_store.js +152 -0
  422. package/dest/services/tx_provider.d.ts +51 -0
  423. package/dest/services/tx_provider.d.ts.map +1 -0
  424. package/dest/services/tx_provider.js +220 -0
  425. package/dest/services/tx_provider_instrumentation.d.ts +16 -0
  426. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -0
  427. package/dest/services/tx_provider_instrumentation.js +34 -0
  428. package/dest/test-helpers/generate-peer-id-private-keys.d.ts +1 -1
  429. package/dest/test-helpers/get-ports.d.ts +1 -1
  430. package/dest/test-helpers/get-ports.d.ts.map +1 -1
  431. package/dest/test-helpers/index.d.ts +4 -1
  432. package/dest/test-helpers/index.d.ts.map +1 -1
  433. package/dest/test-helpers/index.js +3 -0
  434. package/dest/test-helpers/make-enrs.d.ts +1 -1
  435. package/dest/test-helpers/make-enrs.d.ts.map +1 -1
  436. package/dest/test-helpers/make-enrs.js +4 -5
  437. package/dest/test-helpers/make-test-p2p-clients.d.ts +35 -8
  438. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  439. package/dest/test-helpers/make-test-p2p-clients.js +86 -17
  440. package/dest/test-helpers/mock-pubsub.d.ts +85 -0
  441. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -0
  442. package/dest/test-helpers/mock-pubsub.js +231 -0
  443. package/dest/test-helpers/mock-tx-helpers.d.ts +12 -0
  444. package/dest/test-helpers/mock-tx-helpers.d.ts.map +1 -0
  445. package/dest/test-helpers/mock-tx-helpers.js +19 -0
  446. package/dest/test-helpers/reqresp-nodes.d.ts +15 -12
  447. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  448. package/dest/test-helpers/reqresp-nodes.js +63 -28
  449. package/dest/test-helpers/test_tx_provider.d.ts +40 -0
  450. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  451. package/dest/test-helpers/test_tx_provider.js +41 -0
  452. package/dest/test-helpers/testbench-utils.d.ts +163 -0
  453. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  454. package/dest/test-helpers/testbench-utils.js +367 -0
  455. package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
  456. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  457. package/dest/testbench/p2p_client_testbench_worker.js +261 -91
  458. package/dest/testbench/parse_log_file.d.ts +1 -1
  459. package/dest/testbench/parse_log_file.js +4 -4
  460. package/dest/testbench/testbench.d.ts +1 -1
  461. package/dest/testbench/testbench.js +4 -4
  462. package/dest/testbench/worker_client_manager.d.ts +53 -11
  463. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  464. package/dest/testbench/worker_client_manager.js +237 -54
  465. package/dest/types/index.d.ts +4 -2
  466. package/dest/types/index.d.ts.map +1 -1
  467. package/dest/types/index.js +2 -0
  468. package/dest/util.d.ts +25 -17
  469. package/dest/util.d.ts.map +1 -1
  470. package/dest/util.js +75 -69
  471. package/dest/versioning.d.ts +4 -4
  472. package/dest/versioning.d.ts.map +1 -1
  473. package/dest/versioning.js +8 -3
  474. package/package.json +32 -27
  475. package/src/bootstrap/bootstrap.ts +34 -15
  476. package/src/client/factory.ts +215 -58
  477. package/src/client/index.ts +1 -0
  478. package/src/client/interface.ts +235 -0
  479. package/src/client/p2p_client.ts +474 -457
  480. package/src/client/test/tx_proposal_collector/README.md +227 -0
  481. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +345 -0
  482. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
  483. package/src/config.ts +409 -135
  484. package/src/enr/generate-enr.ts +39 -6
  485. package/src/errors/attestation-pool.error.ts +13 -0
  486. package/src/errors/tx-pool.error.ts +12 -0
  487. package/src/index.ts +5 -0
  488. package/src/mem_pools/attestation_pool/attestation_pool.ts +530 -29
  489. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +692 -201
  490. package/src/mem_pools/attestation_pool/index.ts +9 -2
  491. package/src/mem_pools/attestation_pool/mocks.ts +25 -17
  492. package/src/mem_pools/index.ts +4 -1
  493. package/src/mem_pools/instrumentation.ts +75 -47
  494. package/src/mem_pools/interface.ts +5 -7
  495. package/src/mem_pools/tx_pool/README.md +270 -0
  496. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +580 -143
  497. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +132 -0
  498. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +208 -0
  499. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +163 -0
  500. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +104 -0
  501. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +93 -0
  502. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +106 -0
  503. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
  504. package/src/mem_pools/tx_pool/index.ts +0 -1
  505. package/src/mem_pools/tx_pool/priority.ts +10 -3
  506. package/src/mem_pools/tx_pool/tx_pool.ts +75 -10
  507. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +228 -37
  508. package/src/mem_pools/tx_pool_v2/README.md +283 -0
  509. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  510. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  511. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  512. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  513. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +122 -0
  514. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
  515. package/src/mem_pools/tx_pool_v2/eviction/index.ts +27 -0
  516. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +219 -0
  517. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  518. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  519. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
  520. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +99 -0
  521. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +32 -0
  522. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  523. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  524. package/src/mem_pools/tx_pool_v2/interfaces.ts +247 -0
  525. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +337 -0
  526. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  527. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +430 -0
  528. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +238 -0
  529. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1105 -0
  530. package/src/msg_validators/attestation_validator/README.md +49 -0
  531. package/src/msg_validators/attestation_validator/attestation_validator.ts +72 -14
  532. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +94 -0
  533. package/src/msg_validators/attestation_validator/index.ts +1 -0
  534. package/src/msg_validators/clock_tolerance.ts +51 -0
  535. package/src/msg_validators/index.ts +1 -1
  536. package/src/msg_validators/msg_seen_validator/msg_seen_validator.ts +36 -0
  537. package/src/msg_validators/proposal_validator/README.md +123 -0
  538. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +20 -0
  539. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +26 -0
  540. package/src/msg_validators/proposal_validator/index.ts +3 -0
  541. package/src/msg_validators/proposal_validator/proposal_validator.ts +115 -0
  542. package/src/msg_validators/tx_validator/README.md +119 -0
  543. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +5 -5
  544. package/src/msg_validators/tx_validator/allowed_public_setup.ts +30 -0
  545. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  546. package/src/msg_validators/tx_validator/archive_cache.ts +28 -0
  547. package/src/msg_validators/tx_validator/block_header_validator.ts +23 -10
  548. package/src/msg_validators/tx_validator/data_validator.ts +95 -71
  549. package/src/msg_validators/tx_validator/double_spend_validator.ts +31 -23
  550. package/src/msg_validators/tx_validator/factory.ts +460 -0
  551. package/src/msg_validators/tx_validator/fee_payer_balance.ts +44 -0
  552. package/src/msg_validators/tx_validator/gas_validator.ts +219 -0
  553. package/src/msg_validators/tx_validator/index.ts +10 -0
  554. package/src/msg_validators/tx_validator/metadata_validator.ts +80 -24
  555. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  556. package/src/msg_validators/tx_validator/phases_validator.ts +173 -0
  557. package/src/msg_validators/tx_validator/size_validator.ts +22 -0
  558. package/src/msg_validators/tx_validator/test_utils.ts +43 -0
  559. package/src/msg_validators/tx_validator/timestamp_validator.ts +57 -0
  560. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +22 -0
  561. package/src/msg_validators/tx_validator/tx_proof_validator.ts +14 -8
  562. package/src/services/data_store.ts +10 -7
  563. package/src/services/discv5/discV5_service.ts +85 -39
  564. package/src/services/dummy_service.ts +210 -9
  565. package/src/services/encoding.ts +87 -11
  566. package/src/services/gossipsub/README.md +641 -0
  567. package/src/services/gossipsub/index.ts +2 -0
  568. package/src/services/gossipsub/scoring.ts +29 -5
  569. package/src/services/gossipsub/topic_score_params.ts +487 -0
  570. package/src/services/index.ts +5 -0
  571. package/src/services/libp2p/instrumentation.ts +126 -0
  572. package/src/services/libp2p/libp2p_service.ts +1335 -402
  573. package/src/services/peer-manager/interface.ts +29 -0
  574. package/src/services/peer-manager/metrics.ts +62 -12
  575. package/src/services/peer-manager/peer_manager.ts +658 -80
  576. package/src/services/peer-manager/peer_scoring.ts +70 -3
  577. package/src/services/reqresp/README.md +229 -0
  578. package/src/services/reqresp/batch-tx-requester/README.md +305 -0
  579. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +698 -0
  580. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  581. package/src/services/reqresp/batch-tx-requester/interface.ts +55 -0
  582. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +168 -0
  583. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +249 -0
  584. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
  585. package/src/services/reqresp/config.ts +26 -9
  586. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +77 -10
  587. package/src/services/reqresp/connection-sampler/connection_sampler.ts +166 -95
  588. package/src/services/reqresp/constants.ts +14 -0
  589. package/src/services/reqresp/index.ts +2 -0
  590. package/src/services/reqresp/interface.ts +120 -37
  591. package/src/services/reqresp/metrics.ts +40 -28
  592. package/src/services/reqresp/protocols/auth.ts +83 -0
  593. package/src/services/reqresp/protocols/block.ts +26 -4
  594. package/src/services/reqresp/protocols/block_txs/bitvector.ts +106 -0
  595. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +76 -0
  596. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +144 -0
  597. package/src/services/reqresp/protocols/block_txs/index.ts +3 -0
  598. package/src/services/reqresp/protocols/goodbye.ts +9 -7
  599. package/src/services/reqresp/protocols/index.ts +2 -0
  600. package/src/services/reqresp/protocols/status.ts +121 -5
  601. package/src/services/reqresp/protocols/tx.ts +58 -8
  602. package/src/services/reqresp/rate-limiter/rate_limiter.ts +12 -3
  603. package/src/services/reqresp/rate-limiter/rate_limits.ts +21 -1
  604. package/src/services/reqresp/reqresp.ts +462 -272
  605. package/src/services/reqresp/status.ts +12 -3
  606. package/src/services/service.ts +114 -22
  607. package/src/services/tx_collection/config.ts +166 -0
  608. package/src/services/tx_collection/fast_tx_collection.ts +387 -0
  609. package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
  610. package/src/services/tx_collection/file_store_tx_source.ts +117 -0
  611. package/src/services/tx_collection/index.ts +8 -0
  612. package/src/services/tx_collection/instrumentation.ts +41 -0
  613. package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
  614. package/src/services/tx_collection/proposal_tx_collector.ts +113 -0
  615. package/src/services/tx_collection/slow_tx_collection.ts +266 -0
  616. package/src/services/tx_collection/tx_collection.ts +313 -0
  617. package/src/services/tx_collection/tx_collection_sink.ts +125 -0
  618. package/src/services/tx_collection/tx_source.ts +56 -0
  619. package/src/services/tx_file_store/config.ts +37 -0
  620. package/src/services/tx_file_store/index.ts +3 -0
  621. package/src/services/tx_file_store/instrumentation.ts +36 -0
  622. package/src/services/tx_file_store/tx_file_store.ts +175 -0
  623. package/src/services/tx_provider.ts +233 -0
  624. package/src/services/tx_provider_instrumentation.ts +54 -0
  625. package/src/test-helpers/index.ts +3 -0
  626. package/src/test-helpers/make-enrs.ts +4 -5
  627. package/src/test-helpers/make-test-p2p-clients.ts +114 -26
  628. package/src/test-helpers/mock-pubsub.ts +325 -0
  629. package/src/test-helpers/mock-tx-helpers.ts +24 -0
  630. package/src/test-helpers/reqresp-nodes.ts +91 -42
  631. package/src/test-helpers/test_tx_provider.ts +64 -0
  632. package/src/test-helpers/testbench-utils.ts +431 -0
  633. package/src/testbench/p2p_client_testbench_worker.ts +442 -93
  634. package/src/testbench/parse_log_file.ts +4 -4
  635. package/src/testbench/testbench.ts +4 -4
  636. package/src/testbench/worker_client_manager.ts +323 -59
  637. package/src/types/index.ts +2 -0
  638. package/src/util.ts +112 -92
  639. package/src/versioning.ts +11 -4
  640. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -22
  641. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  642. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -112
  643. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -17
  644. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  645. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -129
  646. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +0 -56
  647. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +0 -1
  648. package/dest/mem_pools/tx_pool/memory_tx_pool.js +0 -141
  649. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -8
  650. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
  651. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +0 -21
  652. package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
  653. package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
  654. package/dest/msg_validators/block_proposal_validator/index.js +0 -1
  655. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -159
  656. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -161
  657. package/src/mem_pools/tx_pool/memory_tx_pool.ts +0 -174
  658. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -29
  659. package/src/msg_validators/block_proposal_validator/index.ts +0 -1
package/src/util.ts CHANGED
@@ -1,25 +1,47 @@
1
- import type { AztecAsyncKVStore } from '@aztec/kv-store';
2
- import type { DataStoreConfig } from '@aztec/kv-store/config';
1
+ import { SecretValue } from '@aztec/foundation/config';
2
+ import type { Logger } from '@aztec/foundation/log';
3
+ import type { AztecAsyncKVStore, AztecAsyncSingleton } from '@aztec/kv-store';
4
+ import type { DataStoreConfig } from '@aztec/stdlib/kv-store';
3
5
 
4
6
  import type { GossipSub } from '@chainsafe/libp2p-gossipsub';
5
7
  import { generateKeyPair, marshalPrivateKey, unmarshalPrivateKey } from '@libp2p/crypto/keys';
8
+ import type { Identify } from '@libp2p/identify';
6
9
  import type { PeerId, PrivateKey } from '@libp2p/interface';
7
10
  import type { ConnectionManager } from '@libp2p/interface-internal';
8
11
  import { createFromPrivKey } from '@libp2p/peer-id-factory';
9
12
  import { resolve } from 'dns/promises';
13
+ import { promises as fs } from 'fs';
10
14
  import type { Libp2p } from 'libp2p';
15
+ import net from 'net';
16
+ import path from 'path';
11
17
 
12
18
  import type { P2PConfig } from './config.js';
13
19
 
14
- export interface PubSubLibp2p extends Libp2p {
20
+ const PEER_ID_DATA_DIR_FILE = 'p2p-private-key';
21
+
22
+ export interface PubSubLibp2p extends Pick<Libp2p, 'status' | 'start' | 'stop' | 'peerId'> {
15
23
  services: {
16
- pubsub: GossipSub;
17
- components: {
18
- connectionManager: ConnectionManager;
19
- };
24
+ pubsub: Pick<
25
+ GossipSub,
26
+ | 'addEventListener'
27
+ | 'removeEventListener'
28
+ | 'publish'
29
+ | 'subscribe'
30
+ | 'reportMessageValidationResult'
31
+ | 'direct'
32
+ | 'getMeshPeers'
33
+ > & { score: Pick<GossipSub['score'], 'score'> };
20
34
  };
21
35
  }
22
36
 
37
+ export type FullLibp2p = Libp2p<{
38
+ identify: Identify;
39
+ pubsub: GossipSub;
40
+ components: {
41
+ connectionManager: ConnectionManager;
42
+ };
43
+ }>;
44
+
23
45
  /**
24
46
  * Converts an address string to a multiaddr string.
25
47
  * Example usage:
@@ -28,59 +50,39 @@ export interface PubSubLibp2p extends Libp2p {
28
50
  * @param address - The address string to convert. Has to be in the format <addr>:<port>.
29
51
  * @param protocol - The protocol to use in the multiaddr string.
30
52
  * @returns A multiaddr compliant string. */
31
- export function convertToMultiaddr(address: string, protocol: 'tcp' | 'udp'): string {
32
- const [addr, port] = splitAddressPort(address, false);
33
-
34
- const multiaddrPrefix = addressToMultiAddressType(addr);
53
+ export function convertToMultiaddr(address: string, port: number, protocol: 'tcp' | 'udp'): string {
54
+ const multiaddrPrefix = addressToMultiAddressType(address);
35
55
  if (multiaddrPrefix === 'dns') {
36
56
  throw new Error('Invalid address format. Expected an IPv4 or IPv6 address.');
37
57
  }
38
58
 
39
- return `/${multiaddrPrefix}/${addr}/${protocol}/${port}`;
40
- }
41
-
42
- /**
43
- * Splits an <address>:<port> string into its components.
44
- * @returns The ip6 or ip4 address & port separately
45
- */
46
- export function splitAddressPort(address: string, allowEmptyAddress: boolean): [string, string] {
47
- let addr: string;
48
- let port: string;
49
-
50
- if (address.startsWith('[')) {
51
- // IPv6 address enclosed in square brackets
52
- const match = address.match(/^\[([^\]]+)\]:(\d+)$/);
53
- if (!match) {
54
- throw new Error(`Invalid IPv6 address format:${address}. Expected format: [<addr>]:<port>`);
55
- }
56
- [, addr, port] = match;
57
- } else {
58
- // IPv4 address
59
- [addr, port] = address.split(':');
60
- if ((!addr && !allowEmptyAddress) || !port) {
61
- throw new Error(`Invalid address format: ${address}. Expected format: <addr>:<port>`);
62
- }
63
- }
64
-
65
- return [addr, port];
59
+ return `/${multiaddrPrefix}/${address}/${protocol}/${port}`;
66
60
  }
67
61
 
68
62
  /**
69
63
  * Queries the public IP address of the machine.
70
64
  */
71
65
  export async function getPublicIp(): Promise<string> {
72
- const resp = await fetch('http://checkip.amazonaws.com/');
66
+ const resp = await fetch('https://checkip.amazonaws.com/');
73
67
  const text = await resp.text();
74
- return text.trim();
68
+ const address = text.trim();
69
+ if (!isValidIpAddress(address)) {
70
+ throw new Error(`Received invalid IP address from checkip service: ${address}`);
71
+ }
72
+ return address;
73
+ }
74
+
75
+ export function isValidIpAddress(address: string): boolean {
76
+ const netType = net.isIP(address);
77
+ return netType === 4;
75
78
  }
76
79
 
77
- export async function resolveAddressIfNecessary(address: string): Promise<string> {
78
- const [addr, port] = splitAddressPort(address, false);
79
- const multiaddrPrefix = addressToMultiAddressType(addr);
80
+ export async function resolveAddressIfNecessary(address: string, port: string): Promise<string> {
81
+ const multiaddrPrefix = addressToMultiAddressType(address);
80
82
  if (multiaddrPrefix === 'dns') {
81
- const resolvedAddresses = await resolve(addr);
83
+ const resolvedAddresses = await resolve(address);
82
84
  if (resolvedAddresses.length === 0) {
83
- throw new Error(`Could not resolve address: ${addr}`);
85
+ throw new Error(`Could not resolve address: ${address}`);
84
86
  }
85
87
  return `${resolvedAddresses[0]}:${port}`;
86
88
  } else {
@@ -104,47 +106,21 @@ export async function configureP2PClientAddresses(
104
106
  _config: P2PConfig & DataStoreConfig,
105
107
  ): Promise<P2PConfig & DataStoreConfig> {
106
108
  const config = { ..._config };
107
- const {
108
- tcpAnnounceAddress: configTcpAnnounceAddress,
109
- udpAnnounceAddress: configUdpAnnounceAddress,
110
- queryForIp,
111
- } = config;
112
-
113
- config.tcpAnnounceAddress = configTcpAnnounceAddress
114
- ? await resolveAddressIfNecessary(configTcpAnnounceAddress)
115
- : undefined;
116
- config.udpAnnounceAddress = configUdpAnnounceAddress
117
- ? await resolveAddressIfNecessary(configUdpAnnounceAddress)
118
- : undefined;
119
-
120
- // create variable for re-use if needed
121
- let publicIp;
109
+ const { p2pIp, queryForIp, p2pBroadcastPort, p2pPort } = config;
122
110
 
123
- // check if no announce IP was provided
124
- const splitTcpAnnounceAddress = splitAddressPort(configTcpAnnounceAddress || '', true);
125
- if (splitTcpAnnounceAddress.length == 2 && splitTcpAnnounceAddress[0] === '') {
126
- if (queryForIp) {
127
- publicIp = await getPublicIp();
128
- const tcpAnnounceAddress = `${publicIp}:${splitTcpAnnounceAddress[1]}`;
129
- config.tcpAnnounceAddress = tcpAnnounceAddress;
130
- } else {
131
- throw new Error(
132
- `Invalid announceTcpAddress provided: ${configTcpAnnounceAddress}. Expected format: <addr>:<port>`,
133
- );
134
- }
111
+ // If no broadcast port is provided, use the given p2p port as the broadcast port
112
+ if (!p2pBroadcastPort) {
113
+ config.p2pBroadcastPort = p2pPort;
135
114
  }
136
115
 
137
- const splitUdpAnnounceAddress = splitAddressPort(configUdpAnnounceAddress || '', true);
138
- if (splitUdpAnnounceAddress.length == 2 && splitUdpAnnounceAddress[0] === '') {
139
- // If announceUdpAddress is not provided, use announceTcpAddress
140
- if (!queryForIp && config.tcpAnnounceAddress) {
141
- config.udpAnnounceAddress = config.tcpAnnounceAddress;
142
- } else if (queryForIp) {
143
- const udpPublicIp = publicIp || (await getPublicIp());
144
- const udpAnnounceAddress = `${udpPublicIp}:${splitUdpAnnounceAddress[1]}`;
145
- config.udpAnnounceAddress = udpAnnounceAddress;
116
+ // check if no announce IP was provided
117
+ if (!p2pIp) {
118
+ if (queryForIp) {
119
+ const publicIp = await getPublicIp();
120
+ config.p2pIp = publicIp;
146
121
  }
147
122
  }
123
+ // TODO(md): guard against setting a local ip address as the announce ip
148
124
 
149
125
  return config;
150
126
  }
@@ -153,30 +129,74 @@ export async function configureP2PClientAddresses(
153
129
  * Get the peer id private key
154
130
  *
155
131
  * 1. Check if we have a peer id private key in the config
156
- * 2. If not, check we have a peer id private key persisted in the node
157
- * 3. If not, create a new one, then persist it in the node
132
+ * 2. If not, check if we have a peer id private key persisted in a file
133
+ * 3. If no file path or data directory is provided, check if we have a peer id private key in the node's store
134
+ * 4. If not, create a new one, then persist it in a file if a file path or data directory is provided or in the node's store otherwise
158
135
  *
159
136
  */
160
137
  export async function getPeerIdPrivateKey(
161
- config: { peerIdPrivateKey?: string },
138
+ config: { peerIdPrivateKey?: SecretValue<string>; peerIdPrivateKeyPath?: string; dataDirectory?: string },
162
139
  store: AztecAsyncKVStore,
163
- ): Promise<string> {
164
- const peerIdPrivateKeySingleton = store.openSingleton<string>('peerIdPrivateKey');
165
- if (config.peerIdPrivateKey) {
166
- await peerIdPrivateKeySingleton.set(config.peerIdPrivateKey);
140
+ logger: Logger,
141
+ ): Promise<SecretValue<string>> {
142
+ const peerIdPrivateKeyFilePath =
143
+ config.peerIdPrivateKeyPath ??
144
+ (config.dataDirectory ? path.join(config.dataDirectory, PEER_ID_DATA_DIR_FILE) : undefined);
145
+ let peerIdPrivateKeySingleton: AztecAsyncSingleton<string> | undefined;
146
+
147
+ const writePrivateKeyToFile = async (filePath: string, privateKey: string) => {
148
+ await fs.mkdir(path.dirname(filePath), { recursive: true });
149
+ await fs.writeFile(filePath, privateKey);
150
+ };
151
+
152
+ // If the peerIdPrivateKey is provided in the config, we use it and persist it in either a file or the node's store
153
+ if (config.peerIdPrivateKey && config.peerIdPrivateKey.getValue().trim()) {
154
+ if (peerIdPrivateKeyFilePath) {
155
+ await writePrivateKeyToFile(peerIdPrivateKeyFilePath, config.peerIdPrivateKey.getValue());
156
+ } else {
157
+ peerIdPrivateKeySingleton = store.openSingleton<string>('peerIdPrivateKey');
158
+ await peerIdPrivateKeySingleton.set(config.peerIdPrivateKey.getValue());
159
+ }
167
160
  return config.peerIdPrivateKey;
168
161
  }
169
162
 
170
- const storedPeerIdPrivateKey = await peerIdPrivateKeySingleton.getAsync();
163
+ // Check to see if we have a peer id private key stored in a file or the node's store
164
+ let storedPeerIdPrivateKey: string | undefined;
165
+ const privateKeyFileExists =
166
+ peerIdPrivateKeyFilePath &&
167
+ (await fs
168
+ .access(peerIdPrivateKeyFilePath)
169
+ .then(() => true)
170
+ .catch(() => false));
171
+ if (peerIdPrivateKeyFilePath && privateKeyFileExists) {
172
+ await fs.access(peerIdPrivateKeyFilePath);
173
+ storedPeerIdPrivateKey = await fs.readFile(peerIdPrivateKeyFilePath, 'utf8');
174
+ } else {
175
+ peerIdPrivateKeySingleton = store.openSingleton<string>('peerIdPrivateKey');
176
+ storedPeerIdPrivateKey = await peerIdPrivateKeySingleton.getAsync();
177
+ }
171
178
  if (storedPeerIdPrivateKey) {
172
- return storedPeerIdPrivateKey;
179
+ if (peerIdPrivateKeyFilePath && !privateKeyFileExists) {
180
+ logger.verbose(`Peer ID private key found in the node's store, persisting it to ${peerIdPrivateKeyFilePath}`);
181
+ await writePrivateKeyToFile(peerIdPrivateKeyFilePath, storedPeerIdPrivateKey);
182
+ }
183
+ return new SecretValue(storedPeerIdPrivateKey);
173
184
  }
174
185
 
186
+ // Generate and persist a new private key
175
187
  const newPeerIdPrivateKey = await generateKeyPair('secp256k1');
176
188
  const privateKeyString = Buffer.from(marshalPrivateKey(newPeerIdPrivateKey)).toString('hex');
189
+ if (peerIdPrivateKeyFilePath) {
190
+ logger.verbose(`Creating new peer ID private key and persisting it to ${peerIdPrivateKeyFilePath}`);
191
+ await writePrivateKeyToFile(peerIdPrivateKeyFilePath, privateKeyString);
192
+ } else {
193
+ logger.warn(
194
+ 'Creating new peer ID private key and persisting it to the lmdb store. Key will be lost on rollup upgrade, specify the peer id private key path and restart the node to persist the peer id private key to a file',
195
+ );
196
+ await peerIdPrivateKeySingleton!.set(privateKeyString);
197
+ }
177
198
 
178
- await peerIdPrivateKeySingleton.set(privateKeyString);
179
- return privateKeyString;
199
+ return new SecretValue(privateKeyString);
180
200
  }
181
201
 
182
202
  /**
package/src/versioning.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { toBufferBE } from '@aztec/foundation/bigint-buffer';
2
2
  import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
3
- import { protocolContractTreeRoot } from '@aztec/protocol-contracts';
3
+ import { protocolContractsHash } from '@aztec/protocol-contracts';
4
4
  import type { ChainConfig } from '@aztec/stdlib/config';
5
5
  import {
6
6
  type ComponentsVersions,
@@ -9,10 +9,10 @@ import {
9
9
  getComponentsVersionsFromConfig,
10
10
  } from '@aztec/stdlib/versioning';
11
11
 
12
- import type { SignableENR } from '@chainsafe/enr';
12
+ import type { SignableENR } from '@nethermindeth/enr';
13
13
  import xxhashFactory from 'xxhash-wasm';
14
14
 
15
- import { AZTEC_ENR_KEY } from './types/index.js';
15
+ import { AZTEC_ENR_CLIENT_VERSION_KEY, AZTEC_ENR_KEY } from './types/index.js';
16
16
 
17
17
  const USE_XX_HASH = false; // Enable to reduce the size of the ENR record for production
18
18
  const XX_HASH_LEN = 8;
@@ -20,7 +20,7 @@ const xxhash = await xxhashFactory();
20
20
 
21
21
  /** Returns the component versions based on config and this build. */
22
22
  export function getVersions(config: ChainConfig) {
23
- return getComponentsVersionsFromConfig(config, protocolContractTreeRoot, getVKTreeRoot());
23
+ return getComponentsVersionsFromConfig(config, protocolContractsHash, getVKTreeRoot());
24
24
  }
25
25
 
26
26
  /** Sets the aztec key on the ENR record with versioning info. */
@@ -31,6 +31,13 @@ export function setAztecEnrKey(enr: SignableENR, config: ChainConfig, useXxHash
31
31
  return versions;
32
32
  }
33
33
 
34
+ /** Sets the Aztec client version on ENR record **/
35
+ export function setAztecClientVersionEnrKey(enr: SignableENR, clientVersion: string) {
36
+ if (clientVersion) {
37
+ enr.set(AZTEC_ENR_CLIENT_VERSION_KEY, Buffer.from(clientVersion));
38
+ }
39
+ }
40
+
34
41
  /** Checks the given value from an ENR record against the expected versions. */
35
42
  export function checkAztecEnrVersion(enrValue: Buffer, expectedVersions: ComponentsVersions) {
36
43
  if (enrValue.length === XX_HASH_LEN) {
@@ -1,22 +0,0 @@
1
- import type { AztecAsyncKVStore } from '@aztec/kv-store';
2
- import { BlockAttestation } from '@aztec/stdlib/p2p';
3
- import { type TelemetryClient } from '@aztec/telemetry-client';
4
- import type { AttestationPool } from './attestation_pool.js';
5
- export declare class KvAttestationPool implements AttestationPool {
6
- private store;
7
- private log;
8
- private metrics;
9
- private attestations;
10
- private proposalsForSlot;
11
- private attestationsForProposal;
12
- constructor(store: AztecAsyncKVStore, telemetry?: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
13
- private getProposalKey;
14
- private getAttestationKey;
15
- addAttestations(attestations: BlockAttestation[]): Promise<void>;
16
- getAttestationsForSlot(slot: bigint, proposalId: string): Promise<BlockAttestation[]>;
17
- deleteAttestationsOlderThan(oldestSlot: bigint): Promise<void>;
18
- deleteAttestationsForSlot(slot: bigint): Promise<void>;
19
- deleteAttestationsForSlotAndProposal(slot: bigint, proposalId: string): Promise<void>;
20
- deleteAttestations(attestations: BlockAttestation[]): Promise<void>;
21
- }
22
- //# sourceMappingURL=kv_attestation_pool.d.ts.map
@@ -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":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAqC,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAGnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,qBAAa,iBAAkB,YAAW,eAAe;IAQrD,OAAO,CAAC,KAAK;IAEb,OAAO,CAAC,GAAG;IATb,OAAO,CAAC,OAAO,CAAwC;IAEvD,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,gBAAgB,CAAqC;IAC7D,OAAO,CAAC,uBAAuB,CAAqC;gBAG1D,KAAK,EAAE,iBAAiB,EAChC,SAAS,GAAE,eAAsC,EACzC,GAAG,yCAAyC;IAStD,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,iBAAiB;IAIZ,eAAe,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBhE,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAsBrF,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9D,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBtD,oCAAoC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBrF,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAkBjF"}
@@ -1,112 +0,0 @@
1
- import { Fr } from '@aztec/foundation/fields';
2
- import { toArray } from '@aztec/foundation/iterable';
3
- import { createLogger } from '@aztec/foundation/log';
4
- import { BlockAttestation } from '@aztec/stdlib/p2p';
5
- import { getTelemetryClient } from '@aztec/telemetry-client';
6
- import { PoolInstrumentation, PoolName } from '../instrumentation.js';
7
- export class KvAttestationPool {
8
- store;
9
- log;
10
- metrics;
11
- attestations;
12
- proposalsForSlot;
13
- attestationsForProposal;
14
- constructor(store, telemetry = getTelemetryClient(), log = createLogger('aztec:attestation_pool')){
15
- this.store = store;
16
- this.log = log;
17
- this.attestations = store.openMap('attestations');
18
- this.proposalsForSlot = store.openMultiMap('proposals_for_slot');
19
- this.attestationsForProposal = store.openMultiMap('attestations_for_proposal');
20
- this.metrics = new PoolInstrumentation(telemetry, PoolName.ATTESTATION_POOL);
21
- }
22
- getProposalKey(slot, proposalId) {
23
- const slotStr = typeof slot === 'string' ? slot : new Fr(slot).toString();
24
- const proposalIdStr = typeof proposalId === 'string' ? proposalId : Buffer.isBuffer(proposalId) ? Fr.fromBuffer(proposalId).toString() : proposalId.toString();
25
- return `${slotStr}-${proposalIdStr}`;
26
- }
27
- getAttestationKey(slot, proposalId, address) {
28
- return `${this.getProposalKey(slot, proposalId)}-${address}`;
29
- }
30
- async addAttestations(attestations) {
31
- await this.store.transactionAsync(async ()=>{
32
- for (const attestation of attestations){
33
- const slotNumber = attestation.payload.header.globalVariables.slotNumber;
34
- const proposalId = attestation.archive;
35
- const address = (await attestation.getSender()).toString();
36
- await this.attestations.set(this.getAttestationKey(slotNumber, proposalId, address), attestation.toBuffer());
37
- await this.proposalsForSlot.set(slotNumber.toString(), proposalId.toString());
38
- await this.attestationsForProposal.set(this.getProposalKey(slotNumber, proposalId), this.getAttestationKey(slotNumber, proposalId, address));
39
- this.log.verbose(`Added attestation for slot ${slotNumber} from ${address}`);
40
- }
41
- });
42
- this.metrics.recordAddedObjects(attestations.length);
43
- }
44
- async getAttestationsForSlot(slot, proposalId) {
45
- const attestationIds = await toArray(this.attestationsForProposal.getValuesAsync(this.getProposalKey(slot, proposalId)));
46
- const attestations = [];
47
- // alternatively iterate this.attestaions starting from slot-proposal-EthAddress.zero
48
- for (const id of attestationIds){
49
- const buf = await this.attestations.getAsync(id);
50
- if (!buf) {
51
- // this should not happen unless we lost writes
52
- throw new Error('Attestation not found ' + id);
53
- }
54
- const attestation = BlockAttestation.fromBuffer(buf);
55
- attestations.push(attestation);
56
- }
57
- return attestations;
58
- }
59
- async deleteAttestationsOlderThan(oldestSlot) {
60
- const olderThan = await toArray(this.proposalsForSlot.keysAsync({
61
- end: new Fr(oldestSlot).toString()
62
- }));
63
- for (const oldSlot of olderThan){
64
- await this.deleteAttestationsForSlot(BigInt(oldSlot));
65
- }
66
- }
67
- async deleteAttestationsForSlot(slot) {
68
- const slotFr = new Fr(slot);
69
- let numberOfAttestations = 0;
70
- await this.store.transactionAsync(async ()=>{
71
- const proposalIds = await toArray(this.proposalsForSlot.getValuesAsync(slotFr.toString()));
72
- for (const proposalId of proposalIds){
73
- const attestations = await toArray(this.attestationsForProposal.getValuesAsync(this.getProposalKey(slotFr, proposalId)));
74
- numberOfAttestations += attestations.length;
75
- for (const attestation of attestations){
76
- await this.attestations.delete(attestation);
77
- }
78
- await this.attestationsForProposal.delete(this.getProposalKey(slotFr, proposalId));
79
- }
80
- });
81
- this.log.verbose(`Removed ${numberOfAttestations} attestations for slot ${slot}`);
82
- this.metrics.recordRemovedObjects(numberOfAttestations);
83
- }
84
- async deleteAttestationsForSlotAndProposal(slot, proposalId) {
85
- let numberOfAttestations = 0;
86
- await this.store.transactionAsync(async ()=>{
87
- const slotString = new Fr(slot).toString();
88
- const attestations = await toArray(this.attestationsForProposal.getValuesAsync(this.getProposalKey(slot, proposalId)));
89
- numberOfAttestations += attestations.length;
90
- for (const attestation of attestations){
91
- await this.attestations.delete(attestation);
92
- }
93
- await this.proposalsForSlot.deleteValue(slotString, proposalId);
94
- await this.attestationsForProposal.delete(this.getProposalKey(slotString, proposalId));
95
- });
96
- this.log.verbose(`Removed ${numberOfAttestations} attestations for slot ${slot} and proposal ${proposalId}`);
97
- this.metrics.recordRemovedObjects(numberOfAttestations);
98
- }
99
- async deleteAttestations(attestations) {
100
- await this.store.transactionAsync(async ()=>{
101
- for (const attestation of attestations){
102
- const slotNumber = attestation.payload.header.globalVariables.slotNumber;
103
- const proposalId = attestation.archive;
104
- const address = (await attestation.getSender()).toString();
105
- await this.attestations.delete(this.getAttestationKey(slotNumber, proposalId, address));
106
- await this.attestationsForProposal.deleteValue(this.getProposalKey(slotNumber, proposalId), this.getAttestationKey(slotNumber, proposalId, address));
107
- this.log.debug(`Deleted attestation for slot ${slotNumber} from ${address}`);
108
- }
109
- });
110
- this.metrics.recordRemovedObjects(attestations.length);
111
- }
112
- }
@@ -1,17 +0,0 @@
1
- import type { BlockAttestation } from '@aztec/stdlib/p2p';
2
- import { type TelemetryClient } from '@aztec/telemetry-client';
3
- import type { AttestationPool } from './attestation_pool.js';
4
- export declare class InMemoryAttestationPool implements AttestationPool {
5
- #private;
6
- private log;
7
- private metrics;
8
- private attestations;
9
- constructor(telemetry?: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
10
- getAttestationsForSlot(slot: bigint, proposalId: string): Promise<BlockAttestation[]>;
11
- addAttestations(attestations: BlockAttestation[]): Promise<void>;
12
- deleteAttestationsOlderThan(oldestSlot: bigint): Promise<void>;
13
- deleteAttestationsForSlot(slot: bigint): Promise<void>;
14
- deleteAttestationsForSlotAndProposal(slot: bigint, proposalId: string): Promise<void>;
15
- deleteAttestations(attestations: BlockAttestation[]): Promise<void>;
16
- }
17
- //# sourceMappingURL=memory_attestation_pool.d.ts.map
@@ -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":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAGnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,qBAAa,uBAAwB,YAAW,eAAe;;IAKE,OAAO,CAAC,GAAG;IAJ1E,OAAO,CAAC,OAAO,CAAwC;IAEvD,OAAO,CAAC,YAAY,CAAgG;gBAExG,SAAS,GAAE,eAAsC,EAAU,GAAG,yCAAuC;IAK1G,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAW/E,eAAe,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgChE,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBpE,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWtD,oCAAoC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe/E,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAiBjF"}
@@ -1,129 +0,0 @@
1
- import { createLogger } from '@aztec/foundation/log';
2
- import { getTelemetryClient } from '@aztec/telemetry-client';
3
- import { PoolInstrumentation, PoolName } from '../instrumentation.js';
4
- export class InMemoryAttestationPool {
5
- log;
6
- metrics;
7
- attestations;
8
- constructor(telemetry = getTelemetryClient(), log = createLogger('p2p:attestation_pool')){
9
- this.log = log;
10
- this.attestations = new Map();
11
- this.metrics = new PoolInstrumentation(telemetry, PoolName.ATTESTATION_POOL);
12
- }
13
- getAttestationsForSlot(slot, proposalId) {
14
- const slotAttestationMap = this.attestations.get(slot);
15
- if (slotAttestationMap) {
16
- const proposalAttestationMap = slotAttestationMap.get(proposalId);
17
- if (proposalAttestationMap) {
18
- return Promise.resolve(Array.from(proposalAttestationMap.values()));
19
- }
20
- }
21
- return Promise.resolve([]);
22
- }
23
- async addAttestations(attestations) {
24
- for (const attestation of attestations){
25
- // Perf: order and group by slot before insertion
26
- const slotNumber = attestation.payload.header.globalVariables.slotNumber;
27
- const proposalId = attestation.archive.toString();
28
- const address = await attestation.getSender();
29
- const slotAttestationMap = getSlotOrDefault(this.attestations, slotNumber.toBigInt());
30
- const proposalAttestationMap = getProposalOrDefault(slotAttestationMap, proposalId);
31
- proposalAttestationMap.set(address.toString(), attestation);
32
- this.log.verbose(`Added attestation for slot ${slotNumber} from ${address}`);
33
- }
34
- // TODO: set these to pending or something ????
35
- this.metrics.recordAddedObjects(attestations.length);
36
- return Promise.resolve();
37
- }
38
- #getNumberOfAttestationsInSlot(slot) {
39
- let total = 0;
40
- const slotAttestationMap = getSlotOrDefault(this.attestations, slot);
41
- if (slotAttestationMap) {
42
- for (const proposalAttestationMap of slotAttestationMap.values() ?? []){
43
- total += proposalAttestationMap.size;
44
- }
45
- }
46
- return total;
47
- }
48
- async deleteAttestationsOlderThan(oldestSlot) {
49
- const olderThan = [];
50
- // Entries are iterated in insertion order, so we can break as soon as we find a slot that is older than the oldestSlot.
51
- // Note: this will only prune correctly if attestations are added in order of rising slot, it is important that we do not allow
52
- // insertion of attestations that are old. #(https://github.com/AztecProtocol/aztec-packages/issues/10322)
53
- const slots = this.attestations.keys();
54
- for (const slot of slots){
55
- if (slot < oldestSlot) {
56
- olderThan.push(slot);
57
- } else {
58
- break;
59
- }
60
- }
61
- for (const oldSlot of olderThan){
62
- await this.deleteAttestationsForSlot(oldSlot);
63
- }
64
- return Promise.resolve();
65
- }
66
- deleteAttestationsForSlot(slot) {
67
- // We count the number of attestations we are removing
68
- const numberOfAttestations = this.#getNumberOfAttestationsInSlot(slot);
69
- this.attestations.delete(slot);
70
- this.log.verbose(`Removed ${numberOfAttestations} attestations for slot ${slot}`);
71
- this.metrics.recordRemovedObjects(numberOfAttestations);
72
- return Promise.resolve();
73
- }
74
- deleteAttestationsForSlotAndProposal(slot, proposalId) {
75
- const slotAttestationMap = getSlotOrDefault(this.attestations, slot);
76
- if (slotAttestationMap) {
77
- if (slotAttestationMap.has(proposalId)) {
78
- const numberOfAttestations = slotAttestationMap.get(proposalId)?.size ?? 0;
79
- slotAttestationMap.delete(proposalId);
80
- this.log.verbose(`Removed ${numberOfAttestations} attestations for slot ${slot} and proposal ${proposalId}`);
81
- this.metrics.recordRemovedObjects(numberOfAttestations);
82
- }
83
- }
84
- return Promise.resolve();
85
- }
86
- async deleteAttestations(attestations) {
87
- for (const attestation of attestations){
88
- const slotNumber = attestation.payload.header.globalVariables.slotNumber;
89
- const slotAttestationMap = this.attestations.get(slotNumber.toBigInt());
90
- if (slotAttestationMap) {
91
- const proposalId = attestation.archive.toString();
92
- const proposalAttestationMap = getProposalOrDefault(slotAttestationMap, proposalId);
93
- if (proposalAttestationMap) {
94
- const address = await attestation.getSender();
95
- proposalAttestationMap.delete(address.toString());
96
- this.log.debug(`Deleted attestation for slot ${slotNumber} from ${address}`);
97
- }
98
- }
99
- }
100
- this.metrics.recordRemovedObjects(attestations.length);
101
- return Promise.resolve();
102
- }
103
- }
104
- /**
105
- * Get Slot or Default
106
- *
107
- * Fetch the slot mapping, if it does not exist, then create a mapping and return it
108
- * @param map - The map to fetch from
109
- * @param slot - The slot to fetch
110
- * @returns The slot mapping
111
- */ function getSlotOrDefault(map, slot) {
112
- if (!map.has(slot)) {
113
- map.set(slot, new Map());
114
- }
115
- return map.get(slot);
116
- }
117
- /**
118
- * Get Proposal or Default
119
- *
120
- * Fetch the proposal mapping, if it does not exist, then create a mapping and return it
121
- * @param map - The map to fetch from
122
- * @param proposalId - The proposal id to fetch
123
- * @returns The proposal mapping
124
- */ function getProposalOrDefault(map, proposalId) {
125
- if (!map.has(proposalId)) {
126
- map.set(proposalId, new Map());
127
- }
128
- return map.get(proposalId);
129
- }