@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/util.ts CHANGED
@@ -1,25 +1,41 @@
1
- import type { AztecAsyncKVStore } from '@aztec/kv-store';
1
+ import { SecretValue } from '@aztec/foundation/config';
2
+ import type { Logger } from '@aztec/foundation/log';
3
+ import type { AztecAsyncKVStore, AztecAsyncSingleton } from '@aztec/kv-store';
2
4
  import type { DataStoreConfig } from '@aztec/kv-store/config';
3
5
 
4
6
  import type { GossipSub } from '@chainsafe/libp2p-gossipsub';
5
7
  import { generateKeyPair, marshalPrivateKey, unmarshalPrivateKey } from '@libp2p/crypto/keys';
8
+ import type { Identify } from '@libp2p/identify';
6
9
  import type { PeerId, PrivateKey } from '@libp2p/interface';
7
10
  import type { ConnectionManager } from '@libp2p/interface-internal';
8
11
  import { createFromPrivKey } from '@libp2p/peer-id-factory';
9
12
  import { resolve } from 'dns/promises';
13
+ import { promises as fs } from 'fs';
10
14
  import type { Libp2p } from 'libp2p';
15
+ import net from 'net';
16
+ import path from 'path';
11
17
 
12
18
  import type { P2PConfig } from './config.js';
13
19
 
