@aztec/p2p 0.0.0-test.0 → 0.0.1-commit.023c3e5

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 (512) hide show
  1. package/dest/bootstrap/bootstrap.d.ts +4 -3
  2. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  3. package/dest/bootstrap/bootstrap.js +26 -13
  4. package/dest/client/factory.d.ts +15 -5
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +61 -25
  7. package/dest/client/index.d.ts +2 -1
  8. package/dest/client/index.d.ts.map +1 -1
  9. package/dest/client/index.js +1 -0
  10. package/dest/client/interface.d.ts +170 -0
  11. package/dest/client/interface.d.ts.map +1 -0
  12. package/dest/client/interface.js +9 -0
  13. package/dest/client/p2p_client.d.ts +75 -193
  14. package/dest/client/p2p_client.d.ts.map +1 -1
  15. package/dest/client/p2p_client.js +765 -229
  16. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +2 -0
  17. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +1 -0
  18. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +305 -0
  19. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +73 -0
  20. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +1 -0
  21. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +8 -0
  22. package/dest/config.d.ts +154 -125
  23. package/dest/config.d.ts.map +1 -1
  24. package/dest/config.js +182 -34
  25. package/dest/enr/generate-enr.d.ts +11 -3
  26. package/dest/enr/generate-enr.d.ts.map +1 -1
  27. package/dest/enr/generate-enr.js +27 -5
  28. package/dest/enr/index.d.ts +1 -1
  29. package/dest/errors/attestation-pool.error.d.ts +7 -0
  30. package/dest/errors/attestation-pool.error.d.ts.map +1 -0
  31. package/dest/errors/attestation-pool.error.js +12 -0
  32. package/dest/errors/reqresp.error.d.ts +1 -1
  33. package/dest/errors/reqresp.error.d.ts.map +1 -1
  34. package/dest/index.d.ts +4 -1
  35. package/dest/index.d.ts.map +1 -1
  36. package/dest/index.js +2 -0
  37. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +104 -25
  38. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  39. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
  40. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  41. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +299 -174
  42. package/dest/mem_pools/attestation_pool/index.d.ts +1 -1
  43. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +29 -11
  44. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
  45. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +168 -62
  46. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +24 -10
  47. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
  48. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +133 -82
  49. package/dest/mem_pools/attestation_pool/mocks.d.ts +234 -11
  50. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  51. package/dest/mem_pools/attestation_pool/mocks.js +19 -21
  52. package/dest/mem_pools/index.d.ts +1 -1
  53. package/dest/mem_pools/instrumentation.d.ts +16 -12
  54. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  55. package/dest/mem_pools/instrumentation.js +56 -41
  56. package/dest/mem_pools/interface.d.ts +3 -4
  57. package/dest/mem_pools/interface.d.ts.map +1 -1
  58. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +75 -16
  59. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  60. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +493 -142
  61. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +32 -0
  62. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -0
  63. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +112 -0
  64. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +157 -0
  65. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -0
  66. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +52 -0
  67. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +16 -0
  68. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  69. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +122 -0
  70. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +17 -0
  71. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  72. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +84 -0
  73. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +19 -0
  74. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  75. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +78 -0
  76. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +26 -0
  77. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  78. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +84 -0
  79. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
  80. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
  81. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
  82. package/dest/mem_pools/tx_pool/index.d.ts +1 -2
  83. package/dest/mem_pools/tx_pool/index.d.ts.map +1 -1
  84. package/dest/mem_pools/tx_pool/index.js +0 -1
  85. package/dest/mem_pools/tx_pool/priority.d.ts +5 -1
  86. package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
  87. package/dest/mem_pools/tx_pool/priority.js +7 -2
  88. package/dest/mem_pools/tx_pool/tx_pool.d.ts +72 -11
  89. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
  90. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
  91. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  92. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +276 -45
  93. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +7 -5
  94. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  95. package/dest/msg_validators/attestation_validator/attestation_validator.js +79 -10
  96. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +20 -0
  97. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -0
  98. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +76 -0
  99. package/dest/msg_validators/attestation_validator/index.d.ts +2 -1
  100. package/dest/msg_validators/attestation_validator/index.d.ts.map +1 -1
  101. package/dest/msg_validators/attestation_validator/index.js +1 -0
  102. package/dest/msg_validators/clock_tolerance.d.ts +21 -0
  103. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
  104. package/dest/msg_validators/clock_tolerance.js +37 -0
  105. package/dest/msg_validators/index.d.ts +2 -2
  106. package/dest/msg_validators/index.d.ts.map +1 -1
  107. package/dest/msg_validators/index.js +1 -1
  108. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts +10 -0
  109. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts.map +1 -0
  110. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.js +36 -0
  111. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +9 -0
  112. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
  113. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +6 -0
  114. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +9 -0
  115. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
  116. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +6 -0
  117. package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
  118. package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
  119. package/dest/msg_validators/proposal_validator/index.js +3 -0
  120. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -0
  121. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
  122. package/dest/msg_validators/proposal_validator/proposal_validator.js +104 -0
  123. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +23 -0
  124. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -0
  125. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +212 -0
  126. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +1 -1
  127. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  128. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +3 -0
  129. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -0
  130. package/dest/msg_validators/tx_validator/allowed_public_setup.js +27 -0
  131. package/dest/msg_validators/tx_validator/archive_cache.d.ts +14 -0
  132. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -0
  133. package/dest/msg_validators/tx_validator/archive_cache.js +22 -0
  134. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +5 -4
  135. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  136. package/dest/msg_validators/tx_validator/block_header_validator.js +7 -6
  137. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  138. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  139. package/dest/msg_validators/tx_validator/data_validator.js +60 -87
  140. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +3 -4
  141. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  142. package/dest/msg_validators/tx_validator/double_spend_validator.js +24 -29
  143. package/dest/msg_validators/tx_validator/factory.d.ts +21 -0
  144. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -0
  145. package/dest/msg_validators/tx_validator/factory.js +84 -0
  146. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
  147. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
  148. package/dest/msg_validators/tx_validator/fee_payer_balance.js +20 -0
  149. package/dest/msg_validators/tx_validator/gas_validator.d.ts +12 -0
  150. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -0
  151. package/dest/msg_validators/tx_validator/gas_validator.js +110 -0
  152. package/dest/msg_validators/tx_validator/index.d.ts +9 -1
  153. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  154. package/dest/msg_validators/tx_validator/index.js +8 -0
  155. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +10 -5
  156. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  157. package/dest/msg_validators/tx_validator/metadata_validator.js +40 -21
  158. package/dest/msg_validators/tx_validator/phases_validator.d.ts +15 -0
  159. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -0
  160. package/dest/msg_validators/tx_validator/phases_validator.js +93 -0
  161. package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
  162. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
  163. package/dest/msg_validators/tx_validator/size_validator.js +23 -0
  164. package/dest/msg_validators/tx_validator/test_utils.d.ts +17 -0
  165. package/dest/msg_validators/tx_validator/test_utils.d.ts.map +1 -0
  166. package/dest/msg_validators/tx_validator/test_utils.js +22 -0
  167. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +14 -0
  168. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -0
  169. package/dest/msg_validators/tx_validator/timestamp_validator.js +32 -0
  170. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +9 -0
  171. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -0
  172. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +24 -0
  173. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  174. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  175. package/dest/msg_validators/tx_validator/tx_proof_validator.js +8 -7
  176. package/dest/services/data_store.d.ts +1 -1
  177. package/dest/services/data_store.d.ts.map +1 -1
  178. package/dest/services/data_store.js +10 -6
  179. package/dest/services/discv5/discV5_service.d.ts +10 -9
  180. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  181. package/dest/services/discv5/discV5_service.js +64 -37
  182. package/dest/services/dummy_service.d.ts +66 -11
  183. package/dest/services/dummy_service.d.ts.map +1 -1
  184. package/dest/services/dummy_service.js +130 -5
  185. package/dest/services/encoding.d.ts +26 -7
  186. package/dest/services/encoding.d.ts.map +1 -1
  187. package/dest/services/encoding.js +75 -6
  188. package/dest/services/gossipsub/scoring.d.ts +1 -1
  189. package/dest/services/index.d.ts +5 -1
  190. package/dest/services/index.d.ts.map +1 -1
  191. package/dest/services/index.js +4 -0
  192. package/dest/services/libp2p/instrumentation.d.ts +20 -0
  193. package/dest/services/libp2p/instrumentation.d.ts.map +1 -0
  194. package/dest/services/libp2p/instrumentation.js +122 -0
  195. package/dest/services/libp2p/libp2p_service.d.ts +107 -95
  196. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  197. package/dest/services/libp2p/libp2p_service.js +1328 -313
  198. package/dest/services/peer-manager/interface.d.ts +23 -0
  199. package/dest/services/peer-manager/interface.d.ts.map +1 -0
  200. package/dest/services/peer-manager/interface.js +1 -0
  201. package/dest/services/peer-manager/metrics.d.ts +12 -3
  202. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  203. package/dest/services/peer-manager/metrics.js +44 -12
  204. package/dest/services/peer-manager/peer_manager.d.ts +103 -23
  205. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  206. package/dest/services/peer-manager/peer_manager.js +551 -82
  207. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  208. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  209. package/dest/services/peer-manager/peer_scoring.js +43 -2
  210. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +47 -0
  211. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  212. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +566 -0
  213. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  214. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  215. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  216. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +50 -0
  217. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  218. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  219. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +37 -0
  220. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  221. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +151 -0
  222. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +54 -0
  223. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  224. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +139 -0
  225. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
  226. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  227. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
  228. package/dest/services/reqresp/config.d.ts +11 -9
  229. package/dest/services/reqresp/config.d.ts.map +1 -1
  230. package/dest/services/reqresp/config.js +18 -4
  231. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +23 -4
  232. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  233. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +73 -10
  234. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +32 -17
  235. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  236. package/dest/services/reqresp/connection-sampler/connection_sampler.js +154 -84
  237. package/dest/services/reqresp/constants.d.ts +12 -0
  238. package/dest/services/reqresp/constants.d.ts.map +1 -0
  239. package/dest/services/reqresp/constants.js +7 -0
  240. package/dest/services/reqresp/index.d.ts +3 -2
  241. package/dest/services/reqresp/index.d.ts.map +1 -1
  242. package/dest/services/reqresp/index.js +2 -1
  243. package/dest/services/reqresp/interface.d.ts +75 -24
  244. package/dest/services/reqresp/interface.d.ts.map +1 -1
  245. package/dest/services/reqresp/interface.js +46 -27
  246. package/dest/services/reqresp/metrics.d.ts +6 -5
  247. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  248. package/dest/services/reqresp/metrics.js +17 -21
  249. package/dest/services/reqresp/protocols/auth.d.ts +43 -0
  250. package/dest/services/reqresp/protocols/auth.d.ts.map +1 -0
  251. package/dest/services/reqresp/protocols/auth.js +71 -0
  252. package/dest/services/reqresp/protocols/block.d.ts +6 -1
  253. package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
  254. package/dest/services/reqresp/protocols/block.js +30 -6
  255. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +34 -0
  256. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -0
  257. package/dest/services/reqresp/protocols/block_txs/bitvector.js +87 -0
  258. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +11 -0
  259. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -0
  260. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +52 -0
  261. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +59 -0
  262. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -0
  263. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +105 -0
  264. package/dest/services/reqresp/protocols/block_txs/index.d.ts +4 -0
  265. package/dest/services/reqresp/protocols/block_txs/index.d.ts.map +1 -0
  266. package/dest/services/reqresp/protocols/block_txs/index.js +3 -0
  267. package/dest/services/reqresp/protocols/goodbye.d.ts +3 -5
  268. package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
  269. package/dest/services/reqresp/protocols/goodbye.js +7 -7
  270. package/dest/services/reqresp/protocols/index.d.ts +3 -1
  271. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  272. package/dest/services/reqresp/protocols/index.js +2 -0
  273. package/dest/services/reqresp/protocols/ping.d.ts +1 -3
  274. package/dest/services/reqresp/protocols/ping.d.ts.map +1 -1
  275. package/dest/services/reqresp/protocols/status.d.ts +40 -7
  276. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  277. package/dest/services/reqresp/protocols/status.js +76 -5
  278. package/dest/services/reqresp/protocols/tx.d.ts +14 -4
  279. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  280. package/dest/services/reqresp/protocols/tx.js +34 -6
  281. package/dest/services/reqresp/rate-limiter/index.d.ts +1 -1
  282. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +6 -4
  283. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  284. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -2
  285. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  286. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  287. package/dest/services/reqresp/rate-limiter/rate_limits.js +21 -1
  288. package/dest/services/reqresp/reqresp.d.ts +29 -66
  289. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  290. package/dest/services/reqresp/reqresp.js +753 -248
  291. package/dest/services/reqresp/status.d.ts +10 -4
  292. package/dest/services/reqresp/status.d.ts.map +1 -1
  293. package/dest/services/reqresp/status.js +9 -2
  294. package/dest/services/service.d.ts +40 -20
  295. package/dest/services/service.d.ts.map +1 -1
  296. package/dest/services/tx_collection/config.d.ts +28 -0
  297. package/dest/services/tx_collection/config.d.ts.map +1 -0
  298. package/dest/services/tx_collection/config.js +66 -0
  299. package/dest/services/tx_collection/fast_tx_collection.d.ts +53 -0
  300. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -0
  301. package/dest/services/tx_collection/fast_tx_collection.js +311 -0
  302. package/dest/services/tx_collection/index.d.ts +4 -0
  303. package/dest/services/tx_collection/index.d.ts.map +1 -0
  304. package/dest/services/tx_collection/index.js +3 -0
  305. package/dest/services/tx_collection/instrumentation.d.ts +10 -0
  306. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -0
  307. package/dest/services/tx_collection/instrumentation.js +31 -0
  308. package/dest/services/tx_collection/proposal_tx_collector.d.ts +48 -0
  309. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
  310. package/dest/services/tx_collection/proposal_tx_collector.js +50 -0
  311. package/dest/services/tx_collection/slow_tx_collection.d.ts +53 -0
  312. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -0
  313. package/dest/services/tx_collection/slow_tx_collection.js +177 -0
  314. package/dest/services/tx_collection/tx_collection.d.ts +110 -0
  315. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -0
  316. package/dest/services/tx_collection/tx_collection.js +128 -0
  317. package/dest/services/tx_collection/tx_collection_sink.d.ts +30 -0
  318. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -0
  319. package/dest/services/tx_collection/tx_collection_sink.js +111 -0
  320. package/dest/services/tx_collection/tx_source.d.ts +18 -0
  321. package/dest/services/tx_collection/tx_source.d.ts.map +1 -0
  322. package/dest/services/tx_collection/tx_source.js +31 -0
  323. package/dest/services/tx_provider.d.ts +51 -0
  324. package/dest/services/tx_provider.d.ts.map +1 -0
  325. package/dest/services/tx_provider.js +219 -0
  326. package/dest/services/tx_provider_instrumentation.d.ts +16 -0
  327. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -0
  328. package/dest/services/tx_provider_instrumentation.js +34 -0
  329. package/dest/test-helpers/generate-peer-id-private-keys.d.ts +1 -1
  330. package/dest/test-helpers/get-ports.d.ts +1 -1
  331. package/dest/test-helpers/get-ports.d.ts.map +1 -1
  332. package/dest/test-helpers/index.d.ts +4 -1
  333. package/dest/test-helpers/index.d.ts.map +1 -1
  334. package/dest/test-helpers/index.js +3 -0
  335. package/dest/test-helpers/make-enrs.d.ts +1 -1
  336. package/dest/test-helpers/make-enrs.d.ts.map +1 -1
  337. package/dest/test-helpers/make-enrs.js +4 -5
  338. package/dest/test-helpers/make-test-p2p-clients.d.ts +33 -5
  339. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  340. package/dest/test-helpers/make-test-p2p-clients.js +86 -16
  341. package/dest/test-helpers/mock-pubsub.d.ts +59 -0
  342. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -0
  343. package/dest/test-helpers/mock-pubsub.js +130 -0
  344. package/dest/test-helpers/mock-tx-helpers.d.ts +12 -0
  345. package/dest/test-helpers/mock-tx-helpers.d.ts.map +1 -0
  346. package/dest/test-helpers/mock-tx-helpers.js +19 -0
  347. package/dest/test-helpers/reqresp-nodes.d.ts +15 -11
  348. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  349. package/dest/test-helpers/reqresp-nodes.js +62 -28
  350. package/dest/test-helpers/test_tx_provider.d.ts +40 -0
  351. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  352. package/dest/test-helpers/test_tx_provider.js +41 -0
  353. package/dest/test-helpers/testbench-utils.d.ts +158 -0
  354. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  355. package/dest/test-helpers/testbench-utils.js +297 -0
  356. package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
  357. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  358. package/dest/testbench/p2p_client_testbench_worker.js +259 -90
  359. package/dest/testbench/parse_log_file.d.ts +1 -1
  360. package/dest/testbench/parse_log_file.js +4 -4
  361. package/dest/testbench/testbench.d.ts +1 -1
  362. package/dest/testbench/testbench.js +4 -4
  363. package/dest/testbench/worker_client_manager.d.ts +51 -11
  364. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  365. package/dest/testbench/worker_client_manager.js +232 -53
  366. package/dest/types/index.d.ts +4 -2
  367. package/dest/types/index.d.ts.map +1 -1
  368. package/dest/types/index.js +2 -0
  369. package/dest/util.d.ts +24 -16
  370. package/dest/util.d.ts.map +1 -1
  371. package/dest/util.js +75 -69
  372. package/dest/versioning.d.ts +4 -4
  373. package/dest/versioning.d.ts.map +1 -1
  374. package/dest/versioning.js +8 -3
  375. package/package.json +32 -27
  376. package/src/bootstrap/bootstrap.ts +34 -15
  377. package/src/client/factory.ts +135 -53
  378. package/src/client/index.ts +1 -0
  379. package/src/client/interface.ts +213 -0
  380. package/src/client/p2p_client.ts +476 -383
  381. package/src/client/test/tx_proposal_collector/README.md +227 -0
  382. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +336 -0
  383. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
  384. package/src/config.ts +304 -134
  385. package/src/enr/generate-enr.ts +39 -6
  386. package/src/errors/attestation-pool.error.ts +13 -0
  387. package/src/index.ts +4 -0
  388. package/src/mem_pools/attestation_pool/attestation_pool.ts +119 -24
  389. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +352 -201
  390. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +233 -72
  391. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +199 -96
  392. package/src/mem_pools/attestation_pool/mocks.ts +24 -17
  393. package/src/mem_pools/instrumentation.ts +72 -48
  394. package/src/mem_pools/interface.ts +2 -4
  395. package/src/mem_pools/tx_pool/README.md +270 -0
  396. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +580 -143
  397. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +132 -0
  398. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +208 -0
  399. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +162 -0
  400. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +104 -0
  401. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +93 -0
  402. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +106 -0
  403. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
  404. package/src/mem_pools/tx_pool/index.ts +0 -1
  405. package/src/mem_pools/tx_pool/priority.ts +9 -2
  406. package/src/mem_pools/tx_pool/tx_pool.ts +75 -10
  407. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +225 -36
  408. package/src/msg_validators/attestation_validator/attestation_validator.ts +72 -14
  409. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +94 -0
  410. package/src/msg_validators/attestation_validator/index.ts +1 -0
  411. package/src/msg_validators/clock_tolerance.ts +51 -0
  412. package/src/msg_validators/index.ts +1 -1
  413. package/src/msg_validators/msg_seen_validator/msg_seen_validator.ts +36 -0
  414. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +10 -0
  415. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +13 -0
  416. package/src/msg_validators/proposal_validator/index.ts +3 -0
  417. package/src/msg_validators/proposal_validator/proposal_validator.ts +92 -0
  418. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +230 -0
  419. package/src/msg_validators/tx_validator/allowed_public_setup.ts +35 -0
  420. package/src/msg_validators/tx_validator/archive_cache.ts +28 -0
  421. package/src/msg_validators/tx_validator/block_header_validator.ts +10 -9
  422. package/src/msg_validators/tx_validator/data_validator.ts +95 -71
  423. package/src/msg_validators/tx_validator/double_spend_validator.ts +23 -20
  424. package/src/msg_validators/tx_validator/factory.ts +151 -0
  425. package/src/msg_validators/tx_validator/fee_payer_balance.ts +40 -0
  426. package/src/msg_validators/tx_validator/gas_validator.ts +123 -0
  427. package/src/msg_validators/tx_validator/index.ts +8 -0
  428. package/src/msg_validators/tx_validator/metadata_validator.ts +72 -24
  429. package/src/msg_validators/tx_validator/phases_validator.ts +118 -0
  430. package/src/msg_validators/tx_validator/size_validator.ts +22 -0
  431. package/src/msg_validators/tx_validator/test_utils.ts +43 -0
  432. package/src/msg_validators/tx_validator/timestamp_validator.ts +52 -0
  433. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +22 -0
  434. package/src/msg_validators/tx_validator/tx_proof_validator.ts +14 -8
  435. package/src/services/data_store.ts +10 -7
  436. package/src/services/discv5/discV5_service.ts +85 -39
  437. package/src/services/dummy_service.ts +198 -9
  438. package/src/services/encoding.ts +82 -6
  439. package/src/services/index.ts +4 -0
  440. package/src/services/libp2p/instrumentation.ts +126 -0
  441. package/src/services/libp2p/libp2p_service.ts +1170 -353
  442. package/src/services/peer-manager/interface.ts +29 -0
  443. package/src/services/peer-manager/metrics.ts +55 -12
  444. package/src/services/peer-manager/peer_manager.ts +657 -80
  445. package/src/services/peer-manager/peer_scoring.ts +45 -3
  446. package/src/services/reqresp/batch-tx-requester/README.md +305 -0
  447. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +706 -0
  448. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  449. package/src/services/reqresp/batch-tx-requester/interface.ts +57 -0
  450. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +209 -0
  451. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +205 -0
  452. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
  453. package/src/services/reqresp/config.ts +26 -9
  454. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +77 -10
  455. package/src/services/reqresp/connection-sampler/connection_sampler.ts +166 -95
  456. package/src/services/reqresp/constants.ts +14 -0
  457. package/src/services/reqresp/index.ts +2 -0
  458. package/src/services/reqresp/interface.ts +95 -37
  459. package/src/services/reqresp/metrics.ts +40 -28
  460. package/src/services/reqresp/protocols/auth.ts +83 -0
  461. package/src/services/reqresp/protocols/block.ts +26 -4
  462. package/src/services/reqresp/protocols/block_txs/bitvector.ts +106 -0
  463. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +67 -0
  464. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +121 -0
  465. package/src/services/reqresp/protocols/block_txs/index.ts +3 -0
  466. package/src/services/reqresp/protocols/goodbye.ts +9 -7
  467. package/src/services/reqresp/protocols/index.ts +2 -0
  468. package/src/services/reqresp/protocols/status.ts +121 -5
  469. package/src/services/reqresp/protocols/tx.ts +36 -8
  470. package/src/services/reqresp/rate-limiter/rate_limiter.ts +12 -3
  471. package/src/services/reqresp/rate-limiter/rate_limits.ts +21 -1
  472. package/src/services/reqresp/reqresp.ts +449 -271
  473. package/src/services/reqresp/status.ts +12 -3
  474. package/src/services/service.ts +65 -22
  475. package/src/services/tx_collection/config.ts +98 -0
  476. package/src/services/tx_collection/fast_tx_collection.ts +364 -0
  477. package/src/services/tx_collection/index.ts +7 -0
  478. package/src/services/tx_collection/instrumentation.ts +35 -0
  479. package/src/services/tx_collection/proposal_tx_collector.ts +114 -0
  480. package/src/services/tx_collection/slow_tx_collection.ts +233 -0
  481. package/src/services/tx_collection/tx_collection.ts +216 -0
  482. package/src/services/tx_collection/tx_collection_sink.ts +129 -0
  483. package/src/services/tx_collection/tx_source.ts +37 -0
  484. package/src/services/tx_provider.ts +232 -0
  485. package/src/services/tx_provider_instrumentation.ts +54 -0
  486. package/src/test-helpers/index.ts +3 -0
  487. package/src/test-helpers/make-enrs.ts +4 -5
  488. package/src/test-helpers/make-test-p2p-clients.ts +111 -21
  489. package/src/test-helpers/mock-pubsub.ts +188 -0
  490. package/src/test-helpers/mock-tx-helpers.ts +24 -0
  491. package/src/test-helpers/reqresp-nodes.ts +87 -36
  492. package/src/test-helpers/test_tx_provider.ts +64 -0
  493. package/src/test-helpers/testbench-utils.ts +374 -0
  494. package/src/testbench/p2p_client_testbench_worker.ts +434 -89
  495. package/src/testbench/parse_log_file.ts +4 -4
  496. package/src/testbench/testbench.ts +4 -4
  497. package/src/testbench/worker_client_manager.ts +315 -59
  498. package/src/types/index.ts +2 -0
  499. package/src/util.ts +105 -91
  500. package/src/versioning.ts +11 -4
  501. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +0 -56
  502. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +0 -1
  503. package/dest/mem_pools/tx_pool/memory_tx_pool.js +0 -141
  504. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -8
  505. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
  506. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +0 -21
  507. package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
  508. package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
  509. package/dest/msg_validators/block_proposal_validator/index.js +0 -1
  510. package/src/mem_pools/tx_pool/memory_tx_pool.ts +0 -174
  511. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -29
  512. package/src/msg_validators/block_proposal_validator/index.ts +0 -1
