@aztec/p2p 0.0.1-commit.b655e406 → 0.0.1-commit.bf2612ae

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 (374) hide show
  1. package/dest/bootstrap/bootstrap.d.ts +1 -1
  2. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  3. package/dest/client/factory.d.ts +2 -2
  4. package/dest/client/factory.d.ts.map +1 -1
  5. package/dest/client/factory.js +2 -3
  6. package/dest/client/index.d.ts +1 -1
  7. package/dest/client/interface.d.ts +18 -3
  8. package/dest/client/interface.d.ts.map +1 -1
  9. package/dest/client/p2p_client.d.ts +16 -37
  10. package/dest/client/p2p_client.d.ts.map +1 -1
  11. package/dest/client/p2p_client.js +464 -126
  12. package/dest/config.d.ts +62 -59
  13. package/dest/config.d.ts.map +1 -1
  14. package/dest/config.js +21 -14
  15. package/dest/enr/generate-enr.d.ts +1 -1
  16. package/dest/enr/index.d.ts +1 -1
  17. package/dest/errors/attestation-pool.error.d.ts +7 -0
  18. package/dest/errors/attestation-pool.error.d.ts.map +1 -0
  19. package/dest/errors/attestation-pool.error.js +12 -0
  20. package/dest/errors/reqresp.error.d.ts +1 -1
  21. package/dest/errors/reqresp.error.d.ts.map +1 -1
  22. package/dest/index.d.ts +1 -1
  23. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +77 -36
  24. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  25. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
  26. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  27. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +241 -266
  28. package/dest/mem_pools/attestation_pool/index.d.ts +1 -1
  29. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +24 -14
  30. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
  31. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +123 -95
  32. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +18 -12
  33. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
  34. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +91 -108
  35. package/dest/mem_pools/attestation_pool/mocks.d.ts +234 -10
  36. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  37. package/dest/mem_pools/attestation_pool/mocks.js +17 -13
  38. package/dest/mem_pools/index.d.ts +1 -1
  39. package/dest/mem_pools/instrumentation.d.ts +9 -1
  40. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  41. package/dest/mem_pools/instrumentation.js +36 -9
  42. package/dest/mem_pools/interface.d.ts +3 -4
  43. package/dest/mem_pools/interface.d.ts.map +1 -1
  44. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +33 -58
  45. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  46. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +314 -335
  47. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +32 -0
  48. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -0
  49. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +112 -0
  50. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +157 -0
  51. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -0
  52. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +52 -0
  53. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +16 -0
  54. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  55. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +122 -0
  56. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +17 -0
  57. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  58. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +84 -0
  59. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +19 -0
  60. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  61. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +78 -0
  62. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +26 -0
  63. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  64. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +84 -0
  65. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
  66. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
  67. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
  68. package/dest/mem_pools/tx_pool/index.d.ts +1 -2
  69. package/dest/mem_pools/tx_pool/index.d.ts.map +1 -1
  70. package/dest/mem_pools/tx_pool/index.js +0 -1
  71. package/dest/mem_pools/tx_pool/priority.d.ts +5 -1
  72. package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
  73. package/dest/mem_pools/tx_pool/priority.js +6 -1
  74. package/dest/mem_pools/tx_pool/tx_pool.d.ts +11 -6
  75. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
  76. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
  77. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  78. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +30 -24
  79. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +7 -6
  80. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  81. package/dest/msg_validators/attestation_validator/attestation_validator.js +57 -24
  82. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +20 -0
  83. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -0
  84. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +71 -0
  85. package/dest/msg_validators/attestation_validator/index.d.ts +2 -1
  86. package/dest/msg_validators/attestation_validator/index.d.ts.map +1 -1
  87. package/dest/msg_validators/attestation_validator/index.js +1 -0
  88. package/dest/msg_validators/clock_tolerance.d.ts +21 -0
  89. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
  90. package/dest/msg_validators/clock_tolerance.js +37 -0
  91. package/dest/msg_validators/index.d.ts +2 -2
  92. package/dest/msg_validators/index.d.ts.map +1 -1
  93. package/dest/msg_validators/index.js +1 -1
  94. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts +1 -1
  95. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts.map +1 -1
  96. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +9 -0
  97. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
  98. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +6 -0
  99. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +9 -0
  100. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
  101. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +6 -0
  102. package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
  103. package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
  104. package/dest/msg_validators/proposal_validator/index.js +3 -0
  105. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -0
  106. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
  107. package/dest/msg_validators/proposal_validator/proposal_validator.js +104 -0
  108. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +23 -0
  109. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -0
  110. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +212 -0
  111. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +1 -1
  112. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  113. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +1 -1
  114. package/dest/msg_validators/tx_validator/archive_cache.d.ts +2 -2
  115. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  116. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +2 -2
  117. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  118. package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
  119. package/dest/msg_validators/tx_validator/data_validator.d.ts +1 -1
  120. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  121. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +1 -1
  122. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  123. package/dest/msg_validators/tx_validator/factory.d.ts +4 -3
  124. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  125. package/dest/msg_validators/tx_validator/factory.js +1 -1
  126. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
  127. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
  128. package/dest/msg_validators/tx_validator/fee_payer_balance.js +20 -0
  129. package/dest/msg_validators/tx_validator/gas_validator.d.ts +1 -1
  130. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  131. package/dest/msg_validators/tx_validator/gas_validator.js +8 -14
  132. package/dest/msg_validators/tx_validator/index.d.ts +2 -1
  133. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  134. package/dest/msg_validators/tx_validator/index.js +1 -0
  135. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +2 -2
  136. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  137. package/dest/msg_validators/tx_validator/phases_validator.d.ts +1 -1
  138. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  139. package/dest/msg_validators/tx_validator/phases_validator.js +3 -1
  140. package/dest/msg_validators/tx_validator/size_validator.d.ts +6 -0
  141. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
  142. package/dest/msg_validators/tx_validator/size_validator.js +20 -0
  143. package/dest/msg_validators/tx_validator/test_utils.d.ts +2 -2
  144. package/dest/msg_validators/tx_validator/test_utils.d.ts.map +1 -1
  145. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +3 -2
  146. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  147. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +1 -1
  148. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  149. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +1 -1
  150. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  151. package/dest/services/data_store.d.ts +1 -1
  152. package/dest/services/data_store.d.ts.map +1 -1
  153. package/dest/services/discv5/discV5_service.d.ts +1 -1
  154. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  155. package/dest/services/dummy_service.d.ts +6 -2
  156. package/dest/services/dummy_service.d.ts.map +1 -1
  157. package/dest/services/dummy_service.js +3 -0
  158. package/dest/services/encoding.d.ts +1 -1
  159. package/dest/services/encoding.d.ts.map +1 -1
  160. package/dest/services/encoding.js +7 -6
  161. package/dest/services/gossipsub/scoring.d.ts +1 -1
  162. package/dest/services/index.d.ts +1 -1
  163. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  164. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  165. package/dest/services/libp2p/instrumentation.js +26 -72
  166. package/dest/services/libp2p/libp2p_service.d.ts +41 -80
  167. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  168. package/dest/services/libp2p/libp2p_service.js +899 -175
  169. package/dest/services/peer-manager/interface.d.ts +1 -1
  170. package/dest/services/peer-manager/metrics.d.ts +8 -1
  171. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  172. package/dest/services/peer-manager/metrics.js +24 -16
  173. package/dest/services/peer-manager/peer_manager.d.ts +2 -33
  174. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  175. package/dest/services/peer-manager/peer_manager.js +6 -12
  176. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  177. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  178. package/dest/services/peer-manager/peer_scoring.js +37 -2
  179. package/dest/services/reqresp/config.d.ts +1 -1
  180. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +1 -1
  181. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  182. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +1 -4
  183. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  184. package/dest/services/reqresp/constants.d.ts +12 -0
  185. package/dest/services/reqresp/constants.d.ts.map +1 -0
  186. package/dest/services/reqresp/constants.js +7 -0
  187. package/dest/services/reqresp/index.d.ts +1 -1
  188. package/dest/services/reqresp/interface.d.ts +2 -2
  189. package/dest/services/reqresp/interface.d.ts.map +1 -1
  190. package/dest/services/reqresp/interface.js +1 -1
  191. package/dest/services/reqresp/metrics.d.ts +1 -1
  192. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  193. package/dest/services/reqresp/metrics.js +5 -21
  194. package/dest/services/reqresp/protocols/auth.d.ts +2 -2
  195. package/dest/services/reqresp/protocols/auth.d.ts.map +1 -1
  196. package/dest/services/reqresp/protocols/auth.js +2 -2
  197. package/dest/services/reqresp/protocols/block.d.ts +1 -1
  198. package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
  199. package/dest/services/reqresp/protocols/block.js +3 -2
  200. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +1 -1
  201. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  202. package/dest/services/reqresp/protocols/block_txs/bitvector.js +7 -0
  203. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +1 -1
  204. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +4 -6
  205. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  206. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +1 -1
  207. package/dest/services/reqresp/protocols/block_txs/index.d.ts +1 -1
  208. package/dest/services/reqresp/protocols/goodbye.d.ts +1 -1
  209. package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
  210. package/dest/services/reqresp/protocols/index.d.ts +1 -1
  211. package/dest/services/reqresp/protocols/ping.d.ts +1 -1
  212. package/dest/services/reqresp/protocols/status.d.ts +6 -5
  213. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  214. package/dest/services/reqresp/protocols/status.js +7 -3
  215. package/dest/services/reqresp/protocols/tx.d.ts +2 -3
  216. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  217. package/dest/services/reqresp/rate-limiter/index.d.ts +1 -1
  218. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +2 -2
  219. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  220. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  221. package/dest/services/reqresp/reqresp.d.ts +1 -41
  222. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  223. package/dest/services/reqresp/reqresp.js +402 -24
  224. package/dest/services/reqresp/status.d.ts +2 -2
  225. package/dest/services/reqresp/status.d.ts.map +1 -1
  226. package/dest/services/service.d.ts +16 -3
  227. package/dest/services/service.d.ts.map +1 -1
  228. package/dest/services/tx_collection/config.d.ts +1 -1
  229. package/dest/services/tx_collection/config.js +1 -1
  230. package/dest/services/tx_collection/fast_tx_collection.d.ts +4 -9
  231. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  232. package/dest/services/tx_collection/index.d.ts +1 -1
  233. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  234. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  235. package/dest/services/tx_collection/instrumentation.js +4 -14
  236. package/dest/services/tx_collection/slow_tx_collection.d.ts +4 -5
  237. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  238. package/dest/services/tx_collection/slow_tx_collection.js +2 -1
  239. package/dest/services/tx_collection/tx_collection.d.ts +7 -7
  240. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  241. package/dest/services/tx_collection/tx_collection_sink.d.ts +3 -3
  242. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  243. package/dest/services/tx_collection/tx_source.d.ts +1 -1
  244. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  245. package/dest/services/tx_provider.d.ts +4 -2
  246. package/dest/services/tx_provider.d.ts.map +1 -1
  247. package/dest/services/tx_provider.js +11 -2
  248. package/dest/services/tx_provider_instrumentation.d.ts +5 -2
  249. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  250. package/dest/services/tx_provider_instrumentation.js +13 -13
  251. package/dest/test-helpers/generate-peer-id-private-keys.d.ts +1 -1
  252. package/dest/test-helpers/get-ports.d.ts +1 -1
  253. package/dest/test-helpers/get-ports.d.ts.map +1 -1
  254. package/dest/test-helpers/index.d.ts +2 -1
  255. package/dest/test-helpers/index.d.ts.map +1 -1
  256. package/dest/test-helpers/index.js +1 -0
  257. package/dest/test-helpers/make-enrs.d.ts +1 -1
  258. package/dest/test-helpers/make-test-p2p-clients.d.ts +2 -2
  259. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  260. package/dest/test-helpers/mock-pubsub.d.ts +4 -4
  261. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  262. package/dest/test-helpers/mock-tx-helpers.d.ts +2 -2
  263. package/dest/test-helpers/mock-tx-helpers.d.ts.map +1 -1
  264. package/dest/test-helpers/mock-tx-helpers.js +1 -1
  265. package/dest/test-helpers/reqresp-nodes.d.ts +2 -2
  266. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  267. package/dest/test-helpers/test_tx_provider.d.ts +40 -0
  268. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  269. package/dest/test-helpers/test_tx_provider.js +41 -0
  270. package/dest/testbench/p2p_client_testbench_worker.d.ts +1 -1
  271. package/dest/testbench/p2p_client_testbench_worker.js +39 -22
  272. package/dest/testbench/parse_log_file.d.ts +1 -1
  273. package/dest/testbench/testbench.d.ts +1 -1
  274. package/dest/testbench/worker_client_manager.d.ts +1 -1
  275. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  276. package/dest/testbench/worker_client_manager.js +6 -1
  277. package/dest/types/index.d.ts +1 -1
  278. package/dest/util.d.ts +2 -1
  279. package/dest/util.d.ts.map +1 -1
  280. package/dest/util.js +11 -2
  281. package/dest/versioning.d.ts +1 -1
  282. package/package.json +19 -18
  283. package/src/client/factory.ts +5 -10
  284. package/src/client/interface.ts +20 -2
  285. package/src/client/p2p_client.ts +108 -155
  286. package/src/config.ts +30 -19
  287. package/src/errors/attestation-pool.error.ts +13 -0
  288. package/src/mem_pools/attestation_pool/attestation_pool.ts +86 -35
  289. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +243 -278
  290. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +175 -111
  291. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +147 -136
  292. package/src/mem_pools/attestation_pool/mocks.ts +21 -15
  293. package/src/mem_pools/instrumentation.ts +47 -10
  294. package/src/mem_pools/interface.ts +2 -4
  295. package/src/mem_pools/tx_pool/README.md +270 -0
  296. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +367 -371
  297. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +132 -0
  298. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +208 -0
  299. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +162 -0
  300. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +104 -0
  301. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +93 -0
  302. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +106 -0
  303. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
  304. package/src/mem_pools/tx_pool/index.ts +0 -1
  305. package/src/mem_pools/tx_pool/priority.ts +8 -1
  306. package/src/mem_pools/tx_pool/tx_pool.ts +11 -5
  307. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +23 -17
  308. package/src/msg_validators/attestation_validator/attestation_validator.ts +45 -32
  309. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +88 -0
  310. package/src/msg_validators/attestation_validator/index.ts +1 -0
  311. package/src/msg_validators/clock_tolerance.ts +51 -0
  312. package/src/msg_validators/index.ts +1 -1
  313. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +10 -0
  314. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +13 -0
  315. package/src/msg_validators/proposal_validator/index.ts +3 -0
  316. package/src/msg_validators/proposal_validator/proposal_validator.ts +92 -0
  317. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +230 -0
  318. package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
  319. package/src/msg_validators/tx_validator/block_header_validator.ts +4 -2
  320. package/src/msg_validators/tx_validator/data_validator.ts +12 -4
  321. package/src/msg_validators/tx_validator/factory.ts +3 -2
  322. package/src/msg_validators/tx_validator/fee_payer_balance.ts +40 -0
  323. package/src/msg_validators/tx_validator/gas_validator.ts +8 -25
  324. package/src/msg_validators/tx_validator/index.ts +1 -0
  325. package/src/msg_validators/tx_validator/metadata_validator.ts +13 -5
  326. package/src/msg_validators/tx_validator/phases_validator.ts +3 -1
  327. package/src/msg_validators/tx_validator/size_validator.ts +18 -0
  328. package/src/msg_validators/tx_validator/test_utils.ts +1 -1
  329. package/src/msg_validators/tx_validator/timestamp_validator.ts +5 -2
  330. package/src/services/dummy_service.ts +6 -0
  331. package/src/services/encoding.ts +6 -5
  332. package/src/services/libp2p/instrumentation.ts +26 -71
  333. package/src/services/libp2p/libp2p_service.ts +580 -160
  334. package/src/services/peer-manager/metrics.ts +27 -16
  335. package/src/services/peer-manager/peer_manager.ts +7 -4
  336. package/src/services/peer-manager/peer_scoring.ts +42 -3
  337. package/src/services/reqresp/connection-sampler/connection_sampler.ts +3 -1
  338. package/src/services/reqresp/constants.ts +14 -0
  339. package/src/services/reqresp/interface.ts +1 -1
  340. package/src/services/reqresp/metrics.ts +7 -23
  341. package/src/services/reqresp/protocols/auth.ts +2 -2
  342. package/src/services/reqresp/protocols/block.ts +3 -2
  343. package/src/services/reqresp/protocols/block_txs/bitvector.ts +9 -0
  344. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +1 -1
  345. package/src/services/reqresp/protocols/status.ts +16 -12
  346. package/src/services/reqresp/protocols/tx.ts +1 -2
  347. package/src/services/service.ts +19 -4
  348. package/src/services/tx_collection/config.ts +1 -1
  349. package/src/services/tx_collection/fast_tx_collection.ts +3 -2
  350. package/src/services/tx_collection/instrumentation.ts +4 -21
  351. package/src/services/tx_collection/slow_tx_collection.ts +5 -4
  352. package/src/services/tx_collection/tx_collection.ts +6 -5
  353. package/src/services/tx_provider.ts +19 -3
  354. package/src/services/tx_provider_instrumentation.ts +18 -14
  355. package/src/test-helpers/index.ts +1 -0
  356. package/src/test-helpers/mock-pubsub.ts +1 -1
  357. package/src/test-helpers/mock-tx-helpers.ts +1 -1
  358. package/src/test-helpers/reqresp-nodes.ts +1 -1
  359. package/src/test-helpers/test_tx_provider.ts +64 -0
  360. package/src/testbench/p2p_client_testbench_worker.ts +45 -22
  361. package/src/testbench/worker_client_manager.ts +6 -1
  362. package/src/util.ts +12 -2
  363. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +0 -80
  364. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +0 -1
  365. package/dest/mem_pools/tx_pool/memory_tx_pool.js +0 -238
  366. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -12
  367. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
  368. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +0 -70
  369. package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
  370. package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
  371. package/dest/msg_validators/block_proposal_validator/index.js +0 -1
  372. package/src/mem_pools/tx_pool/memory_tx_pool.ts +0 -283
  373. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -81
  374. package/src/msg_validators/block_proposal_validator/index.ts +0 -1