14
- export interface PubSubLibp2p extends Libp2p {
20
+ const PEER_ID_DATA_DIR_FILE = 'p2p-private-key';
21
+
22
+ export interface PubSubLibp2p extends Pick<Libp2p, 'status' | 'start' | 'stop' | 'peerId'> {
15
23
  services: {
16
- pubsub: GossipSub;
17
- components: {
18
- connectionManager: ConnectionManager;
19
- };
24
+ pubsub: Pick<
25
+ GossipSub,
26
+ 'addEventListener' | 'removeEventListener' | 'publish' | 'subscribe' | 'reportMessageValidationResult' | 'direct'
27
+ > & { score: Pick<GossipSub['score'], 'score'> };
20
28
  };
21
29
  }
22
30
 
31
+ export type FullLibp2p = Libp2p<{
32
+ identify: Identify;
33
+ pubsub: GossipSub;
34
+ components: {
35
+ connectionManager: ConnectionManager;
36
+ };
37
+ }>;
38
+
23
39
  /**
24
40
  * Converts an address string to a multiaddr string.
25
41
  * Example usage:
@@ -28,59 +44,39 @@ export interface PubSubLibp2p extends Libp2p {
28
44
  * @param address - The address string to convert. Has to be in the format <addr>:<port>.
29
45
  * @param protocol - The protocol to use in the multiaddr string.
30
46
  * @returns A multiaddr compliant string. */
31
- export function convertToMultiaddr(address: string, protocol: 'tcp' | 'udp'): string {
32
- const [addr, port] = splitAddressPort(address, false);
33
-
34
- const multiaddrPrefix = addressToMultiAddressType(addr);
47
+ export function convertToMultiaddr(address: string, port: number, protocol: 'tcp' | 'udp'): string {
48
+ const multiaddrPrefix = addressToMultiAddressType(address);
35
49
  if (multiaddrPrefix === 'dns') {
36
50
  throw new Error('Invalid address format. Expected an IPv4 or IPv6 address.');
37
51
  }
38
52
 
39
- return `/${multiaddrPrefix}/${addr}/${protocol}/${port}`;
40
- }
41
-
42
- /**
43
- * Splits an <address>:<port> string into its components.
44
- * @returns The ip6 or ip4 address & port separately
45
- */
46
- export function splitAddressPort(address: string, allowEmptyAddress: boolean): [string, string] {
47
- let addr: string;
48
- let port: string;
49
-
50
- if (address.startsWith('[')) {
51
- // IPv6 address enclosed in square brackets
52
- const match = address.match(/^\[([^\]]+)\]:(\d+)$/);
53
- if (!match) {
54
- throw new Error(`Invalid IPv6 address format:${address}. Expected format: [<addr>]:<port>`);
55
- }
56
- [, addr, port] = match;
57
- } else {
58
- // IPv4 address
59
- [addr, port] = address.split(':');
60
- if ((!addr && !allowEmptyAddress) || !port) {
61
- throw new Error(`Invalid address format: ${address}. Expected format: <addr>:<port>`);
62
- }
63
- }
64
-
65
- return [addr, port];
53
+ return `/${multiaddrPrefix}/${address}/${protocol}/${port}`;
66
54
  }
67
55
 
68
56
  /**
69
57
  * Queries the public IP address of the machine.
70
58
  */
71
59
  export async function getPublicIp(): Promise<string> {
72
- const resp = await fetch('http://checkip.amazonaws.com/');
60
+ const resp = await fetch('https://checkip.amazonaws.com/');
73
61
  const text = await resp.text();
74
- return text.trim();
62
+ const address = text.trim();
63
+ if (!isValidIpAddress(address)) {
64
+ throw new Error(`Received invalid IP address from checkip service: ${address}`);
65
+ }
66
+ return address;
67
+ }
68
+
69
+ export function isValidIpAddress(address: string): boolean {
70
+ const netType = net.isIP(address);
71
+ return netType === 4;
75
72
  }
76
73
 
77
- export async function resolveAddressIfNecessary(address: string): Promise<string> {
78
- const [addr, port] = splitAddressPort(address, false);
79
- const multiaddrPrefix = addressToMultiAddressType(addr);
74
+ export async function resolveAddressIfNecessary(address: string, port: string): Promise<string> {
75
+ const multiaddrPrefix = addressToMultiAddressType(address);
80
76
  if (multiaddrPrefix === 'dns') {
81
- const resolvedAddresses = await resolve(addr);
77
+ const resolvedAddresses = await resolve(address);
82
78
  if (resolvedAddresses.length === 0) {
83
- throw new Error(`Could not resolve address: ${addr}`);
79
+ throw new Error(`Could not resolve address: ${address}`);
84
80
  }
85
81
  return `${resolvedAddresses[0]}:${port}`;
86
82
  } else {
@@ -104,47 +100,21 @@ export async function configureP2PClientAddresses(
104
100
  _config: P2PConfig & DataStoreConfig,
105
101
  ): Promise<P2PConfig & DataStoreConfig> {
106
102
  const config = { ..._config };
107
- const {
108
- tcpAnnounceAddress: configTcpAnnounceAddress,
109
- udpAnnounceAddress: configUdpAnnounceAddress,
110
- queryForIp,
111
- } = config;
112
-
113
- config.tcpAnnounceAddress = configTcpAnnounceAddress
114
- ? await resolveAddressIfNecessary(configTcpAnnounceAddress)
115
- : undefined;
116
- config.udpAnnounceAddress = configUdpAnnounceAddress
117
- ? await resolveAddressIfNecessary(configUdpAnnounceAddress)
118
- : undefined;
119
-
120
- // create variable for re-use if needed
121
- let publicIp;
103
+ const { p2pIp, queryForIp, p2pBroadcastPort, p2pPort } = config;
122
104
 
123
- // check if no announce IP was provided
124
- const splitTcpAnnounceAddress = splitAddressPort(configTcpAnnounceAddress || '', true);
125
- if (splitTcpAnnounceAddress.length == 2 && splitTcpAnnounceAddress[0] === '') {
126
- if (queryForIp) {
127
- publicIp = await getPublicIp();
128
- const tcpAnnounceAddress = `${publicIp}:${splitTcpAnnounceAddress[1]}`;
129
- config.tcpAnnounceAddress = tcpAnnounceAddress;
130
- } else {
131
- throw new Error(
132
- `Invalid announceTcpAddress provided: ${configTcpAnnounceAddress}. Expected format: <addr>:<port>`,
133
- );
134
- }
105
+ // If no broadcast port is provided, use the given p2p port as the broadcast port
106
+ if (!p2pBroadcastPort) {
107
+ config.p2pBroadcastPort = p2pPort;
135
108
  }
136
109
 
137
- const splitUdpAnnounceAddress = splitAddressPort(configUdpAnnounceAddress || '', true);
138
- if (splitUdpAnnounceAddress.length == 2 && splitUdpAnnounceAddress[0] === '') {
139
- // If announceUdpAddress is not provided, use announceTcpAddress
140
- if (!queryForIp && config.tcpAnnounceAddress) {
141
- config.udpAnnounceAddress = config.tcpAnnounceAddress;
142
- } else if (queryForIp) {
143
- const udpPublicIp = publicIp || (await getPublicIp());
144
- const udpAnnounceAddress = `${udpPublicIp}:${splitUdpAnnounceAddress[1]}`;
145
- config.udpAnnounceAddress = udpAnnounceAddress;
110
+ // check if no announce IP was provided
111
+ if (!p2pIp) {
112
+ if (queryForIp) {
113
+ const publicIp = await getPublicIp();
114
+ config.p2pIp = publicIp;
146
115
  }
147
116
  }
117
+ // TODO(md): guard against setting a local ip address as the announce ip
148
118
 
149
119
  return config;
150
120
  }
@@ -153,30 +123,74 @@ export async function configureP2PClientAddresses(
153
123
  * Get the peer id private key
154
124
  *
155
125
  * 1. Check if we have a peer id private key in the config
156
- * 2. If not, check we have a peer id private key persisted in the node
157
- * 3. If not, create a new one, then persist it in the node
126
+ * 2. If not, check if we have a peer id private key persisted in a file
127
+ * 3. If no file path or data directory is provided, check if we have a peer id private key in the node's store
128
+ * 4. If not, create a new one, then persist it in a file if a file path or data directory is provided or in the node's store otherwise
158
129
  *
159
130
  */
160
131
  export async function getPeerIdPrivateKey(
161
- config: { peerIdPrivateKey?: string },
132
+ config: { peerIdPrivateKey?: SecretValue<string>; peerIdPrivateKeyPath?: string; dataDirectory?: string },
162
133
  store: AztecAsyncKVStore,
163
- ): Promise<string> {
164
- const peerIdPrivateKeySingleton = store.openSingleton<string>('peerIdPrivateKey');
165
- if (config.peerIdPrivateKey) {
166
- await peerIdPrivateKeySingleton.set(config.peerIdPrivateKey);
134
+ logger: Logger,
135
+ ): Promise<SecretValue<string>> {
136
+ const peerIdPrivateKeyFilePath =
137
+ config.peerIdPrivateKeyPath ??
138
+ (config.dataDirectory ? path.join(config.dataDirectory, PEER_ID_DATA_DIR_FILE) : undefined);
139
+ let peerIdPrivateKeySingleton: AztecAsyncSingleton<string> | undefined;
140
+
141
+ const writePrivateKeyToFile = async (filePath: string, privateKey: string) => {
142
+ await fs.mkdir(path.dirname(filePath), { recursive: true });
143
+ await fs.writeFile(filePath, privateKey);
144
+ };
145
+
146
+ // If the peerIdPrivateKey is provided in the config, we use it and persist it in either a file or the node's store
147
+ if (config.peerIdPrivateKey && config.peerIdPrivateKey.getValue().trim()) {
148
+ if (peerIdPrivateKeyFilePath) {
149
+ await writePrivateKeyToFile(peerIdPrivateKeyFilePath, config.peerIdPrivateKey.getValue());
150
+ } else {
151
+ peerIdPrivateKeySingleton = store.openSingleton<string>('peerIdPrivateKey');
152
+ await peerIdPrivateKeySingleton.set(config.peerIdPrivateKey.getValue());
153
+ }
167
154
  return config.peerIdPrivateKey;
168
155
  }
169
156
 
170
- const storedPeerIdPrivateKey = await peerIdPrivateKeySingleton.getAsync();
157
+ // Check to see if we have a peer id private key stored in a file or the node's store
158
+ let storedPeerIdPrivateKey: string | undefined;
159
+ const privateKeyFileExists =
160
+ peerIdPrivateKeyFilePath &&
161
+ (await fs
162
+ .access(peerIdPrivateKeyFilePath)
163
+ .then(() => true)
164
+ .catch(() => false));
165
+ if (peerIdPrivateKeyFilePath && privateKeyFileExists) {
166
+ await fs.access(peerIdPrivateKeyFilePath);
167
+ storedPeerIdPrivateKey = await fs.readFile(peerIdPrivateKeyFilePath, 'utf8');
168
+ } else {
169
+ peerIdPrivateKeySingleton = store.openSingleton<string>('peerIdPrivateKey');
170
+ storedPeerIdPrivateKey = await peerIdPrivateKeySingleton.getAsync();
171
+ }
171
172
  if (storedPeerIdPrivateKey) {
172
- return storedPeerIdPrivateKey;
173
+ if (peerIdPrivateKeyFilePath && !privateKeyFileExists) {
174
+ logger.verbose(`Peer ID private key found in the node's store, persisting it to ${peerIdPrivateKeyFilePath}`);
175
+ await writePrivateKeyToFile(peerIdPrivateKeyFilePath, storedPeerIdPrivateKey);
176
+ }
177
+ return new SecretValue(storedPeerIdPrivateKey);
173
178
  }
174
179
 
180
+ // Generate and persist a new private key
175
181
  const newPeerIdPrivateKey = await generateKeyPair('secp256k1');
176
182
  const privateKeyString = Buffer.from(marshalPrivateKey(newPeerIdPrivateKey)).toString('hex');
183
+ if (peerIdPrivateKeyFilePath) {
184
+ logger.verbose(`Creating new peer ID private key and persisting it to ${peerIdPrivateKeyFilePath}`);
185
+ await writePrivateKeyToFile(peerIdPrivateKeyFilePath, privateKeyString);
186
+ } else {
187
+ logger.warn(
188
+ 'Creating new peer ID private key and persisting it to the lmdb store. Key will be lost on rollup upgrade, specify the peer id private key path and restart the node to persist the peer id private key to a file',
189
+ );
190
+ await peerIdPrivateKeySingleton!.set(privateKeyString);
191
+ }
177
192
 
178
- await peerIdPrivateKeySingleton.set(privateKeyString);
179
- return privateKeyString;
193
+ return new SecretValue(privateKeyString);
180
194
  }
181
195
 
182
196
  /**
package/src/versioning.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { toBufferBE } from '@aztec/foundation/bigint-buffer';
2
2
  import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
3
- import { protocolContractTreeRoot } from '@aztec/protocol-contracts';
3
+ import { protocolContractsHash } from '@aztec/protocol-contracts';
4
4
  import type { ChainConfig } from '@aztec/stdlib/config';
5
5
  import {
6
6
  type ComponentsVersions,
@@ -9,10 +9,10 @@ import {
9
9
  getComponentsVersionsFromConfig,
10
10
  } from '@aztec/stdlib/versioning';
11
11
 
12
- import type { SignableENR } from '@chainsafe/enr';
12
+ import type { SignableENR } from '@nethermindeth/enr';
13
13
  import xxhashFactory from 'xxhash-wasm';
14
14
 
15
- import { AZTEC_ENR_KEY } from './types/index.js';
15
+ import { AZTEC_ENR_CLIENT_VERSION_KEY, AZTEC_ENR_KEY } from './types/index.js';
16
16
 
17
17
  const USE_XX_HASH = false; // Enable to reduce the size of the ENR record for production
18
18
  const XX_HASH_LEN = 8;
@@ -20,7 +20,7 @@ const xxhash = await xxhashFactory();
20
20
 
21
21
  /** Returns the component versions based on config and this build. */
22
22
  export function getVersions(config: ChainConfig) {
23
- return getComponentsVersionsFromConfig(config, protocolContractTreeRoot, getVKTreeRoot());
23
+ return getComponentsVersionsFromConfig(config, protocolContractsHash, getVKTreeRoot());
24
24
  }
25
25
 
26
26
  /** Sets the aztec key on the ENR record with versioning info. */
@@ -31,6 +31,13 @@ export function setAztecEnrKey(enr: SignableENR, config: ChainConfig, useXxHash
31
31
  return versions;
32
32
  }
33
33
 
34
+ /** Sets the Aztec client version on ENR record **/
35
+ export function setAztecClientVersionEnrKey(enr: SignableENR, clientVersion: string) {
36
+ if (clientVersion) {
37
+ enr.set(AZTEC_ENR_CLIENT_VERSION_KEY, Buffer.from(clientVersion));
38
+ }
39
+ }
40
+
34
41
  /** Checks the given value from an ENR record against the expected versions. */
35
42
  export function checkAztecEnrVersion(enrValue: Buffer, expectedVersions: ComponentsVersions) {
36
43
  if (enrValue.length === XX_HASH_LEN) {
@@ -1,56 +0,0 @@
1
- import { Tx, TxHash } from '@aztec/stdlib/tx';
2
- import { type TelemetryClient } from '@aztec/telemetry-client';
3
- import type { TxPool } from './tx_pool.js';
4
- /**
5
- * In-memory implementation of the Transaction Pool.
6
- */
7
- export declare class InMemoryTxPool implements TxPool {
8
- private log;
9
- /**
10
- * Our tx pool, stored as a Map in-memory, with K: tx hash and V: the transaction.
11
- */
12
- private txs;
13
- private minedTxs;
14
- private pendingTxs;
15
- private metrics;
16
- /**
17
- * Class constructor for in-memory TxPool. Initiates our transaction pool as a JS Map.
18
- * @param log - A logger.
19
- */
20
- constructor(telemetry?: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
21
- markAsMined(txHashes: TxHash[], blockNumber: number): Promise<void>;
22
- markMinedAsPending(txHashes: TxHash[]): Promise<void>;
23
- getPendingTxHashes(): Promise<TxHash[]>;
24
- getMinedTxHashes(): Promise<[TxHash, number][]>;
25
- getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | undefined>;
26
- /**
27
- * Checks if a transaction exists in the pool and returns it.
28
- * @param txHash - The generated tx hash.
29
- * @returns The transaction, if found, 'undefined' otherwise.
30
- */
31
- getTxByHash(txHash: TxHash): Promise<Tx | undefined>;
32
- getArchivedTxByHash(): Promise<Tx | undefined>;
33
- /**
34
- * Adds a list of transactions to the pool. Duplicates are ignored.
35
- * @param txs - An array of txs to be added to the pool.
36
- * @returns Empty promise.
37
- */
38
- addTxs(txs: Tx[]): Promise<void>;
39
- /**
40
- * Deletes transactions from the pool. Tx hashes that are not present are ignored.
41
- * @param txHashes - An array of tx hashes to be removed from the tx pool.
42
- * @returns The number of transactions that was deleted from the pool.
43
- */
44
- deleteTxs(txHashes: TxHash[]): Promise<void>;
45
- /**
46
- * Gets all the transactions stored in the pool.
47
- * @returns Array of tx objects in the order they were added to the pool.
48
- */
49
- getAllTxs(): Promise<Tx[]>;
50
- /**
51
- * Gets the hashes of all transactions currently in the tx pool.
52
- * @returns An array of transaction hashes found in the tx pool.
53
- */
54
- getAllTxHashes(): Promise<TxHash[]>;
55
- }
56
- //# sourceMappingURL=memory_tx_pool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory_tx_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/memory_tx_pool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAInF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;GAEG;AACH,qBAAa,cAAe,YAAW,MAAM;IAcoB,OAAO,CAAC,GAAG;IAb1E;;OAEG;IACH,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,UAAU,CAAc;IAEhC,OAAO,CAAC,OAAO,CAA0B;IAEzC;;;OAGG;gBACS,SAAS,GAAE,eAAsC,EAAU,GAAG,yCAA8B;IAOjG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B/C,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAQ7C,gBAAgB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAM/C,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IAW5E;;;;OAIG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAKpD,mBAAmB,IAAI,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAIrD;;;;OAIG;IACU,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB7C;;;;OAIG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBnD;;;OAGG;IACI,SAAS,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAIjC;;;OAGG;IACI,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAG3C"}
@@ -1,141 +0,0 @@
1
- import { createLogger } from '@aztec/foundation/log';
2
- import { Tx, TxHash } from '@aztec/stdlib/tx';
3
- import { getTelemetryClient } from '@aztec/telemetry-client';
4
- import { PoolInstrumentation, PoolName } from '../instrumentation.js';
5
- import { getPendingTxPriority } from './priority.js';
6
- /**
7
- * In-memory implementation of the Transaction Pool.
8
- */ export class InMemoryTxPool {
9
- log;
10
- /**
11
- * Our tx pool, stored as a Map in-memory, with K: tx hash and V: the transaction.
12
- */ txs;
13
- minedTxs;
14
- pendingTxs;
15
- metrics;
16
- /**
17
- * Class constructor for in-memory TxPool. Initiates our transaction pool as a JS Map.
18
- * @param log - A logger.
19
- */ constructor(telemetry = getTelemetryClient(), log = createLogger('p2p:tx_pool')){
20
- this.log = log;
21
- this.txs = new Map();
22
- this.minedTxs = new Map();
23
- this.pendingTxs = new Set();
24
- this.metrics = new PoolInstrumentation(telemetry, PoolName.TX_POOL);
25
- }
26
- markAsMined(txHashes, blockNumber) {
27
- const keys = txHashes.map((x)=>x.toBigInt());
28
- for (const key of keys){
29
- this.minedTxs.set(key, blockNumber);
30
- this.pendingTxs.delete(key);
31
- }
32
- this.metrics.recordRemovedObjects(txHashes.length, 'pending');
33
- this.metrics.recordAddedObjects(txHashes.length, 'mined');
34
- return Promise.resolve();
35
- }
36
- markMinedAsPending(txHashes) {
37
- if (txHashes.length === 0) {
38
- return Promise.resolve();
39
- }
40
- const keys = txHashes.map((x)=>x.toBigInt());
41
- let deleted = 0;
42
- let added = 0;
43
- for (const key of keys){
44
- if (this.minedTxs.delete(key)) {
45
- deleted++;
46
- }
47
- // only add back to the pending set if we have the tx object
48
- if (this.txs.has(key)) {
49
- added++;
50
- this.pendingTxs.add(key);
51
- }
52
- }
53
- this.metrics.recordRemovedObjects(deleted, 'mined');
54
- this.metrics.recordAddedObjects(added, 'pending');
55
- return Promise.resolve();
56
- }
57
- async getPendingTxHashes() {
58
- const txs = (await this.getAllTxs()).sort((tx1, tx2)=>-getPendingTxPriority(tx1).localeCompare(getPendingTxPriority(tx2)));
59
- const txHashes = await Promise.all(txs.map((tx)=>tx.getTxHash()));
60
- return txHashes.filter((txHash)=>this.pendingTxs.has(txHash.toBigInt()));
61
- }
62
- getMinedTxHashes() {
63
- return Promise.resolve(Array.from(this.minedTxs.entries()).map(([txHash, blockNumber])=>[
64
- TxHash.fromBigInt(txHash),
65
- blockNumber
66
- ]));
67
- }
68
- getTxStatus(txHash) {
69
- const key = txHash.toBigInt();
70
- if (this.pendingTxs.has(key)) {
71
- return Promise.resolve('pending');
72
- }
73
- if (this.minedTxs.has(key)) {
74
- return Promise.resolve('mined');
75
- }
76
- return Promise.resolve(undefined);
77
- }
78
- /**
79
- * Checks if a transaction exists in the pool and returns it.
80
- * @param txHash - The generated tx hash.
81
- * @returns The transaction, if found, 'undefined' otherwise.
82
- */ getTxByHash(txHash) {
83
- const result = this.txs.get(txHash.toBigInt());
84
- return Promise.resolve(result === undefined ? undefined : Tx.clone(result));
85
- }
86
- getArchivedTxByHash() {
87
- return Promise.resolve(undefined);
88
- }
89
- /**
90
- * Adds a list of transactions to the pool. Duplicates are ignored.
91
- * @param txs - An array of txs to be added to the pool.
92
- * @returns Empty promise.
93
- */ async addTxs(txs) {
94
- let pending = 0;
95
- for (const tx of txs){
96
- const txHash = await tx.getTxHash();
97
- this.log.verbose(`Adding tx ${txHash.toString()} to pool`, {
98
- eventName: 'tx-added-to-pool',
99
- ...await tx.getStats()
100
- });
101
- const key = txHash.toBigInt();
102
- this.txs.set(key, tx);
103
- if (!this.minedTxs.has(key)) {
104
- pending++;
105
- this.metrics.recordSize(tx);
106
- this.pendingTxs.add(key);
107
- }
108
- }
109
- this.metrics.recordAddedObjects(pending, 'pending');
110
- return;
111
- }
112
- /**
113
- * Deletes transactions from the pool. Tx hashes that are not present are ignored.
114
- * @param txHashes - An array of tx hashes to be removed from the tx pool.
115
- * @returns The number of transactions that was deleted from the pool.
116
- */ deleteTxs(txHashes) {
117
- let deletedMined = 0;
118
- let deletedPending = 0;
119
- for (const txHash of txHashes){
120
- const key = txHash.toBigInt();
121
- this.txs.delete(key);
122
- deletedPending += this.pendingTxs.delete(key) ? 1 : 0;
123
- deletedMined += this.minedTxs.delete(key) ? 1 : 0;
124
- }
125
- this.metrics.recordRemovedObjects(deletedPending, 'pending');
126
- this.metrics.recordRemovedObjects(deletedMined, 'mined');
127
- return Promise.resolve();
128
- }
129
- /**
130
- * Gets all the transactions stored in the pool.
131
- * @returns Array of tx objects in the order they were added to the pool.
132
- */ getAllTxs() {
133
- return Promise.resolve(Array.from(this.txs.values()).map((x)=>Tx.clone(x)));
134
- }
135
- /**
136
- * Gets the hashes of all transactions currently in the tx pool.
137
- * @returns An array of transaction hashes found in the tx pool.
138
- */ getAllTxHashes() {
139
- return Promise.resolve(Array.from(this.txs.keys()).map((x)=>TxHash.fromBigInt(x)));
140
- }
141
- }
@@ -1,8 +0,0 @@
1
- import type { EpochCacheInterface } from '@aztec/epoch-cache';
2
- import { type BlockProposal, type P2PValidator, PeerErrorSeverity } from '@aztec/stdlib/p2p';
3
- export declare class BlockProposalValidator implements P2PValidator<BlockProposal> {
4
- private epochCache;
5
- constructor(epochCache: EpochCacheInterface);
6
- validate(block: BlockProposal): Promise<PeerErrorSeverity | undefined>;
7
- }
8
- //# sourceMappingURL=block_proposal_validator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"block_proposal_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/block_proposal_validator/block_proposal_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE7F,qBAAa,sBAAuB,YAAW,YAAY,CAAC,aAAa,CAAC;IACxE,OAAO,CAAC,UAAU,CAAsB;gBAE5B,UAAU,EAAE,mBAAmB;IAIrC,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;CAkB7E"}
@@ -1,21 +0,0 @@
1
- import { PeerErrorSeverity } from '@aztec/stdlib/p2p';
2
- export class BlockProposalValidator {
3
- epochCache;
4
- constructor(epochCache){
5
- this.epochCache = epochCache;
6
- }
7
- async validate(block) {
8
- const { currentProposer, nextProposer, currentSlot, nextSlot } = await this.epochCache.getProposerInCurrentOrNextSlot();
9
- // Check that the attestation is for the current or next slot
10
- const slotNumberBigInt = block.payload.header.globalVariables.slotNumber.toBigInt();
11
- if (slotNumberBigInt !== currentSlot && slotNumberBigInt !== nextSlot) {
12
- return PeerErrorSeverity.HighToleranceError;
13
- }
14
- // Check that the block proposal is from the current or next proposer
15
- const proposer = await block.getSender();
16
- if (!proposer.equals(currentProposer) && !proposer.equals(nextProposer)) {
17
- return PeerErrorSeverity.HighToleranceError;
18
- }
19
- return undefined;
20
- }
21
- }
@@ -1,2 +0,0 @@
1
- export * from './block_proposal_validator.js';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/block_proposal_validator/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC"}
@@ -1 +0,0 @@
1
- export * from './block_proposal_validator.js';