@aztec/p2p 0.0.1-commit.29c6b1a3 → 0.0.1-commit.2eb6648a

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 (276) hide show
  1. package/dest/bootstrap/bootstrap.d.ts +4 -3
  2. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  3. package/dest/bootstrap/bootstrap.js +4 -4
  4. package/dest/client/factory.d.ts +3 -3
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +10 -7
  7. package/dest/client/interface.d.ts +9 -2
  8. package/dest/client/interface.d.ts.map +1 -1
  9. package/dest/client/p2p_client.d.ts +7 -4
  10. package/dest/client/p2p_client.d.ts.map +1 -1
  11. package/dest/client/p2p_client.js +24 -7
  12. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +2 -2
  13. package/dest/config.d.ts +9 -3
  14. package/dest/config.d.ts.map +1 -1
  15. package/dest/config.js +3 -1
  16. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +94 -87
  17. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  18. package/dest/mem_pools/attestation_pool/attestation_pool.js +411 -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 +351 -85
  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/index.d.ts +2 -2
  26. package/dest/mem_pools/index.d.ts.map +1 -1
  27. package/dest/mem_pools/index.js +1 -1
  28. package/dest/mem_pools/instrumentation.d.ts +1 -1
  29. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  30. package/dest/mem_pools/instrumentation.js +2 -2
  31. package/dest/mem_pools/interface.d.ts +3 -3
  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/eviction/eviction_manager.d.ts +47 -0
  40. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  41. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +119 -0
  42. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  43. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  44. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +90 -0
  45. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  46. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  47. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +89 -0
  48. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  49. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  50. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  51. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +131 -0
  52. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  53. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +17 -0
  54. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  55. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  56. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +63 -0
  57. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  58. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  59. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +91 -0
  60. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  61. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  62. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +70 -0
  63. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  64. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  65. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +63 -0
  66. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  67. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  68. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  69. package/dest/mem_pools/tx_pool_v2/index.d.ts +5 -0
  70. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  71. package/dest/mem_pools/tx_pool_v2/index.js +4 -0
  72. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +197 -0
  73. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  74. package/dest/mem_pools/tx_pool_v2/interfaces.js +6 -0
  75. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +71 -0
  76. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  77. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +95 -0
  78. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  79. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  80. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  81. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +99 -0
  82. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  83. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +332 -0
  84. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +55 -0
  85. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  86. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +156 -0
  87. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +69 -0
  88. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  89. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +748 -0
  90. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +3 -3
  91. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  92. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +7 -2
  93. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  94. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  95. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  96. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +5 -4
  97. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  98. package/dest/msg_validators/tx_validator/block_header_validator.js +4 -3
  99. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  100. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  101. package/dest/msg_validators/tx_validator/data_validator.js +4 -1
  102. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +3 -2
  103. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  104. package/dest/msg_validators/tx_validator/double_spend_validator.js +3 -2
  105. package/dest/msg_validators/tx_validator/factory.d.ts +4 -3
  106. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  107. package/dest/msg_validators/tx_validator/factory.js +12 -12
  108. package/dest/msg_validators/tx_validator/gas_validator.d.ts +3 -2
  109. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  110. package/dest/msg_validators/tx_validator/gas_validator.js +3 -2
  111. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -2
  112. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  113. package/dest/msg_validators/tx_validator/metadata_validator.js +2 -2
  114. package/dest/msg_validators/tx_validator/phases_validator.d.ts +3 -2
  115. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  116. package/dest/msg_validators/tx_validator/phases_validator.js +3 -3
  117. package/dest/msg_validators/tx_validator/size_validator.d.ts +3 -1
  118. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -1
  119. package/dest/msg_validators/tx_validator/size_validator.js +4 -1
  120. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +3 -2
  121. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  122. package/dest/msg_validators/tx_validator/timestamp_validator.js +2 -2
  123. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  124. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  125. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  126. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  127. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  128. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
  129. package/dest/services/data_store.d.ts +1 -1
  130. package/dest/services/data_store.d.ts.map +1 -1
  131. package/dest/services/data_store.js +10 -6
  132. package/dest/services/discv5/discV5_service.js +1 -1
  133. package/dest/services/dummy_service.d.ts +6 -2
  134. package/dest/services/dummy_service.d.ts.map +1 -1
  135. package/dest/services/dummy_service.js +3 -0
  136. package/dest/services/index.d.ts +2 -1
  137. package/dest/services/index.d.ts.map +1 -1
  138. package/dest/services/index.js +1 -0
  139. package/dest/services/libp2p/instrumentation.d.ts +1 -1
  140. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  141. package/dest/services/libp2p/instrumentation.js +14 -3
  142. package/dest/services/libp2p/libp2p_service.d.ts +74 -33
  143. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  144. package/dest/services/libp2p/libp2p_service.js +309 -238
  145. package/dest/services/peer-manager/metrics.d.ts +2 -2
  146. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  147. package/dest/services/peer-manager/metrics.js +20 -5
  148. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  149. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  150. package/dest/services/peer-manager/peer_scoring.js +8 -2
  151. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +4 -4
  152. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  153. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +9 -9
  154. package/dest/services/reqresp/metrics.d.ts +6 -5
  155. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  156. package/dest/services/reqresp/metrics.js +17 -5
  157. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +6 -4
  158. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  159. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +17 -12
  160. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +19 -14
  161. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  162. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +25 -24
  163. package/dest/services/service.d.ts +18 -1
  164. package/dest/services/service.d.ts.map +1 -1
  165. package/dest/services/tx_collection/config.d.ts +3 -3
  166. package/dest/services/tx_collection/config.js +3 -3
  167. package/dest/services/tx_collection/fast_tx_collection.d.ts +4 -5
  168. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  169. package/dest/services/tx_collection/fast_tx_collection.js +10 -14
  170. package/dest/services/tx_collection/index.d.ts +1 -1
  171. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  172. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  173. package/dest/services/tx_collection/instrumentation.js +9 -2
  174. package/dest/services/tx_collection/proposal_tx_collector.d.ts +12 -12
  175. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  176. package/dest/services/tx_collection/proposal_tx_collector.js +4 -5
  177. package/dest/services/tx_file_store/config.d.ts +18 -0
  178. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  179. package/dest/services/tx_file_store/config.js +26 -0
  180. package/dest/services/tx_file_store/index.d.ts +4 -0
  181. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  182. package/dest/services/tx_file_store/index.js +3 -0
  183. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  184. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  185. package/dest/services/tx_file_store/instrumentation.js +29 -0
  186. package/dest/services/tx_file_store/tx_file_store.d.ts +47 -0
  187. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  188. package/dest/services/tx_file_store/tx_file_store.js +149 -0
  189. package/dest/services/tx_provider_instrumentation.d.ts +1 -1
  190. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  191. package/dest/services/tx_provider_instrumentation.js +5 -5
  192. package/dest/test-helpers/testbench-utils.d.ts +12 -16
  193. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  194. package/dest/test-helpers/testbench-utils.js +34 -31
  195. package/dest/testbench/p2p_client_testbench_worker.js +2 -2
  196. package/package.json +14 -14
  197. package/src/bootstrap/bootstrap.ts +7 -4
  198. package/src/client/factory.ts +12 -13
  199. package/src/client/interface.ts +13 -1
  200. package/src/client/p2p_client.ts +32 -8
  201. package/src/client/test/tx_proposal_collector/README.md +4 -4
  202. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +2 -2
  203. package/src/config.ts +8 -1
  204. package/src/mem_pools/attestation_pool/attestation_pool.ts +444 -90
  205. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +436 -100
  206. package/src/mem_pools/attestation_pool/index.ts +9 -2
  207. package/src/mem_pools/index.ts +1 -1
  208. package/src/mem_pools/instrumentation.ts +2 -1
  209. package/src/mem_pools/interface.ts +2 -2
  210. package/src/mem_pools/tx_pool_v2/README.md +209 -0
  211. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  212. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  213. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +147 -0
  214. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +118 -0
  215. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +111 -0
  216. package/src/mem_pools/tx_pool_v2/eviction/index.ts +23 -0
  217. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +164 -0
  218. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  219. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  220. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +86 -0
  221. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +72 -0
  222. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +31 -0
  223. package/src/mem_pools/tx_pool_v2/index.ts +11 -0
  224. package/src/mem_pools/tx_pool_v2/interfaces.ts +227 -0
  225. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +161 -0
  226. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  227. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +417 -0
  228. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +212 -0
  229. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +882 -0
  230. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +10 -4
  231. package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
  232. package/src/msg_validators/tx_validator/block_header_validator.ts +7 -8
  233. package/src/msg_validators/tx_validator/data_validator.ts +6 -2
  234. package/src/msg_validators/tx_validator/double_spend_validator.ts +4 -3
  235. package/src/msg_validators/tx_validator/factory.ts +46 -30
  236. package/src/msg_validators/tx_validator/gas_validator.ts +9 -3
  237. package/src/msg_validators/tx_validator/metadata_validator.ts +6 -3
  238. package/src/msg_validators/tx_validator/phases_validator.ts +5 -3
  239. package/src/msg_validators/tx_validator/size_validator.ts +6 -2
  240. package/src/msg_validators/tx_validator/timestamp_validator.ts +6 -3
  241. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  242. package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
  243. package/src/services/data_store.ts +10 -7
  244. package/src/services/discv5/discV5_service.ts +1 -1
  245. package/src/services/dummy_service.ts +6 -0
  246. package/src/services/index.ts +1 -0
  247. package/src/services/libp2p/instrumentation.ts +15 -2
  248. package/src/services/libp2p/libp2p_service.ts +324 -246
  249. package/src/services/peer-manager/metrics.ts +21 -4
  250. package/src/services/peer-manager/peer_scoring.ts +4 -1
  251. package/src/services/reqresp/batch-tx-requester/README.md +14 -14
  252. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +12 -12
  253. package/src/services/reqresp/metrics.ts +34 -9
  254. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +23 -14
  255. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +30 -24
  256. package/src/services/service.ts +20 -0
  257. package/src/services/tx_collection/config.ts +6 -6
  258. package/src/services/tx_collection/fast_tx_collection.ts +14 -24
  259. package/src/services/tx_collection/index.ts +1 -1
  260. package/src/services/tx_collection/instrumentation.ts +11 -2
  261. package/src/services/tx_collection/proposal_tx_collector.ts +12 -14
  262. package/src/services/tx_file_store/config.ts +43 -0
  263. package/src/services/tx_file_store/index.ts +3 -0
  264. package/src/services/tx_file_store/instrumentation.ts +36 -0
  265. package/src/services/tx_file_store/tx_file_store.ts +173 -0
  266. package/src/services/tx_provider_instrumentation.ts +11 -5
  267. package/src/test-helpers/testbench-utils.ts +20 -39
  268. package/src/testbench/p2p_client_testbench_worker.ts +2 -2
  269. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
  270. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  271. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
  272. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
  273. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  274. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
  275. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
  276. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
