@aztec/p2p 0.0.1-commit.1a99e26c → 0.0.1-commit.1bb068fb5

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 (294) hide show
  1. package/dest/client/factory.d.ts +5 -5
  2. package/dest/client/factory.d.ts.map +1 -1
  3. package/dest/client/factory.js +45 -9
  4. package/dest/client/interface.d.ts +37 -15
  5. package/dest/client/interface.d.ts.map +1 -1
  6. package/dest/client/p2p_client.d.ts +37 -36
  7. package/dest/client/p2p_client.d.ts.map +1 -1
  8. package/dest/client/p2p_client.js +125 -138
  9. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +2 -2
  10. package/dest/config.d.ts +28 -4
  11. package/dest/config.d.ts.map +1 -1
  12. package/dest/config.js +19 -2
  13. package/dest/index.d.ts +2 -1
  14. package/dest/index.d.ts.map +1 -1
  15. package/dest/index.js +1 -0
  16. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +104 -88
  17. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  18. package/dest/mem_pools/attestation_pool/attestation_pool.js +441 -3
  19. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  20. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  21. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +353 -87
  22. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  23. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  24. package/dest/mem_pools/attestation_pool/index.js +1 -2
  25. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  26. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  27. package/dest/mem_pools/attestation_pool/mocks.js +2 -2
  28. package/dest/mem_pools/index.d.ts +3 -2
  29. package/dest/mem_pools/index.d.ts.map +1 -1
  30. package/dest/mem_pools/index.js +1 -1
  31. package/dest/mem_pools/interface.d.ts +5 -5
  32. package/dest/mem_pools/interface.d.ts.map +1 -1
  33. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  34. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  35. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  36. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  37. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  38. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  39. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +102 -0
  40. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  41. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +242 -0
  42. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  43. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  44. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +119 -0
  45. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  46. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  47. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +93 -0
  48. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  49. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  50. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +89 -0
  51. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  52. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  53. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  54. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +131 -0
  55. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  56. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +17 -0
  57. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  58. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  59. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
  60. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  61. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  62. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  63. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  64. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  65. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +72 -0
  66. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  67. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  68. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +63 -0
  69. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  70. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  71. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  72. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  73. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  74. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  75. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +201 -0
  76. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  77. package/dest/mem_pools/tx_pool_v2/interfaces.js +7 -0
  78. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +95 -0
  79. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  80. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +128 -0
  81. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  82. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  83. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  84. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +105 -0
  85. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  86. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +345 -0
  87. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +57 -0
  88. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  89. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +160 -0
  90. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +71 -0
  91. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  92. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +780 -0
  93. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +3 -3
  94. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  95. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +3 -3
  96. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  97. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  98. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  99. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  100. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +18 -5
  101. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  102. package/dest/msg_validators/tx_validator/block_header_validator.js +2 -2
  103. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +13 -3
  104. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  105. package/dest/msg_validators/tx_validator/double_spend_validator.js +4 -4
  106. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +20 -4
  107. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  108. package/dest/msg_validators/tx_validator/timestamp_validator.js +2 -2
  109. package/dest/services/data_store.d.ts +1 -1
  110. package/dest/services/data_store.d.ts.map +1 -1
  111. package/dest/services/data_store.js +10 -6
  112. package/dest/services/dummy_service.d.ts +10 -2
  113. package/dest/services/dummy_service.d.ts.map +1 -1
  114. package/dest/services/dummy_service.js +6 -0
  115. package/dest/services/encoding.d.ts +2 -2
  116. package/dest/services/encoding.d.ts.map +1 -1
  117. package/dest/services/encoding.js +2 -2
  118. package/dest/services/gossipsub/index.d.ts +3 -0
  119. package/dest/services/gossipsub/index.d.ts.map +1 -0
  120. package/dest/services/gossipsub/index.js +2 -0
  121. package/dest/services/gossipsub/scoring.d.ts +21 -3
  122. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  123. package/dest/services/gossipsub/scoring.js +24 -7
  124. package/dest/services/gossipsub/topic_score_params.d.ts +161 -0
  125. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  126. package/dest/services/gossipsub/topic_score_params.js +324 -0
  127. package/dest/services/index.d.ts +2 -1
  128. package/dest/services/index.d.ts.map +1 -1
  129. package/dest/services/index.js +1 -0
  130. package/dest/services/libp2p/libp2p_service.d.ts +84 -35
  131. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  132. package/dest/services/libp2p/libp2p_service.js +373 -278
  133. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  134. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  135. package/dest/services/peer-manager/peer_scoring.js +25 -2
  136. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +4 -4
  137. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  138. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +9 -9
  139. package/dest/services/reqresp/interface.d.ts +10 -1
  140. package/dest/services/reqresp/interface.d.ts.map +1 -1
  141. package/dest/services/reqresp/interface.js +15 -1
  142. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  143. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  144. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +17 -12
  145. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +25 -14
  146. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  147. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +40 -24
  148. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  149. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  150. package/dest/services/reqresp/protocols/tx.js +20 -0
  151. package/dest/services/reqresp/reqresp.d.ts +1 -1
  152. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  153. package/dest/services/reqresp/reqresp.js +11 -4
  154. package/dest/services/service.d.ts +35 -1
  155. package/dest/services/service.d.ts.map +1 -1
  156. package/dest/services/tx_collection/config.d.ts +22 -4
  157. package/dest/services/tx_collection/config.d.ts.map +1 -1
  158. package/dest/services/tx_collection/config.js +49 -3
  159. package/dest/services/tx_collection/fast_tx_collection.d.ts +6 -5
  160. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  161. package/dest/services/tx_collection/fast_tx_collection.js +27 -17
  162. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  163. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  164. package/dest/services/tx_collection/file_store_tx_collection.js +165 -0
  165. package/dest/services/tx_collection/file_store_tx_source.d.ts +28 -0
  166. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  167. package/dest/services/tx_collection/file_store_tx_source.js +59 -0
  168. package/dest/services/tx_collection/index.d.ts +3 -2
  169. package/dest/services/tx_collection/index.d.ts.map +1 -1
  170. package/dest/services/tx_collection/index.js +1 -0
  171. package/dest/services/tx_collection/proposal_tx_collector.d.ts +12 -12
  172. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  173. package/dest/services/tx_collection/proposal_tx_collector.js +4 -5
  174. package/dest/services/tx_collection/slow_tx_collection.d.ts +6 -2
  175. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  176. package/dest/services/tx_collection/slow_tx_collection.js +55 -23
  177. package/dest/services/tx_collection/tx_collection.d.ts +19 -7
  178. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  179. package/dest/services/tx_collection/tx_collection.js +75 -3
  180. package/dest/services/tx_collection/tx_collection_sink.d.ts +15 -6
  181. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  182. package/dest/services/tx_collection/tx_collection_sink.js +13 -7
  183. package/dest/services/tx_file_store/config.d.ts +16 -0
  184. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  185. package/dest/services/tx_file_store/config.js +22 -0
  186. package/dest/services/tx_file_store/index.d.ts +4 -0
  187. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  188. package/dest/services/tx_file_store/index.js +3 -0
  189. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  190. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  191. package/dest/services/tx_file_store/instrumentation.js +29 -0
  192. package/dest/services/tx_file_store/tx_file_store.d.ts +48 -0
  193. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  194. package/dest/services/tx_file_store/tx_file_store.js +152 -0
  195. package/dest/services/tx_provider.d.ts +3 -3
  196. package/dest/services/tx_provider.d.ts.map +1 -1
  197. package/dest/services/tx_provider.js +5 -4
  198. package/dest/test-helpers/make-test-p2p-clients.d.ts +3 -3
  199. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  200. package/dest/test-helpers/mock-pubsub.d.ts +27 -1
  201. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  202. package/dest/test-helpers/mock-pubsub.js +97 -2
  203. package/dest/test-helpers/reqresp-nodes.d.ts +1 -1
  204. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  205. package/dest/test-helpers/reqresp-nodes.js +2 -1
  206. package/dest/test-helpers/testbench-utils.d.ts +42 -38
  207. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  208. package/dest/test-helpers/testbench-utils.js +130 -60
  209. package/dest/testbench/p2p_client_testbench_worker.js +3 -3
  210. package/package.json +14 -14
  211. package/src/client/factory.ts +84 -12
  212. package/src/client/interface.ts +45 -14
  213. package/src/client/p2p_client.ts +163 -161
  214. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +2 -2
  215. package/src/config.ts +41 -2
  216. package/src/index.ts +1 -0
  217. package/src/mem_pools/attestation_pool/attestation_pool.ts +496 -91
  218. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +442 -102
  219. package/src/mem_pools/attestation_pool/index.ts +9 -2
  220. package/src/mem_pools/attestation_pool/mocks.ts +2 -1
  221. package/src/mem_pools/index.ts +4 -1
  222. package/src/mem_pools/interface.ts +4 -4
  223. package/src/mem_pools/tx_pool_v2/README.md +275 -0
  224. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  225. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  226. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +310 -0
  227. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +147 -0
  228. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +121 -0
  229. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +111 -0
  230. package/src/mem_pools/tx_pool_v2/eviction/index.ts +23 -0
  231. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +164 -0
  232. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  233. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  234. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +88 -0
  235. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +72 -0
  236. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +31 -0
  237. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  238. package/src/mem_pools/tx_pool_v2/interfaces.ts +233 -0
  239. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +211 -0
  240. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  241. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +433 -0
  242. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +218 -0
  243. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +924 -0
  244. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +2 -2
  245. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +2 -2
  246. package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
  247. package/src/msg_validators/tx_validator/block_header_validator.ts +18 -8
  248. package/src/msg_validators/tx_validator/double_spend_validator.ts +11 -6
  249. package/src/msg_validators/tx_validator/timestamp_validator.ts +19 -14
  250. package/src/services/data_store.ts +10 -7
  251. package/src/services/dummy_service.ts +12 -0
  252. package/src/services/encoding.ts +2 -2
  253. package/src/services/gossipsub/README.md +626 -0
  254. package/src/services/gossipsub/index.ts +2 -0
  255. package/src/services/gossipsub/scoring.ts +29 -5
  256. package/src/services/gossipsub/topic_score_params.ts +451 -0
  257. package/src/services/index.ts +1 -0
  258. package/src/services/libp2p/libp2p_service.ts +375 -280
  259. package/src/services/peer-manager/peer_scoring.ts +25 -0
  260. package/src/services/reqresp/batch-tx-requester/README.md +14 -14
  261. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +12 -12
  262. package/src/services/reqresp/interface.ts +26 -1
  263. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +24 -15
  264. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +47 -24
  265. package/src/services/reqresp/protocols/tx.ts +22 -0
  266. package/src/services/reqresp/reqresp.ts +13 -3
  267. package/src/services/service.ts +40 -0
  268. package/src/services/tx_collection/config.ts +74 -6
  269. package/src/services/tx_collection/fast_tx_collection.ts +28 -26
  270. package/src/services/tx_collection/file_store_tx_collection.ts +198 -0
  271. package/src/services/tx_collection/file_store_tx_source.ts +73 -0
  272. package/src/services/tx_collection/index.ts +2 -1
  273. package/src/services/tx_collection/proposal_tx_collector.ts +12 -14
  274. package/src/services/tx_collection/slow_tx_collection.ts +64 -30
  275. package/src/services/tx_collection/tx_collection.ts +109 -13
  276. package/src/services/tx_collection/tx_collection_sink.ts +17 -7
  277. package/src/services/tx_file_store/config.ts +37 -0
  278. package/src/services/tx_file_store/index.ts +3 -0
  279. package/src/services/tx_file_store/instrumentation.ts +36 -0
  280. package/src/services/tx_file_store/tx_file_store.ts +175 -0
  281. package/src/services/tx_provider.ts +8 -7
  282. package/src/test-helpers/make-test-p2p-clients.ts +3 -3
  283. package/src/test-helpers/mock-pubsub.ts +133 -3
  284. package/src/test-helpers/reqresp-nodes.ts +2 -1
  285. package/src/test-helpers/testbench-utils.ts +129 -71
  286. package/src/testbench/p2p_client_testbench_worker.ts +3 -3
  287. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
  288. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  289. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
  290. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
  291. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  292. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
  293. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
  294. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