package/src/config.ts CHANGED
@@ -1,78 +1,68 @@
1
1
  import {
2
2
  type ConfigMappingsType,
3
+ SecretValue,
3
4
  booleanConfigHelper,
4
5
  getConfigFromMappings,
5
6
  getDefaultConfig,
6
7
  numberConfigHelper,
8
+ percentageConfigHelper,
7
9
  pickConfigMappings,
10
+ secretStringConfigHelper,
8
11
  } from '@aztec/foundation/config';
12
+ import { Fr } from '@aztec/foundation/curves/bn254';
9
13
  import { type DataStoreConfig, dataConfigMappings } from '@aztec/kv-store/config';
10
- import { type ChainConfig, chainConfigMappings } from '@aztec/stdlib/config';
14
+ import { FunctionSelector } from '@aztec/stdlib/abi/function-selector';
15
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
16
+ import { type AllowedElement, type ChainConfig, chainConfigMappings } from '@aztec/stdlib/config';
11
17
 
18
+ import {
19
+ type BatchTxRequesterConfig,
20
+ batchTxRequesterConfigMappings,
21
+ } from './services/reqresp/batch-tx-requester/config.js';
12
22
  import { type P2PReqRespConfig, p2pReqRespConfigMappings } from './services/reqresp/config.js';
