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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (659) hide show
  1. package/README.md +129 -3
  2. package/dest/bootstrap/bootstrap.d.ts +4 -3
  3. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  4. package/dest/bootstrap/bootstrap.js +26 -13
  5. package/dest/client/factory.d.ts +21 -11
  6. package/dest/client/factory.d.ts.map +1 -1
  7. package/dest/client/factory.js +101 -26
  8. package/dest/client/index.d.ts +2 -1
  9. package/dest/client/index.d.ts.map +1 -1
  10. package/dest/client/index.js +1 -0
  11. package/dest/client/interface.d.ts +183 -0
  12. package/dest/client/interface.d.ts.map +1 -0
  13. package/dest/client/interface.js +9 -0
  14. package/dest/client/p2p_client.d.ts +93 -221
  15. package/dest/client/p2p_client.d.ts.map +1 -1
  16. package/dest/client/p2p_client.js +760 -289
  17. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +2 -0
  18. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +1 -0
  19. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +304 -0
  20. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +73 -0
  21. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +1 -0
  22. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +8 -0
  23. package/dest/config.d.ts +192 -126
  24. package/dest/config.d.ts.map +1 -1
  25. package/dest/config.js +240 -36
  26. package/dest/enr/generate-enr.d.ts +11 -3
  27. package/dest/enr/generate-enr.d.ts.map +1 -1
  28. package/dest/enr/generate-enr.js +27 -5
  29. package/dest/enr/index.d.ts +1 -1
  30. package/dest/errors/attestation-pool.error.d.ts +7 -0
  31. package/dest/errors/attestation-pool.error.d.ts.map +1 -0
  32. package/dest/errors/attestation-pool.error.js +12 -0
  33. package/dest/errors/reqresp.error.d.ts +1 -1
  34. package/dest/errors/reqresp.error.d.ts.map +1 -1
  35. package/dest/errors/tx-pool.error.d.ts +8 -0
  36. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  37. package/dest/errors/tx-pool.error.js +9 -0
  38. package/dest/index.d.ts +5 -1
  39. package/dest/index.d.ts.map +1 -1
  40. package/dest/index.js +3 -0
  41. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +125 -30
  42. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  43. package/dest/mem_pools/attestation_pool/attestation_pool.js +445 -3
  44. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  45. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  46. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +564 -173
  47. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  48. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  49. package/dest/mem_pools/attestation_pool/index.js +1 -2
  50. package/dest/mem_pools/attestation_pool/mocks.d.ts +234 -11
  51. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  52. package/dest/mem_pools/attestation_pool/mocks.js +19 -21
  53. package/dest/mem_pools/index.d.ts +3 -2
  54. package/dest/mem_pools/index.d.ts.map +1 -1
  55. package/dest/mem_pools/index.js +1 -1
  56. package/dest/mem_pools/instrumentation.d.ts +18 -12
  57. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  58. package/dest/mem_pools/instrumentation.js +58 -41
  59. package/dest/mem_pools/interface.d.ts +6 -7
  60. package/dest/mem_pools/interface.d.ts.map +1 -1
  61. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +75 -16
  62. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  63. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +493 -142
  64. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +32 -0
  65. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -0
  66. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +112 -0
  67. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +157 -0
  68. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -0
  69. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +52 -0
  70. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +16 -0
  71. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  72. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +123 -0
  73. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +17 -0
  74. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  75. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +84 -0
  76. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +19 -0
  77. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  78. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +78 -0
  79. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +26 -0
  80. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  81. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +84 -0
  82. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
  83. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
  84. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
  85. package/dest/mem_pools/tx_pool/index.d.ts +1 -2
  86. package/dest/mem_pools/tx_pool/index.d.ts.map +1 -1
  87. package/dest/mem_pools/tx_pool/index.js +0 -1
  88. package/dest/mem_pools/tx_pool/priority.d.ts +5 -1
  89. package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
  90. package/dest/mem_pools/tx_pool/priority.js +8 -3
  91. package/dest/mem_pools/tx_pool/tx_pool.d.ts +72 -11
  92. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
  93. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
  94. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  95. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +279 -46
  96. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  97. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  98. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  99. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  100. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  101. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  102. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  103. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  104. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  105. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  106. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  107. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  108. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  109. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  110. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +94 -0
  111. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  112. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  113. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
  114. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  115. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  116. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  117. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +180 -0
  118. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  119. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  120. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  121. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  122. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
  123. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  124. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  125. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  126. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  127. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  128. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
  129. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  130. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  131. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +75 -0
  132. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  133. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  134. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  135. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  136. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  137. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  138. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  139. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  140. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  141. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +215 -0
  142. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  143. package/dest/mem_pools/tx_pool_v2/interfaces.js +10 -0
  144. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +134 -0
  145. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  146. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +216 -0
  147. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  148. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  149. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  150. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  151. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  152. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +337 -0
  153. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +62 -0
  154. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  155. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +167 -0
  156. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +78 -0
  157. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  158. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +923 -0
  159. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +7 -5
  160. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  161. package/dest/msg_validators/attestation_validator/attestation_validator.js +79 -10
  162. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +20 -0
  163. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -0
  164. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +76 -0
  165. package/dest/msg_validators/attestation_validator/index.d.ts +2 -1
  166. package/dest/msg_validators/attestation_validator/index.d.ts.map +1 -1
  167. package/dest/msg_validators/attestation_validator/index.js +1 -0
  168. package/dest/msg_validators/clock_tolerance.d.ts +21 -0
  169. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
  170. package/dest/msg_validators/clock_tolerance.js +37 -0
  171. package/dest/msg_validators/index.d.ts +2 -2
  172. package/dest/msg_validators/index.d.ts.map +1 -1
  173. package/dest/msg_validators/index.js +1 -1
  174. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts +10 -0
  175. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts.map +1 -0
  176. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.js +36 -0
  177. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +11 -0
  178. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
  179. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +14 -0
  180. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +11 -0
  181. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
  182. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +20 -0
  183. package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
  184. package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
  185. package/dest/msg_validators/proposal_validator/index.js +3 -0
  186. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +18 -0
  187. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
  188. package/dest/msg_validators/proposal_validator/proposal_validator.js +116 -0
  189. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  190. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  191. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  192. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +4 -0
  193. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -0
  194. package/dest/msg_validators/tx_validator/allowed_public_setup.js +31 -0
  195. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  196. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  197. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  198. package/dest/msg_validators/tx_validator/archive_cache.d.ts +14 -0
  199. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -0
  200. package/dest/msg_validators/tx_validator/archive_cache.js +22 -0
  201. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +20 -6
  202. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  203. package/dest/msg_validators/tx_validator/block_header_validator.js +7 -6
  204. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  205. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  206. package/dest/msg_validators/tx_validator/data_validator.js +60 -87
  207. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -6
  208. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  209. package/dest/msg_validators/tx_validator/double_spend_validator.js +24 -29
  210. package/dest/msg_validators/tx_validator/factory.d.ts +148 -0
  211. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -0
  212. package/dest/msg_validators/tx_validator/factory.js +265 -0
  213. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
  214. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
  215. package/dest/msg_validators/tx_validator/fee_payer_balance.js +24 -0
  216. package/dest/msg_validators/tx_validator/gas_validator.d.ts +76 -0
  217. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -0
  218. package/dest/msg_validators/tx_validator/gas_validator.js +177 -0
  219. package/dest/msg_validators/tx_validator/index.d.ts +11 -1
  220. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  221. package/dest/msg_validators/tx_validator/index.js +10 -0
  222. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +10 -5
  223. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  224. package/dest/msg_validators/tx_validator/metadata_validator.js +40 -21
  225. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  226. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  227. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  228. package/dest/msg_validators/tx_validator/phases_validator.d.ts +35 -0
  229. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -0
  230. package/dest/msg_validators/tx_validator/phases_validator.js +141 -0
  231. package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
  232. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
  233. package/dest/msg_validators/tx_validator/size_validator.js +23 -0
  234. package/dest/msg_validators/tx_validator/test_utils.d.ts +17 -0
  235. package/dest/msg_validators/tx_validator/test_utils.d.ts.map +1 -0
  236. package/dest/msg_validators/tx_validator/test_utils.js +22 -0
  237. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +30 -0
  238. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -0
  239. package/dest/msg_validators/tx_validator/timestamp_validator.js +32 -0
  240. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +9 -0
  241. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -0
  242. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +24 -0
  243. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  244. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  245. package/dest/msg_validators/tx_validator/tx_proof_validator.js +8 -7
  246. package/dest/services/data_store.d.ts +1 -1
  247. package/dest/services/data_store.d.ts.map +1 -1
  248. package/dest/services/data_store.js +10 -6
  249. package/dest/services/discv5/discV5_service.d.ts +10 -9
  250. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  251. package/dest/services/discv5/discV5_service.js +64 -37
  252. package/dest/services/dummy_service.d.ts +74 -11
  253. package/dest/services/dummy_service.d.ts.map +1 -1
  254. package/dest/services/dummy_service.js +136 -5
  255. package/dest/services/encoding.d.ts +26 -7
  256. package/dest/services/encoding.d.ts.map +1 -1
  257. package/dest/services/encoding.js +82 -12
  258. package/dest/services/gossipsub/index.d.ts +3 -0
  259. package/dest/services/gossipsub/index.d.ts.map +1 -0
  260. package/dest/services/gossipsub/index.js +2 -0
  261. package/dest/services/gossipsub/scoring.d.ts +21 -3
  262. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  263. package/dest/services/gossipsub/scoring.js +24 -7
  264. package/dest/services/gossipsub/topic_score_params.d.ts +173 -0
  265. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  266. package/dest/services/gossipsub/topic_score_params.js +346 -0
  267. package/dest/services/index.d.ts +6 -1
  268. package/dest/services/index.d.ts.map +1 -1
  269. package/dest/services/index.js +5 -0
  270. package/dest/services/libp2p/instrumentation.d.ts +20 -0
  271. package/dest/services/libp2p/instrumentation.d.ts.map +1 -0
  272. package/dest/services/libp2p/instrumentation.js +122 -0
  273. package/dest/services/libp2p/libp2p_service.d.ts +165 -101
  274. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  275. package/dest/services/libp2p/libp2p_service.js +1478 -350
  276. package/dest/services/peer-manager/interface.d.ts +23 -0
  277. package/dest/services/peer-manager/interface.d.ts.map +1 -0
  278. package/dest/services/peer-manager/interface.js +1 -0
  279. package/dest/services/peer-manager/metrics.d.ts +14 -3
  280. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  281. package/dest/services/peer-manager/metrics.js +50 -12
  282. package/dest/services/peer-manager/peer_manager.d.ts +103 -23
  283. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  284. package/dest/services/peer-manager/peer_manager.js +552 -82
  285. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  286. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  287. package/dest/services/peer-manager/peer_scoring.js +68 -4
  288. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +54 -0
  289. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  290. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +556 -0
  291. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  292. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  293. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  294. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +48 -0
  295. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  296. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  297. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +35 -0
  298. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  299. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +136 -0
  300. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +62 -0
  301. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  302. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +176 -0
  303. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
  304. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  305. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
  306. package/dest/services/reqresp/config.d.ts +11 -9
  307. package/dest/services/reqresp/config.d.ts.map +1 -1
  308. package/dest/services/reqresp/config.js +18 -4
  309. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +23 -4
  310. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  311. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +73 -10
  312. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +32 -17
  313. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  314. package/dest/services/reqresp/connection-sampler/connection_sampler.js +154 -84
  315. package/dest/services/reqresp/constants.d.ts +12 -0
  316. package/dest/services/reqresp/constants.d.ts.map +1 -0
  317. package/dest/services/reqresp/constants.js +7 -0
  318. package/dest/services/reqresp/index.d.ts +3 -2
  319. package/dest/services/reqresp/index.d.ts.map +1 -1
  320. package/dest/services/reqresp/index.js +2 -1
  321. package/dest/services/reqresp/interface.d.ts +84 -24
  322. package/dest/services/reqresp/interface.d.ts.map +1 -1
  323. package/dest/services/reqresp/interface.js +60 -27
  324. package/dest/services/reqresp/metrics.d.ts +6 -5
  325. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  326. package/dest/services/reqresp/metrics.js +17 -21
  327. package/dest/services/reqresp/protocols/auth.d.ts +43 -0
  328. package/dest/services/reqresp/protocols/auth.d.ts.map +1 -0
  329. package/dest/services/reqresp/protocols/auth.js +71 -0
  330. package/dest/services/reqresp/protocols/block.d.ts +6 -1
  331. package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
  332. package/dest/services/reqresp/protocols/block.js +30 -6
  333. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +34 -0
  334. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -0
  335. package/dest/services/reqresp/protocols/block_txs/bitvector.js +87 -0
  336. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +13 -0
  337. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -0
  338. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +57 -0
  339. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +70 -0
  340. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -0
  341. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +121 -0
  342. package/dest/services/reqresp/protocols/block_txs/index.d.ts +4 -0
  343. package/dest/services/reqresp/protocols/block_txs/index.d.ts.map +1 -0
  344. package/dest/services/reqresp/protocols/block_txs/index.js +3 -0
  345. package/dest/services/reqresp/protocols/goodbye.d.ts +3 -5
  346. package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
  347. package/dest/services/reqresp/protocols/goodbye.js +7 -7
  348. package/dest/services/reqresp/protocols/index.d.ts +3 -1
  349. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  350. package/dest/services/reqresp/protocols/index.js +2 -0
  351. package/dest/services/reqresp/protocols/ping.d.ts +1 -3
  352. package/dest/services/reqresp/protocols/ping.d.ts.map +1 -1
  353. package/dest/services/reqresp/protocols/status.d.ts +40 -7
  354. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  355. package/dest/services/reqresp/protocols/status.js +76 -5
  356. package/dest/services/reqresp/protocols/tx.d.ts +20 -4
  357. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  358. package/dest/services/reqresp/protocols/tx.js +54 -6
  359. package/dest/services/reqresp/rate-limiter/index.d.ts +1 -1
  360. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +6 -4
  361. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  362. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -2
  363. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  364. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  365. package/dest/services/reqresp/rate-limiter/rate_limits.js +21 -1
  366. package/dest/services/reqresp/reqresp.d.ts +29 -66
  367. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  368. package/dest/services/reqresp/reqresp.js +762 -249
  369. package/dest/services/reqresp/status.d.ts +10 -4
  370. package/dest/services/reqresp/status.d.ts.map +1 -1
  371. package/dest/services/reqresp/status.js +9 -2
  372. package/dest/services/service.d.ts +76 -20
  373. package/dest/services/service.d.ts.map +1 -1
  374. package/dest/services/tx_collection/config.d.ts +46 -0
  375. package/dest/services/tx_collection/config.d.ts.map +1 -0
  376. package/dest/services/tx_collection/config.js +112 -0
  377. package/dest/services/tx_collection/fast_tx_collection.d.ts +54 -0
  378. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -0
  379. package/dest/services/tx_collection/fast_tx_collection.js +327 -0
  380. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  381. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  382. package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
  383. package/dest/services/tx_collection/file_store_tx_source.d.ts +37 -0
  384. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  385. package/dest/services/tx_collection/file_store_tx_source.js +90 -0
  386. package/dest/services/tx_collection/index.d.ts +5 -0
  387. package/dest/services/tx_collection/index.d.ts.map +1 -0
  388. package/dest/services/tx_collection/index.js +4 -0
  389. package/dest/services/tx_collection/instrumentation.d.ts +10 -0
  390. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -0
  391. package/dest/services/tx_collection/instrumentation.js +32 -0
  392. package/dest/services/tx_collection/missing_txs_tracker.d.ts +32 -0
  393. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +1 -0
  394. package/dest/services/tx_collection/missing_txs_tracker.js +27 -0
  395. package/dest/services/tx_collection/proposal_tx_collector.d.ts +49 -0
  396. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
  397. package/dest/services/tx_collection/proposal_tx_collector.js +50 -0
  398. package/dest/services/tx_collection/slow_tx_collection.d.ts +57 -0
  399. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -0
  400. package/dest/services/tx_collection/slow_tx_collection.js +211 -0
  401. package/dest/services/tx_collection/tx_collection.d.ts +123 -0
  402. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -0
  403. package/dest/services/tx_collection/tx_collection.js +200 -0
  404. package/dest/services/tx_collection/tx_collection_sink.d.ts +40 -0
  405. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -0
  406. package/dest/services/tx_collection/tx_collection_sink.js +108 -0
  407. package/dest/services/tx_collection/tx_source.d.ts +23 -0
  408. package/dest/services/tx_collection/tx_source.d.ts.map +1 -0
  409. package/dest/services/tx_collection/tx_source.js +48 -0
  410. package/dest/services/tx_file_store/config.d.ts +16 -0
  411. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  412. package/dest/services/tx_file_store/config.js +22 -0
  413. package/dest/services/tx_file_store/index.d.ts +4 -0
  414. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  415. package/dest/services/tx_file_store/index.js +3 -0
  416. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  417. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  418. package/dest/services/tx_file_store/instrumentation.js +29 -0
  419. package/dest/services/tx_file_store/tx_file_store.d.ts +48 -0
  420. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  421. package/dest/services/tx_file_store/tx_file_store.js +152 -0
  422. package/dest/services/tx_provider.d.ts +51 -0
  423. package/dest/services/tx_provider.d.ts.map +1 -0
  424. package/dest/services/tx_provider.js +220 -0
  425. package/dest/services/tx_provider_instrumentation.d.ts +16 -0
  426. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -0
  427. package/dest/services/tx_provider_instrumentation.js +34 -0
  428. package/dest/test-helpers/generate-peer-id-private-keys.d.ts +1 -1
  429. package/dest/test-helpers/get-ports.d.ts +1 -1
  430. package/dest/test-helpers/get-ports.d.ts.map +1 -1
  431. package/dest/test-helpers/index.d.ts +4 -1
  432. package/dest/test-helpers/index.d.ts.map +1 -1
  433. package/dest/test-helpers/index.js +3 -0
  434. package/dest/test-helpers/make-enrs.d.ts +1 -1
  435. package/dest/test-helpers/make-enrs.d.ts.map +1 -1
  436. package/dest/test-helpers/make-enrs.js +4 -5
  437. package/dest/test-helpers/make-test-p2p-clients.d.ts +35 -8
  438. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  439. package/dest/test-helpers/make-test-p2p-clients.js +86 -17
  440. package/dest/test-helpers/mock-pubsub.d.ts +85 -0
  441. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -0
  442. package/dest/test-helpers/mock-pubsub.js +231 -0
  443. package/dest/test-helpers/mock-tx-helpers.d.ts +12 -0
  444. package/dest/test-helpers/mock-tx-helpers.d.ts.map +1 -0
  445. package/dest/test-helpers/mock-tx-helpers.js +19 -0
  446. package/dest/test-helpers/reqresp-nodes.d.ts +15 -12
  447. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  448. package/dest/test-helpers/reqresp-nodes.js +63 -28
  449. package/dest/test-helpers/test_tx_provider.d.ts +40 -0
  450. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  451. package/dest/test-helpers/test_tx_provider.js +41 -0
  452. package/dest/test-helpers/testbench-utils.d.ts +163 -0
  453. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  454. package/dest/test-helpers/testbench-utils.js +367 -0
  455. package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
  456. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  457. package/dest/testbench/p2p_client_testbench_worker.js +261 -91
  458. package/dest/testbench/parse_log_file.d.ts +1 -1
  459. package/dest/testbench/parse_log_file.js +4 -4
  460. package/dest/testbench/testbench.d.ts +1 -1
  461. package/dest/testbench/testbench.js +4 -4
  462. package/dest/testbench/worker_client_manager.d.ts +53 -11
  463. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  464. package/dest/testbench/worker_client_manager.js +237 -54
  465. package/dest/types/index.d.ts +4 -2
  466. package/dest/types/index.d.ts.map +1 -1
  467. package/dest/types/index.js +2 -0
  468. package/dest/util.d.ts +25 -17
  469. package/dest/util.d.ts.map +1 -1
  470. package/dest/util.js +75 -69
  471. package/dest/versioning.d.ts +4 -4
  472. package/dest/versioning.d.ts.map +1 -1
  473. package/dest/versioning.js +8 -3
  474. package/package.json +32 -27
  475. package/src/bootstrap/bootstrap.ts +34 -15
  476. package/src/client/factory.ts +215 -58
  477. package/src/client/index.ts +1 -0
  478. package/src/client/interface.ts +235 -0
  479. package/src/client/p2p_client.ts +474 -457
  480. package/src/client/test/tx_proposal_collector/README.md +227 -0
  481. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +345 -0
  482. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
  483. package/src/config.ts +409 -135
  484. package/src/enr/generate-enr.ts +39 -6
  485. package/src/errors/attestation-pool.error.ts +13 -0
  486. package/src/errors/tx-pool.error.ts +12 -0
  487. package/src/index.ts +5 -0
  488. package/src/mem_pools/attestation_pool/attestation_pool.ts +530 -29
  489. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +692 -201
  490. package/src/mem_pools/attestation_pool/index.ts +9 -2
  491. package/src/mem_pools/attestation_pool/mocks.ts +25 -17
  492. package/src/mem_pools/index.ts +4 -1
  493. package/src/mem_pools/instrumentation.ts +75 -47
  494. package/src/mem_pools/interface.ts +5 -7
  495. package/src/mem_pools/tx_pool/README.md +270 -0
  496. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +580 -143
  497. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +132 -0
  498. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +208 -0
  499. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +163 -0
  500. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +104 -0
  501. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +93 -0
  502. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +106 -0
  503. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
  504. package/src/mem_pools/tx_pool/index.ts +0 -1
  505. package/src/mem_pools/tx_pool/priority.ts +10 -3
  506. package/src/mem_pools/tx_pool/tx_pool.ts +75 -10
  507. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +228 -37
  508. package/src/mem_pools/tx_pool_v2/README.md +283 -0
  509. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  510. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  511. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  512. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  513. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +122 -0
  514. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
  515. package/src/mem_pools/tx_pool_v2/eviction/index.ts +27 -0
  516. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +219 -0
  517. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  518. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  519. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
  520. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +99 -0
  521. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +32 -0
  522. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  523. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  524. package/src/mem_pools/tx_pool_v2/interfaces.ts +247 -0
  525. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +337 -0
  526. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  527. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +430 -0
  528. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +238 -0
  529. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1105 -0
  530. package/src/msg_validators/attestation_validator/README.md +49 -0
  531. package/src/msg_validators/attestation_validator/attestation_validator.ts +72 -14
  532. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +94 -0
  533. package/src/msg_validators/attestation_validator/index.ts +1 -0
  534. package/src/msg_validators/clock_tolerance.ts +51 -0
  535. package/src/msg_validators/index.ts +1 -1
  536. package/src/msg_validators/msg_seen_validator/msg_seen_validator.ts +36 -0
  537. package/src/msg_validators/proposal_validator/README.md +123 -0
  538. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +20 -0
  539. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +26 -0
  540. package/src/msg_validators/proposal_validator/index.ts +3 -0
  541. package/src/msg_validators/proposal_validator/proposal_validator.ts +115 -0
  542. package/src/msg_validators/tx_validator/README.md +119 -0
  543. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +5 -5
  544. package/src/msg_validators/tx_validator/allowed_public_setup.ts +30 -0
  545. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  546. package/src/msg_validators/tx_validator/archive_cache.ts +28 -0
  547. package/src/msg_validators/tx_validator/block_header_validator.ts +23 -10
  548. package/src/msg_validators/tx_validator/data_validator.ts +95 -71
  549. package/src/msg_validators/tx_validator/double_spend_validator.ts +31 -23
  550. package/src/msg_validators/tx_validator/factory.ts +460 -0
  551. package/src/msg_validators/tx_validator/fee_payer_balance.ts +44 -0
  552. package/src/msg_validators/tx_validator/gas_validator.ts +219 -0
  553. package/src/msg_validators/tx_validator/index.ts +10 -0
  554. package/src/msg_validators/tx_validator/metadata_validator.ts +80 -24
  555. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  556. package/src/msg_validators/tx_validator/phases_validator.ts +173 -0
  557. package/src/msg_validators/tx_validator/size_validator.ts +22 -0
  558. package/src/msg_validators/tx_validator/test_utils.ts +43 -0
  559. package/src/msg_validators/tx_validator/timestamp_validator.ts +57 -0
  560. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +22 -0
  561. package/src/msg_validators/tx_validator/tx_proof_validator.ts +14 -8
  562. package/src/services/data_store.ts +10 -7
  563. package/src/services/discv5/discV5_service.ts +85 -39
  564. package/src/services/dummy_service.ts +210 -9
  565. package/src/services/encoding.ts +87 -11
  566. package/src/services/gossipsub/README.md +641 -0
  567. package/src/services/gossipsub/index.ts +2 -0
  568. package/src/services/gossipsub/scoring.ts +29 -5
  569. package/src/services/gossipsub/topic_score_params.ts +487 -0
  570. package/src/services/index.ts +5 -0
  571. package/src/services/libp2p/instrumentation.ts +126 -0
  572. package/src/services/libp2p/libp2p_service.ts +1335 -402
  573. package/src/services/peer-manager/interface.ts +29 -0
  574. package/src/services/peer-manager/metrics.ts +62 -12
  575. package/src/services/peer-manager/peer_manager.ts +658 -80
  576. package/src/services/peer-manager/peer_scoring.ts +70 -3
  577. package/src/services/reqresp/README.md +229 -0
  578. package/src/services/reqresp/batch-tx-requester/README.md +305 -0
  579. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +698 -0
  580. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  581. package/src/services/reqresp/batch-tx-requester/interface.ts +55 -0
  582. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +168 -0
  583. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +249 -0
  584. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
  585. package/src/services/reqresp/config.ts +26 -9
  586. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +77 -10
  587. package/src/services/reqresp/connection-sampler/connection_sampler.ts +166 -95
  588. package/src/services/reqresp/constants.ts +14 -0
  589. package/src/services/reqresp/index.ts +2 -0
  590. package/src/services/reqresp/interface.ts +120 -37
  591. package/src/services/reqresp/metrics.ts +40 -28
  592. package/src/services/reqresp/protocols/auth.ts +83 -0
  593. package/src/services/reqresp/protocols/block.ts +26 -4
  594. package/src/services/reqresp/protocols/block_txs/bitvector.ts +106 -0
  595. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +76 -0
  596. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +144 -0
  597. package/src/services/reqresp/protocols/block_txs/index.ts +3 -0
  598. package/src/services/reqresp/protocols/goodbye.ts +9 -7
  599. package/src/services/reqresp/protocols/index.ts +2 -0
  600. package/src/services/reqresp/protocols/status.ts +121 -5
  601. package/src/services/reqresp/protocols/tx.ts +58 -8
  602. package/src/services/reqresp/rate-limiter/rate_limiter.ts +12 -3
  603. package/src/services/reqresp/rate-limiter/rate_limits.ts +21 -1
  604. package/src/services/reqresp/reqresp.ts +462 -272
  605. package/src/services/reqresp/status.ts +12 -3
  606. package/src/services/service.ts +114 -22
  607. package/src/services/tx_collection/config.ts +166 -0
  608. package/src/services/tx_collection/fast_tx_collection.ts +387 -0
  609. package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
  610. package/src/services/tx_collection/file_store_tx_source.ts +117 -0
  611. package/src/services/tx_collection/index.ts +8 -0
  612. package/src/services/tx_collection/instrumentation.ts +41 -0
  613. package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
  614. package/src/services/tx_collection/proposal_tx_collector.ts +113 -0
  615. package/src/services/tx_collection/slow_tx_collection.ts +266 -0
  616. package/src/services/tx_collection/tx_collection.ts +313 -0
  617. package/src/services/tx_collection/tx_collection_sink.ts +125 -0
  618. package/src/services/tx_collection/tx_source.ts +56 -0
  619. package/src/services/tx_file_store/config.ts +37 -0
  620. package/src/services/tx_file_store/index.ts +3 -0
  621. package/src/services/tx_file_store/instrumentation.ts +36 -0
  622. package/src/services/tx_file_store/tx_file_store.ts +175 -0
  623. package/src/services/tx_provider.ts +233 -0
  624. package/src/services/tx_provider_instrumentation.ts +54 -0
  625. package/src/test-helpers/index.ts +3 -0
  626. package/src/test-helpers/make-enrs.ts +4 -5
  627. package/src/test-helpers/make-test-p2p-clients.ts +114 -26
  628. package/src/test-helpers/mock-pubsub.ts +325 -0
  629. package/src/test-helpers/mock-tx-helpers.ts +24 -0
  630. package/src/test-helpers/reqresp-nodes.ts +91 -42
  631. package/src/test-helpers/test_tx_provider.ts +64 -0
  632. package/src/test-helpers/testbench-utils.ts +431 -0
  633. package/src/testbench/p2p_client_testbench_worker.ts +442 -93
  634. package/src/testbench/parse_log_file.ts +4 -4
  635. package/src/testbench/testbench.ts +4 -4
  636. package/src/testbench/worker_client_manager.ts +323 -59
  637. package/src/types/index.ts +2 -0
  638. package/src/util.ts +112 -92
  639. package/src/versioning.ts +11 -4
  640. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -22
  641. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  642. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -112
  643. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -17
  644. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  645. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -129
  646. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +0 -56
  647. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +0 -1
  648. package/dest/mem_pools/tx_pool/memory_tx_pool.js +0 -141
  649. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -8
  650. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
  651. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +0 -21
  652. package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
  653. package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
  654. package/dest/msg_validators/block_proposal_validator/index.js +0 -1
  655. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -159
  656. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -161
  657. package/src/mem_pools/tx_pool/memory_tx_pool.ts +0 -174
  658. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -29
  659. package/src/msg_validators/block_proposal_validator/index.ts +0 -1