@@ -2,7 +2,7 @@ import type { EpochCacheInterface } from '@aztec/epoch-cache';
2
2
  import { type CheckpointAttestation, PeerErrorSeverity, type ValidationResult } from '@aztec/stdlib/p2p';
3
3
  import { Attributes, Metrics, type TelemetryClient, createUpDownCounterWithDefault } from '@aztec/telemetry-client';
4
4
 
5
- import type { AttestationPool } from '../../mem_pools/attestation_pool/attestation_pool.js';
5
+ import type { AttestationPoolApi } from '../../mem_pools/attestation_pool/attestation_pool.js';
6
6
  import { CheckpointAttestationValidator } from './attestation_validator.js';
7
7
 
8
8
  /**
@@ -18,7 +18,7 @@ export class FishermanAttestationValidator extends CheckpointAttestationValidato
18
18
 
19
19
  constructor(
20
20
  epochCache: EpochCacheInterface,
21
- private attestationPool: AttestationPool,
21
+ private attestationPool: AttestationPoolApi,
22
22
  telemetryClient: TelemetryClient,
23
23
  ) {
24
24
  super(epochCache);
@@ -1,6 +1,6 @@
1
- import type { ProcessedTx, Tx, TxValidationResult, TxValidator } from '@aztec/stdlib/tx';
1
+ import type { TxValidationResult, TxValidator } from '@aztec/stdlib/tx';
2
2
 
3
- export class AggregateTxValidator<T extends Tx | ProcessedTx> implements TxValidator<T> {
3
+ export class AggregateTxValidator<T> implements TxValidator<T> {
4
4
  #validators: TxValidator<T>[];
5
5
  constructor(...validators: TxValidator<T>[]) {
6
6
  if (validators.length === 0) {
@@ -1,5 +1,5 @@
1
- import type { Fr } from '@aztec/foundation/curves/bn254';
2
1
  import type { ArchiveSource } from '@aztec/p2p';
2
+ import type { BlockHash } from '@aztec/stdlib/block';
3
3
  import type { MerkleTreeReadOperations } from '@aztec/stdlib/interfaces/server';
4
4
  import { MerkleTreeId } from '@aztec/stdlib/trees';
5
5
 
@@ -14,8 +14,8 @@ export class ArchiveCache implements ArchiveSource {
14
14
  this.archives = new Map<string, bigint>();
15
15
  }
16
16
 
17
- public async getArchiveIndices(archives: Fr[]): Promise<(bigint | undefined)[]> {
18
- const toCheckDb = archives.filter(n => !this.archives.has(n.toString()));
17
+ public async getArchiveIndices(archives: BlockHash[]): Promise<(bigint | undefined)[]> {
18
+ const toCheckDb = archives.filter(n => !this.archives.has(n.toString())).map(n => n.toFr());
19
19
  const dbHits = await this.db.findLeafIndices(MerkleTreeId.ARCHIVE, toCheckDb);
20
20
  dbHits.forEach((x, index) => {
21
21
  if (x !== undefined) {
@@ -1,12 +1,24 @@
1
- import type { Fr } from '@aztec/foundation/curves/bn254';
2
1
  import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
3
- import { type AnyTx, TX_ERROR_BLOCK_HEADER, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
2
+ import type { BlockHash } from '@aztec/stdlib/block';
3
+ import { TX_ERROR_BLOCK_HEADER, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
4
4
 
5
5
  export interface ArchiveSource {
6
- getArchiveIndices: (archives: Fr[]) => Promise<(bigint | undefined)[]>;
6
+ getArchiveIndices: (archives: BlockHash[]) => Promise<(bigint | undefined)[]>;
7
7
  }
8
8
 
9
- export class BlockHeaderTxValidator<T extends AnyTx> implements TxValidator<T> {
9
+ /** Structural interface for block header validation. */
10
+ export interface HasBlockHeaderData {
11
+ txHash: { toString(): string };
12
+ data: {
13
+ constants: {
14
+ anchorBlockHeader: {
15
+ hash(): Promise<BlockHash>;
16
+ };
17
+ };
18
+ };
19
+ }
20
+
21
+ export class BlockHeaderTxValidator<T extends HasBlockHeaderData> implements TxValidator<T> {
10
22
  #log: Logger;
11
23
  #archiveSource: ArchiveSource;
12
24
 
@@ -16,11 +28,9 @@ export class BlockHeaderTxValidator<T extends AnyTx> implements TxValidator<T> {
16
28
  }
17
29
 
18
30
  async validateTx(tx: T): Promise<TxValidationResult> {
19
- const [index] = await this.#archiveSource.getArchiveIndices([
20
- (await tx.data.constants.anchorBlockHeader.hash()).toField(),
21
- ]);
31
+ const [index] = await this.#archiveSource.getArchiveIndices([await tx.data.constants.anchorBlockHeader.hash()]);
22
32
  if (index === undefined) {
23
- this.#log.verbose(`Rejecting tx ${'txHash' in tx ? tx.txHash : tx.hash} for referencing an unknown block header`);
33
+ this.#log.verbose(`Rejecting tx ${tx.txHash} for referencing an unknown block header`);
24
34
  return { result: 'invalid', reason: [TX_ERROR_BLOCK_HEADER] };
25
35
  }
