@aztec/p2p 0.0.1-commit.86469d5 → 0.0.1-commit.8655d4a

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 (549) hide show
  1. package/README.md +129 -3
  2. package/dest/bootstrap/bootstrap.d.ts +1 -1
  3. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  4. package/dest/bootstrap/bootstrap.js +9 -1
  5. package/dest/client/factory.d.ts +13 -12
  6. package/dest/client/factory.d.ts.map +1 -1
  7. package/dest/client/factory.js +61 -17
  8. package/dest/client/interface.d.ts +58 -36
  9. package/dest/client/interface.d.ts.map +1 -1
  10. package/dest/client/p2p_client.d.ts +52 -58
  11. package/dest/client/p2p_client.d.ts.map +1 -1
  12. package/dest/client/p2p_client.js +228 -235
  13. package/dest/config.d.ts +162 -89
  14. package/dest/config.d.ts.map +1 -1
  15. package/dest/config.js +153 -42
  16. package/dest/errors/p2p-service.error.d.ts +9 -0
  17. package/dest/errors/p2p-service.error.d.ts.map +1 -0
  18. package/dest/errors/p2p-service.error.js +10 -0
  19. package/dest/errors/reqresp.error.d.ts +1 -20
  20. package/dest/errors/reqresp.error.d.ts.map +1 -1
  21. package/dest/errors/reqresp.error.js +0 -21
  22. package/dest/errors/tx-pool.error.d.ts +8 -0
  23. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  24. package/dest/errors/tx-pool.error.js +9 -0
  25. package/dest/index.d.ts +2 -2
  26. package/dest/index.d.ts.map +1 -1
  27. package/dest/index.js +1 -1
  28. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +162 -106
  29. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  30. package/dest/mem_pools/attestation_pool/attestation_pool.js +511 -3
  31. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  32. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  33. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +507 -125
  34. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  35. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  36. package/dest/mem_pools/attestation_pool/index.js +1 -2
  37. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  38. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  39. package/dest/mem_pools/attestation_pool/mocks.js +7 -5
  40. package/dest/mem_pools/index.d.ts +3 -3
  41. package/dest/mem_pools/index.d.ts.map +1 -1
  42. package/dest/mem_pools/index.js +1 -1
  43. package/dest/mem_pools/instrumentation.d.ts +4 -2
  44. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  45. package/dest/mem_pools/instrumentation.js +33 -15
  46. package/dest/mem_pools/interface.d.ts +5 -5
  47. package/dest/mem_pools/interface.d.ts.map +1 -1
  48. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  49. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  50. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  51. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  52. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  53. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  54. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  55. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  56. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  57. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  58. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  59. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  60. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  61. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  62. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +94 -0
  63. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  64. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  65. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
  66. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +11 -0
  67. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  68. package/dest/mem_pools/tx_pool_v2/eviction/index.js +12 -0
  69. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
  70. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
  71. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +62 -0
  72. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +180 -0
  73. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  74. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  75. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  76. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  77. package/dest/mem_pools/{tx_pool → tx_pool_v2}/eviction/invalid_txs_after_mining_rule.js +16 -35
  78. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  79. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  80. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  81. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  82. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  83. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
  84. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  85. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  86. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +75 -0
  87. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  88. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  89. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  90. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  91. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  92. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  93. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  94. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  95. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  96. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +218 -0
  97. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  98. package/dest/mem_pools/tx_pool_v2/interfaces.js +10 -0
  99. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +137 -0
  100. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  101. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +223 -0
  102. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  103. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  104. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  105. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  106. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  107. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +337 -0
  108. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +62 -0
  109. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  110. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +167 -0
  111. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +78 -0
  112. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  113. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +914 -0
  114. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +9 -3
  115. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  116. package/dest/msg_validators/attestation_validator/attestation_validator.js +37 -12
  117. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +8 -4
  118. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  119. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +4 -5
  120. package/dest/msg_validators/clock_tolerance.d.ts +12 -1
  121. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
  122. package/dest/msg_validators/clock_tolerance.js +61 -3
  123. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +10 -4
  124. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  125. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
  126. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +10 -4
  127. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  128. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
  129. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +21 -8
  130. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  131. package/dest/msg_validators/proposal_validator/proposal_validator.js +90 -44
  132. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  133. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  134. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +11 -18
  135. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  136. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  137. package/dest/msg_validators/tx_validator/allowed_public_setup.js +25 -21
  138. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  139. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  140. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  141. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  142. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +16 -3
  143. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  144. package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
  145. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts +15 -0
  146. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts.map +1 -0
  147. package/dest/msg_validators/tx_validator/cached_tx_validator.js +19 -0
  148. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  149. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  150. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  151. package/dest/msg_validators/tx_validator/data_validator.d.ts +2 -1
  152. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  153. package/dest/msg_validators/tx_validator/data_validator.js +36 -2
  154. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +13 -3
  155. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  156. package/dest/msg_validators/tx_validator/double_spend_validator.js +4 -4
  157. package/dest/msg_validators/tx_validator/factory.d.ts +135 -7
  158. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  159. package/dest/msg_validators/tx_validator/factory.js +252 -61
  160. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
  161. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
  162. package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
  163. package/dest/msg_validators/tx_validator/gas_validator.d.ts +99 -3
  164. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  165. package/dest/msg_validators/tx_validator/gas_validator.js +137 -53
  166. package/dest/msg_validators/tx_validator/index.d.ts +5 -1
  167. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  168. package/dest/msg_validators/tx_validator/index.js +4 -0
  169. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
  170. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  171. package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
  172. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  173. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  174. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  175. package/dest/msg_validators/tx_validator/phases_validator.d.ts +22 -2
  176. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  177. package/dest/msg_validators/tx_validator/phases_validator.js +72 -24
  178. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +20 -4
  179. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  180. package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
  181. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +2 -1
  182. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  183. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -0
  184. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts +48 -0
  185. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts.map +1 -0
  186. package/dest/msg_validators/tx_validator/tx_validation_cache.js +69 -0
  187. package/dest/services/data_store.d.ts +1 -1
  188. package/dest/services/data_store.d.ts.map +1 -1
  189. package/dest/services/data_store.js +5 -5
  190. package/dest/services/discv5/discV5_service.d.ts +2 -1
  191. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  192. package/dest/services/discv5/discV5_service.js +35 -8
  193. package/dest/services/dummy_service.d.ts +22 -18
  194. package/dest/services/dummy_service.d.ts.map +1 -1
  195. package/dest/services/dummy_service.js +22 -20
  196. package/dest/services/encoding.d.ts +7 -3
  197. package/dest/services/encoding.d.ts.map +1 -1
  198. package/dest/services/encoding.js +18 -11
  199. package/dest/services/gossipsub/index.d.ts +3 -0
  200. package/dest/services/gossipsub/index.d.ts.map +1 -0
  201. package/dest/services/gossipsub/index.js +2 -0
  202. package/dest/services/gossipsub/scoring.d.ts +21 -3
  203. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  204. package/dest/services/gossipsub/scoring.js +24 -7
  205. package/dest/services/gossipsub/topic_score_params.d.ts +184 -0
  206. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  207. package/dest/services/gossipsub/topic_score_params.js +363 -0
  208. package/dest/services/index.d.ts +2 -1
  209. package/dest/services/index.d.ts.map +1 -1
  210. package/dest/services/index.js +1 -0
  211. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  212. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  213. package/dest/services/libp2p/instrumentation.js +14 -0
  214. package/dest/services/libp2p/libp2p_service.d.ts +102 -60
  215. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  216. package/dest/services/libp2p/libp2p_service.js +665 -530
  217. package/dest/services/peer-manager/metrics.d.ts +3 -1
  218. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  219. package/dest/services/peer-manager/metrics.js +6 -0
  220. package/dest/services/peer-manager/peer_manager.d.ts +6 -2
  221. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  222. package/dest/services/peer-manager/peer_manager.js +40 -11
  223. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  224. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  225. package/dest/services/peer-manager/peer_scoring.js +57 -12
  226. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +14 -10
  227. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  228. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +104 -118
  229. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +11 -11
  230. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  231. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +11 -13
  232. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  233. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +31 -46
  234. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +19 -11
  235. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  236. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +52 -15
  237. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +5 -14
  238. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -1
  239. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +6 -20
  240. package/dest/services/reqresp/config.d.ts +3 -3
  241. package/dest/services/reqresp/config.d.ts.map +1 -1
  242. package/dest/services/reqresp/interface.d.ts +25 -18
  243. package/dest/services/reqresp/interface.d.ts.map +1 -1
  244. package/dest/services/reqresp/interface.js +23 -19
  245. package/dest/services/reqresp/metrics.d.ts +1 -1
  246. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  247. package/dest/services/reqresp/metrics.js +0 -1
  248. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  249. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  250. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +18 -11
  251. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +21 -10
  252. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  253. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +27 -11
  254. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  255. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  256. package/dest/services/reqresp/protocols/index.js +0 -1
  257. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  258. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  259. package/dest/services/reqresp/protocols/tx.js +21 -3
  260. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  261. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  262. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  263. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  264. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  265. package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
  266. package/dest/services/reqresp/reqresp.d.ts +7 -29
  267. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  268. package/dest/services/reqresp/reqresp.js +53 -218
  269. package/dest/services/service.d.ts +46 -13
  270. package/dest/services/service.d.ts.map +1 -1
  271. package/dest/services/tx_collection/config.d.ts +11 -14
  272. package/dest/services/tx_collection/config.d.ts.map +1 -1
  273. package/dest/services/tx_collection/config.js +26 -33
  274. package/dest/services/tx_collection/file_store_tx_collection.d.ts +37 -0
  275. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  276. package/dest/services/tx_collection/file_store_tx_collection.js +127 -0
  277. package/dest/services/tx_collection/file_store_tx_source.d.ts +38 -0
  278. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  279. package/dest/services/tx_collection/file_store_tx_source.js +100 -0
  280. package/dest/services/tx_collection/index.d.ts +3 -3
  281. package/dest/services/tx_collection/index.d.ts.map +1 -1
  282. package/dest/services/tx_collection/index.js +1 -1
  283. package/dest/services/tx_collection/instrumentation.js +1 -2
  284. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  285. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  286. package/dest/services/tx_collection/request_tracker.js +84 -0
  287. package/dest/services/tx_collection/tx_collection.d.ts +45 -51
  288. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  289. package/dest/services/tx_collection/tx_collection.js +296 -68
  290. package/dest/services/tx_collection/tx_collection_sink.d.ts +19 -9
  291. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  292. package/dest/services/tx_collection/tx_collection_sink.js +28 -31
  293. package/dest/services/tx_collection/tx_source.d.ts +13 -7
  294. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  295. package/dest/services/tx_collection/tx_source.js +26 -7
  296. package/dest/services/tx_file_store/config.d.ts +16 -0
  297. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  298. package/dest/services/tx_file_store/config.js +22 -0
  299. package/dest/services/tx_file_store/index.d.ts +4 -0
  300. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  301. package/dest/services/tx_file_store/index.js +3 -0
  302. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  303. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  304. package/dest/services/tx_file_store/instrumentation.js +29 -0
  305. package/dest/services/tx_file_store/tx_file_store.d.ts +46 -0
  306. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  307. package/dest/services/tx_file_store/tx_file_store.js +142 -0
  308. package/dest/services/tx_provider.d.ts +6 -4
  309. package/dest/services/tx_provider.d.ts.map +1 -1
  310. package/dest/services/tx_provider.js +12 -8
  311. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  312. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  313. package/dest/test-helpers/make-test-p2p-clients.js +5 -3
  314. package/dest/test-helpers/mock-pubsub.d.ts +46 -6
  315. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  316. package/dest/test-helpers/mock-pubsub.js +115 -14
  317. package/dest/test-helpers/reqresp-nodes.d.ts +5 -7
  318. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  319. package/dest/test-helpers/reqresp-nodes.js +19 -20
  320. package/dest/test-helpers/test_tx_provider.d.ts +3 -1
  321. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -1
  322. package/dest/test-helpers/test_tx_provider.js +3 -0
  323. package/dest/test-helpers/testbench-utils.d.ts +53 -50
  324. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  325. package/dest/test-helpers/testbench-utils.js +171 -75
  326. package/dest/testbench/p2p_client_testbench_worker.d.ts +3 -5
  327. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  328. package/dest/testbench/p2p_client_testbench_worker.js +94 -48
  329. package/dest/testbench/worker_client_manager.d.ts +12 -6
  330. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  331. package/dest/testbench/worker_client_manager.js +57 -11
  332. package/dest/util.d.ts +13 -8
  333. package/dest/util.d.ts.map +1 -1
  334. package/dest/util.js +35 -14
  335. package/dest/versioning.d.ts +3 -6
  336. package/dest/versioning.d.ts.map +1 -1
  337. package/dest/versioning.js +3 -24
  338. package/package.json +15 -14
  339. package/src/bootstrap/bootstrap.ts +9 -1
  340. package/src/client/factory.ts +130 -30
  341. package/src/client/interface.ts +70 -44
  342. package/src/client/p2p_client.ts +273 -299
  343. package/src/client/test/{tx_proposal_collector/README.md → p2p_client.batch_tx_requester.bench.README.md} +23 -53
  344. package/src/config.ts +267 -46
  345. package/src/errors/p2p-service.error.ts +11 -0
  346. package/src/errors/reqresp.error.ts +0 -25
  347. package/src/errors/tx-pool.error.ts +12 -0
  348. package/src/index.ts +1 -1
  349. package/src/mem_pools/attestation_pool/attestation_pool.ts +575 -94
  350. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +617 -141
  351. package/src/mem_pools/attestation_pool/index.ts +9 -2
  352. package/src/mem_pools/attestation_pool/mocks.ts +14 -8
  353. package/src/mem_pools/index.ts +2 -2
  354. package/src/mem_pools/instrumentation.ts +22 -14
  355. package/src/mem_pools/interface.ts +4 -4
  356. package/src/mem_pools/tx_pool_v2/README.md +283 -0
  357. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  358. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  359. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  360. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  361. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +122 -0
  362. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
  363. package/src/mem_pools/tx_pool_v2/eviction/index.ts +28 -0
  364. package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +65 -0
  365. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +219 -0
  366. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  367. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  368. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
  369. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +99 -0
  370. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +32 -0
  371. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  372. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  373. package/src/mem_pools/tx_pool_v2/interfaces.ts +250 -0
  374. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +349 -0
  375. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  376. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +430 -0
  377. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +238 -0
  378. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1090 -0
  379. package/src/msg_validators/attestation_validator/README.md +49 -0
  380. package/src/msg_validators/attestation_validator/attestation_validator.ts +41 -9
  381. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +16 -9
  382. package/src/msg_validators/clock_tolerance.ts +79 -3
  383. package/src/msg_validators/proposal_validator/README.md +123 -0
  384. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +24 -4
  385. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +35 -7
  386. package/src/msg_validators/proposal_validator/proposal_validator.ts +114 -47
  387. package/src/msg_validators/tx_validator/README.md +127 -0
  388. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +8 -17
  389. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  390. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  391. package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
  392. package/src/msg_validators/tx_validator/block_header_validator.ts +15 -3
  393. package/src/msg_validators/tx_validator/cached_tx_validator.ts +31 -0
  394. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  395. package/src/msg_validators/tx_validator/data_validator.ts +44 -1
  396. package/src/msg_validators/tx_validator/double_spend_validator.ts +11 -6
  397. package/src/msg_validators/tx_validator/factory.ts +407 -80
  398. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  399. package/src/msg_validators/tx_validator/gas_validator.ts +199 -54
  400. package/src/msg_validators/tx_validator/index.ts +4 -0
  401. package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
  402. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  403. package/src/msg_validators/tx_validator/phases_validator.ts +82 -27
  404. package/src/msg_validators/tx_validator/timestamp_validator.ts +23 -18
  405. package/src/msg_validators/tx_validator/tx_proof_validator.ts +2 -0
  406. package/src/msg_validators/tx_validator/tx_validation_cache.ts +102 -0
  407. package/src/services/data_store.ts +5 -13
  408. package/src/services/discv5/discV5_service.ts +38 -5
  409. package/src/services/dummy_service.ts +32 -45
  410. package/src/services/encoding.ts +18 -10
  411. package/src/services/gossipsub/README.md +641 -0
  412. package/src/services/gossipsub/index.ts +2 -0
  413. package/src/services/gossipsub/scoring.ts +29 -5
  414. package/src/services/gossipsub/topic_score_params.ts +519 -0
  415. package/src/services/index.ts +1 -0
  416. package/src/services/libp2p/instrumentation.ts +14 -0
  417. package/src/services/libp2p/libp2p_service.ts +716 -586
  418. package/src/services/peer-manager/metrics.ts +7 -0
  419. package/src/services/peer-manager/peer_manager.ts +46 -11
  420. package/src/services/peer-manager/peer_scoring.ts +52 -5
  421. package/src/services/reqresp/README.md +215 -0
  422. package/src/services/reqresp/batch-tx-requester/README.md +53 -14
  423. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +108 -130
  424. package/src/services/reqresp/batch-tx-requester/interface.ts +14 -10
  425. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +30 -71
  426. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +68 -24
  427. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +12 -25
  428. package/src/services/reqresp/config.ts +2 -2
  429. package/src/services/reqresp/interface.ts +45 -46
  430. package/src/services/reqresp/metrics.ts +0 -1
  431. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +25 -14
  432. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +38 -15
  433. package/src/services/reqresp/protocols/index.ts +0 -1
  434. package/src/services/reqresp/protocols/tx.ts +23 -3
  435. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  436. package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
  437. package/src/services/reqresp/reqresp.ts +61 -264
  438. package/src/services/service.ts +62 -29
  439. package/src/services/tx_collection/config.ts +40 -49
  440. package/src/services/tx_collection/file_store_tx_collection.ts +153 -0
  441. package/src/services/tx_collection/file_store_tx_source.ts +129 -0
  442. package/src/services/tx_collection/index.ts +2 -6
  443. package/src/services/tx_collection/instrumentation.ts +1 -1
  444. package/src/services/tx_collection/request_tracker.ts +127 -0
  445. package/src/services/tx_collection/tx_collection.ts +362 -110
  446. package/src/services/tx_collection/tx_collection_sink.ts +32 -36
  447. package/src/services/tx_collection/tx_source.ts +28 -8
  448. package/src/services/tx_file_store/config.ts +37 -0
  449. package/src/services/tx_file_store/index.ts +3 -0
  450. package/src/services/tx_file_store/instrumentation.ts +36 -0
  451. package/src/services/tx_file_store/tx_file_store.ts +163 -0
  452. package/src/services/tx_provider.ts +15 -9
  453. package/src/test-helpers/make-test-p2p-clients.ts +7 -6
  454. package/src/test-helpers/mock-pubsub.ts +137 -14
  455. package/src/test-helpers/reqresp-nodes.ts +17 -29
  456. package/src/test-helpers/test_tx_provider.ts +5 -0
  457. package/src/test-helpers/testbench-utils.ts +177 -96
  458. package/src/testbench/p2p_client_testbench_worker.ts +100 -63
  459. package/src/testbench/worker_client_manager.ts +72 -25
  460. package/src/util.ts +40 -19
  461. package/src/versioning.ts +3 -33
  462. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +0 -2
  463. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +0 -1
  464. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +0 -305
  465. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +0 -73
  466. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +0 -1
  467. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +0 -8
  468. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
  469. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  470. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
  471. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
  472. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  473. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
  474. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  475. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  476. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  477. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  478. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  479. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  480. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  481. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  482. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  483. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  484. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  485. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -122
  486. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  487. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  488. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  489. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  490. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  491. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  492. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  493. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  494. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  495. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  496. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  497. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  498. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  499. package/dest/mem_pools/tx_pool/index.js +0 -2
  500. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  501. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  502. package/dest/mem_pools/tx_pool/priority.js +0 -15
  503. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  504. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  505. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  506. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  507. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  508. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -400
  509. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
  510. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  511. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
  512. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +0 -64
  513. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +0 -1
  514. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +0 -151
  515. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  516. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  517. package/dest/services/reqresp/protocols/block.js +0 -32
  518. package/dest/services/tx_collection/fast_tx_collection.d.ts +0 -53
  519. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +0 -1
  520. package/dest/services/tx_collection/fast_tx_collection.js +0 -311
  521. package/dest/services/tx_collection/proposal_tx_collector.d.ts +0 -48
  522. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +0 -1
  523. package/dest/services/tx_collection/proposal_tx_collector.js +0 -50
  524. package/dest/services/tx_collection/slow_tx_collection.d.ts +0 -53
  525. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +0 -1
  526. package/dest/services/tx_collection/slow_tx_collection.js +0 -177
  527. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +0 -336
  528. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +0 -43
  529. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
  530. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
  531. package/src/mem_pools/tx_pool/README.md +0 -270
  532. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  533. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  534. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  535. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -162
  536. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  537. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  538. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  539. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  540. package/src/mem_pools/tx_pool/index.ts +0 -2
  541. package/src/mem_pools/tx_pool/priority.ts +0 -20
  542. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  543. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -319
  544. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
  545. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +0 -161
  546. package/src/services/reqresp/protocols/block.ts +0 -37
  547. package/src/services/tx_collection/fast_tx_collection.ts +0 -364
  548. package/src/services/tx_collection/proposal_tx_collector.ts +0 -114
  549. package/src/services/tx_collection/slow_tx_collection.ts +0 -233