package/src/config.ts CHANGED
@@ -1,78 +1,94 @@
1
1
  import {
2
2
  type ConfigMappingsType,
3
+ SecretValue,
4
+ bigintConfigHelper,
3
5
  booleanConfigHelper,
4
6
  getConfigFromMappings,
5
7
  getDefaultConfig,
6
8
  numberConfigHelper,
9
+ percentageConfigHelper,
7
10
  pickConfigMappings,
11
+ secretStringConfigHelper,
8
12
  } from '@aztec/foundation/config';
9
- import { type DataStoreConfig, dataConfigMappings } from '@aztec/kv-store/config';
10
- import { type ChainConfig, chainConfigMappings } from '@aztec/stdlib/config';
13
+ import { Fr } from '@aztec/foundation/curves/bn254';
14
+ import { FunctionSelector } from '@aztec/stdlib/abi/function-selector';
15
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
16
+ import {
17
+ type AllowedElement,
18
+ type ChainConfig,
19
+ type SequencerConfig,
20
+ chainConfigMappings,
21
+ sharedSequencerConfigMappings,
22
+ } from '@aztec/stdlib/config';
23
+ import { type DataStoreConfig, dataConfigMappings } from '@aztec/stdlib/kv-store';
11
24
 
25
+ import {
26
+ type BatchTxRequesterConfig,
27
+ batchTxRequesterConfigMappings,
28
+ } from './services/reqresp/batch-tx-requester/config.js';
12
29
  import { type P2PReqRespConfig, p2pReqRespConfigMappings } from './services/reqresp/config.js';