26
36
  return { result: 'valid' };
@@ -1,9 +1,8 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
1
2
  import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
2
3
  import {
3
- type AnyTx,
4
4
  TX_ERROR_DUPLICATE_NULLIFIER_IN_TX,
5
5
  TX_ERROR_EXISTING_NULLIFIER,
6
- Tx,
7
6
  type TxValidationResult,
8
7
  type TxValidator,
9
8
  } from '@aztec/stdlib/tx';
@@ -12,7 +11,13 @@ export interface NullifierSource {
12
11
  nullifiersExist: (nullifiers: Buffer[]) => Promise<boolean[]>;
13
12
  }
14
13
 
15
- export class DoubleSpendTxValidator<T extends AnyTx> implements TxValidator<T> {
14
+ /** Structural interface for double-spend validation. */
15
+ export interface HasNullifierData {
16
+ txHash: { toString(): string };
17
+ data: { getNonEmptyNullifiers(): Fr[] };
18
+ }
19
+
20
+ export class DoubleSpendTxValidator<T extends HasNullifierData> implements TxValidator<T> {
16
21
  #log: Logger;
17
22
  #nullifierSource: NullifierSource;
18
23
 
@@ -22,17 +27,17 @@ export class DoubleSpendTxValidator<T extends AnyTx> implements TxValidator<T> {
22
27
  }
23
28
 
24
29
  async validateTx(tx: T): Promise<TxValidationResult> {
25
- const nullifiers = tx instanceof Tx ? tx.data.getNonEmptyNullifiers() : tx.txEffect.nullifiers;
30
+ const nullifiers = tx.data.getNonEmptyNullifiers();
26
31
 
27
32
  // Ditch this tx if it has repeated nullifiers
28
33
  const uniqueNullifiers = new Set(nullifiers.map(n => n.toBigInt()));
29
34
  if (uniqueNullifiers.size !== nullifiers.length) {
30
- this.#log.verbose(`Rejecting tx ${'txHash' in tx ? tx.txHash : tx.hash} for emitting duplicate nullifiers`);
35
+ this.#log.verbose(`Rejecting tx ${tx.txHash} for emitting duplicate nullifiers`);
31
36
  return { result: 'invalid', reason: [TX_ERROR_DUPLICATE_NULLIFIER_IN_TX] };
32
37
  }
33
38
 
34
39
  if ((await this.#nullifierSource.nullifiersExist(nullifiers.map(n => n.toBuffer()))).some(Boolean)) {
35
- this.#log.verbose(`Rejecting tx ${'txHash' in tx ? tx.txHash : tx.hash} for repeating a nullifier`);
40
+ this.#log.verbose(`Rejecting tx ${tx.txHash} for repeating a nullifier`);
36
41
  return { result: 'invalid', reason: [TX_ERROR_EXISTING_NULLIFIER] };
37
42
  }
38
43
 
@@ -1,15 +1,24 @@
1
- import { BlockNumber } from '@aztec/foundation/branded-types';
1
+ import type { BlockNumber } from '@aztec/foundation/branded-types';
2
2
  import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
3
- import {
4
- type AnyTx,
5
- TX_ERROR_INVALID_INCLUDE_BY_TIMESTAMP,
6
- type TxValidationResult,
7
- type TxValidator,
8
- getTxHash,
9
- } from '@aztec/stdlib/tx';
3
+ import { TX_ERROR_INVALID_INCLUDE_BY_TIMESTAMP, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
10
4
  import type { UInt64 } from '@aztec/stdlib/types';
11
5
 
12
- export class TimestampTxValidator<T extends AnyTx> implements TxValidator<T> {
6
+ /** Structural interface for timestamp validation. */
7
+ export interface HasTimestampData {
8
+ txHash: { toString(): string };
9
+ data: {
10
+ includeByTimestamp: bigint;
11
+ constants: {
12
+ anchorBlockHeader: {
13
+ globalVariables: {
14
+ blockNumber: BlockNumber;
15
+ };
16
+ };
17
+ };
18
+ };
19
+ }
20
+
21
+ export class TimestampTxValidator<T extends HasTimestampData> implements TxValidator<T> {
13
22
  #log: Logger;
14
23
 
15
24
  constructor(
@@ -38,11 +47,7 @@ export class TimestampTxValidator<T extends AnyTx> implements TxValidator<T> {
38
47
  );
39
48
  }
40
49
  this.#log.verbose(
41
- `Rejecting tx ${getTxHash(
42
- tx,
43
- )} for low expiration timestamp. Tx expiration timestamp: ${includeByTimestamp}, timestamp: ${
44
- this.values.timestamp
45
- }.`,
50
+ `Rejecting tx ${tx.txHash} for low expiration timestamp. Tx expiration timestamp: ${includeByTimestamp}, timestamp: ${this.values.timestamp}.`,
46
51
  );
47
52
  return Promise.resolve({ result: 'invalid', reason: [TX_ERROR_INVALID_INCLUDE_BY_TIMESTAMP] });
48
53
  } else {
@@ -24,6 +24,7 @@ class KeyNotFoundError extends Error {
24
24
  }
25
25
 
26
26
  export class AztecDatastore implements Datastore {
27
+ #db: AztecAsyncKVStore;
27
28
  #memoryDatastore: Map<string, MemoryItem>;
28
29
  #dbDatastore: AztecAsyncMap<string, Uint8Array>;
29
30
 
@@ -32,9 +33,9 @@ export class AztecDatastore implements Datastore {
32
33
  private maxMemoryItems: number;
33
34
 
34
35
  constructor(db: AztecAsyncKVStore, { maxMemoryItems } = { maxMemoryItems: 50 }) {
36
+ this.#db = db;
35
37
  this.#memoryDatastore = new Map();
36
38
  this.#dbDatastore = db.openMap('p2p_datastore');
37
-
38
39
  this.maxMemoryItems = maxMemoryItems;
39
40
  }
40
41
 
@@ -106,13 +107,15 @@ export class AztecDatastore implements Datastore {
106
107
  });
107
108
  },
108
109
  commit: async () => {
109
- for (const op of this.#batchOps) {
110
- if (op.type === 'put' && op.value) {
111
- await this.put(op.key, op.value);
112
- } else if (op.type === 'del') {
113
- await this.delete(op.key);
110
+ await this.#db.transactionAsync(async () => {
111
+ for (const op of this.#batchOps) {
112
+ if (op.type === 'put' && op.value) {
113
+ await this.put(op.key, op.value);
114
+ } else if (op.type === 'del') {
115
+ await this.delete(op.key);
116
+ }
114
117
  }
115
- }
118
+ });
116
119
  this.#batchOps = []; // Clear operations after commit
117
120
  },
118
121
  };
@@ -26,6 +26,8 @@ import { ReqRespStatus } from './reqresp/status.js';
26
26
  import {
27
27
  type P2PBlockReceivedCallback,
28
28
  type P2PCheckpointReceivedCallback,
29
+ type P2PDuplicateAttestationCallback,
30
+ type P2PDuplicateProposalCallback,
29
31
  type P2PService,
30
32
  type PeerDiscoveryService,
31
33
  PeerDiscoveryState,
@@ -82,6 +84,16 @@ export class DummyP2PService implements P2PService {
82
84
  */
83
85
  public registerCheckpointReceivedCallback(_callback: P2PCheckpointReceivedCallback) {}
84
86
 
87
+ /**
88
+ * Register a callback for when a duplicate proposal is detected
89
+ */
90
+ public registerDuplicateProposalCallback(_callback: P2PDuplicateProposalCallback): void {}
91
+
92
+ /**
93
+ * Register a callback for when a duplicate attestation is detected
94
+ */
95
+ public registerDuplicateAttestationCallback(_callback: P2PDuplicateAttestationCallback): void {}
96
+
85
97
  /**
86
98
  * Sends a request to a peer.
87
99
  * @param _protocol - The protocol to send the request on.
@@ -78,11 +78,11 @@ export class SnappyTransform implements DataTransform {
78
78
  return this.inboundTransformData(Buffer.from(data), topic);
79
79
  }
80
80
 
81
- public inboundTransformData(data: Buffer, topic?: TopicType): Buffer {
81
+ public inboundTransformData(data: Buffer, topic?: TopicType, maxSizeKbOverride?: number): Buffer {
82
82
  if (data.length === 0) {
83
83
  return data;
84
84
  }
85
- const maxSizeKb = this.maxSizesKb[topic!] ?? this.defaultMaxSizeKb;
85
+ const maxSizeKb = maxSizeKbOverride ?? this.maxSizesKb[topic!] ?? this.defaultMaxSizeKb;
86
86
  const { decompressedSize } = readSnappyPreamble(data);
87
87
  if (decompressedSize > maxSizeKb * 1024) {
88
88
  this.logger.warn(`Decompressed size ${decompressedSize} exceeds maximum allowed size of ${maxSizeKb}kb`);