@@ -1,6 +1,6 @@
1
- # ProposalTxCollector Benchmarks
1
+ # BatchTxRequester Benchmarks
2
2
 
3
- This benchmark suite measures **how quickly a proposer node can fetch missing transactions from P2P peers** when building a block proposal. It compares two alternative transaction-collection implementations under several controlled "who-has-which-txs" distributions.
3
+ This benchmark suite measures **how quickly a proposer node can fetch missing transactions from P2P peers** when building a block proposal under several controlled "who-has-which-txs" distributions.
4
4
 
5
5
  ## Purpose
6
6
 
@@ -10,12 +10,6 @@ This benchmark answers:
10
10
 
11
11
  - How long does it take to fetch **N missing txs** (N ∈ **{10, 50, 100, 500}**)?
12
12
  - How do different **peer availability patterns** affect performance?
13
- - Which collector strategy performs better under each pattern?
14
-
15
- The suite compares two collectors:
16
-
17
- - **`BatchTxRequesterCollector`** (collector type: `batch-requester`)
18
- - **`SendBatchRequestCollector`** (collector type: `send-batch-request`)
19
13
 
20
14
  ## Architecture
21
15
 
@@ -24,7 +18,7 @@ The benchmark runs a small simulated network on localhost:
24
18
  ```
25
19
  ┌─────────────────────────────────────────────────────────────────────┐
26
20
  │ Test Process (Driver) │
27
- │ p2p_client.proposal_tx_collector.bench.test.ts
21
+ │ p2p_client.batch_tx_requester.bench.test.ts
28
22
  │ ┌─────────────────────────────────────────────────────────────┐ │
29
23
  │ │ WorkerClientManager │ │
30
24
  │ │ (src/testbench/worker_client_manager.ts) │ │
@@ -34,7 +28,7 @@ The benchmark runs a small simulated network on localhost:
34
28
  │ ▼ ▼ ▼ │
35
29
  │ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
36
30
  │ │ Worker 0 │◄──────►│ Worker 1 │◄──────►│ Worker N-1│ │
37
- │ │ (Collector│ P2P │(Responder)│ P2P │(Responder)│ │
31
+ │ │(Aggregator│ P2P │(Responder)│ P2P │(Responder)│ │
38
32
  │ │ Node) │ │ │ │ │ │
39
33
  │ │ TxPool:[] │ │ TxPool: │ │ TxPool: │ │
40
34
  │ │ │ │ [txs...] │ │ [txs...] │ │
@@ -54,12 +48,12 @@ Using separate OS processes makes the setup closer to real networking behavior (
54
48
 
55
49
  The network is intentionally asymmetric:
56
50
 
57
- - **Worker 0 is the collector/proposer node**
51
+ - **Worker 0 is the aggregator/proposer node**
58
52
  - Starts with an **empty tx pool** (`[]`)
59
- - Is the only worker instructed to run the collector for each `BENCH_REQRESP` command
53
+ - Is the only worker instructed to run `BatchTxRequester` for each `BENCH_REQRESP` command
60
54
  - **Workers 1..N-1 are responder peers**
61
55
  - Locally generate and filter txs according to the distribution pattern
62
- - Respond to req/resp queries made by Worker 0's collector
56
+ - Respond to req/resp queries made by Worker 0's `BatchTxRequester`
63
57
 
64
58
  This models a proposer that has only `txHashes` in a proposal and must fetch the full tx bodies from the network.
65
59
 
@@ -72,7 +66,7 @@ Each benchmark case generates `missingTxCount` mock txs and assigns them to peer
72
66
  **Every responder peer has every transaction.**
73
67
 
74
68
  - Simulates the best-case: high replication / high gossip success
75
- - Expectation: collector should quickly succeed; differences mostly reflect collector overhead and batching strategy
69
+ - Expectation: the requester should quickly succeed; differences mostly reflect requester overhead and batching strategy
76
70
 
77
71
  ### `sparse`
78
72
 
@@ -81,7 +75,7 @@ Each benchmark case generates `missingTxCount` mock txs and assigns them to peer
81
75
  Each responder is bucketed and holds txs whose index falls into its bucket or the "next" bucket (striped by tx index).
82
76
 
83
77
  - Simulates partial propagation, churn, or uneven mempool convergence
84
- - Expectation: collector must query multiple peers and cope with "misses"
78
+ - Expectation: the requester must query multiple peers and cope with "misses"
85
79
 
86
80
  ### `pinned-only`
87
81
 
@@ -92,33 +86,13 @@ Each responder is bucketed and holds txs whose index falls into its bucket or th
92
86
 
93
87
  > **Guardrail:** the pinned peer index must be within `(0, numberOfPeers)` (Worker 0 cannot be pinned).
94
88
 
95
- ## Collectors Under Test
96
-
97
- ### `BatchTxRequesterCollector` (`batch-requester`)
98
-
99
- ```typescript
100
- new BatchTxRequesterCollector(p2pService, logger, new DateProvider())
101
- ```
102
-
103
- Uses the P2P service plus internal logic to fetch missing txs, coordinating requests in a batched or staged way.
104
-
105
- ### `SendBatchRequestCollector` (`send-batch-request`)
106
-
107
- ```typescript
108
- const maxPeers = 10;
109
- const maxRetryAttempts = Math.max(peerIds.length, 3);
110
- new SendBatchRequestCollector(p2pService, maxPeers, maxRetryAttempts)
111
- ```
112
-
113
- Explicitly caps the number of peers it will involve (`maxPeers`) and uses a retry budget derived from peer count.
114
-
115
89
  ## Test Parameters
116
90
 
117
91
  | Parameter | Value | Description |
118
92
  |-----------|-------|-------------|
119
93
  | `PEERS_PER_RUN` | 30 | Number of worker processes spawned |
120
94
  | `MISSING_TX_COUNTS` | 10, 50, 100, 500 | Number of missing transactions to fetch |
121
- | `TIMEOUT_MS` | 30,000 ms | Collector timeout per case |
95
+ | `TIMEOUT_MS` | 30,000 ms | Per-case timeout for the requester |
122
96
  | `TEST_TIMEOUT_MS` | 600,000 ms | Overall Jest timeout (10 minutes) |
123
97
 
124
98
  ## Running
@@ -127,13 +101,13 @@ From the p2p package:
127
101
 
128
102
  ```bash