@@ -1,3 +1,4 @@
1
+ import { BlockNumber } from '@aztec/foundation/branded-types';
1
2
  import { compactArray } from '@aztec/foundation/collection';
2
3
  import { type Logger, createLogger } from '@aztec/foundation/log';
3
4
  import { elapsed } from '@aztec/foundation/timer';
@@ -55,7 +56,7 @@ export class TxProvider implements ITxProvider {
55
56
  /** Gathers txs from the tx pool, proposal body, remote rpc nodes, and reqresp. */
56
57
  public getTxsForBlockProposal(
57
58
  blockProposal: BlockProposal,
58
- blockNumber: number,
59
+ blockNumber: BlockNumber,
59
60
  opts: { pinnedPeer: PeerId | undefined; deadline: Date },
60
61
  ): Promise<{ txs: Tx[]; missingTxs: TxHash[] }> {
61
62
  return this.getOrderedTxsFromAllSources(
@@ -136,6 +137,7 @@ export class TxProvider implements ITxProvider {
136
137
  );
137
138
 
138
139
  if (missingTxHashes.size === 0) {
140
+ this.instrumentation.incTxsFromP2P(0, txHashes.length);
139
141
  return { txsFromMempool };
140
142
  }
141
143
 
@@ -154,24 +156,26 @@ export class TxProvider implements ITxProvider {
154
156
 
155
157
  if (missingTxHashes.size === 0) {
156
158
  await this.processProposalTxs(txsFromProposal);
159
+ this.instrumentation.incTxsFromP2P(0, txHashes.length);
157
160
  return { txsFromMempool, txsFromProposal };
158
161
  }
159
162
 
160
163
  // Start tx collection from the network if needed, while we validate the txs taken from the proposal in parallel
161
164
  const [txsFromNetwork] = await Promise.all([
162
- this.txCollection.collectFastFor(request, [...missingTxHashes], opts),
165
+ this.collectFromP2P(request, [...missingTxHashes], opts),
163
166
  this.processProposalTxs(txsFromProposal),
164
167
  ] as const);
165
168
 
166
169
  if (txsFromNetwork.length > 0) {
167
170
  txsFromNetwork.forEach(tx => missingTxHashes.delete(tx.txHash.toString()));
168
- this.instrumentation.incTxsFromP2P(txsFromNetwork.length);
169
171
  this.log.debug(
170
172
  `Retrieved ${txsFromNetwork.length} txs from network for block proposal (${missingTxHashes.size} pending)`,
171
173
  { ...blockInfo, missingTxHashes: [...missingTxHashes] },
172
174
  );
173
175
  }
174
176
 
177
+ this.instrumentation.incTxsFromP2P(txsFromNetwork.length, txHashes.length);
178
+
175
179
  if (missingTxHashes.size === 0) {
176
180
  return { txsFromNetwork, txsFromMempool, txsFromProposal };
177
181
  }
@@ -199,6 +203,18 @@ export class TxProvider implements ITxProvider {
199
203
  };
200
204
  }
201
205
 
206
+ private async collectFromP2P(
207
+ input: FastCollectionRequestInput,
208
+ txHashes: TxHash[] | string[],
209
+ opts: { deadline: Date; pinnedPeer?: PeerId },
210
+ ): Promise<Tx[]> {
211
+ const requestedAt = Date.now();
212
+ const result = await this.txCollection.collectFastFor(input, txHashes, opts);
213
+ const requestProcessedAt = Date.now();
214
+ this.instrumentation.recordTxsRequestDelay(requestProcessedAt - requestedAt);
215
+ return result;
216
+ }
217
+
202
218
  private extractFromProposal(proposal: BlockProposal | undefined, missingTxHashes: string[]): Tx[] {
203
219
  if (!proposal) {
204
220
  return [];
@@ -1,4 +1,4 @@
1
- import { Metrics, type TelemetryClient, type UpDownCounter } from '@aztec/telemetry-client';
1
+ import { type Histogram, Metrics, type TelemetryClient, type UpDownCounter } from '@aztec/telemetry-client';
2
2
 
3
3
  export class TxProviderInstrumentation {
4
4
  private txFromProposalCount: UpDownCounter;
@@ -6,24 +6,23 @@ export class TxProviderInstrumentation {
6
6
  private txFromP2PCount: UpDownCounter;
7
7
  private missingTxsCount: UpDownCounter;
8
8
 
9
+ private fractionOfTxsRequestedFromP2P: Histogram;
10
+ private txsRequestDelay: Histogram;
11
+
9
12
  constructor(client: TelemetryClient, name: string) {
10
13
  const meter = client.getMeter(name);
11
14
 
12
- this.txFromProposalCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_TXS_FROM_PROPOSALS_COUNT, {
13
- description: 'The number of txs taken from block proposals',
14
- });
15
+ this.txFromProposalCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_TXS_FROM_PROPOSALS_COUNT);
16
+
17
+ this.txFromMempoolCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_TXS_FROM_MEMPOOL_COUNT);
18
+
19
+ this.txFromP2PCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_TXS_FROM_P2P_COUNT);
15
20
 
16
- this.txFromMempoolCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_TXS_FROM_MEMPOOL_COUNT, {
17
- description: 'The number of txs taken from the local mempool',
18
- });
21
+ this.missingTxsCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_MISSING_TXS_COUNT);
19
22
 
20
- this.txFromP2PCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_TXS_FROM_P2P_COUNT, {
21
- description: 'The number of txs taken from the p2p network',
22
- });
23
+ this.fractionOfTxsRequestedFromP2P = meter.createHistogram(Metrics.TX_PROVIDER_P2P_TXS_REQUESTED_FRACTION);
23
24
 
24
- this.missingTxsCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_MISSING_TXS_COUNT, {
25
- description: 'The number of txs not found anywhere',
26
- });
25
+ this.txsRequestDelay = meter.createHistogram(Metrics.TX_PROVIDER_P2P_TXS_REQUEST_DELAY);
27
26
  }