@@ -29,7 +29,7 @@ import type { PeerId } from '@libp2p/interface';
29
29
  import type { ENR } from '@nethermindeth/enr';
30
30
 
31
31
  import { type P2PConfig, getP2PDefaultConfig } from '../config.js';
32
- import type { AttestationPool } from '../mem_pools/attestation_pool/attestation_pool.js';
32
+ import type { AttestationPoolApi } from '../mem_pools/attestation_pool/attestation_pool.js';
33
33
  import type { MemPools } from '../mem_pools/interface.js';
34
34
  import type { TxPool } from '../mem_pools/tx_pool/index.js';
35
35
  import type { AuthRequest, StatusMessage } from '../services/index.js';
@@ -39,8 +39,14 @@ import {
39
39
  type ReqRespSubProtocolValidators,
40
40
  } from '../services/reqresp/interface.js';
41
41
  import { chunkTxHashesRequest } from '../services/reqresp/protocols/tx.js';
42
- import type { P2PBlockReceivedCallback, P2PCheckpointReceivedCallback, P2PService } from '../services/service.js';
42
+ import type {
43
+ DuplicateProposalInfo,
44
+ P2PBlockReceivedCallback,
45
+ P2PCheckpointReceivedCallback,
46
+ P2PService,
47
+ } from '../services/service.js';
43
48
  import { TxCollection } from '../services/tx_collection/tx_collection.js';