129
103
  cd yarn-project/p2p
130
- yarn test src/client/test/tx_proposal_collector/p2p_client.proposal_tx_collector.bench.test.ts
104
+ yarn test src/client/test/p2p_client.batch_tx_requester.bench.test.ts
131
105
  ```
132
106
 
133
107
  Or from repo root:
134
108
 
135
109
  ```bash
136
- yarn test p2p_client.proposal_tx_collector.bench.test.ts
110
+ yarn test p2p_client.batch_tx_requester.bench.test.ts
137
111
  ```
138
112
 
139
113
  The benchmark is intentionally long due to spawning many processes and running multiple cases.
@@ -145,14 +119,12 @@ The benchmark is intentionally long due to spawning many processes and running m
145
119
  If no env vars are set, the suite prints a table:
146
120
 
147
121
  ```
148
- | Collector | Distribution | Missing | Duration (ms) | Fetched | Success |
149
- |---------------------|--------------|---------|---------------|---------|---------|
150
- | batch-requester | pinned-only | 10 | 123 | 10 | Yes |
151
- | send-batch-request | pinned-only | 10 | 145 | 10 | Yes |
122
+ | Distribution | Missing | Duration (ms) | Fetched | Success |
123
+ |--------------|---------|---------------|---------|---------|
124
+ | pinned-only | 10 | 123 | 10 | Yes |
125
+ | pinned-only | 50 | 145 | 50 | Yes |
152
126
  ```
153
127
 
154
- Plus a comparison summary stating which collector was faster per `(distribution, missing)` pair.
155
-
156
128
  ### JSON metrics (for CI/dashboards)
157
129
 
158
130
  ```bash