30
+ import { type TxCollectionConfig, txCollectionConfigMappings } from './services/tx_collection/config.js';
31
+ import { type TxFileStoreConfig, txFileStoreConfigMappings } from './services/tx_file_store/config.js';
13
32
 
14
33
  /**
15
34
  * P2P client configuration values.
16
35
  */
17
- export interface P2PConfig extends P2PReqRespConfig, ChainConfig {
18
- /**
19
- * A flag dictating whether the P2P subsystem should be enabled.
20
- */
36
+ export interface P2PConfig
37
+ extends P2PReqRespConfig,
38
+ BatchTxRequesterConfig,
39
+ ChainConfig,
40
+ TxCollectionConfig,
41
+ TxFileStoreConfig,
42
+ Pick<SequencerConfig, 'blockDurationMs' | 'expectedBlockProposalsPerSlot' | 'maxTxsPerBlock'> {
43
+ /** Maximum transactions per block for validation. Overrides maxTxsPerBlock for gossip validation when set. */
44
+ validateMaxTxsPerBlock?: number;
45
+
46
+ /** Maximum L2 gas per block for validation. When set, txs exceeding this limit are rejected. */
47
+ validateMaxL2BlockGas?: number;
48
+
49
+ /** Maximum DA gas per block for validation. When set, txs exceeding this limit are rejected. */
50
+ validateMaxDABlockGas?: number;
51
+
52
+ /** A flag dictating whether the P2P subsystem should be enabled. */
21
53
  p2pEnabled: boolean;
22
54
 
23
- /**
24
- * The frequency in which to check for new L2 blocks.
25
- */
55
+ /** The frequency in which to check for new L2 blocks. */
26
56
  blockCheckIntervalMS: number;
27
57
 
28
- /**
29
- * The number of blocks to fetch in a single batch.
30
- */
58
+ /** The frequency in which to check for new L2 slots. */
59
+ slotCheckIntervalMS: number;
60
+
61
+ /** The number of blocks to fetch in a single batch. */
31
62
  blockRequestBatchSize: number;
32
63
 
33
- /**
34
- * DEBUG: Disable colocation penalty - for testing purposes only
35
- */
64
+ /** DEBUG: Disable colocation penalty - for testing purposes only */
36
65
  debugDisableColocationPenalty: boolean;
37
66
 
38
- /**
39
- * The frequency in which to check for new peers.
40
- */
67
+ /** The frequency in which to check for new peers. */
41
68
  peerCheckIntervalMS: number;
42
69
 
43
- /**
44
- * Size of queue of L2 blocks to store.
45
- */
70
+ /** Size of queue of L2 blocks to store. */
46
71
  l2QueueSize: number;
47
72
 
48
- /**
49
- * The announce address for TCP.
50
- */
51
- tcpAnnounceAddress?: string;
52
-
53
- /**
54
- * The announce address for UDP.
55
- */
56
- udpAnnounceAddress?: string;
57
-
58
- /**
59
- * The listen address for TCP.
60
- */
61
- tcpListenAddress: string;
62
-
63
- /**
64
- * The listen address for UDP.
65
- */
66
- udpListenAddress: string;
67
-
68
- /**
69
- * An optional peer id private key. If blank, will generate a random key.
70
- */
71
- peerIdPrivateKey?: string;
72
-
73
- /**
74
- * A list of bootstrap peers to connect to.
75
- */
73
+ /** The port for the P2P service. */
74
+ p2pPort: number;
75
+
76
+ /** The port to broadcast the P2P service on (included in the node's ENR). */
77
+ p2pBroadcastPort?: number;
78
+
79
+ /** The IP address for the P2P service. */
80
+ p2pIp?: string;
81
+
82
+ /** The listen address. */
83
+ listenAddress: string;
84
+
85
+ /** An optional peer id private key. If blank, will generate a random key. */
86
+ peerIdPrivateKey?: SecretValue<string>;
87
+
88
+ /** An optional path to store generated peer id private keys. If blank, will default to storing any generated keys in the data directory. */
89
+ peerIdPrivateKeyPath?: string;
90
+
91
+ /** A list of bootstrap peers to connect to. */
76
92
  bootstrapNodes: string[];
77
93
 
78
94
  /** Whether to execute the version check in the bootstrap node ENR. */
@@ -81,102 +97,153 @@ export interface P2PConfig extends P2PReqRespConfig, ChainConfig {
81
97
  /** Whether to consider any configured bootnodes as full peers, e.g. for transaction gossiping */
82
98
  bootstrapNodesAsFullPeers: boolean;
83
99
 
84
- /**
85
- * The maximum number of peers (a peer count above this will cause the node to refuse connection attempts)
86
- */
100
+ /** The maximum number of peers (a peer count above this will cause the node to refuse connection attempts) */
87
101
  maxPeerCount: number;
88
102
 
89
- /**
90
- * If announceUdpAddress or announceTcpAddress are not provided, query for the IP address of the machine. Default is false.
91
- */
103
+ /** If announceUdpAddress or announceTcpAddress are not provided, query for the IP address of the machine. Default is false. */
92
104
  queryForIp: boolean;
93
105
 
94
- /** How many blocks have to pass after a block is proven before its txs are deleted (zero to delete immediately once proven) */
95
- keepProvenTxsInPoolFor: number;
96
-
97
- /** How many slots to keep attestations for. */
98
- keepAttestationsInPoolFor: number;
99
-
100
- /**
101
- * The interval of the gossipsub heartbeat to perform maintenance tasks.
102
- */
106
+ /** The interval of the gossipsub heartbeat to perform maintenance tasks. */
103
107
  gossipsubInterval: number;
104
108
 
105
- /**
106
- * The D parameter for the gossipsub protocol.
107
- */
109
+ /** The D parameter for the gossipsub protocol. */
108
110
  gossipsubD: number;
109
111
 
110
- /**
111
- * The Dlo parameter for the gossipsub protocol.
112
- */
112
+ /** The Dlo parameter for the gossipsub protocol. */
113
113
  gossipsubDlo: number;
114
114
 
115
- /**
116
- * The Dhi parameter for the gossipsub protocol.
117
- */
115
+ /** The Dhi parameter for the gossipsub protocol. */
118
116
  gossipsubDhi: number;
119
117
 
120
- /**
121
- * The Dlazy parameter for the gossipsub protocol.
122
- */
118
+ /** The Dlazy parameter for the gossipsub protocol. */
123
119
  gossipsubDLazy: number;
124
120
 
125
- /**
126
- * Whether to flood publish messages. - For testing purposes only
127
- */
121
+ /** Whether to flood publish messages. - For testing purposes only */
128
122
  gossipsubFloodPublish: boolean;
129
123
 
130
- /**
131
- * The number of gossipsub interval message cache windows to keep.
132
- */
124
+ /** The number of gossipsub interval message cache windows to keep. */
133
125
  gossipsubMcacheLength: number;
134
126
 
135
- /**
136
- * How many message cache windows to include when gossiping with other pears.
137
- */
127
+ /** How many message cache windows to include when gossiping with other pears. */
138
128
  gossipsubMcacheGossip: number;
139
129
 
140
- /**
141
- * The 'age' (in # of L2 blocks) of a processed tx after which we heavily penalize a peer for re-sending it.
142
- */
130
+ /** How long to keep message IDs in the seen cache (ms). */
131
+ gossipsubSeenTTL: number;
132
+
133
+ /** The 'age' (in # of L2 blocks) of a processed tx after which we heavily penalize a peer for re-sending it. */
143
134
  doubleSpendSeverePeerPenaltyWindow: number;
144
135
 
145
- /**
146
- * The weight of the tx topic for the gossipsub protocol. This determines how much the score for this specific topic contributes to the overall peer score.
147
- */
136
+ /** The weight of the tx topic for the gossipsub protocol. This determines how much the score for this specific topic contributes to the overall peer score. */
148
137
  gossipsubTxTopicWeight: number;
149
138
 
150
- /**
151
- * This is the weight applied to the penalty for delivering invalid messages.
152
- */
139
+ /** This is the weight applied to the penalty for delivering invalid messages. */
153
140
  gossipsubTxInvalidMessageDeliveriesWeight: number;
154
141
 
155
- /**
156
- * determines how quickly the penalty for invalid message deliveries decays over time. Between 0 and 1.
157
- */
142
+ /** determines how quickly the penalty for invalid message deliveries decays over time. Between 0 and 1. */
158
143
  gossipsubTxInvalidMessageDeliveriesDecay: number;
159
144
 
160
- /**
161
- * The values for the peer scoring system. Passed as a comma separated list of values in order: low, mid, high tolerance errors.
162
- */
145
+ /** The values for the peer scoring system. Passed as a comma separated list of values in order: low, mid, high tolerance errors. */
163
146
  peerPenaltyValues: number[];
164
147
 
165
148
  /** Limit of transactions to archive in the tx pool. Once the archived tx limit is reached, the oldest archived txs will be purged. */
166
149
  archivedTxLimit: number;
150
+
151
+ /** A list of trusted peers. */
152
+ trustedPeers: string[];
153
+
154
+ /** A list of private peers. */
155
+ privatePeers: string[];
156
+
157
+ /** A list of preferred peers. */
158
+ preferredPeers: string[];
159
+
160
+ /** The maximum possible size of the P2P DB in KB. Overwrites the general dataStoreMapSizeKb. */
161
+ p2pStoreMapSizeKb?: number;
162
+
163
+ /** Additional entries to extend the default setup allow list. */
164
+ txPublicSetupAllowListExtend: AllowedElement[];
165
+
166
+ /** The maximum number of pending txs before evicting lower priority txs. */
167
+ maxPendingTxCount: number;
168
+
169
+ /** The node's seen message ID cache size */
170
+ seenMessageCacheSize: number;
171
+
172
+ /** True to disable the status handshake on peer connected. */
173
+ p2pDisableStatusHandshake?: boolean;
174
+
175
+ /** True to only permit validators to connect */
176
+ p2pAllowOnlyValidators?: boolean;
177
+
178
+ /** True to disable participating in discovery */
179
+ p2pDiscoveryDisabled?: boolean;
180
+ /** Number of auth attempts to allow before peer is banned. Number is inclusive*/
181
+ p2pMaxFailedAuthAttemptsAllowed: number;
182
+
183
+ /** Whether transactions are disabled for this node. This means transactions will be rejected at the RPC and P2P layers. */
184
+ disableTransactions: boolean;
185
+
186
+ /** The probability that a transaction is discarded (0 = disabled). - For testing purposes only */
187
+ dropTransactionsProbability: number;
188
+
189
+ /** Whether to delete transactions from the pool after a reorg instead of moving them back to pending. */
190
+ txPoolDeleteTxsAfterReorg: boolean;
191
+
192
+ /** Alters the format of p2p messages to include things like broadcast timestamp FOR TESTING ONLY */
193
+ debugP2PInstrumentMessages: boolean;
194
+
195
+ /** Whether to run in fisherman mode: validates all proposals and attestations but does not broadcast attestations or participate in consensus */
196
+ fishermanMode: boolean;
197
+
198
+ /** Broadcast block proposals even when a conflicting proposal for the same slot already exists in the pool (for testing purposes only). */
199
+ broadcastEquivocatedProposals?: boolean;
200
+
201
+ /** Minimum age (ms) a transaction must have been in the pool before it's eligible for block building. */
202
+ minTxPoolAgeMs: number;
203
+
204
+ /** Minimum percentage fee increase required to replace an existing tx via RPC (0 = no bump). */
205
+ priceBumpPercentage: bigint;
167
206
  }
168
207
 
208
+ export const DEFAULT_P2P_PORT = 40400;
209
+
169
210
  export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
211
+ validateMaxTxsPerBlock: {
212
+ env: 'VALIDATOR_MAX_TX_PER_BLOCK',
213
+ description:
214
+ 'Maximum transactions per block for validation. Overrides maxTxsPerBlock for gossip validation when set.',
215
+ parseEnv: (val: string) => (val ? parseInt(val, 10) : undefined),
216
+ },
217
+ validateMaxL2BlockGas: {
218
+ env: 'VALIDATOR_MAX_L2_BLOCK_GAS',
219
+ description: 'Maximum L2 gas per block for validation. When set, txs exceeding this limit are rejected.',
220
+ parseEnv: (val: string) => (val ? parseInt(val, 10) : undefined),
221
+ },
222
+ validateMaxDABlockGas: {
223
+ env: 'VALIDATOR_MAX_DA_BLOCK_GAS',
224
+ description: 'Maximum DA gas per block for validation. When set, txs exceeding this limit are rejected.',
225
+ parseEnv: (val: string) => (val ? parseInt(val, 10) : undefined),
226
+ },
170
227
  p2pEnabled: {
171
228
  env: 'P2P_ENABLED',
172
229
  description: 'A flag dictating whether the P2P subsystem should be enabled.',
173
230
  ...booleanConfigHelper(),
174
231
  },
232
+ p2pDiscoveryDisabled: {
233
+ env: 'P2P_DISCOVERY_DISABLED',
234
+ description: 'A flag dictating whether the P2P discovery system should be disabled.',
235
+ ...booleanConfigHelper(false),
236
+ },
175
237
  blockCheckIntervalMS: {
176
238
  env: 'P2P_BLOCK_CHECK_INTERVAL_MS',
177
239
  description: 'The frequency in which to check for new L2 blocks.',
178
240
  ...numberConfigHelper(100),
179
241
  },
242
+ slotCheckIntervalMS: {
243
+ env: 'P2P_SLOT_CHECK_INTERVAL_MS',
244
+ description: 'The frequency in which to check for new L2 slots.',
245
+ ...numberConfigHelper(1000),
246
+ },
180
247
  debugDisableColocationPenalty: {
181
248
  env: 'DEBUG_P2P_DISABLE_COLOCATION_PENALTY',
182
249
  description: 'DEBUG: Disable colocation penalty - NEVER set to true in production',
@@ -192,34 +259,39 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
192
259
  description: 'Size of queue of L2 blocks to store.',
193
260
  ...numberConfigHelper(1_000),
194
261
  },
195
- tcpListenAddress: {
196
- env: 'P2P_TCP_LISTEN_ADDR',
197
- defaultValue: '0.0.0.0:40400',
198
- description: 'The listen address for TCP. Format: <IP_ADDRESS>:<PORT>.',
262
+ listenAddress: {
263
+ env: 'P2P_LISTEN_ADDR',
264
+ defaultValue: '0.0.0.0',
265
+ description: 'The listen address. ipv4 address.',
199
266
  },
200
- udpListenAddress: {
201
- env: 'P2P_UDP_LISTEN_ADDR',
202
- defaultValue: '0.0.0.0:40400',
203
- description: 'The listen address for UDP. Format: <IP_ADDRESS>:<PORT>.',
267
+ p2pPort: {
268
+ env: 'P2P_PORT',
269
+ description: `The port for the P2P service. Defaults to ${DEFAULT_P2P_PORT}`,
270
+ ...numberConfigHelper(DEFAULT_P2P_PORT),
204
271
  },
205
- tcpAnnounceAddress: {
206
- env: 'P2P_TCP_ANNOUNCE_ADDR',
207
- description:
208
- 'The announce address for TCP. Format: <IP_ADDRESS>:<PORT>. Leave IP_ADDRESS blank to query for public IP.',
272
+ p2pBroadcastPort: {
273
+ env: 'P2P_BROADCAST_PORT',
274
+ description: `The port to broadcast the P2P service on (included in the node's ENR). Defaults to P2P_PORT.`,
209
275
  },
210
- udpAnnounceAddress: {
211
- env: 'P2P_UDP_ANNOUNCE_ADDR',
212
- description:
213
- 'The announce address for UDP. Format: <IP_ADDRESS>:<PORT>. Leave IP_ADDRESS blank to query for public IP.',
276
+ p2pIp: {
277
+ env: 'P2P_IP',
278
+ description: 'The IP address for the P2P service. ipv4 address.',
214
279
  },
215
280
  peerIdPrivateKey: {
216
281
  env: 'PEER_ID_PRIVATE_KEY',
217
282
  description: 'An optional peer id private key. If blank, will generate a random key.',
283
+ ...secretStringConfigHelper(),
284
+ },
285
+ peerIdPrivateKeyPath: {
286
+ env: 'PEER_ID_PRIVATE_KEY_PATH',
287
+ description:
288
+ 'An optional path to store generated peer id private keys. If blank, will default to storing any generated keys in the root of the data directory.',
218
289
  },
219
290
  bootstrapNodes: {
220
291
  env: 'BOOTSTRAP_NODES',
221
292
  parseEnv: (val: string) => val.split(','),
222
293
  description: 'A list of bootstrap peer ENRs to connect to. Separated by commas.',
294
+ defaultValue: [],
223
295
  },
224
296
  bootstrapNodeEnrVersionCheck: {
225
297
  env: 'P2P_BOOTSTRAP_NODE_ENR_VERSION_CHECK',
@@ -242,17 +314,6 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
242
314
  'If announceUdpAddress or announceTcpAddress are not provided, query for the IP address of the machine. Default is false.',
243
315
  ...booleanConfigHelper(),
244
316
  },
245
- keepProvenTxsInPoolFor: {
246
- env: 'P2P_TX_POOL_KEEP_PROVEN_FOR',
247
- description:
248
- 'How many blocks have to pass after a block is proven before its txs are deleted (zero to delete immediately once proven)',
249
- ...numberConfigHelper(0),
250
- },
251
- keepAttestationsInPoolFor: {
252
- env: 'P2P_ATTESTATION_POOL_KEEP_FOR',
253
- description: 'How many slots to keep attestations for.',
254
- ...numberConfigHelper(96),
255
- },
256
317
  gossipsubInterval: {
257
318
  env: 'P2P_GOSSIPSUB_INTERVAL_MS',
258
319
  description: 'The interval of the gossipsub heartbeat to perform maintenance tasks.',
@@ -281,7 +342,7 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
281
342
  gossipsubFloodPublish: {
282
343
  env: 'P2P_GOSSIPSUB_FLOOD_PUBLISH',
283
344
  description: 'Whether to flood publish messages. - For testing purposes only',
284
- ...booleanConfigHelper(true),
345
+ ...booleanConfigHelper(false),
285
346
  },
286
347
  gossipsubMcacheLength: {
287
348
  env: 'P2P_GOSSIPSUB_MCACHE_LENGTH',
@@ -290,9 +351,14 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
290
351
  },
291
352
  gossipsubMcacheGossip: {
292
353
  env: 'P2P_GOSSIPSUB_MCACHE_GOSSIP',
293
- description: 'How many message cache windows to include when gossiping with other pears.',
354
+ description: 'How many message cache windows to include when gossiping with other peers.',
294
355
  ...numberConfigHelper(3),
295
356
  },
357
+ gossipsubSeenTTL: {
358
+ env: 'P2P_GOSSIPSUB_SEEN_TTL',
359
+ description: 'How long to keep message IDs in the seen cache.',
360
+ ...numberConfigHelper(20 * 60 * 1000),
361
+ },
296
362
  gossipsubTxTopicWeight: {
297
363
  env: 'P2P_GOSSIPSUB_TX_TOPIC_WEIGHT',
298
364
  description: 'The weight of the tx topic for the gossipsub protocol.',
@@ -331,8 +397,115 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
331
397
  'The number of transactions that will be archived. If the limit is set to 0 then archiving will be disabled.',
332
398
  ...numberConfigHelper(0),
333
399
  },
400
+ trustedPeers: {
401
+ env: 'P2P_TRUSTED_PEERS',
402
+ parseEnv: (val: string) => val.split(','),
403
+ description: 'A list of trusted peer ENRs that will always be persisted. Separated by commas.',
404
+ defaultValue: [],
405
+ },
406
+ privatePeers: {
407
+ env: 'P2P_PRIVATE_PEERS',
408
+ parseEnv: (val: string) => val.split(','),
409
+ description:
410
+ 'A list of private peer ENRs that will always be persisted and not be used for discovery. Separated by commas.',
411
+ defaultValue: [],
412
+ },
413
+ preferredPeers: {
414
+ env: 'P2P_PREFERRED_PEERS',
415
+ parseEnv: (val: string) => val.split(','),
416
+ description:
417
+ 'A list of preferred peer ENRs that will always be persisted and not be used for discovery. Separated by commas.',
418
+ defaultValue: [],
419
+ },
420
+ p2pStoreMapSizeKb: {
421
+ env: 'P2P_STORE_MAP_SIZE_KB',
422
+ parseEnv: (val: string | undefined) => (val ? +val : undefined),
423
+ description: 'The maximum possible size of the P2P DB in KB. Overwrites the general dataStoreMapSizeKb.',
424
+ },
425
+ txPublicSetupAllowListExtend: {
426
+ env: 'TX_PUBLIC_SETUP_ALLOWLIST',
427
+ parseEnv: (val: string) => parseAllowList(val),
428
+ description:
429
+ '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 +.',
430
+ printDefault: () =>
431
+ 'Default: AuthRegistry._set_authorized, AuthRegistry.set_authorized, FeeJuice._increase_public_balance',
432
+ },
433
+ maxPendingTxCount: {
434
+ env: 'P2P_MAX_PENDING_TX_COUNT',
435
+ description: 'The maximum number of pending txs before evicting lower priority txs.',
436
+ // Worst case scenario: Uncompressed public/private tx is ~ 156kb
437
+ // This implies we are using ~156MB of memory for pending pool
438
+ ...numberConfigHelper(1_000),
439
+ },
440
+ seenMessageCacheSize: {
441
+ env: 'P2P_SEEN_MSG_CACHE_SIZE',
442
+ description: 'The number of messages to keep in the seen message cache',
443
+ ...numberConfigHelper(100_000), // 100K
444
+ },
445
+ p2pDisableStatusHandshake: {
446
+ env: 'P2P_DISABLE_STATUS_HANDSHAKE',
447
+ description: 'True to disable the status handshake on peer connected.',
448
+ ...booleanConfigHelper(false),
449
+ },
450
+ p2pAllowOnlyValidators: {
451
+ env: 'P2P_ALLOW_ONLY_VALIDATORS',
452
+ description: 'True to only permit validators to connect.',
453
+ ...booleanConfigHelper(false),
454
+ },
455
+ p2pMaxFailedAuthAttemptsAllowed: {
456
+ env: 'P2P_MAX_AUTH_FAILED_ATTEMPTS_ALLOWED',
457
+ description: 'Number of auth attempts to allow before peer is banned. Number is inclusive',
458
+ ...numberConfigHelper(3),
459
+ },
460
+ dropTransactionsProbability: {
461
+ env: 'P2P_DROP_TX_CHANCE',
462
+ description: 'The probability that a transaction is discarded (0 - 1). - For testing purposes only',
463
+ ...percentageConfigHelper(0),
464
+ },
465
+ disableTransactions: {
466
+ env: 'TRANSACTIONS_DISABLED',
467
+ description:
468
+ 'Whether transactions are disabled for this node. This means transactions will be rejected at the RPC and P2P layers.',
469
+ ...booleanConfigHelper(false),
470
+ },
471
+ txPoolDeleteTxsAfterReorg: {
472
+ env: 'P2P_TX_POOL_DELETE_TXS_AFTER_REORG',
473
+ description: 'Whether to delete transactions from the pool after a reorg instead of moving them back to pending.',
474
+ ...booleanConfigHelper(false),
475
+ },
476
+ debugP2PInstrumentMessages: {
477
+ env: 'DEBUG_P2P_INSTRUMENT_MESSAGES',
478
+ description: 'Alters the format of p2p messages to include things like broadcast timestamp FOR TESTING ONLY',
479
+ ...booleanConfigHelper(false),
480
+ },
481
+ fishermanMode: {
482
+ env: 'FISHERMAN_MODE',
483
+ description:
484
+ 'Whether to run in fisherman mode: validates all proposals and attestations but does not broadcast attestations or participate in consensus.',
485
+ ...booleanConfigHelper(false),
486
+ },
487
+ broadcastEquivocatedProposals: {
488
+ description:
489
+ 'Broadcast block proposals even when a conflicting proposal for the same slot already exists in the pool (for testing purposes only).',
490
+ ...booleanConfigHelper(false),
491
+ },
492
+ minTxPoolAgeMs: {
493
+ env: 'P2P_MIN_TX_POOL_AGE_MS',
494
+ description: 'Minimum age (ms) a transaction must have been in the pool before it is eligible for block building.',
495
+ ...numberConfigHelper(2_000),
496
+ },
497
+ priceBumpPercentage: {
498
+ env: 'P2P_RPC_PRICE_BUMP_PERCENTAGE',
499
+ description:
500
+ 'Minimum percentage fee increase required to replace an existing tx via RPC. Even at 0%, replacement still requires paying at least 1 unit more.',
501
+ ...bigintConfigHelper(10n),
502
+ },
503
+ ...sharedSequencerConfigMappings,
334
504
  ...p2pReqRespConfigMappings,
505
+ ...batchTxRequesterConfigMappings,
335
506
  ...chainConfigMappings,
507
+ ...txCollectionConfigMappings,
508
+ ...txFileStoreConfigMappings,
336
509
  };
337
510
 
338
511
  /**
@@ -350,22 +523,123 @@ export function getP2PDefaultConfig(): P2PConfig {
350
523
  /**
351
524
  * Required P2P config values for a bootstrap node.
352
525
  */
353
- export type BootnodeConfig = Pick<P2PConfig, 'udpAnnounceAddress' | 'peerIdPrivateKey' | 'bootstrapNodes'> &
354
- Required<Pick<P2PConfig, 'udpListenAddress'>> &
355
- Pick<DataStoreConfig, 'dataDirectory' | 'dataStoreMapSizeKB'> &
526
+ export type BootnodeConfig = Pick<
527
+ P2PConfig,
528
+ | 'p2pIp'
529
+ | 'p2pPort'
530
+ | 'p2pBroadcastPort'
531
+ | 'peerIdPrivateKey'
532
+ | 'peerIdPrivateKeyPath'
533
+ | 'bootstrapNodes'
534
+ | 'listenAddress'
535
+ | 'queryForIp'
536
+ > &
537
+ Required<Pick<P2PConfig, 'p2pIp' | 'p2pPort'>> &
538
+ Pick<DataStoreConfig, 'dataDirectory' | 'dataStoreMapSizeKb'> &
356
539
  Pick<ChainConfig, 'l1ChainId'>;
357
540
 
358
541
  const bootnodeConfigKeys: (keyof BootnodeConfig)[] = [
359
- 'udpAnnounceAddress',
542
+ 'p2pIp',
543
+ 'p2pPort',
544
+ 'p2pBroadcastPort',
545
+ 'listenAddress',
360
546
  'peerIdPrivateKey',
361
- 'udpListenAddress',
547
+ 'peerIdPrivateKeyPath',
362
548
  'dataDirectory',
363
- 'dataStoreMapSizeKB',
549
+ 'dataStoreMapSizeKb',
364
550
  'bootstrapNodes',
365
551
  'l1ChainId',
552
+ 'queryForIp',
366
553
  ];
367
554
 
368
555
  export const bootnodeConfigMappings = pickConfigMappings(
369
556
  { ...p2pConfigMappings, ...dataConfigMappings, ...chainConfigMappings },
370
557
  bootnodeConfigKeys,
371
558
  );
559
+
560
+ /**
561
+ * Parses a `+`-separated flags string into validation properties for an allow list entry.
562
+ * Supported flags: `os` (onlySelf), `rn` (rejectNullMsgSender), `cl=N` (calldataLength).
563
+ */
564
+ function parseFlags(
565
+ flags: string,
566
+ entry: string,
567
+ ): { onlySelf?: boolean; rejectNullMsgSender?: boolean; calldataLength?: number } {
568
+ const result: { onlySelf?: boolean; rejectNullMsgSender?: boolean; calldataLength?: number } = {};
569
+ for (const flag of flags.split('+')) {
570
+ if (flag === 'os') {
571
+ result.onlySelf = true;
572
+ } else if (flag === 'rn') {
573
+ result.rejectNullMsgSender = true;
574
+ } else if (flag.startsWith('cl=')) {
575
+ const n = parseInt(flag.slice(3), 10);
576
+ if (isNaN(n) || n < 0) {
577
+ throw new Error(
578
+ `Invalid allow list entry "${entry}": invalid calldataLength in flag "${flag}". Expected a non-negative integer.`,
579
+ );
580
+ }
581
+ result.calldataLength = n;
582
+ } else {
583
+ throw new Error(`Invalid allow list entry "${entry}": unknown flag "${flag}". Supported flags: os, rn, cl=N.`);
584
+ }
585
+ }
586
+ return result;
587
+ }
588
+
589
+ /**
590
+ * Parses a string to a list of allowed elements.
591
+ * Each entry is expected to be of one of the following formats:
592
+ * `I:${address}:${selector}` — instance (contract address) with function selector
593
+ * `C:${classId}:${selector}` — class with function selector
594
+ *
595
+ * An optional flags segment can be appended after the selector:
596
+ * `I:${address}:${selector}:${flags}` or `C:${classId}:${selector}:${flags}`
597
+ * where flags is a `+`-separated list of: `os` (onlySelf), `rn` (rejectNullMsgSender), `cl=N` (calldataLength).
598
+ *
599
+ * @param value The string to parse
600
+ * @returns A list of allowed elements
601
+ */
602
+ export function parseAllowList(value: string): AllowedElement[] {
603
+ const entries: AllowedElement[] = [];
604
+
605
+ if (!value) {
606
+ return entries;
607
+ }
608
+
609
+ for (const val of value.split(',')) {
610
+ const trimmed = val.trim();
611
+ if (!trimmed) {
612
+ continue;
613
+ }
614
+ const [typeString, identifierString, selectorString, flagsString] = trimmed.split(':');
615
+
616
+ if (!selectorString) {
617
+ throw new Error(
618
+ `Invalid allow list entry "${trimmed}": selector is required. Expected format: I:address:selector or C:classId:selector`,
619
+ );
620
+ }
621
+
622
+ const selector = FunctionSelector.fromString(selectorString);
623
+ const flags = flagsString ? parseFlags(flagsString, trimmed) : {};
624
+
625
+ if (typeString === 'I') {
626
+ entries.push({
627
+ address: AztecAddress.fromString(identifierString),
628
+ selector,
629
+ ...flags,
630
+ });
631
+ } else if (typeString === 'C') {
632
+ entries.push({
633
+ classId: Fr.fromHexString(identifierString),
634
+ selector,
635
+ ...flags,
636
+ });
637
+ } else {
638
+ throw new Error(
639
+ `Invalid allow list entry "${trimmed}": unknown type "${typeString}". Expected "I" (instance) or "C" (class).`,
640
+ );
641
+ }
642
+ }
643
+
644
+ return entries;
645
+ }