28
27
 
29
28
  incTxsFromProposals(count: number) {
@@ -34,8 +33,13 @@ export class TxProviderInstrumentation {
34
33
  this.txFromMempoolCount.add(count);
35
34
  }
36
35
 
37
- incTxsFromP2P(count: number) {
36
+ incTxsFromP2P(count: number, total: number) {
38
37
  this.txFromP2PCount.add(count);
38
+ this.fractionOfTxsRequestedFromP2P.record(count / total);
39
+ }
40
+
41
+ recordTxsRequestDelay(delay: number) {
42
+ this.txsRequestDelay.record(delay);
39
43
  }
40
44
 
41
45
  incMissingTxs(count: number) {
@@ -4,3 +4,4 @@ export * from './make-enrs.js';
4
4
  export * from './make-test-p2p-clients.js';
5
5
  export * from './reqresp-nodes.js';
6
6
  export * from './mock-pubsub.js';
7
+ export * from './test_tx_provider.js';
@@ -39,7 +39,7 @@ export function getMockPubSubP2PServiceFactory<T extends P2PClientType>(
39
39
  peerId: PeerId,
40
40
  deps: {
41
41
  packageVersion: string;
42
- mempools: MemPools<T>;
42
+ mempools: MemPools;
43
43
  l2BlockSource: L2BlockSource & ContractDataSource;
44
44
  epochCache: EpochCacheInterface;
45
45
  proofVerifier: ClientProtocolCircuitVerifier;
@@ -1,4 +1,4 @@
1
- import { Fr } from '@aztec/foundation/fields';
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
3
3
  import { protocolContractsHash } from '@aztec/protocol-contracts';
4
4
  import { mockTx } from '@aztec/stdlib/testing';
@@ -112,7 +112,7 @@ export async function createTestLibP2PService<T extends P2PClientType>(
112
112
  archiver: L2BlockSource & ContractDataSource,
113
113
  worldStateSynchronizer: WorldStateSynchronizer,
114
114
  epochCache: EpochCache,
115
- mempools: MemPools<T>,
115
+ mempools: MemPools,
116
116
  telemetry: TelemetryClient,
117
117
  port: number = 0,
118
118
  peerId?: PeerId,
@@ -0,0 +1,64 @@
1
+ import type { BlockNumber } from '@aztec/foundation/branded-types';
2
+ import type { L2Block } from '@aztec/stdlib/block';
3
+ import type { ITxProvider } from '@aztec/stdlib/interfaces/server';
4
+ import type { BlockProposal } from '@aztec/stdlib/p2p';
5
+ import { type Tx, TxHash } from '@aztec/stdlib/tx';
6
+
7
+ import type { PeerId } from '@libp2p/interface';
8
+
9
+ /**
10
+ * Test transaction provider that can be seeded with transactions.
11
+ * Returns seeded txs when requested by hash, useful for testing block
12
+ * proposal handling without requiring a full P2P network.
13
+ */
14
+ export class TestTxProvider implements ITxProvider {
15
+ private txs: Map<string, Tx> = new Map();
16
+
17
+ /** Seed transactions that will be returned when requested. */
18
+ seed(txs: Tx[]) {
19
+ for (const tx of txs) {
20
+ this.txs.set(tx.getTxHash().toString(), tx);
21
+ }
22
+ }
23
+
24
+ /** Clear all seeded transactions. */
25
+ clear() {
26
+ this.txs.clear();
27
+ }
28
+
29
+ /** Returns txs from the seeded collection given their hashes. */
30
+ getAvailableTxs(txHashes: TxHash[]): Promise<{ txs: Tx[]; missingTxs: TxHash[] }> {
31
+ return this.getTxsByHashes(txHashes);
32
+ }
33
+
34
+ /** Get txs for a block proposal, returning any seeded txs that match the requested hashes. */
35
+ getTxsForBlockProposal(
36
+ blockProposal: BlockProposal,
37
+ _blockNumber: BlockNumber,
38
+ _opts: { pinnedPeer: PeerId | undefined; deadline: Date },
39
+ ): Promise<{ txs: Tx[]; missingTxs: TxHash[] }> {
40
+ return this.getTxsByHashes(blockProposal.txHashes);
41
+ }
42
+
43
+ /** Get txs for a block, returning any seeded txs that match the tx effects in the block. */
44
+ getTxsForBlock(block: L2Block, _opts: { deadline: Date }): Promise<{ txs: Tx[]; missingTxs: TxHash[] }> {
45
+ const txHashes = block.body.txEffects.map(txEffect => txEffect.txHash);
46
+ return this.getTxsByHashes(txHashes);
47
+ }
48
+
49
+ private getTxsByHashes(txHashes: TxHash[]): Promise<{ txs: Tx[]; missingTxs: TxHash[] }> {
50
+ const txs: Tx[] = [];
51
+ const missingTxs: TxHash[] = [];
52
+
53
+ for (const txHash of txHashes) {
54
+ const tx = this.txs.get(txHash.toString());
55
+ if (tx) {
56
+ txs.push(tx);
57
+ } else {
58
+ missingTxs.push(txHash);
59
+ }
60
+ }
61
+
62
+ return Promise.resolve({ txs, missingTxs });
63
+ }
64
+ }
@@ -5,7 +5,8 @@
5
5
  */
6
6
  import { MockL2BlockSource } from '@aztec/archiver/test';
7
7
  import type { EpochCacheInterface } from '@aztec/epoch-cache';
8
- import { EthAddress } from '@aztec/foundation/eth-address';
8
+ import { EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
9
+ import { SecretValue } from '@aztec/foundation/config';
9
10
  import { createLogger } from '@aztec/foundation/log';
10
11
  import { sleep } from '@aztec/foundation/sleep';
11
12
  import type { DataStoreConfig } from '@aztec/kv-store/config';
@@ -55,6 +56,7 @@ function mockTxPool(): TxPool {
55
56
  hasTx: () => Promise.resolve(false),
56
57
  updateConfig: () => {},
57
58
  markTxsAsNonEvictable: () => Promise.resolve(),
59
+ clearNonEvictableTxs: () => Promise.resolve(),
58
60
  cleanupDeletedMinedTxs: () => Promise.resolve(0),
59
61
  };
60
62
  return Object.assign(new EventEmitter(), pool);
@@ -63,34 +65,38 @@ function mockTxPool(): TxPool {
63
65
  function mockAttestationPool(): AttestationPool {
64
66
  return {
65
67
  isEmpty: () => Promise.resolve(false),
66
- addAttestations: () => Promise.resolve(),
67
- deleteAttestations: () => Promise.resolve(),
68
- deleteAttestationsOlderThan: () => Promise.resolve(),
69
- deleteAttestationsForSlot: () => Promise.resolve(),
70
- deleteAttestationsForSlotAndProposal: () => Promise.resolve(),
71
- getAttestationsForSlot: () => Promise.resolve([]),
72
- getAttestationsForSlotAndProposal: () => Promise.resolve([]),
73
68
  addBlockProposal: () => Promise.resolve(),
74
69
  getBlockProposal: () => Promise.resolve(undefined),
75
70
  hasBlockProposal: () => Promise.resolve(false),
76
- hasAttestation: () => Promise.resolve(false),
71
+ canAddProposal: () => Promise.resolve(true),
72
+ // Checkpoint attestation methods
73
+ addCheckpointProposal: () => Promise.resolve(),
74
+ getCheckpointProposal: () => Promise.resolve(undefined),
75
+ hasCheckpointProposal: () => Promise.resolve(false),
76
+ addCheckpointAttestations: () => Promise.resolve(),
77
+ getCheckpointAttestationsForSlot: () => Promise.resolve([]),
78
+ getCheckpointAttestationsForSlotAndProposal: () => Promise.resolve([]),
79
+ deleteCheckpointAttestationsOlderThan: () => Promise.resolve(),
80
+ hasReachedCheckpointProposalCap: () => Promise.resolve(false),
81
+ hasReachedCheckpointAttestationCap: () => Promise.resolve(false),
82
+ canAddCheckpointProposal: () => Promise.resolve(true),
83
+ canAddCheckpointAttestation: () => Promise.resolve(true),
84
+ hasCheckpointAttestation: () => Promise.resolve(false),
77
85
  };
78
86
  }
79
87
 
80
88
  function mockEpochCache(): EpochCacheInterface {
81
89
  return {
82
- getCommittee: () => Promise.resolve({ committee: [], seed: 1n, epoch: 0n }),
90
+ getCommittee: () => Promise.resolve({ committee: [], seed: 1n, epoch: EpochNumber.ZERO, isEscapeHatchOpen: false }),
83
91
  getProposerIndexEncoding: () => '0x' as `0x${string}`,
84
- getEpochAndSlotNow: () => ({ epoch: 0n, slot: 0n, ts: 0n }),
92
+ getEpochAndSlotNow: () => ({ epoch: EpochNumber.ZERO, slot: SlotNumber.ZERO, ts: 0n, nowMs: 0n }),
85
93
  computeProposerIndex: () => 0n,
86
- getProposerAttesterAddressInCurrentOrNextSlot: () =>
87
- Promise.resolve({
88
- currentProposer: EthAddress.ZERO,
89
- nextProposer: EthAddress.ZERO,
90
- currentSlot: 0n,
91
- nextSlot: 0n,
92
- }),
93
- getEpochAndSlotInNextL1Slot: () => ({ epoch: 0n, slot: 0n, ts: 0n, now: 0n }),
94
+ getCurrentAndNextSlot: () => ({
95
+ currentSlot: SlotNumber.ZERO,
96
+ nextSlot: SlotNumber.ZERO,
97
+ }),
98
+ getProposerAttesterAddressInSlot: () => Promise.resolve(undefined),
99
+ getEpochAndSlotInNextL1Slot: () => ({ epoch: EpochNumber.ZERO, slot: SlotNumber.ZERO, ts: 0n, now: 0n }),
94
100
  isInCommittee: () => Promise.resolve(false),
95
101
  getRegisteredValidators: () => Promise.resolve([]),
96
102
  filterInCommittee: () => Promise.resolve([]),
@@ -123,7 +129,7 @@ class TestLibP2PService<T extends P2PClientType = P2PClientType.Full> extends Li
123
129
  peerDiscoveryService: PeerDiscoveryService,
124
130
  reqresp: ReqResp,
125
131
  peerManager: PeerManager,
126
- mempools: MemPools<T>,
132
+ mempools: MemPools,
127
133
  archiver: L2BlockSource & ContractDataSource,
128
134
  epochCache: EpochCacheInterface,
129
135
  proofVerifier: ClientProtocolCircuitVerifier,
@@ -185,9 +191,25 @@ class TestLibP2PService<T extends P2PClientType = P2PClientType.Full> extends Li
185
191
 
186
192
  // eslint-disable-next-line @typescript-eslint/no-misused-promises
187
193
  process.on('message', async msg => {
188
- const { type, config, clientIndex } = msg as { type: string; config: P2PConfig; clientIndex: number };
194
+ // Note: peerIdPrivateKey comes as a raw string (not SecretValue) because
195
+ // SecretValue's private fields can't be serialized via IPC
196
+ const {
197
+ type,
198
+ config: rawConfig,
199
+ clientIndex,
200
+ } = msg as {
201
+ type: string;
202
+ config: Omit<P2PConfig, 'peerIdPrivateKey'> & { peerIdPrivateKey?: string };
203
+ clientIndex: number;
204
+ };
189
205
  try {
190
206
  if (type === 'START') {
207
+ // Re-wrap the peerIdPrivateKey with SecretValue
208
+ const config: P2PConfig = {
209
+ ...rawConfig,
210
+ peerIdPrivateKey: rawConfig.peerIdPrivateKey ? new SecretValue(rawConfig.peerIdPrivateKey) : undefined,
211
+ } as P2PConfig;
212
+
191
213
  const txPool = mockTxPool();
192
214
  const attestationPool = mockAttestationPool();
193
215
  const epochCache = mockEpochCache();
@@ -220,14 +242,15 @@ process.on('message', async msg => {
220
242
  );
221
243
 
222
244
  // Create test service with validation disabled
245
+ // Note: Parameter order must match LibP2PService constructor
223
246
  const testService = new TestLibP2PService(
224
247
  P2PClientType.Full,
225
248
  config,
226
249
  (client as any).p2pService.node,
227
250
  (client as any).p2pService.peerDiscoveryService,
228
- (client as any).p2pService.mempools,
229
251
  (client as any).p2pService.reqresp,
230
252
  (client as any).p2pService.peerManager,
253
+ (client as any).p2pService.mempools,
231
254
  (client as any).p2pService.archiver,
232
255
  epochCache,
233
256
  proofVerifier,
@@ -73,7 +73,12 @@ class WorkerClientManager {
73
73
  clientIndex: number,
74
74
  ): [ChildProcess, Promise<void>] {
75
75
  const childProcess = fork(workerPath);
76
- childProcess.send({ type: 'START', config, clientIndex });
76
+ // Extract the raw peerIdPrivateKey value since SecretValue can't be serialized via IPC
77
+ const serializedConfig = {
78
+ ...config,
79
+ peerIdPrivateKey: config.peerIdPrivateKey?.getValue(),
80
+ };
81
+ childProcess.send({ type: 'START', config: serializedConfig, clientIndex });
77
82
 
78
83
  // Handle unexpected child process exit
79
84
  childProcess.on('exit', (code, signal) => {
package/src/util.ts CHANGED
@@ -12,6 +12,7 @@ import { createFromPrivKey } from '@libp2p/peer-id-factory';
12
12
  import { resolve } from 'dns/promises';
13
13
  import { promises as fs } from 'fs';
14
14
  import type { Libp2p } from 'libp2p';
15
+ import net from 'net';
15
16
  import path from 'path';
16
17
 
17
18
  import type { P2PConfig } from './config.js';
@@ -56,9 +57,18 @@ export function convertToMultiaddr(address: string, port: number, protocol: 'tcp
56
57
  * Queries the public IP address of the machine.
57
58
  */
58
59
  export async function getPublicIp(): Promise<string> {
59
- const resp = await fetch('http://checkip.amazonaws.com/');
60
+ const resp = await fetch('https://checkip.amazonaws.com/');
60
61
  const text = await resp.text();
61
- 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;
62
72
  }
63
73
 
64
74
  export async function resolveAddressIfNecessary(address: string, port: string): Promise<string> {
@@ -1,80 +0,0 @@
1
- import type { TypedEventEmitter } from '@aztec/foundation/types';
2
- import { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
3
- import { type TelemetryClient } from '@aztec/telemetry-client';
4
- import type { TxPool, TxPoolEvents, TxPoolOptions } from './tx_pool.js';
5
- declare const InMemoryTxPool_base: new () => TypedEventEmitter<TxPoolEvents>;
6
- /**
7
- * In-memory implementation of the Transaction Pool.
8
- */
9
- export declare class InMemoryTxPool extends InMemoryTxPool_base implements TxPool {
10
- private log;
11
- /**
12
- * Our tx pool, stored as a Map in-memory, with K: tx hash and V: the transaction.
13
- */
14
- private txs;
15
- private minedTxs;
16
- private pendingTxs;
17
- private deletedMinedTxHashes;
18
- private blockToDeletedMinedTxHash;
19
- private metrics;
20
- /**
21
- * Class constructor for in-memory TxPool. Initiates our transaction pool as a JS Map.
22
- * @param log - A logger.
23
- */
24
- constructor(telemetry?: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
25
- private countTx;
26
- isEmpty(): Promise<boolean>;
27
- markAsMined(txHashes: TxHash[], blockHeader: BlockHeader): Promise<void>;
28
- markMinedAsPending(txHashes: TxHash[]): Promise<void>;
29
- getPendingTxHashes(): Promise<TxHash[]>;
30
- getMinedTxHashes(): Promise<[TxHash, number][]>;
31
- getPendingTxCount(): Promise<number>;
32
- getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | 'deleted' | undefined>;
33
- /**
34
- * Checks if a transaction exists in the pool and returns it.
35
- * @param txHash - The generated tx hash.
36
- * @returns The transaction, if found, 'undefined' otherwise.
37
- */
38
- getTxByHash(txHash: TxHash): Promise<Tx | undefined>;
39
- getTxsByHash(txHashes: TxHash[]): Promise<(Tx | undefined)[]>;
40
- hasTxs(txHashes: TxHash[]): Promise<boolean[]>;
41
- hasTx(txHash: TxHash): Promise<boolean>;
42
- getArchivedTxByHash(): Promise<Tx | undefined>;
43
- /**
44
- * Adds a list of transactions to the pool. Duplicates are ignored.
45
- * @param txs - An array of txs to be added to the pool.
46
- * @returns Empty promise.
47
- */
48
- addTxs(txs: Tx[], opts?: {
49
- source?: string;
50
- }): Promise<number>;
51
- /**
52
- * Deletes transactions from the pool. Tx hashes that are not present are ignored.
53
- * Mined transactions are soft-deleted with a timestamp, pending transactions are permanently deleted.
54
- * @param txHashes - An array of tx hashes to be deleted from the tx pool.
55
- * @returns Empty promise.
56
- */
57
- deleteTxs(txHashes: TxHash[], opts?: {
58
- permanently?: boolean;
59
- }): Promise<void>;
60
- /**
61
- * Gets all the transactions stored in the pool.
62
- * @returns Array of tx objects in the order they were added to the pool.
63
- */
64
- getAllTxs(): Promise<Tx[]>;
65
- /**
66
- * Gets the hashes of all transactions currently in the tx pool.
67
- * @returns An array of transaction hashes found in the tx pool.
68
- */
69
- getAllTxHashes(): Promise<TxHash[]>;
70
- updateConfig(_config: TxPoolOptions): void;
71
- markTxsAsNonEvictable(_: TxHash[]): Promise<void>;
72
- /**
73
- * Permanently deletes deleted mined transactions from blocks up to and including the specified block number.
74
- * @param blockNumber - Block number threshold. Deleted mined txs from this block or earlier will be permanently deleted.
75
- * @returns The number of transactions permanently deleted.
76
- */
77
- cleanupDeletedMinedTxs(blockNumber: number): Promise<number>;
78
- }
79
- export {};
80
- //# 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":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAMnF,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;mCAKnB,UAAU,iBAAiB,CAAC,YAAY,CAAC;AAH9F;;GAEG;AACH,qBAAa,cAAe,SAAQ,mBAA4D,YAAW,MAAM;IAkB7G,OAAO,CAAC,GAAG;IAjBb;;OAEG;IACH,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,oBAAoB,CAAsB;IAClD,OAAO,CAAC,yBAAyB,CAA2B;IAE5D,OAAO,CAAC,OAAO,CAA0B;IAEzC;;;OAGG;gBAED,SAAS,GAAE,eAAsC,EACzC,GAAG,yCAA8B;IAW3C,OAAO,CAAC,OAAO,CAOb;IAEK,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAI3B,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBxE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB/C,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAa7C,gBAAgB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAM/C,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKpC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;IAexF;;;;OAIG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAK3D,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;IAG7D,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAIxC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKtC,mBAAmB,IAAI,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAIrD;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BzE;;;;;OAKG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BrF;;;OAGG;IACI,SAAS,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAIjC;;;OAGG;IACI,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI1C,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAE1C,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD;;;;OAIG;IACI,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CA2BpE"}