49
+ import type { TxFileStore } from '../services/tx_file_store/tx_file_store.js';
44
50
  import { TxProvider } from '../services/tx_provider.js';
45
51
  import { type P2P, P2PClientState, type P2PSyncState } from './interface.js';
46
52
 
@@ -65,7 +71,7 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
65
71
  private synchedLatestSlot: AztecAsyncSingleton<bigint>;
66
72
 
67
73
  private txPool: TxPool;
68
- private attestationPool: AttestationPool;
74
+ private attestationPool: AttestationPoolApi;
69
75
 
70
76
  private config: P2PConfig;
71
77
 
@@ -90,6 +96,7 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
90
96
  mempools: MemPools,
91
97
  private p2pService: P2PService,
92
98
  private txCollection: TxCollection,
99
+ private txFileStore: TxFileStore | undefined,
93
100
  config: Partial<P2PConfig> = {},
94
101
  private _dateProvider: DateProvider = new DateProvider(),
95
102
  private telemetry: TelemetryClient = getTelemetryClient(),
@@ -274,6 +281,7 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
274
281
 
275
282
  this.blockStream!.start();
276
283
  await this.txCollection.start();
284
+ this.txFileStore?.start();
277
285
  return this.syncPromise;
278
286
  }
279
287
 
@@ -306,6 +314,8 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
306
314
  this.log.debug('Stopping p2p client...');