23
+ import { type TxCollectionConfig, txCollectionConfigMappings } from './services/tx_collection/config.js';
13
24
 
14
25
  /**
15
26
  * P2P client configuration values.
16
27
  */
17
- export interface P2PConfig extends P2PReqRespConfig, ChainConfig {
18
- /**
19
- * A flag dictating whether the P2P subsystem should be enabled.
20
- */
28
+ export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, ChainConfig, TxCollectionConfig {
29
+ /** A flag dictating whether the P2P subsystem should be enabled. */
21
30
  p2pEnabled: boolean;
22
31
 
23
- /**
24
- * The frequency in which to check for new L2 blocks.
25
- */
32
+ /** The frequency in which to check for new L2 blocks. */
26
33
  blockCheckIntervalMS: number;
27
34
 
28
- /**
29
- * The number of blocks to fetch in a single batch.
30
- */
35
+ /** The number of blocks to fetch in a single batch. */
31
36
  blockRequestBatchSize: number;
32
37
 
33
- /**
34
- * DEBUG: Disable colocation penalty - for testing purposes only
35
- */
38
+ /** DEBUG: Disable colocation penalty - for testing purposes only */
36
39
  debugDisableColocationPenalty: boolean;
37
40
 
38
- /**
39
- * The frequency in which to check for new peers.
40
- */
41
+ /** The frequency in which to check for new peers. */
41
42
  peerCheckIntervalMS: number;
42
43
 
43
- /**
44
- * Size of queue of L2 blocks to store.
45
- */
44
+ /** Size of queue of L2 blocks to store. */
46
45
  l2QueueSize: number;
47
46
 
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
- */
47
+ /** The port for the P2P service. */
48
+ p2pPort: number;
49
+
50
+ /** The port to broadcast the P2P service on (included in the node's ENR). */
51
+ p2pBroadcastPort?: number;
52
+
53
+ /** The IP address for the P2P service. */
54
+ p2pIp?: string;
55
+
56
+ /** The listen address. */
57
+ listenAddress: string;
58
+
59
+ /** An optional peer id private key. If blank, will generate a random key. */
60
+ peerIdPrivateKey?: SecretValue<string>;
61
+
62
+ /** An optional path to store generated peer id private keys. If blank, will default to storing any generated keys in the data directory. */
63
+ peerIdPrivateKeyPath?: string;
64
+
65
+ /** A list of bootstrap peers to connect to. */
76
66
  bootstrapNodes: string[];
77
67
 
78
68
  /** Whether to execute the version check in the bootstrap node ENR. */
@@ -81,97 +71,121 @@ export interface P2PConfig extends P2PReqRespConfig, ChainConfig {
81
71
  /** Whether to consider any configured bootnodes as full peers, e.g. for transaction gossiping */
82
72
  bootstrapNodesAsFullPeers: boolean;
83
73
 
84
- /**
85
- * The maximum number of peers (a peer count above this will cause the node to refuse connection attempts)
86
- */
74
+ /** The maximum number of peers (a peer count above this will cause the node to refuse connection attempts) */
87
75
  maxPeerCount: number;
88
76
 
89
- /**
90
- * If announceUdpAddress or announceTcpAddress are not provided, query for the IP address of the machine. Default is false.
91
- */
77
+ /** If announceUdpAddress or announceTcpAddress are not provided, query for the IP address of the machine. Default is false. */
92
78
  queryForIp: boolean;
93
79
 
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
- */
80
+ /** The interval of the gossipsub heartbeat to perform maintenance tasks. */
103
81
  gossipsubInterval: number;
104
82
 
105
- /**
106
- * The D parameter for the gossipsub protocol.
107
- */
83
+ /** The D parameter for the gossipsub protocol. */
108
84
  gossipsubD: number;
109
85
 
110
- /**
111
- * The Dlo parameter for the gossipsub protocol.
112
- */
86
+ /** The Dlo parameter for the gossipsub protocol. */
113
87
  gossipsubDlo: number;
114
88
 
115
- /**
116
- * The Dhi parameter for the gossipsub protocol.
117
- */
89
+ /** The Dhi parameter for the gossipsub protocol. */
118
90
  gossipsubDhi: number;
119
91
 
120
- /**
121
- * The Dlazy parameter for the gossipsub protocol.
122
- */
92
+ /** The Dlazy parameter for the gossipsub protocol. */
123
93
  gossipsubDLazy: number;
124
94
 
125
- /**
126
- * Whether to flood publish messages. - For testing purposes only
127
- */
95
+ /** Whether to flood publish messages. - For testing purposes only */
128
96
  gossipsubFloodPublish: boolean;
129
97
 
130
- /**
131
- * The number of gossipsub interval message cache windows to keep.
132
- */
98
+ /** The number of gossipsub interval message cache windows to keep. */
133
99
  gossipsubMcacheLength: number;
134
100
 
135
- /**
136
- * How many message cache windows to include when gossiping with other pears.
137
- */
101
+ /** How many message cache windows to include when gossiping with other pears. */
138
102
  gossipsubMcacheGossip: number;
139
103
 
140
- /**
141
- * The 'age' (in # of L2 blocks) of a processed tx after which we heavily penalize a peer for re-sending it.
142
- */
104
+ /** How long to keep message IDs in the seen cache (ms). */
105
+ gossipsubSeenTTL: number;
106
+
107
+ /** The 'age' (in # of L2 blocks) of a processed tx after which we heavily penalize a peer for re-sending it. */
143
108
  doubleSpendSeverePeerPenaltyWindow: number;
144
109
 
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
- */
110
+ /** 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
111
  gossipsubTxTopicWeight: number;
149
112
 
150
- /**
151
- * This is the weight applied to the penalty for delivering invalid messages.
152
- */
113
+ /** This is the weight applied to the penalty for delivering invalid messages. */
153
114
  gossipsubTxInvalidMessageDeliveriesWeight: number;
154
115
 
155
- /**
156
- * determines how quickly the penalty for invalid message deliveries decays over time. Between 0 and 1.
157
- */
116
+ /** determines how quickly the penalty for invalid message deliveries decays over time. Between 0 and 1. */
158
117
  gossipsubTxInvalidMessageDeliveriesDecay: number;
159
118
 
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
- */
119
+ /** The values for the peer scoring system. Passed as a comma separated list of values in order: low, mid, high tolerance errors. */
163
120
  peerPenaltyValues: number[];
164
121
 
165
122
  /** Limit of transactions to archive in the tx pool. Once the archived tx limit is reached, the oldest archived txs will be purged. */
166
123
  archivedTxLimit: number;
124
+
125
+ /** A list of trusted peers. */
126
+ trustedPeers: string[];
127
+
128
+ /** A list of private peers. */
129
+ privatePeers: string[];
130
+
131
+ /** A list of preferred peers. */
132
+ preferredPeers: string[];
133
+
134
+ /** The maximum possible size of the P2P DB in KB. Overwrites the general dataStoreMapSizeKb. */
135
+ p2pStoreMapSizeKb?: number;
136
+
137
+ /** Which calls are allowed in the public setup phase of a tx. */
138
+ txPublicSetupAllowList: AllowedElement[];
139
+
140
+ /** The maximum number of pending txs before evicting lower priority txs. */
141
+ maxPendingTxCount: number;
142
+
143
+ /** The node's seen message ID cache size */
144
+ seenMessageCacheSize: number;
145
+
146
+ /** True to disable the status handshake on peer connected. */
147
+ p2pDisableStatusHandshake?: boolean;
148
+
149
+ /** True to only permit validators to connect */
150
+ p2pAllowOnlyValidators?: boolean;
151
+
152
+ /** True to disable participating in discovery */
153
+ p2pDiscoveryDisabled?: boolean;
154
+ /** Number of auth attempts to allow before peer is banned. Number is inclusive*/
155
+ p2pMaxFailedAuthAttemptsAllowed: number;
156
+
157
+ /** Whether transactions are disabled for this node. This means transactions will be rejected at the RPC and P2P layers. */
158
+ disableTransactions: boolean;
159
+
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 */
164
+ dropTransactionsProbability: number;
165
+
166
+ /** Whether to delete transactions from the pool after a reorg instead of moving them back to pending. */
167
+ txPoolDeleteTxsAfterReorg: boolean;
168
+
169
+ /** Alters the format of p2p messages to include things like broadcast timestamp FOR TESTING ONLY */
170
+ debugP2PInstrumentMessages: boolean;
171
+
172
+ /** Whether to run in fisherman mode: validates all proposals and attestations but does not broadcast attestations or participate in consensus */
173
+ fishermanMode: boolean;
167
174
  }
168
175
 
176
+ export const DEFAULT_P2P_PORT = 40400;
177
+
169
178
  export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
170
179
  p2pEnabled: {
171
180
  env: 'P2P_ENABLED',
172
181
  description: 'A flag dictating whether the P2P subsystem should be enabled.',
173
182
  ...booleanConfigHelper(),
174
183
  },
184
+ p2pDiscoveryDisabled: {
185
+ env: 'P2P_DISCOVERY_DISABLED',
186
+ description: 'A flag dictating whether the P2P discovery system should be disabled.',
187
+ ...booleanConfigHelper(false),
188
+ },
175
189
  blockCheckIntervalMS: {
176
190
  env: 'P2P_BLOCK_CHECK_INTERVAL_MS',
177
191
  description: 'The frequency in which to check for new L2 blocks.',
@@ -192,34 +206,39 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
192
206
  description: 'Size of queue of L2 blocks to store.',
193
207
  ...numberConfigHelper(1_000),
194
208
  },
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>.',
209
+ listenAddress: {
210
+ env: 'P2P_LISTEN_ADDR',
211
+ defaultValue: '0.0.0.0',
212
+ description: 'The listen address. ipv4 address.',
199
213
  },
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>.',
214
+ p2pPort: {
215
+ env: 'P2P_PORT',
216
+ description: `The port for the P2P service. Defaults to ${DEFAULT_P2P_PORT}`,
217
+ ...numberConfigHelper(DEFAULT_P2P_PORT),
204
218
  },
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.',
219
+ p2pBroadcastPort: {
220
+ env: 'P2P_BROADCAST_PORT',
221
+ description: `The port to broadcast the P2P service on (included in the node's ENR). Defaults to P2P_PORT.`,
209
222
  },
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.',
223
+ p2pIp: {
224
+ env: 'P2P_IP',
225
+ description: 'The IP address for the P2P service. ipv4 address.',
214
226
  },
215
227
  peerIdPrivateKey: {
216
228
  env: 'PEER_ID_PRIVATE_KEY',
217
229
  description: 'An optional peer id private key. If blank, will generate a random key.',
230
+ ...secretStringConfigHelper(),
231
+ },
232
+ peerIdPrivateKeyPath: {
233
+ env: 'PEER_ID_PRIVATE_KEY_PATH',
234
+ description:
235
+ '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
236
  },
219
237
  bootstrapNodes: {
220
238
  env: 'BOOTSTRAP_NODES',
221
239
  parseEnv: (val: string) => val.split(','),
222
240
  description: 'A list of bootstrap peer ENRs to connect to. Separated by commas.',
241
+ defaultValue: [],
223
242
  },
224
243
  bootstrapNodeEnrVersionCheck: {
225
244
  env: 'P2P_BOOTSTRAP_NODE_ENR_VERSION_CHECK',
@@ -242,17 +261,6 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
242
261
  'If announceUdpAddress or announceTcpAddress are not provided, query for the IP address of the machine. Default is false.',
243
262
  ...booleanConfigHelper(),
244
263
  },
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
264
  gossipsubInterval: {
257
265
  env: 'P2P_GOSSIPSUB_INTERVAL_MS',
258
266
  description: 'The interval of the gossipsub heartbeat to perform maintenance tasks.',
@@ -281,7 +289,7 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
281
289
  gossipsubFloodPublish: {
282
290
  env: 'P2P_GOSSIPSUB_FLOOD_PUBLISH',
283
291
  description: 'Whether to flood publish messages. - For testing purposes only',
284
- ...booleanConfigHelper(true),
292
+ ...booleanConfigHelper(false),
285
293
  },
286
294
  gossipsubMcacheLength: {
287
295
  env: 'P2P_GOSSIPSUB_MCACHE_LENGTH',
@@ -290,9 +298,14 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
290
298
  },
291
299
  gossipsubMcacheGossip: {
292
300
  env: 'P2P_GOSSIPSUB_MCACHE_GOSSIP',
293
- description: 'How many message cache windows to include when gossiping with other pears.',
301
+ description: 'How many message cache windows to include when gossiping with other peers.',
294
302
  ...numberConfigHelper(3),
295
303
  },
304
+ gossipsubSeenTTL: {
305
+ env: 'P2P_GOSSIPSUB_SEEN_TTL',
306
+ description: 'How long to keep message IDs in the seen cache.',
307
+ ...numberConfigHelper(20 * 60 * 1000),
308
+ },
296
309
  gossipsubTxTopicWeight: {
297
310
  env: 'P2P_GOSSIPSUB_TX_TOPIC_WEIGHT',
298
311
  description: 'The weight of the tx topic for the gossipsub protocol.',
@@ -331,8 +344,101 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
331
344
  'The number of transactions that will be archived. If the limit is set to 0 then archiving will be disabled.',
332
345
  ...numberConfigHelper(0),
333
346
  },
347
+ trustedPeers: {
348
+ env: 'P2P_TRUSTED_PEERS',
349
+ parseEnv: (val: string) => val.split(','),
350
+ description: 'A list of trusted peer ENRs that will always be persisted. Separated by commas.',
351
+ defaultValue: [],
352
+ },
353
+ privatePeers: {
354
+ env: 'P2P_PRIVATE_PEERS',
355
+ parseEnv: (val: string) => val.split(','),
356
+ description:
357
+ 'A list of private peer ENRs that will always be persisted and not be used for discovery. Separated by commas.',
358
+ defaultValue: [],
359
+ },
360
+ preferredPeers: {
361
+ env: 'P2P_PREFERRED_PEERS',
362
+ parseEnv: (val: string) => val.split(','),
363
+ description:
364
+ 'A list of preferred peer ENRs that will always be persisted and not be used for discovery. Separated by commas.',
365
+ defaultValue: [],
366
+ },
367
+ p2pStoreMapSizeKb: {
368
+ env: 'P2P_STORE_MAP_SIZE_KB',
369
+ parseEnv: (val: string | undefined) => (val ? +val : undefined),
370
+ description: 'The maximum possible size of the P2P DB in KB. Overwrites the general dataStoreMapSizeKb.',
371
+ },
372
+ txPublicSetupAllowList: {
373
+ env: 'TX_PUBLIC_SETUP_ALLOWLIST',
374
+ parseEnv: (val: string) => parseAllowList(val),
375
+ description: 'The list of functions calls allowed to run in setup',
376
+ printDefault: () =>
377
+ 'AuthRegistry, FeeJuice.increase_public_balance, Token.increase_public_balance, FPC.prepare_fee',
378
+ },
379
+ maxPendingTxCount: {
380
+ env: 'P2P_MAX_PENDING_TX_COUNT',
381
+ description: 'The maximum number of pending txs before evicting lower priority txs.',
382
+ // Worst case scenario: Uncompressed public/private tx is ~ 156kb
383
+ // This implies we are using ~156MB of memory for pending pool
384
+ ...numberConfigHelper(1_000),
385
+ },
386
+ seenMessageCacheSize: {
387
+ env: 'P2P_SEEN_MSG_CACHE_SIZE',
388
+ description: 'The number of messages to keep in the seen message cache',
389
+ ...numberConfigHelper(100_000), // 100K
390
+ },
391
+ p2pDisableStatusHandshake: {
392
+ env: 'P2P_DISABLE_STATUS_HANDSHAKE',
393
+ description: 'True to disable the status handshake on peer connected.',
394
+ ...booleanConfigHelper(false),
395
+ },
396
+ p2pAllowOnlyValidators: {
397
+ env: 'P2P_ALLOW_ONLY_VALIDATORS',
398
+ description: 'True to only permit validators to connect.',
399
+ ...booleanConfigHelper(false),
400
+ },
401
+ p2pMaxFailedAuthAttemptsAllowed: {
402
+ env: 'P2P_MAX_AUTH_FAILED_ATTEMPTS_ALLOWED',
403
+ description: 'Number of auth attempts to allow before peer is banned. Number is inclusive',
404
+ ...numberConfigHelper(3),
405
+ },
406
+ dropTransactions: {
407
+ env: 'P2P_DROP_TX',
408
+ description: 'True to simulate discarding transactions. - For testing purposes only',
409
+ ...booleanConfigHelper(false),
410
+ },
411
+ dropTransactionsProbability: {
412
+ env: 'P2P_DROP_TX_CHANCE',
413
+ description: 'The probability that a transaction is discarded (0 - 1). - For testing purposes only',
414
+ ...percentageConfigHelper(0),
415
+ },
416
+ disableTransactions: {
417
+ env: 'TRANSACTIONS_DISABLED',
418
+ description:
419
+ 'Whether transactions are disabled for this node. This means transactions will be rejected at the RPC and P2P layers.',
420
+ ...booleanConfigHelper(false),
421
+ },
422
+ txPoolDeleteTxsAfterReorg: {
423
+ env: 'P2P_TX_POOL_DELETE_TXS_AFTER_REORG',
424
+ description: 'Whether to delete transactions from the pool after a reorg instead of moving them back to pending.',
425
+ ...booleanConfigHelper(false),
426
+ },
427
+ debugP2PInstrumentMessages: {
428
+ env: 'DEBUG_P2P_INSTRUMENT_MESSAGES',
429
+ description: 'Alters the format of p2p messages to include things like broadcast timestamp FOR TESTING ONLY',
430
+ ...booleanConfigHelper(false),
431
+ },
432
+ fishermanMode: {
433
+ env: 'FISHERMAN_MODE',
434
+ description:
435
+ 'Whether to run in fisherman mode: validates all proposals and attestations but does not broadcast attestations or participate in consensus.',
436
+ ...booleanConfigHelper(false),
437
+ },
334
438
  ...p2pReqRespConfigMappings,
439
+ ...batchTxRequesterConfigMappings,
335
440
  ...chainConfigMappings,
441
+ ...txCollectionConfigMappings,
336
442
  };
337
443
 
338
444
  /**
@@ -350,22 +456,86 @@ export function getP2PDefaultConfig(): P2PConfig {
350
456
  /**
351
457
  * Required P2P config values for a bootstrap node.
352
458
  */
353
- export type BootnodeConfig = Pick<P2PConfig, 'udpAnnounceAddress' | 'peerIdPrivateKey' | 'bootstrapNodes'> &
354
- Required<Pick<P2PConfig, 'udpListenAddress'>> &
355
- Pick<DataStoreConfig, 'dataDirectory' | 'dataStoreMapSizeKB'> &
459
+ export type BootnodeConfig = Pick<
460
+ P2PConfig,
461
+ | 'p2pIp'
462
+ | 'p2pPort'
463
+ | 'p2pBroadcastPort'
464
+ | 'peerIdPrivateKey'
465
+ | 'peerIdPrivateKeyPath'
466
+ | 'bootstrapNodes'
467
+ | 'listenAddress'
468
+ | 'queryForIp'
469
+ > &
470
+ Required<Pick<P2PConfig, 'p2pIp' | 'p2pPort'>> &
471
+ Pick<DataStoreConfig, 'dataDirectory' | 'dataStoreMapSizeKb'> &
356
472
  Pick<ChainConfig, 'l1ChainId'>;
357
473
 
358
474
  const bootnodeConfigKeys: (keyof BootnodeConfig)[] = [
359
- 'udpAnnounceAddress',
475
+ 'p2pIp',
476
+ 'p2pPort',
477
+ 'p2pBroadcastPort',
478
+ 'listenAddress',
360
479
  'peerIdPrivateKey',
361
- 'udpListenAddress',
480
+ 'peerIdPrivateKeyPath',
362
481
  'dataDirectory',
363
- 'dataStoreMapSizeKB',
482
+ 'dataStoreMapSizeKb',
364
483
  'bootstrapNodes',
365
484
  'l1ChainId',
485
+ 'queryForIp',
366
486
  ];
367
487
 
368
488
  export const bootnodeConfigMappings = pickConfigMappings(
369
489
  { ...p2pConfigMappings, ...dataConfigMappings, ...chainConfigMappings },
370
490
  bootnodeConfigKeys,
371
491
  );
492
+
493
+ /**
494
+ * 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}`
500
+ *
501
+ * @param value The string to parse
502
+ * @returns A list of allowed elements
503
+ */
504
+ export function parseAllowList(value: string): AllowedElement[] {
505
+ const entries: AllowedElement[] = [];
506
+
507
+ if (!value) {
508
+ return entries;
509
+ }
510
+
511
+ for (const val of value.split(',')) {
512
+ const [typeString, identifierString, selectorString] = val.split(':');
513
+ const selector = selectorString !== undefined ? FunctionSelector.fromString(selectorString) : undefined;
514
+
515
+ 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
+ }
526
+ } 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
+ }
537
+ }
538
+ }
539
+
540
+ return entries;
541
+ }
@@ -1,22 +1,26 @@
1
1
  import type { LogFn } from '@aztec/foundation/log';