@@ -160,8 +132,8 @@ BENCH_OUTPUT=/path/results.json yarn test ...
160
132
  ```
161
133
 
162
134
  Writes JSON metrics like:
163
- - `ProposalTxCollector/<collector>/<distribution>/missing_<N>/duration` (ms)
164
- - `ProposalTxCollector/<collector>/<distribution>/missing_<N>/fetched` (txs)
135
+ - `BatchTxRequester/<distribution>/missing_<N>/duration` (ms)
136
+ - `BatchTxRequester/<distribution>/missing_<N>/fetched` (txs)
165
137
 
166
138
  ### Markdown file output
167
139
 
@@ -175,14 +147,14 @@ Writes the pretty table + summary to disk.
175
147
 
176
148
  For each case the benchmark records:
177
149
 
178
- - `durationMs`: wall-clock time spent inside the collector call
179
- - `fetchedCount`: how many txs were returned by the collector
150
+ - `durationMs`: wall-clock time spent inside the requester call
151
+ - `fetchedCount`: how many txs were returned by the requester
180
152
  - `success`: `fetchedCount === missingTxCount`
181
153
 
182
154
  **Guidelines:**
183
155
 
184
156
  - **Always check `Success` first.** A faster run that fetched fewer txs is not a win.
185
- - Compare collectors **within the same distribution + missing count** only.
157
+ - Compare runs **within the same distribution + missing count** only.
186
158
  - Expect `pinned-only` to highlight pinned-peer behavior (fast if pinned peer is used effectively; slow if the algorithm wastes time sampling other peers).
187
159
  - Expect `sparse` to be the most "network-like" stress case, since many peers won't have each requested tx.
188
160
 
@@ -193,7 +165,7 @@ Inside each worker, the benchmark intentionally reduces variability:
193
165
  - **Unlimited rate limits** are installed so the req/resp rate limiter doesn't dominate results
194
166
  - **Deterministic tx generation** ensures all workers see the same tx set without large IPC payloads
195
167
 
196
- This makes the benchmark better for *comparing collectors* (A vs B), but it is **not** a perfect model of production networking conditions.
168
+ This makes the benchmark better for tracking regressions, but it is **not** a perfect model of production networking conditions.
197
169
 
198
170
  ## Limitations
199
171
 
@@ -207,9 +179,7 @@ This benchmark does **not** measure:
207
179
 
208
180
  | File | Purpose |
209
181
  |------|---------|
210
- | `p2p_client.proposal_tx_collector.bench.test.ts` | Test suite (cases, distributions, output formatting) |
211
- | `proposal_tx_collector_worker.ts` | Collector-specific worker implementation |
212
- | `proposal_tx_collector_worker_protocol.ts` | IPC message types and serialization |
182
+ | `p2p_client.batch_tx_requester.bench.test.ts` | Test suite (cases, distributions, output formatting) |
213
183
  | `src/testbench/worker_client_manager.ts` | Worker process manager (forking, IPC, orchestration) |
214
184
  | `src/testbench/p2p_client_testbench_worker.ts` | General testbench worker implementation |
215
185
  | `src/test-helpers/testbench-utils.ts` | Shared mocks and utilities (InMemoryTxPool, InMemoryAttestationPool, etc.) |
package/src/config.ts CHANGED
@@ -1,19 +1,27 @@
1
1
  import {
2
2
  type ConfigMappingsType,
3
3
  SecretValue,
4
+ bigintConfigHelper,
4
5
  booleanConfigHelper,
5
6
  getConfigFromMappings,
6
7
  getDefaultConfig,
7
8
  numberConfigHelper,
9
+ optionalNumberConfigHelper,
8
10
  percentageConfigHelper,
9
11
  pickConfigMappings,
10
12
  secretStringConfigHelper,
11
13
  } from '@aztec/foundation/config';
12
14
  import { Fr } from '@aztec/foundation/curves/bn254';
13
- import { type DataStoreConfig, dataConfigMappings } from '@aztec/kv-store/config';
14
15
  import { FunctionSelector } from '@aztec/stdlib/abi/function-selector';
15
16
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
16
- import { type AllowedElement, type ChainConfig, chainConfigMappings } from '@aztec/stdlib/config';
17
+ import {
18
+ type AllowedElement,
19
+ type ChainConfig,
20
+ type SequencerConfig,
21
+ chainConfigMappings,
22
+ sharedSequencerConfigMappings,
23
+ } from '@aztec/stdlib/config';
24
+ import { type DataStoreConfig, dataConfigMappings } from '@aztec/stdlib/kv-store';
17
25
 
18
26
  import {
19
27
  type BatchTxRequesterConfig,
@@ -21,17 +29,47 @@ import {
21
29
  } from './services/reqresp/batch-tx-requester/config.js';
22
30
  import { type P2PReqRespConfig, p2pReqRespConfigMappings } from './services/reqresp/config.js';
23
31
  import { type TxCollectionConfig, txCollectionConfigMappings } from './services/tx_collection/config.js';
32
+ import { type TxFileStoreConfig, txFileStoreConfigMappings } from './services/tx_file_store/config.js';
24
33
 
25
34
  /**
26
35
  * P2P client configuration values.
27
36
  */
28
- export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, ChainConfig, TxCollectionConfig {
37
+ export interface P2PConfig
38
+ extends P2PReqRespConfig,
39
+ BatchTxRequesterConfig,
40
+ ChainConfig,
41
+ TxCollectionConfig,
42
+ TxFileStoreConfig,
43
+ Pick<
44
+ SequencerConfig,
45
+ | 'blockDurationMs'
46
+ | 'expectedBlockProposalsPerSlot'
47
+ | 'l1PublishingTime'
48
+ | 'maxTxsPerBlock'
49
+ | 'attestationPropagationTime'
50
+ | 'maxBlocksPerCheckpoint'
51
+ > {
52
+ /** Maximum transactions per block for validation. Overrides maxTxsPerBlock for gossip validation when set. */
53
+ validateMaxTxsPerBlock?: number;
54
+
55
+ /** Maximum transactions per checkpoint for validation. Used as fallback for maxTxsPerBlock when that is not set. */
56
+ validateMaxTxsPerCheckpoint?: number;
57
+
58
+ /** Maximum L2 gas per block for validation. When set, txs exceeding this limit are rejected. */
59
+ validateMaxL2BlockGas?: number;
60
+
61
+ /** Maximum DA gas per block for validation. When set, txs exceeding this limit are rejected. */
62
+ validateMaxDABlockGas?: number;
63
+
29
64
  /** A flag dictating whether the P2P subsystem should be enabled. */
30
65
  p2pEnabled: boolean;
31
66
 
32
67
  /** The frequency in which to check for new L2 blocks. */
33
68
  blockCheckIntervalMS: number;
34
69
 
70
+ /** The frequency in which to check for new L2 slots. */
71
+ slotCheckIntervalMS: number;
72
+
35
73
  /** The number of blocks to fetch in a single batch. */
36
74
  blockRequestBatchSize: number;
37
75
 
@@ -41,6 +79,9 @@ export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, Cha
41
79
  /** The frequency in which to check for new peers. */
42
80
  peerCheckIntervalMS: number;
43
81
 
82
+ /** How long to ban a peer after it fails MAX_DIAL_ATTEMPTS dials. */
83
+ peerFailedBanTimeMs: number;
84
+
44
85
  /** Size of queue of L2 blocks to store. */
45
86
  l2QueueSize: number;
46
87
 
@@ -77,6 +118,11 @@ export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, Cha
77
118
  /** If announceUdpAddress or announceTcpAddress are not provided, query for the IP address of the machine. Default is false. */
78
119
  queryForIp: boolean;
79
120
 
121
+ /**
122
+ * HTTPS URLs that return plain-text public IPv4, tried in order when resolving the announce IP (e.g. when `queryForIp` is true and `p2pIp` is unset).
123
+ */
124
+ publicIpServices: string[];
125
+
80
126
  /** The interval of the gossipsub heartbeat to perform maintenance tasks. */
81
127
  gossipsubInterval: number;
82
128
 
@@ -134,8 +180,8 @@ export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, Cha
134
180
  /** The maximum possible size of the P2P DB in KB. Overwrites the general dataStoreMapSizeKb. */
135
181
  p2pStoreMapSizeKb?: number;
136
182
 
137
- /** Which calls are allowed in the public setup phase of a tx. */
138
- txPublicSetupAllowList: AllowedElement[];
183
+ /** Additional entries to extend the default setup allow list. */
184
+ txPublicSetupAllowListExtend: AllowedElement[];
139
185
 
140
186
  /** The maximum number of pending txs before evicting lower priority txs. */
141
187
  maxPendingTxCount: number;
@@ -143,6 +189,9 @@ export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, Cha
143
189
  /** The node's seen message ID cache size */
144
190
  seenMessageCacheSize: number;
145
191
 
192
+ /** Maximum number of (validator, tx) pairs to keep in the tx validation LRU cache. */
193
+ txValidationCacheSize: number;
194
+
146
195
  /** True to disable the status handshake on peer connected. */
147
196
  p2pDisableStatusHandshake?: boolean;
148
197
 
@@ -157,10 +206,7 @@ export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, Cha
157
206
  /** Whether transactions are disabled for this node. This means transactions will be rejected at the RPC and P2P layers. */
158
207
  disableTransactions: boolean;
159
208
 
160
- /** True to simulate discarding transactions. - For testing purposes only*/
161
- dropTransactions: boolean;
162
-
163
- /** The probability that a transaction is discarded. - For testing purposes only */
209
+ /** The probability that a transaction is discarded (0 = disabled). - For testing purposes only */
164
210
  dropTransactionsProbability: number;
165
211
 
166
212
  /** Whether to delete transactions from the pool after a reorg instead of moving them back to pending. */
@@ -171,11 +217,77 @@ export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, Cha
171
217
 
172
218
  /** Whether to run in fisherman mode: validates all proposals and attestations but does not broadcast attestations or participate in consensus */
173
219
  fishermanMode: boolean;
220
+
221
+ /** Broadcast block proposals even when a conflicting proposal for the same slot already exists in the pool (for testing purposes only). */
222
+ broadcastEquivocatedProposals?: boolean;
223
+
224
+ /** Minimum age (ms) a transaction must have been in the pool before it's eligible for block building. */
225
+ minTxPoolAgeMs: number;
226
+
227
+ /**
228
+ * Number of full L2 slots to wait after a checkpoint's slot before declaring its txs missing
229
+ * for data-withholding slashing.
230
+ */
231
+ slashDataWithholdingToleranceSlots: number;
232
+
233
+ /**
234
+ * Number of L2 slots after a mined block's slot to keep collecting its missing txs. Clamped
235
+ * up so that collection always runs at least until the data-withholding slash verdict is
236
+ * rendered (`block.slot + slashDataWithholdingToleranceSlots + 1`). Defaults to undefined,
237
+ * in which case the tolerance window is used directly.
238
+ */
239
+ p2pMissingTxCollectionDeadlineSlots?: number;
240
+
241
+ /** Minimum percentage fee increase required to replace an existing tx via RPC (0 = no bump). */
242
+ priceBumpPercentage: bigint;
243
+
244
+ /** Drop incoming block and checkpoint proposals at the libp2p dispatch layer (for testing only) */
245
+ skipIncomingProposals?: boolean;
246
+
247
+ /** Accept proposal gossip regardless of slot timing (for testing only). */
248
+ skipProposalSlotValidation?: boolean;
249
+
250
+ /**
251
+ * Whether this node skips checkpoint proposal validation and always attests. When set, the checkpoint
252
+ * attestation is created and broadcast before the embedded last block is processed, so it is not delayed
253
+ * past the slot's attestation window by that block's re-execution. Mirrors the validator config flag.
254
+ */
255
+ skipCheckpointProposalValidation?: boolean;
174
256
  }
175
257
 
176
258
  export const DEFAULT_P2P_PORT = 40400;
177
259
 
260
+ /** Default endpoints used to discover this machine's public IPv4 when `queryForIp` is enabled. */
261
+ export const DEFAULT_PUBLIC_IP_SERVICES: string[] = [
262
+ 'https://api.ipify.org/',
263
+ 'https://checkip.amazonaws.com/',
264
+ 'https://ifconfig.me/ip',
265
+ 'https://icanhazip.com/',
266
+ ];
267
+
178
268
  export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
269
+ validateMaxTxsPerBlock: {
270
+ env: 'VALIDATOR_MAX_TX_PER_BLOCK',
271
+ description:
272
+ 'Maximum transactions per block for validation. Overrides maxTxsPerBlock for gossip validation when set.',
273
+ ...optionalNumberConfigHelper(),
274
+ },
275
+ validateMaxTxsPerCheckpoint: {
276
+ env: 'VALIDATOR_MAX_TX_PER_CHECKPOINT',
277
+ description:
278
+ 'Maximum transactions per checkpoint for validation. Used as fallback for maxTxsPerBlock when that is not set.',
279
+ ...optionalNumberConfigHelper(),
280
+ },
281
+ validateMaxL2BlockGas: {
282
+ env: 'VALIDATOR_MAX_L2_BLOCK_GAS',
283
+ description: 'Maximum L2 gas per block for validation. When set, txs exceeding this limit are rejected.',
284
+ ...optionalNumberConfigHelper(),
285
+ },
286
+ validateMaxDABlockGas: {
287
+ env: 'VALIDATOR_MAX_DA_BLOCK_GAS',
288
+ description: 'Maximum DA gas per block for validation. When set, txs exceeding this limit are rejected.',
289
+ ...optionalNumberConfigHelper(),
290
+ },
179
291
  p2pEnabled: {
180
292
  env: 'P2P_ENABLED',
181
293
  description: 'A flag dictating whether the P2P subsystem should be enabled.',
@@ -191,6 +303,11 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
191
303
  description: 'The frequency in which to check for new L2 blocks.',
192
304
  ...numberConfigHelper(100),
193
305
  },
306
+ slotCheckIntervalMS: {
307
+ env: 'P2P_SLOT_CHECK_INTERVAL_MS',
308
+ description: 'The frequency in which to check for new L2 slots.',
309
+ ...numberConfigHelper(1000),
310
+ },
194
311
  debugDisableColocationPenalty: {
195
312
  env: 'DEBUG_P2P_DISABLE_COLOCATION_PENALTY',
196
313
  description: 'DEBUG: Disable colocation penalty - NEVER set to true in production',
@@ -201,6 +318,11 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
201
318
  description: 'The frequency in which to check for new peers.',
202
319
  ...numberConfigHelper(30_000),
203
320
  },
321
+ peerFailedBanTimeMs: {
322
+ env: 'P2P_PEER_FAILED_BAN_TIME_MS',
323
+ description: 'How long to ban a peer after it fails maximum dial attempts.',
324
+ ...numberConfigHelper(5 * 60 * 1000),
325
+ },
204
326
  l2QueueSize: {
205
327
  env: 'P2P_L2_QUEUE_SIZE',
206
328
  description: 'Size of queue of L2 blocks to store.',
@@ -261,6 +383,17 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
261
383
  'If announceUdpAddress or announceTcpAddress are not provided, query for the IP address of the machine. Default is false.',
262
384
  ...booleanConfigHelper(),
263
385
  },
386
+ publicIpServices: {
387
+ env: 'P2P_PUBLIC_IP_SERVICES',
388
+ parseEnv: (val: string) =>
389
+ val
390
+ .split(',')
391
+ .map(s => s.trim())
392
+ .filter(Boolean),
393
+ description:
394
+ 'Comma-separated HTTPS URLs that return plain-text public IPv4. Used when P2P_QUERY_FOR_IP is true and P2P_IP is unset. Tried in order until one succeeds.',
395
+ defaultValue: DEFAULT_PUBLIC_IP_SERVICES,
396
+ },
264
397
  gossipsubInterval: {
265
398
  env: 'P2P_GOSSIPSUB_INTERVAL_MS',
266
399
  description: 'The interval of the gossipsub heartbeat to perform maintenance tasks.',
@@ -294,7 +427,7 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
294
427
  gossipsubMcacheLength: {
295
428
  env: 'P2P_GOSSIPSUB_MCACHE_LENGTH',
296
429
  description: 'The number of gossipsub interval message cache windows to keep.',
297
- ...numberConfigHelper(6),
430
+ ...numberConfigHelper(12),
298
431
  },
299
432
  gossipsubMcacheGossip: {
300
433
  env: 'P2P_GOSSIPSUB_MCACHE_GOSSIP',
@@ -366,15 +499,16 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
366
499
  },
367
500
  p2pStoreMapSizeKb: {
368
501
  env: 'P2P_STORE_MAP_SIZE_KB',
369
- parseEnv: (val: string | undefined) => (val ? +val : undefined),
502
+ ...optionalNumberConfigHelper(),
370
503
  description: 'The maximum possible size of the P2P DB in KB. Overwrites the general dataStoreMapSizeKb.',
371
504
  },
372
- txPublicSetupAllowList: {
505
+ txPublicSetupAllowListExtend: {
373
506
  env: 'TX_PUBLIC_SETUP_ALLOWLIST',
374
507
  parseEnv: (val: string) => parseAllowList(val),
375
- description: 'The list of functions calls allowed to run in setup',
508
+ description:
509
+ 'Additional entries to extend the default setup allow list. Format: I:address:selector[:flags],C:classId:selector[:flags]. Flags: os (onlySelf), rn (rejectNullMsgSender), cl=N (calldataLength), joined with +.',
376
510
  printDefault: () =>
377
- 'AuthRegistry, FeeJuice.increase_public_balance, Token.increase_public_balance, FPC.prepare_fee',
511
+ 'Default: AuthRegistry._set_authorized, AuthRegistry.set_authorized, FeeJuice._increase_public_balance',
378
512
  },
379
513
  maxPendingTxCount: {
380
514
  env: 'P2P_MAX_PENDING_TX_COUNT',
@@ -388,6 +522,11 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
388
522
  description: 'The number of messages to keep in the seen message cache',
389
523
  ...numberConfigHelper(100_000), // 100K
390
524
  },
525
+ txValidationCacheSize: {
526
+ env: 'P2P_TX_VALIDATION_CACHE_SIZE',
527
+ description: 'Maximum number of items to keep in the tx validation LRU cache.',
528
+ ...numberConfigHelper(5_000),
529
+ },
391
530
  p2pDisableStatusHandshake: {
392
531
  env: 'P2P_DISABLE_STATUS_HANDSHAKE',
393
532
  description: 'True to disable the status handshake on peer connected.',
@@ -403,11 +542,6 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
403
542
  description: 'Number of auth attempts to allow before peer is banned. Number is inclusive',
404
543
  ...numberConfigHelper(3),
405
544
  },
406
- dropTransactions: {
407
- env: 'P2P_DROP_TX',
408
- description: 'True to simulate discarding transactions. - For testing purposes only',
409
- ...booleanConfigHelper(false),
410
- },
411
545
  dropTransactionsProbability: {
412
546
  env: 'P2P_DROP_TX_CHANCE',
413
547
  description: 'The probability that a transaction is discarded (0 - 1). - For testing purposes only',
@@ -429,16 +563,64 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
429
563
  description: 'Alters the format of p2p messages to include things like broadcast timestamp FOR TESTING ONLY',
430
564
  ...booleanConfigHelper(false),
431
565
  },
566
+ l1PublishingTime: {
567
+ env: 'SEQ_L1_PUBLISHING_TIME_ALLOWANCE_IN_SLOT',
568
+ description: 'How much time (in seconds) we allow in the slot for publishing the L1 tx (defaults to 1 L1 slot).',
569
+ ...optionalNumberConfigHelper(),
570
+ },
432
571
  fishermanMode: {
433
572
  env: 'FISHERMAN_MODE',
434
573
  description:
435
574
  'Whether to run in fisherman mode: validates all proposals and attestations but does not broadcast attestations or participate in consensus.',
436
575
  ...booleanConfigHelper(false),
437
576
  },
577
+ broadcastEquivocatedProposals: {
578
+ description:
579
+ 'Broadcast block proposals even when a conflicting proposal for the same slot already exists in the pool (for testing purposes only).',
580
+ ...booleanConfigHelper(false),
581
+ },
582
+ skipIncomingProposals: {
583
+ description: 'Drop incoming block and checkpoint proposals at the libp2p dispatch layer (for testing only)',
584
+ ...booleanConfigHelper(false),
585
+ },
586
+ skipProposalSlotValidation: {
587
+ description: 'Accept proposal gossip regardless of slot timing (for testing only)',
588
+ ...booleanConfigHelper(false),
589
+ },
590
+ skipCheckpointProposalValidation: {
591
+ description:
592
+ 'Skip checkpoint proposal validation and always attest, broadcasting the attestation before processing the embedded last block',
593
+ ...booleanConfigHelper(false),
594
+ },
595
+ minTxPoolAgeMs: {
596
+ env: 'P2P_MIN_TX_POOL_AGE_MS',
597
+ description: 'Minimum age (ms) a transaction must have been in the pool before it is eligible for block building.',
598
+ ...numberConfigHelper(2_000),
599
+ },
600
+ slashDataWithholdingToleranceSlots: {
601
+ env: 'SLASH_DATA_WITHHOLDING_TOLERANCE_SLOTS',
602
+ description:
603
+ 'L2 slots to wait after a checkpoint slot before declaring its txs missing. Drives both the data-withholding slasher check and the missing-tx collection deadline.',
604
+ ...numberConfigHelper(3),
605
+ },
606
+ p2pMissingTxCollectionDeadlineSlots: {
607
+ env: 'P2P_MISSING_TX_COLLECTION_DEADLINE_SLOTS',
608
+ description:
609
+ 'Optional deadline (in L2 slots after the block slot) for collecting missing txs for unproven mined blocks. Clamped up to the data-withholding tolerance window so collection never gives up before the slash verdict.',
610
+ ...optionalNumberConfigHelper(),
611
+ },
612
+ priceBumpPercentage: {
613
+ env: 'P2P_RPC_PRICE_BUMP_PERCENTAGE',
614
+ description:
615
+ 'Minimum percentage fee increase required to replace an existing tx via RPC. Even at 0%, replacement still requires paying at least 1 unit more.',
616
+ ...bigintConfigHelper(10n),
617
+ },
618
+ ...sharedSequencerConfigMappings,
438
619
  ...p2pReqRespConfigMappings,
439
620
  ...batchTxRequesterConfigMappings,
440
621
  ...chainConfigMappings,
441
622
  ...txCollectionConfigMappings,
623
+ ...txFileStoreConfigMappings,
442
624
  };
443
625
 
444
626
  /**
@@ -466,6 +648,7 @@ export type BootnodeConfig = Pick<
466
648
  | 'bootstrapNodes'
467
649
  | 'listenAddress'
468
650
  | 'queryForIp'
651
+ | 'publicIpServices'
469
652
  > &
470
653
  Required<Pick<P2PConfig, 'p2pIp' | 'p2pPort'>> &
471
654
  Pick<DataStoreConfig, 'dataDirectory' | 'dataStoreMapSizeKb'> &
@@ -483,6 +666,7 @@ const bootnodeConfigKeys: (keyof BootnodeConfig)[] = [
483
666
  'bootstrapNodes',
484
667
  'l1ChainId',
485
668
  'queryForIp',
669
+ 'publicIpServices',
486
670
  ];
487
671
 
488
672
  export const bootnodeConfigMappings = pickConfigMappings(
@@ -490,13 +674,44 @@ export const bootnodeConfigMappings = pickConfigMappings(
490
674
  bootnodeConfigKeys,
491
675
  );
492
676
 
677
+ /**
678
+ * Parses a `+`-separated flags string into validation properties for an allow list entry.
679
+ * Supported flags: `os` (onlySelf), `rn` (rejectNullMsgSender), `cl=N` (calldataLength).
680
+ */
681
+ function parseFlags(
682
+ flags: string,
683
+ entry: string,
684
+ ): { onlySelf?: boolean; rejectNullMsgSender?: boolean; calldataLength?: number } {
685
+ const result: { onlySelf?: boolean; rejectNullMsgSender?: boolean; calldataLength?: number } = {};
686
+ for (const flag of flags.split('+')) {
687
+ if (flag === 'os') {
688
+ result.onlySelf = true;
689
+ } else if (flag === 'rn') {
690
+ result.rejectNullMsgSender = true;
691
+ } else if (flag.startsWith('cl=')) {
692
+ const n = parseInt(flag.slice(3), 10);
693
+ if (isNaN(n) || n < 0) {
694
+ throw new Error(
695
+ `Invalid allow list entry "${entry}": invalid calldataLength in flag "${flag}". Expected a non-negative integer.`,
696
+ );
697
+ }
698
+ result.calldataLength = n;
699
+ } else {
700
+ throw new Error(`Invalid allow list entry "${entry}": unknown flag "${flag}". Supported flags: os, rn, cl=N.`);
701
+ }
702
+ }
703
+ return result;
704
+ }
705
+
493
706
  /**
494
707
  * Parses a string to a list of allowed elements.
495
- * Each encoded is expected to be of one of the following formats
496
- * `I:${address}`
497
- * `I:${address}:${selector}`
498
- * `C:${classId}`
499
- * `C:${classId}:${selector}`
708
+ * Each entry is expected to be of one of the following formats:
709
+ * `I:${address}:${selector}` — instance (contract address) with function selector
710
+ * `C:${classId}:${selector}` — class with function selector
711
+ *
712
+ * An optional flags segment can be appended after the selector:
713
+ * `I:${address}:${selector}:${flags}` or `C:${classId}:${selector}:${flags}`
714
+ * where flags is a `+`-separated list of: `os` (onlySelf), `rn` (rejectNullMsgSender), `cl=N` (calldataLength).
500
715
  *
501
716
  * @param value The string to parse
502
717
  * @returns A list of allowed elements
@@ -509,31 +724,37 @@ export function parseAllowList(value: string): AllowedElement[] {
509
724
  }
510
725
 
511
726
  for (const val of value.split(',')) {
512
- const [typeString, identifierString, selectorString] = val.split(':');
513
- const selector = selectorString !== undefined ? FunctionSelector.fromString(selectorString) : undefined;
727
+ const trimmed = val.trim();
728
+ if (!trimmed) {
729
+ continue;
730
+ }
731
+ const [typeString, identifierString, selectorString, flagsString] = trimmed.split(':');
732
+
733
+ if (!selectorString) {
734
+ throw new Error(
735
+ `Invalid allow list entry "${trimmed}": selector is required. Expected format: I:address:selector or C:classId:selector`,
736
+ );
737
+ }
738
+
739
+ const selector = FunctionSelector.fromString(selectorString);
740
+ const flags = flagsString ? parseFlags(flagsString, trimmed) : {};
514
741
 
515
742
  if (typeString === 'I') {
516
- if (selector) {
517
- entries.push({
518
- address: AztecAddress.fromString(identifierString),
519
- selector,
520
- });
521
- } else {
522
- entries.push({
523
- address: AztecAddress.fromString(identifierString),
524
- });
525
- }
743
+ entries.push({
744
+ address: AztecAddress.fromString(identifierString),
745
+ selector,
746
+ ...flags,
747
+ });
526
748
  } else if (typeString === 'C') {
527
- if (selector) {
528
- entries.push({
529
- classId: Fr.fromHexString(identifierString),
530
- selector,
531
- });
532
- } else {
533
- entries.push({
534
- classId: Fr.fromHexString(identifierString),
535
- });
536
- }
749
+ entries.push({
750
+ classId: Fr.fromHexString(identifierString),
751
+ selector,
752
+ ...flags,
753
+ });
754
+ } else {
755
+ throw new Error(
756
+ `Invalid allow list entry "${trimmed}": unknown type "${typeString}". Expected "I" (instance) or "C" (class).`,
757
+ );
537
758
  }
538
759
  }
539
760