307
315
  await tryStop(this.txCollection);
308
316
  this.log.debug('Stopped tx collection service');
317
+ await this.txFileStore?.stop();
318
+ this.log.debug('Stopped tx file store');
309
319
  await this.p2pService.stop();
310
320
  this.log.debug('Stopped p2p service');
311
321
  await this.blockStream?.stop();
@@ -326,8 +336,13 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
326
336
  [Attributes.BLOCK_ARCHIVE]: proposal.archive.toString(),
327
337
  [Attributes.P2P_ID]: (await proposal.p2pMessageLoggingIdentifier()).toString(),
328
338
  }))
329
- public broadcastProposal(proposal: BlockProposal): Promise<void> {
339
+ public async broadcastProposal(proposal: BlockProposal): Promise<void> {
330
340
  this.log.verbose(`Broadcasting proposal for slot ${proposal.slotNumber} to peers`);
341
+ // Store our own proposal so we can respond to req/resp requests for it
342
+ const { totalForPosition } = await this.attestationPool.tryAddBlockProposal(proposal);
343
+ if (totalForPosition > 1) {
344
+ throw new Error(`Attempted to broadcast a duplicate block proposal for slot ${proposal.slotNumber}`);
345
+ }
331
346
  return this.p2pService.propagate(proposal);
332
347
  }
333
348
 
@@ -336,8 +351,13 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
336
351
  [Attributes.BLOCK_ARCHIVE]: proposal.archive.toString(),
337
352
  [Attributes.P2P_ID]: (await proposal.p2pMessageLoggingIdentifier()).toString(),
338
353
  }))
339
- public broadcastCheckpointProposal(proposal: CheckpointProposal): Promise<void> {
354
+ public async broadcastCheckpointProposal(proposal: CheckpointProposal): Promise<void> {
340
355
  this.log.verbose(`Broadcasting checkpoint proposal for slot ${proposal.slotNumber} to peers`);
356
+ const blockProposal = proposal.getBlockProposal();
357
+ if (blockProposal) {
358
+ // Store our own last-block proposal so we can respond to req/resp requests for it.
359
+ await this.attestationPool.tryAddBlockProposal(blockProposal);
360
+ }
341
361
  return this.p2pService.propagate(proposal);
342
362
  }
343
363
 
@@ -355,8 +375,8 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
355
375
  : this.attestationPool.getCheckpointAttestationsForSlot(slot));
356
376
  }
357
377
 
358
- public addCheckpointAttestations(attestations: CheckpointAttestation[]): Promise<void> {
359
- return this.attestationPool.addCheckpointAttestations(attestations);
378
+ public addOwnCheckpointAttestations(attestations: CheckpointAttestation[]): Promise<void> {
379
+ return this.attestationPool.addOwnCheckpointAttestations(attestations);
360
380
  }
361
381
 
362
382
  // REVIEW: https://github.com/AztecProtocol/aztec-packages/issues/7963
@@ -369,6 +389,10 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
369
389
  this.p2pService.registerCheckpointReceivedCallback(handler);
370
390
  }
371
391
 
392
+ public registerDuplicateProposalCallback(callback: (info: DuplicateProposalInfo) => void): void {
393
+ this.p2pService.registerDuplicateProposalCallback(callback);
394
+ }
395
+
372
396
  /**
373
397
  * Uses the batched Request Response protocol to request a set of transactions from the network.
374
398
  */
@@ -733,7 +757,7 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
733
757
  await this.txPool.deleteTxs(txHashes, { permanently: true });
734
758
  await this.txPool.cleanupDeletedMinedTxs(lastBlockNum);
735
759
 
736
- await this.attestationPool.deleteCheckpointAttestationsOlderThan(lastBlockSlot);
760
+ await this.attestationPool.deleteOlderThan(lastBlockSlot);
737
761
 
738
762
  this.log.debug(`Synched to finalized block ${lastBlockNum} at slot ${lastBlockSlot}`);
739
763
  }