2
2
  import { type ChainConfig, emptyChainConfig } from '@aztec/stdlib/config';
3
+ import type { ComponentsVersions } from '@aztec/stdlib/versioning';
3
4
 
4
- import { ENR, SignableENR } from '@chainsafe/enr';
5
5
  import type { PeerId } from '@libp2p/interface';
6
- import { multiaddr } from '@multiformats/multiaddr';
6
+ import { type Multiaddr, multiaddr } from '@multiformats/multiaddr';
7
+ import { ENR, SignableENR } from '@nethermindeth/enr';
7
8
 
8
- import { AZTEC_ENR_KEY } from '../types/index.js';
9
+ import { AZTEC_ENR_CLIENT_VERSION_KEY, AZTEC_ENR_KEY } from '../types/index.js';
9
10
  import { convertToMultiaddr, createLibP2PPeerIdFromPrivateKey } from '../util.js';
10
- import { setAztecEnrKey } from '../versioning.js';
11
+ import { setAztecClientVersionEnrKey, setAztecEnrKey } from '../versioning.js';
12
+
13
+ export { ENR };
11
14
 
12
15
  export async function createBootnodeENRandPeerId(
13
16
  privateKey: string,
14
- udpAnnounceAddress: string,
17
+ p2pIp: string,
18
+ p2pBroadcastPort: number,
15
19
  l1ChainId: number,
16
20
  ): Promise<{ enr: SignableENR; peerId: PeerId }> {
17
21
  const peerId = await createLibP2PPeerIdFromPrivateKey(privateKey);
18
22
  const enr = SignableENR.createFromPeerId(peerId);
19
- const publicAddr = multiaddr(convertToMultiaddr(udpAnnounceAddress, 'udp'));
23
+ const publicAddr = multiaddr(convertToMultiaddr(p2pIp, p2pBroadcastPort, 'udp'));
20
24
  enr.setLocationMultiaddr(publicAddr);
21
25
 
22
26
  const config: ChainConfig = {
@@ -28,12 +32,41 @@ export async function createBootnodeENRandPeerId(
28
32
  return { enr, peerId };
29
33
  }
30
34
 
35
+ export function createNodeENR(
36
+ peerId: PeerId,
37
+ multiAddrUdp: Multiaddr | undefined,
38
+ multiAddrTcp: Multiaddr | undefined,
39
+ chainConfig: ChainConfig,
40
+ packageVersion: string,
41
+ ): { enr: SignableENR; versions: ComponentsVersions } {
42
+ // create ENR from PeerId
43
+ const enr = SignableENR.createFromPeerId(peerId);
44
+ // Add aztec identification to ENR
45
+ const versions = setAztecEnrKey(enr, chainConfig);
46
+ // Add aztec client version to ENR
47
+ setAztecClientVersionEnrKey(enr, packageVersion);
48
+
49
+ // set location multiaddr in ENR record
50
+ if (multiAddrUdp) {
51
+ enr.setLocationMultiaddr(multiAddrUdp);
52
+ }
53
+ if (multiAddrTcp) {
54
+ enr.setLocationMultiaddr(multiAddrTcp);
55
+ }
56
+
57
+ return { enr, versions };
58
+ }
59
+
31
60
  export async function printENR(enr: string, log: LogFn) {
32
61
  const decoded = ENR.decodeTxt(enr);
33
62
  log(`PeerID: ${await decoded.peerId()}`);
34
63
  log(`IP: ${decoded.ip}`);
35
64
  log(`UDP: ${decoded.udp}`);
36
65
  log(`TCP: ${decoded.tcp}`);
66
+
37
67
  const aztec = decoded.kvs.get(AZTEC_ENR_KEY);
38
68
  log(`Aztec version: ${aztec?.toString()}`);
69
+
70
+ const aztecClientVersion = decoded.kvs.get(AZTEC_ENR_CLIENT_VERSION_KEY);
71
+ log(`Aztec client version ${aztecClientVersion ? aztecClientVersion!.toString() : 'N/A'}`);
39
72
  }
@@ -0,0 +1,13 @@
1
+ export class AttestationPoolError extends Error {
2
+ constructor(message?: string) {
3
+ super(message);
4
+ this.name = 'AttestationPoolError';
5
+ }
6
+ }
7
+
8
+ export class ProposalSlotCapExceededError extends AttestationPoolError {
9
+ constructor(message?: string) {
10
+ super(message);
11
+ this.name = 'ProposalSlotCapExceededError';
12
+ }
13
+ }
package/src/index.ts CHANGED
@@ -1,5 +1,9 @@
1
+ export { createSecp256k1PeerId } from '@libp2p/peer-id-factory';
2
+ export type { PeerId } from '@libp2p/interface';
3
+
1
4
  export * from './bootstrap/bootstrap.js';
2
5
  export * from './client/index.js';
6
+ export * from './enr/index.js';
3
7
  export * from './config.js';
4
8
  export * from './mem_pools/attestation_pool/index.js';
5
9
  export * from './mem_pools/tx_pool/index.js';