@@ -24,7 +24,7 @@ The benchmark runs a small simulated network on localhost:
24
24
  ```
25
25
  ┌─────────────────────────────────────────────────────────────────────┐
26
26
  │ Test Process (Driver) │
27
- │ p2p_client.proposal_tx_collector_bench.test.ts │
27
+ │ p2p_client.proposal_tx_collector.bench.test.ts │
28
28
  │ ┌─────────────────────────────────────────────────────────────┐ │
29
29
  │ │ WorkerClientManager │ │
30
30
  │ │ (src/testbench/worker_client_manager.ts) │ │
@@ -127,13 +127,13 @@ From the p2p package:
127
127
 
128
128
  ```bash
129
129
  cd yarn-project/p2p
130
- yarn test src/client/test/tx_proposal_collector/p2p_client.proposal_tx_collector_bench.test.ts
130
+ yarn test src/client/test/tx_proposal_collector/p2p_client.proposal_tx_collector.bench.test.ts
131
131
  ```
132
132
 
133
133
  Or from repo root:
134
134
 
135
135
  ```bash
136
- yarn test p2p_client.proposal_tx_collector_bench.test.ts
136
+ yarn test p2p_client.proposal_tx_collector.bench.test.ts
137
137
  ```
138
138
 
139
139
  The benchmark is intentionally long due to spawning many processes and running multiple cases.
@@ -207,7 +207,7 @@ This benchmark does **not** measure:
207
207
 
208
208
  | File | Purpose |
209
209
  |------|---------|
210
- | `p2p_client.proposal_tx_collector_bench.test.ts` | Test suite (cases, distributions, output formatting) |
210
+ | `p2p_client.proposal_tx_collector.bench.test.ts` | Test suite (cases, distributions, output formatting) |
211
211
  | `proposal_tx_collector_worker.ts` | Collector-specific worker implementation |
212
212
  | `proposal_tx_collector_worker_protocol.ts` | IPC message types and serialization |
213
213
  | `src/testbench/worker_client_manager.ts` | Worker process manager (forking, IPC, orchestration) |
@@ -104,7 +104,7 @@ async function startClient(config: P2PConfig, clientIndex: number) {
104
104
  const worldState = createMockWorldStateSynchronizer();
105
105
  const l2BlockSource = new MockL2BlockSource();
106
106
  const proofVerifier = new AlwaysTrueCircuitVerifier();
107
- kvStore = await openTmpStore(`proposal-bench-${clientIndex}`);
107
+ kvStore = await openTmpStore(`proposal-bench-${clientIndex}`, true, BENCHMARK_CONSTANTS.KV_STORE_MAP_SIZE_KB);
108
108
  logger = createLogger(`p2p:proposal-bench:${clientIndex}`);
109
109
 
110
110
  const telemetry = getTelemetryClient();
@@ -301,7 +301,7 @@ process.on('message', (msg: WorkerCommand) => {
301
301
  throw new Error('Attestation pool not initialized');
302
302
  }
303
303
  const proposal = deserializeBlockProposal(msg.blockProposal);
304
- await attestationPool.addBlockProposal(proposal);
304
+ await attestationPool.tryAddBlockProposal(proposal);
305
305
  await sendMessage({ type: 'BLOCK_PROPOSAL_SET', requestId, archiveRoot: proposal.archive.toString() });
306
306
  break;
307
307
  }
package/src/config.ts CHANGED
@@ -21,11 +21,17 @@ import {
21
21
  } from './services/reqresp/batch-tx-requester/config.js';
22
22
  import { type P2PReqRespConfig, p2pReqRespConfigMappings } from './services/reqresp/config.js';
23
23
  import { type TxCollectionConfig, txCollectionConfigMappings } from './services/tx_collection/config.js';
24
+ import { type TxFileStoreConfig, txFileStoreConfigMappings } from './services/tx_file_store/config.js';
24
25
 
25
26
  /**
26
27
  * P2P client configuration values.
27
28
  */
28
- export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, ChainConfig, TxCollectionConfig {
29
+ export interface P2PConfig
30
+ extends P2PReqRespConfig,
31
+ BatchTxRequesterConfig,
32
+ ChainConfig,
33
+ TxCollectionConfig,
34
+ TxFileStoreConfig {
29
35
  /** A flag dictating whether the P2P subsystem should be enabled. */
30
36
  p2pEnabled: boolean;
31
37
 
@@ -439,6 +445,7 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
439
445
  ...batchTxRequesterConfigMappings,
440
446
  ...chainConfigMappings,
441
447
  ...txCollectionConfigMappings,
448
+ ...txFileStoreConfigMappings,
442
449
  };
443
450
 
444
451
  /**