@aztec/p2p 0.0.1-commit.993d52e → 0.0.1-commit.9a89641

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 (473) hide show
  1. package/README.md +130 -3
  2. package/dest/bootstrap/bootstrap.d.ts +1 -1
  3. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  4. package/dest/bootstrap/bootstrap.js +22 -6
  5. package/dest/client/factory.d.ts +5 -4
  6. package/dest/client/factory.d.ts.map +1 -1
  7. package/dest/client/factory.js +39 -16
  8. package/dest/client/interface.d.ts +52 -12
  9. package/dest/client/interface.d.ts.map +1 -1
  10. package/dest/client/p2p_client.d.ts +34 -19
  11. package/dest/client/p2p_client.d.ts.map +1 -1
  12. package/dest/client/p2p_client.js +120 -73
  13. package/dest/config.d.ts +160 -110
  14. package/dest/config.d.ts.map +1 -1
  15. package/dest/config.js +139 -49
  16. package/dest/errors/p2p-service.error.d.ts +9 -0
  17. package/dest/errors/p2p-service.error.d.ts.map +1 -0
  18. package/dest/errors/p2p-service.error.js +10 -0
  19. package/dest/errors/reqresp.error.d.ts +9 -16
  20. package/dest/errors/reqresp.error.d.ts.map +1 -1
  21. package/dest/errors/reqresp.error.js +10 -17
  22. package/dest/index.d.ts +1 -2
  23. package/dest/index.d.ts.map +1 -1
  24. package/dest/index.js +0 -1
  25. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +101 -59
  26. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  27. package/dest/mem_pools/attestation_pool/attestation_pool.js +274 -197
  28. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
  29. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  30. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +224 -65
  31. package/dest/mem_pools/attestation_pool/mocks.d.ts +1 -1
  32. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  33. package/dest/mem_pools/attestation_pool/mocks.js +6 -4
  34. package/dest/mem_pools/index.d.ts +1 -2
  35. package/dest/mem_pools/index.d.ts.map +1 -1
  36. package/dest/mem_pools/instrumentation.d.ts +12 -5
  37. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  38. package/dest/mem_pools/instrumentation.js +38 -17
  39. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +1 -5
  40. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -1
  41. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +1 -7
  42. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +3 -3
  43. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -1
  44. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +6 -6
  45. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
  46. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  47. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +5 -4
  48. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +1 -1
  49. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -1
  50. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +3 -1
  51. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +2 -1
  52. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
  53. package/dest/mem_pools/tx_pool_v2/eviction/index.js +1 -0
  54. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
  55. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
  56. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +64 -0
  57. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +1 -1
  58. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -1
  59. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +3 -4
  60. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +1 -1
  61. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -1
  62. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +6 -7
  63. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +1 -1
  64. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -1
  65. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +6 -5
  66. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +41 -9
  67. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
  68. package/dest/mem_pools/tx_pool_v2/interfaces.js +3 -1
  69. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +17 -8
  70. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
  71. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +20 -7
  72. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +15 -1
  73. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
  74. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +55 -41
  75. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +12 -4
  76. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
  77. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +23 -6
  78. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +17 -3
  79. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
  80. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +234 -120
  81. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +10 -3
  82. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  83. package/dest/msg_validators/attestation_validator/attestation_validator.js +38 -15
  84. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +7 -3
  85. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  86. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +4 -5
  87. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +11 -5
  88. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  89. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +11 -3
  90. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +11 -5
  91. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  92. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +23 -3
  93. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +35 -10
  94. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  95. package/dest/msg_validators/proposal_validator/proposal_validator.js +128 -56
  96. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +1 -1
  97. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  98. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +8 -15
  99. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  100. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  101. package/dest/msg_validators/tx_validator/allowed_public_setup.js +25 -21
  102. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  103. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  104. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  105. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  106. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts +15 -0
  107. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts.map +1 -0
  108. package/dest/msg_validators/tx_validator/cached_tx_validator.js +19 -0
  109. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  110. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  111. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  112. package/dest/msg_validators/tx_validator/data_validator.d.ts +2 -1
  113. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  114. package/dest/msg_validators/tx_validator/data_validator.js +36 -2
  115. package/dest/msg_validators/tx_validator/factory.d.ts +25 -7
  116. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  117. package/dest/msg_validators/tx_validator/factory.js +55 -16
  118. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
  119. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
  120. package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
  121. package/dest/msg_validators/tx_validator/gas_validator.d.ts +53 -7
  122. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  123. package/dest/msg_validators/tx_validator/gas_validator.js +88 -41
  124. package/dest/msg_validators/tx_validator/index.d.ts +4 -1
  125. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  126. package/dest/msg_validators/tx_validator/index.js +3 -0
  127. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
  128. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  129. package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
  130. package/dest/msg_validators/tx_validator/phases_validator.d.ts +22 -2
  131. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  132. package/dest/msg_validators/tx_validator/phases_validator.js +72 -24
  133. package/dest/msg_validators/tx_validator/timestamp_validator.js +1 -1
  134. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +2 -1
  135. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  136. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -0
  137. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts +48 -0
  138. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts.map +1 -0
  139. package/dest/msg_validators/tx_validator/tx_validation_cache.js +68 -0
  140. package/dest/services/data_store.d.ts +1 -1
  141. package/dest/services/data_store.d.ts.map +1 -1
  142. package/dest/services/data_store.js +5 -5
  143. package/dest/services/discv5/discV5_service.d.ts +13 -2
  144. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  145. package/dest/services/discv5/discV5_service.js +119 -23
  146. package/dest/services/discv5/persisted_enr_store.d.ts +38 -0
  147. package/dest/services/discv5/persisted_enr_store.d.ts.map +1 -0
  148. package/dest/services/discv5/persisted_enr_store.js +145 -0
  149. package/dest/services/dummy_service.d.ts +15 -15
  150. package/dest/services/dummy_service.d.ts.map +1 -1
  151. package/dest/services/dummy_service.js +15 -16
  152. package/dest/services/encoding.d.ts +23 -6
  153. package/dest/services/encoding.d.ts.map +1 -1
  154. package/dest/services/encoding.js +32 -16
  155. package/dest/services/gossipsub/topic_score_params.d.ts +6 -12
  156. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
  157. package/dest/services/gossipsub/topic_score_params.js +4 -14
  158. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  159. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  160. package/dest/services/libp2p/instrumentation.js +14 -0
  161. package/dest/services/libp2p/libp2p_service.d.ts +46 -47
  162. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  163. package/dest/services/libp2p/libp2p_service.js +460 -320
  164. package/dest/services/peer-manager/metrics.d.ts +3 -1
  165. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  166. package/dest/services/peer-manager/metrics.js +6 -0
  167. package/dest/services/peer-manager/peer_manager.d.ts +20 -3
  168. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  169. package/dest/services/peer-manager/peer_manager.js +83 -26
  170. package/dest/services/peer-manager/peer_scoring.d.ts +34 -2
  171. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  172. package/dest/services/peer-manager/peer_scoring.js +102 -13
  173. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +4 -8
  174. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  175. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +94 -122
  176. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +10 -6
  177. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  178. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +5 -4
  179. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  180. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +13 -7
  181. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +19 -11
  182. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  183. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +52 -15
  184. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +5 -14
  185. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -1
  186. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +6 -20
  187. package/dest/services/reqresp/config.d.ts +15 -3
  188. package/dest/services/reqresp/config.d.ts.map +1 -1
  189. package/dest/services/reqresp/config.js +11 -0
  190. package/dest/services/reqresp/interface.d.ts +16 -18
  191. package/dest/services/reqresp/interface.d.ts.map +1 -1
  192. package/dest/services/reqresp/interface.js +10 -20
  193. package/dest/services/reqresp/metrics.d.ts +1 -1
  194. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  195. package/dest/services/reqresp/metrics.js +0 -1
  196. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +4 -3
  197. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  198. package/dest/services/reqresp/protocols/block_txs/bitvector.js +3 -2
  199. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +1 -1
  200. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  201. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +31 -28
  202. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +12 -7
  203. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  204. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +42 -24
  205. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  206. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  207. package/dest/services/reqresp/protocols/index.js +0 -1
  208. package/dest/services/reqresp/protocols/tx.d.ts +1 -1
  209. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  210. package/dest/services/reqresp/protocols/tx.js +1 -3
  211. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  212. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  213. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  214. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  215. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  216. package/dest/services/reqresp/rate-limiter/rate_limits.js +3 -13
  217. package/dest/services/reqresp/reqresp.d.ts +7 -29
  218. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  219. package/dest/services/reqresp/reqresp.js +75 -216
  220. package/dest/services/service.d.ts +29 -12
  221. package/dest/services/service.d.ts.map +1 -1
  222. package/dest/services/tx_collection/config.d.ts +2 -23
  223. package/dest/services/tx_collection/config.d.ts.map +1 -1
  224. package/dest/services/tx_collection/config.js +2 -55
  225. package/dest/services/tx_collection/file_store_tx_collection.d.ts +12 -28
  226. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -1
  227. package/dest/services/tx_collection/file_store_tx_collection.js +43 -83
  228. package/dest/services/tx_collection/file_store_tx_source.d.ts +5 -4
  229. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
  230. package/dest/services/tx_collection/file_store_tx_source.js +39 -29
  231. package/dest/services/tx_collection/index.d.ts +2 -3
  232. package/dest/services/tx_collection/index.d.ts.map +1 -1
  233. package/dest/services/tx_collection/index.js +0 -1
  234. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  235. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  236. package/dest/services/tx_collection/instrumentation.js +0 -2
  237. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  238. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  239. package/dest/services/tx_collection/request_tracker.js +84 -0
  240. package/dest/services/tx_collection/tx_collection.d.ts +36 -55
  241. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  242. package/dest/services/tx_collection/tx_collection.js +275 -119
  243. package/dest/services/tx_collection/tx_collection_sink.d.ts +1 -1
  244. package/dest/services/tx_collection/tx_collection_sink.js +2 -2
  245. package/dest/services/tx_collection/tx_source.d.ts +6 -5
  246. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  247. package/dest/services/tx_collection/tx_source.js +13 -8
  248. package/dest/services/tx_file_store/tx_file_store.d.ts +1 -3
  249. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
  250. package/dest/services/tx_file_store/tx_file_store.js +4 -14
  251. package/dest/services/tx_provider.d.ts +3 -1
  252. package/dest/services/tx_provider.d.ts.map +1 -1
  253. package/dest/services/tx_provider.js +3 -0
  254. package/dest/test-helpers/make-test-p2p-clients.d.ts +1 -1
  255. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  256. package/dest/test-helpers/make-test-p2p-clients.js +5 -2
  257. package/dest/test-helpers/mock-pubsub.d.ts +23 -9
  258. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  259. package/dest/test-helpers/mock-pubsub.js +44 -44
  260. package/dest/test-helpers/reqresp-nodes.d.ts +4 -5
  261. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  262. package/dest/test-helpers/reqresp-nodes.js +16 -18
  263. package/dest/test-helpers/test_tx_provider.d.ts +3 -1
  264. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -1
  265. package/dest/test-helpers/test_tx_provider.js +3 -0
  266. package/dest/test-helpers/testbench-utils.d.ts +15 -14
  267. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  268. package/dest/test-helpers/testbench-utils.js +51 -16
  269. package/dest/testbench/p2p_client_testbench_worker.d.ts +3 -5
  270. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  271. package/dest/testbench/p2p_client_testbench_worker.js +104 -41
  272. package/dest/testbench/worker_client_manager.d.ts +12 -6
  273. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  274. package/dest/testbench/worker_client_manager.js +57 -11
  275. package/dest/util.d.ts +12 -7
  276. package/dest/util.d.ts.map +1 -1
  277. package/dest/util.js +35 -14
  278. package/dest/versioning.d.ts +3 -6
  279. package/dest/versioning.d.ts.map +1 -1
  280. package/dest/versioning.js +3 -24
  281. package/package.json +15 -16
  282. package/src/bootstrap/bootstrap.ts +17 -3
  283. package/src/client/factory.ts +62 -9
  284. package/src/client/interface.ts +48 -18
  285. package/src/client/p2p_client.ts +140 -106
  286. package/src/client/test/{tx_proposal_collector/README.md → p2p_client.batch_tx_requester.bench.README.md} +23 -53
  287. package/src/config.ts +241 -57
  288. package/src/errors/p2p-service.error.ts +11 -0
  289. package/src/errors/reqresp.error.ts +13 -19
  290. package/src/index.ts +0 -1
  291. package/src/mem_pools/attestation_pool/attestation_pool.ts +329 -243
  292. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +244 -69
  293. package/src/mem_pools/attestation_pool/mocks.ts +13 -8
  294. package/src/mem_pools/index.ts +0 -3
  295. package/src/mem_pools/instrumentation.ts +27 -17
  296. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +1 -9
  297. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +7 -7
  298. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +4 -5
  299. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +3 -2
  300. package/src/mem_pools/tx_pool_v2/eviction/index.ts +1 -0
  301. package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +67 -0
  302. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +1 -3
  303. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +5 -7
  304. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +5 -6
  305. package/src/mem_pools/tx_pool_v2/interfaces.ts +40 -8
  306. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +35 -13
  307. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +62 -41
  308. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +36 -7
  309. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +260 -124
  310. package/src/msg_validators/attestation_validator/README.md +49 -0
  311. package/src/msg_validators/attestation_validator/attestation_validator.ts +46 -14
  312. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +15 -7
  313. package/src/msg_validators/proposal_validator/README.md +123 -0
  314. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +26 -4
  315. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +43 -7
  316. package/src/msg_validators/proposal_validator/proposal_validator.ts +150 -58
  317. package/src/msg_validators/tx_validator/README.md +17 -3
  318. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +3 -12
  319. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  320. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  321. package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
  322. package/src/msg_validators/tx_validator/cached_tx_validator.ts +31 -0
  323. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  324. package/src/msg_validators/tx_validator/data_validator.ts +44 -1
  325. package/src/msg_validators/tx_validator/factory.ts +66 -9
  326. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  327. package/src/msg_validators/tx_validator/gas_validator.ts +117 -39
  328. package/src/msg_validators/tx_validator/index.ts +3 -0
  329. package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
  330. package/src/msg_validators/tx_validator/phases_validator.ts +82 -27
  331. package/src/msg_validators/tx_validator/timestamp_validator.ts +1 -1
  332. package/src/msg_validators/tx_validator/tx_proof_validator.ts +2 -0
  333. package/src/msg_validators/tx_validator/tx_validation_cache.ts +101 -0
  334. package/src/services/data_store.ts +5 -13
  335. package/src/services/discv5/discV5_service.ts +126 -14
  336. package/src/services/discv5/persisted_enr_store.ts +158 -0
  337. package/src/services/dummy_service.ts +20 -39
  338. package/src/services/encoding.ts +35 -19
  339. package/src/services/gossipsub/README.md +33 -11
  340. package/src/services/gossipsub/topic_score_params.ts +9 -18
  341. package/src/services/libp2p/instrumentation.ts +14 -0
  342. package/src/services/libp2p/libp2p_service.ts +508 -358
  343. package/src/services/peer-manager/metrics.ts +7 -0
  344. package/src/services/peer-manager/peer_manager.ts +91 -25
  345. package/src/services/peer-manager/peer_scoring.ts +102 -8
  346. package/src/services/reqresp/README.md +194 -0
  347. package/src/services/reqresp/batch-tx-requester/README.md +46 -7
  348. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +91 -137
  349. package/src/services/reqresp/batch-tx-requester/interface.ts +13 -5
  350. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +13 -6
  351. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +68 -24
  352. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +12 -25
  353. package/src/services/reqresp/config.ts +19 -2
  354. package/src/services/reqresp/interface.ts +21 -47
  355. package/src/services/reqresp/metrics.ts +0 -1
  356. package/src/services/reqresp/protocols/block_txs/bitvector.ts +3 -2
  357. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +34 -30
  358. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +47 -20
  359. package/src/services/reqresp/protocols/index.ts +0 -1
  360. package/src/services/reqresp/protocols/tx.ts +1 -3
  361. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  362. package/src/services/reqresp/rate-limiter/rate_limits.ts +3 -13
  363. package/src/services/reqresp/reqresp.ts +87 -260
  364. package/src/services/service.ts +35 -28
  365. package/src/services/tx_collection/config.ts +3 -80
  366. package/src/services/tx_collection/file_store_tx_collection.ts +54 -103
  367. package/src/services/tx_collection/file_store_tx_source.ts +43 -31
  368. package/src/services/tx_collection/index.ts +1 -6
  369. package/src/services/tx_collection/instrumentation.ts +1 -7
  370. package/src/services/tx_collection/request_tracker.ts +127 -0
  371. package/src/services/tx_collection/tx_collection.ts +331 -176
  372. package/src/services/tx_collection/tx_collection_sink.ts +2 -2
  373. package/src/services/tx_collection/tx_source.ts +10 -8
  374. package/src/services/tx_file_store/tx_file_store.ts +5 -17
  375. package/src/services/tx_provider.ts +5 -0
  376. package/src/test-helpers/make-test-p2p-clients.ts +4 -1
  377. package/src/test-helpers/mock-pubsub.ts +46 -60
  378. package/src/test-helpers/reqresp-nodes.ts +13 -23
  379. package/src/test-helpers/test_tx_provider.ts +5 -0
  380. package/src/test-helpers/testbench-utils.ts +64 -28
  381. package/src/testbench/p2p_client_testbench_worker.ts +111 -57
  382. package/src/testbench/worker_client_manager.ts +72 -25
  383. package/src/util.ts +33 -18
  384. package/src/versioning.ts +3 -33
  385. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +0 -2
  386. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +0 -1
  387. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +0 -304
  388. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +0 -73
  389. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +0 -1
  390. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +0 -8
  391. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  392. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  393. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  394. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  395. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  396. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  397. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  398. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  399. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  400. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  401. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  402. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -122
  403. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  404. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  405. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +0 -84
  406. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  407. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  408. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  409. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  410. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  411. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  412. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  413. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  414. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  415. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  416. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  417. package/dest/mem_pools/tx_pool/index.js +0 -2
  418. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  419. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  420. package/dest/mem_pools/tx_pool/priority.js +0 -15
  421. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  422. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  423. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  424. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  425. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  426. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -400
  427. package/dest/msg_validators/clock_tolerance.d.ts +0 -21
  428. package/dest/msg_validators/clock_tolerance.d.ts.map +0 -1
  429. package/dest/msg_validators/clock_tolerance.js +0 -37
  430. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -24
  431. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  432. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -378
  433. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +0 -64
  434. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +0 -1
  435. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +0 -151
  436. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  437. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  438. package/dest/services/reqresp/protocols/block.js +0 -32
  439. package/dest/services/tx_collection/fast_tx_collection.d.ts +0 -54
  440. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +0 -1
  441. package/dest/services/tx_collection/fast_tx_collection.js +0 -327
  442. package/dest/services/tx_collection/missing_txs_tracker.d.ts +0 -32
  443. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +0 -1
  444. package/dest/services/tx_collection/missing_txs_tracker.js +0 -27
  445. package/dest/services/tx_collection/proposal_tx_collector.d.ts +0 -49
  446. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +0 -1
  447. package/dest/services/tx_collection/proposal_tx_collector.js +0 -50
  448. package/dest/services/tx_collection/slow_tx_collection.d.ts +0 -57
  449. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +0 -1
  450. package/dest/services/tx_collection/slow_tx_collection.js +0 -211
  451. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +0 -345
  452. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +0 -43
  453. package/src/mem_pools/tx_pool/README.md +0 -270
  454. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  455. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  456. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  457. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -162
  458. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  459. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  460. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  461. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  462. package/src/mem_pools/tx_pool/index.ts +0 -2
  463. package/src/mem_pools/tx_pool/priority.ts +0 -20
  464. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  465. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -319
  466. package/src/msg_validators/clock_tolerance.ts +0 -51
  467. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -373
  468. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +0 -161
  469. package/src/services/reqresp/protocols/block.ts +0 -37
  470. package/src/services/tx_collection/fast_tx_collection.ts +0 -387
  471. package/src/services/tx_collection/missing_txs_tracker.ts +0 -52
  472. package/src/services/tx_collection/proposal_tx_collector.ts +0 -113
  473. package/src/services/tx_collection/slow_tx_collection.ts +0 -266
@@ -12,17 +12,19 @@ import { Fr } from '@aztec/foundation/curves/bn254';
12
12
  import { type Logger, createLogger } from '@aztec/foundation/log';
13
13
  import { sleep } from '@aztec/foundation/sleep';
14
14
  import { DateProvider, Timer } from '@aztec/foundation/timer';
15
- import type { DataStoreConfig } from '@aztec/kv-store/config';
16
15
  import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
17
16
  import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
18
17
  import { protocolContractsHash } from '@aztec/protocol-contracts';
19
18
  import type { L2BlockSource } from '@aztec/stdlib/block';
20
19
  import type { ContractDataSource } from '@aztec/stdlib/contract';
20
+ import { EmptyL1RollupConstants, type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
21
+ import { GasFees } from '@aztec/stdlib/gas';
21
22
  import type { ClientProtocolCircuitVerifier, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
23
+ import type { DataStoreConfig } from '@aztec/stdlib/kv-store';
22
24
  import { type BlockProposal, P2PMessage } from '@aztec/stdlib/p2p';
23
25
  import { ChonkProof } from '@aztec/stdlib/proofs';
24
26
  import { makeAztecAddress, makeBlockHeader, makeBlockProposal, mockTx } from '@aztec/stdlib/testing';
25
- import { Tx, TxHash, type TxValidationResult } from '@aztec/stdlib/tx';
27
+ import { Tx, TxHash, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
26
28
  import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
27
29
 
28
30
  import type { Message, PeerId } from '@libp2p/interface';
@@ -33,18 +35,17 @@ import type { P2PClient } from '../client/index.js';
33
35
  import type { P2PConfig } from '../config.js';
34
36
  import { createP2PClient } from '../index.js';
35
37
  import type { MemPools } from '../mem_pools/index.js';
36
- import { BatchTxRequesterCollector, LibP2PService, SendBatchRequestCollector } from '../services/index.js';
38
+ import { LibP2PService } from '../services/index.js';
37
39
  import type { PeerManager } from '../services/peer-manager/peer_manager.js';
40
+ import { BatchTxRequester } from '../services/reqresp/batch-tx-requester/batch_tx_requester.js';
38
41
  import type { BatchTxRequesterLibP2PService } from '../services/reqresp/batch-tx-requester/interface.js';
39
- import type { IBatchRequestTxValidator } from '../services/reqresp/batch-tx-requester/tx_validator.js';
40
42
  import { RateLimitStatus } from '../services/reqresp/rate-limiter/rate_limiter.js';
41
43
  import type { ReqResp } from '../services/reqresp/reqresp.js';
42
44
  import type { PeerDiscoveryService } from '../services/service.js';
43
- import { MissingTxsTracker } from '../services/tx_collection/missing_txs_tracker.js';
45
+ import { RequestTracker } from '../services/tx_collection/request_tracker.js';
44
46
  import { AlwaysTrueCircuitVerifier } from '../test-helpers/index.js';
45
47
  import {
46
48
  BENCHMARK_CONSTANTS,
47
- type CollectorType,
48
49
  type DistributionPattern,
49
50
  InMemoryAttestationPool,
50
51
  InMemoryTxPool,
@@ -55,15 +56,13 @@ import {
55
56
  } from '../test-helpers/index.js';
56
57
  import type { PubSubLibp2p } from '../util.js';
57
58
 
58
- export type { DistributionPattern, CollectorType } from '../test-helpers/testbench-utils.js';
59
- export { COLLECTOR_DISPLAY_NAMES } from '../test-helpers/testbench-utils.js';
59
+ export type { DistributionPattern } from '../test-helpers/testbench-utils.js';
60
60
 
61
61
  export interface BenchReqRespCommand {
62
62
  type: 'BENCH_REQRESP';
63
63
  txCount: number;
64
64
  peerCount: number;
65
65
  distribution: DistributionPattern;
66
- collectorType: CollectorType;
67
66
  timeoutMs: number;
68
67
  isAggregator: boolean;
69
68
  peerIndex: number;
@@ -86,6 +85,25 @@ export interface BenchReadyMessage {
86
85
  }
87
86
  const txCache = new Map<number, Tx[]>();
88
87
 
88
+ const BENCH_L1_CONSTANTS: L1RollupConstants = {
89
+ ...EmptyL1RollupConstants,
90
+ slotDuration: 12,
91
+ ethereumSlotDuration: 4,
92
+ };
93
+
94
+ class TestbenchL2BlockSource extends MockL2BlockSource {
95
+ public override getL1Constants(): Promise<L1RollupConstants> {
96
+ return Promise.resolve(BENCH_L1_CONSTANTS);
97
+ }
98
+ }
99
+
100
+ function createBenchmarkEpochCache(): EpochCacheInterface {
101
+ return {
102
+ ...createMockEpochCache(),
103
+ getL1Constants: () => BENCH_L1_CONSTANTS,
104
+ };
105
+ }
106
+
89
107
  class TestLibP2PService extends LibP2PService {
90
108
  private disableTxValidation: boolean;
91
109
  private gossipMessageCount = 0;
@@ -116,6 +134,7 @@ class TestLibP2PService extends LibP2PService {
116
134
  epochCache,
117
135
  proofVerifier,
118
136
  worldStateSynchronizer,
137
+ { getCurrentMinFees: () => Promise.resolve(GasFees.empty()) },
119
138
  telemetry,
120
139
  logger,
121
140
  );
@@ -204,10 +223,28 @@ function installUnlimitedRateLimits(client: P2PClient): void {
204
223
  rateLimiter.allow = () => RateLimitStatus.Allowed;
205
224
  }
206
225
 
226
+ /** Resets peer scores to prevent cross-case contamination in benchmarks. */
227
+ function resetPeerScores(client: P2PClient): void {
228
+ const peerManager = (client as any).p2pService.peerManager;
229
+ const peerScoring = peerManager?.peerScoring;
230
+ if (peerScoring?.resetAllScores) {
231
+ peerScoring.resetAllScores();
232
+ }
233
+ }
234
+
235
+ /** Returns the number of connected peers for connectivity checks. */
236
+ function getConnectedPeerCount(client: P2PClient): number {
237
+ const p2pService = (client as any).p2pService;
238
+ const connectionSampler = p2pService?.reqresp?.getConnectionSampler?.();
239
+ if (connectionSampler?.getPeerListSortedByConnectionCountAsc) {
240
+ return connectionSampler.getPeerListSortedByConnectionCountAsc().length;
241
+ }
242
+ return 0;
243
+ }
244
+
207
245
  async function runAggregatorBenchmark(
208
246
  client: P2PClient,
209
247
  blockProposal: BlockProposal,
210
- collectorType: CollectorType,
211
248
  timeoutMs: number,
212
249
  pinnedPeerId: string | undefined,
213
250
  pinnedPeerIndex: number | undefined,
@@ -258,46 +295,22 @@ async function runAggregatorBenchmark(
258
295
  }
259
296
  }
260
297
 
261
- const noopTxValidator: IBatchRequestTxValidator = {
262
- validateRequestedTx: (_tx: Tx): Promise<TxValidationResult> => Promise.resolve({ result: 'valid' }),
263
- validateRequestedTxs: (txs: Tx[]): Promise<TxValidationResult[]> =>
264
- Promise.resolve(txs.map(() => ({ result: 'valid' }))),
298
+ const noopTxValidator: TxValidator = {
299
+ validateTx: (_tx: Tx): Promise<TxValidationResult> => Promise.resolve({ result: 'valid' }),
265
300
  };
266
301
 
267
302
  timer = new Timer();
268
- if (collectorType === 'batch-requester') {
269
- const collector = new BatchTxRequesterCollector(
270
- batchTxRequesterService,
271
- logger,
272
- new DateProvider(),
273
- noopTxValidator,
274
- );
275
- const fetchedTxs = await collector.collectTxs(
276
- MissingTxsTracker.fromArray(txHashes),
277
- blockProposal,
278
- pinnedPeer,
279
- timeoutMs,
280
- );
281
- const durationMs = timer.ms();
282
- return {
283
- type: 'BENCH_RESULT',
284
- durationMs,
285
- fetchedCount: fetchedTxs.length,
286
- success: fetchedTxs.length === txHashes.length,
287
- };
288
- }
289
-
290
- const collector = new SendBatchRequestCollector(
291
- batchTxRequesterService,
292
- BENCHMARK_CONSTANTS.FIXED_MAX_PEERS,
293
- BENCHMARK_CONSTANTS.FIXED_MAX_RETRY_ATTEMPTS,
294
- );
295
- const fetchedTxs = await collector.collectTxs(
296
- MissingTxsTracker.fromArray(txHashes),
303
+ const tracker = RequestTracker.create(txHashes, new Date(Date.now() + timeoutMs));
304
+ const batchRequester = new BatchTxRequester(
305
+ tracker,
297
306
  blockProposal,
298
307
  pinnedPeer,
299
- timeoutMs,
308
+ batchTxRequesterService,
309
+ logger,
310
+ new DateProvider(),
311
+ { txValidator: noopTxValidator },
300
312
  );
313
+ const fetchedTxs = await BatchTxRequester.collectAllTxs(batchRequester.run());
301
314
  const durationMs = timer.ms();
302
315
  return {
303
316
  type: 'BENCH_RESULT',
@@ -323,6 +336,37 @@ let workerConfig: P2PConfig | null = null;
323
336
  let workerLogger: Logger | null = null;
324
337
  let kvStore: Awaited<ReturnType<typeof openTmpStore>> | null = null;
325
338
 
339
+ async function stopWorker() {
340
+ try {
341
+ if (workerClient) {
342
+ await workerClient.stop();
343
+ workerClient = null;
344
+ }
345
+ } catch (e) {
346
+ workerLogger?.error('Error stopping worker client', e);
347
+ }
348
+ try {
349
+ if (kvStore?.close) {
350
+ await kvStore.close();
351
+ kvStore = null;
352
+ }
353
+ } catch (e) {
354
+ workerLogger?.error('Error closing kv store', e);
355
+ }
356
+ }
357
+
358
+ function gracefulExit(code: number = 0) {
359
+ try {
360
+ if (process.connected) {
361
+ process.disconnect();
362
+ }
363
+ } catch {
364
+ // IPC channel already closed
365
+ }
366
+ // Safety fallback if lingering handles prevent the event loop from draining
367
+ setTimeout(() => process.exit(code), 5000).unref();
368
+ }
369
+
326
370
  // eslint-disable-next-line @typescript-eslint/no-misused-promises
327
371
  process.on('message', async msg => {
328
372
  const {
@@ -340,14 +384,15 @@ process.on('message', async msg => {
340
384
  const config: P2PConfig = {
341
385
  ...rawConfig,
342
386
  peerIdPrivateKey: rawConfig.peerIdPrivateKey ? new SecretValue(rawConfig.peerIdPrivateKey) : undefined,
387
+ priceBumpPercentage: 10n,
343
388
  } as P2PConfig;
344
389
 
345
390
  workerConfig = config;
346
391
  workerTxPool = new InMemoryTxPool();
347
392
  workerAttestationPool = new InMemoryAttestationPool();
348
- const epochCache = createMockEpochCache();
393
+ const epochCache = createBenchmarkEpochCache();
349
394
  const worldState = createMockWorldStateSynchronizer();
350
- const l2BlockSource = new MockL2BlockSource();
395
+ const l2BlockSource = new TestbenchL2BlockSource();
351
396
 
352
397
  const proofVerifier = new AlwaysTrueCircuitVerifier();
353
398
  kvStore = await openTmpStore(`test-${clientIndex}`, true, BENCHMARK_CONSTANTS.KV_STORE_MAP_SIZE_KB);
@@ -368,10 +413,12 @@ process.on('message', async msg => {
368
413
  proofVerifier as ClientProtocolCircuitVerifier,
369
414
  worldState,
370
415
  epochCache,
416
+ { getCurrentMinFees: () => Promise.resolve(GasFees.empty()) },
371
417
  'test-p2p-bench-worker',
372
418
  undefined,
373
419
  telemetry as TelemetryClient,
374
420
  deps,
421
+ await l2BlockSource.getInitialHeader().hash(),
375
422
  );
376
423
 
377
424
  const testService = new TestLibP2PService(
@@ -411,13 +458,8 @@ process.on('message', async msg => {
411
458
  const cmd = msg as any;
412
459
  switch (cmd.type) {
413
460
  case 'STOP':
414
- if (workerClient) {
415
- await workerClient.stop();
416
- }
417
- if (kvStore?.close) {
418
- await kvStore.close();
419
- }
420
- process.exit(0);
461
+ await stopWorker();
462
+ gracefulExit(0);
421
463
  break;
422
464
 
423
465
  case 'SEND_TX':
@@ -427,6 +469,13 @@ process.on('message', async msg => {
427
469
  }
428
470
  break;
429
471
 
472
+ case 'GET_PEER_COUNT':
473
+ process.send!({
474
+ type: 'PEER_COUNT',
475
+ count: workerClient ? getConnectedPeerCount(workerClient) : 0,
476
+ });
477
+ break;
478
+
430
479
  case 'BENCH_REQRESP': {
431
480
  const benchCmd = cmd as BenchReqRespCommand;
432
481
  if (!workerClient || !workerTxPool || !workerAttestationPool || !workerConfig || !workerLogger) {
@@ -443,6 +492,7 @@ process.on('message', async msg => {
443
492
  // Reset state before each benchmark run to avoid cross-run contamination
444
493
  workerTxPool.resetState();
445
494
  workerAttestationPool.resetState();
495
+ resetPeerScores(workerClient);
446
496
 
447
497
  installUnlimitedRateLimits(workerClient);
448
498
 
@@ -459,13 +509,12 @@ process.on('message', async msg => {
459
509
  workerTxPool.clearTxs();
460
510
 
461
511
  workerLogger.info(
462
- `[BENCH] Aggregator starting benchmark: txCount=${benchCmd.txCount}, collector=${benchCmd.collectorType}, distribution=${benchCmd.distribution}`,
512
+ `[BENCH] Aggregator starting benchmark: txCount=${benchCmd.txCount}, distribution=${benchCmd.distribution}`,
463
513
  );
464
514
 
465
515
  const result = await runAggregatorBenchmark(
466
516
  workerClient,
467
517
  blockProposal,
468
- benchCmd.collectorType,
469
518
  benchCmd.timeoutMs,
470
519
  benchCmd.pinnedPeerId,
471
520
  benchCmd.pinnedPeerIndex,
@@ -494,7 +543,12 @@ process.on('message', async msg => {
494
543
  }
495
544
  }
496
545
  } catch (err: any) {
497
- process.send!({ type: 'ERROR', error: err.message });
498
- process.exit(1);
546
+ try {
547
+ process.send!({ type: 'ERROR', error: err.message });
548
+ } catch {
549
+ // IPC channel may be closed
550
+ }
551
+ await stopWorker();
552
+ gracefulExit(1);
499
553
  }
500
554
  });
@@ -13,12 +13,7 @@ import { generatePeerIdPrivateKeys } from '../test-helpers/generate-peer-id-priv
13
13
  import { getPorts } from '../test-helpers/get-ports.js';
14
14
  import { makeEnr, makeEnrs } from '../test-helpers/make-enrs.js';
15
15
  import { BENCHMARK_CONSTANTS } from '../test-helpers/testbench-utils.js';
16
- import type {
17
- BenchReqRespCommand,
18
- BenchResultMessage,
19
- CollectorType,
20
- DistributionPattern,
21
- } from './p2p_client_testbench_worker.js';
16
+ import type { BenchReqRespCommand, BenchResultMessage, DistributionPattern } from './p2p_client_testbench_worker.js';
22
17
 
23
18
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
24
19
  const p2pRoot = path.resolve(__dirname, '../..');
@@ -29,15 +24,12 @@ const tsconfigPath = path.join(p2pRoot, 'tsconfig.json');
29
24
  const testChainConfig: ChainConfig = {
30
25
  l1ChainId: 31337,
31
26
  rollupVersion: 1,
32
- l1Contracts: {
33
- rollupAddress: EthAddress.random(),
34
- },
27
+ rollupAddress: EthAddress.random(),
35
28
  };
36
29
 
37
30
  export interface ReqRespBenchmarkConfig {
38
31
  txCount: number;
39
32
  distribution: DistributionPattern;
40
- collectorType: CollectorType;
41
33
  timeoutMs: number;
42
34
  pinnedPeerIndex?: number;
43
35
  blockNumber?: number;
@@ -47,7 +39,6 @@ export interface ReqRespBenchmarkConfig {
47
39
  export interface ReqRespBenchmarkResult {
48
40
  txCount: number;
49
41
  distribution: DistributionPattern;
50
- collector: CollectorType;
51
42
  durationMs: number;
52
43
  fetchedCount: number;
53
44
  success: boolean;
@@ -72,7 +63,6 @@ class WorkerClientManager {
72
63
  destroy() {
73
64
  this.cleanup().catch((error: Error) => {
74
65
  this.logger.error('Failed to cleanup worker client manager', error);
75
- process.exit(1);
76
66
  });
77
67
  }
78
68
 
@@ -81,13 +71,15 @@ class WorkerClientManager {
81
71
  * Note: We send the raw peerIdPrivateKey string instead of SecretValue
82
72
  * because SecretValue.toJSON() returns '[Redacted]', losing the value.
83
73
  * The worker must re-wrap it in SecretValue.
74
+ * We also omit priceBumpPercentage since it's a bigint and can't be
75
+ * serialized over IPC (which uses JSON under the hood).
84
76
  */
85
77
  private createClientConfig(
86
78
  clientIndex: number,
87
79
  port: number,
88
80
  otherNodes: string[],
89
- ): Omit<P2PConfig, 'peerIdPrivateKey'> & { peerIdPrivateKey: string } & Partial<ChainConfig> {
90
- return {
81
+ ): Omit<P2PConfig, 'peerIdPrivateKey' | 'priceBumpPercentage'> & { peerIdPrivateKey: string } & Partial<ChainConfig> {
82
+ const { priceBumpPercentage: _, ...config } = {
91
83
  ...getP2PDefaultConfig(),
92
84
  p2pEnabled: true,
93
85
  peerIdPrivateKey: this.peerIdPrivateKeys[clientIndex],
@@ -96,7 +88,10 @@ class WorkerClientManager {
96
88
  p2pPort: port,
97
89
  bootstrapNodes: [...otherNodes],
98
90
  ...this.p2pConfig,
99
- } as Omit<P2PConfig, 'peerIdPrivateKey'> & { peerIdPrivateKey: string } & Partial<ChainConfig>;
91
+ };
92
+ return config as Omit<P2PConfig, 'peerIdPrivateKey' | 'priceBumpPercentage'> & {
93
+ peerIdPrivateKey: string;
94
+ } & Partial<ChainConfig>;
100
95
  }
101
96
 
102
97
  /**
@@ -104,7 +99,9 @@ class WorkerClientManager {
104
99
  * Config uses raw string for peerIdPrivateKey (not SecretValue) for IPC serialization.
105
100
  */
106
101
  private spawnWorkerProcess(
107
- config: Omit<P2PConfig, 'peerIdPrivateKey'> & { peerIdPrivateKey: string } & Partial<ChainConfig>,
102
+ config: Omit<P2PConfig, 'peerIdPrivateKey' | 'priceBumpPercentage'> & {
103
+ peerIdPrivateKey: string;
104
+ } & Partial<ChainConfig>,
108
105
  clientIndex: number,
109
106
  ): [ChildProcess, Promise<void>] {
110
107
  const useCompiled = existsSync(workerJsPath);
@@ -418,6 +415,61 @@ class WorkerClientManager {
418
415
  this.logger.info('All worker processes cleaned up');
419
416
  }
420
417
 
418
+ /**
419
+ * Checks that the aggregator (client 0) has sufficient peer connections before running a benchmark.
420
+ * This prevents benchmark cases from starting with degraded connectivity after a previous case
421
+ * caused connection failures.
422
+ */
423
+ async waitForConnectivity(minPeers: number, timeoutMs: number = 15_000): Promise<number> {
424
+ const waitInterval = 1000;
425
+ let waited = 0;
426
+
427
+ while (waited < timeoutMs) {
428
+ const count = await this.getPeerCount(0, 5000);
429
+ if (count >= minPeers) {
430
+ this.logger.info(`Connectivity check passed: ${count}/${minPeers} peers connected`);
431
+ return count;
432
+ }
433
+ this.logger.debug(`Waiting for connectivity: ${count}/${minPeers} (waited ${waited}ms)`);
434
+ await sleep(waitInterval);
435
+ waited += waitInterval;
436
+ }
437
+
438
+ const finalCount = await this.getPeerCount(0, 5000);
439
+ this.logger.warn(`Connectivity check: only ${finalCount}/${minPeers} peers after ${timeoutMs}ms`);
440
+ return finalCount;
441
+ }
442
+
443
+ private getPeerCount(clientIndex: number, timeoutMs: number): Promise<number> {
444
+ return new Promise<number>(resolve => {
445
+ let resolved = false;
446
+
447
+ const handler = (msg: any) => {
448
+ if (resolved) {
449
+ return;
450
+ }
451
+ if (msg.type === 'PEER_COUNT') {
452
+ resolved = true;
453
+ clearTimeout(timeout);
454
+ this.processes[clientIndex].off('message', handler);
455
+ resolve(msg.count as number);
456
+ }
457
+ };
458
+
459
+ const timeout = setTimeout(() => {
460
+ if (resolved) {
461
+ return;
462
+ }
463
+ resolved = true;
464
+ this.processes[clientIndex].off('message', handler);
465
+ resolve(0);
466
+ }, timeoutMs);
467
+
468
+ this.processes[clientIndex].on('message', handler);
469
+ this.processes[clientIndex].send({ type: 'GET_PEER_COUNT' });
470
+ });
471
+ }
472
+
421
473
  /**
422
474
  * Run a req/resp benchmark across all worker clients.
423
475
  *
@@ -438,9 +490,7 @@ class WorkerClientManager {
438
490
  const blockNumber = config.blockNumber ?? 1;
439
491
  const pinnedPeerId = config.pinnedPeerIndex !== undefined ? this.peerIds[config.pinnedPeerIndex] : undefined;
440
492
 
441
- this.logger.info(
442
- `Starting req/resp benchmark: txCount=${config.txCount}, distribution=${config.distribution}, collector=${config.collectorType}`,
443
- );
493
+ this.logger.info(`Starting req/resp benchmark: txCount=${config.txCount}, distribution=${config.distribution}`);
444
494
 
445
495
  const readyPromises: Promise<void>[] = [];
446
496
 
@@ -450,7 +500,6 @@ class WorkerClientManager {
450
500
  txCount: config.txCount,
451
501
  peerCount,
452
502
  distribution: config.distribution,
453
- collectorType: config.collectorType,
454
503
  timeoutMs: config.timeoutMs,
455
504
  isAggregator: false,
456
505
  peerIndex: i,
@@ -472,7 +521,6 @@ class WorkerClientManager {
472
521
  txCount: config.txCount,
473
522
  peerCount,
474
523
  distribution: config.distribution,
475
- collectorType: config.collectorType,
476
524
  timeoutMs: config.timeoutMs,
477
525
  isAggregator: true,
478
526
  peerIndex: 0,
@@ -483,7 +531,8 @@ class WorkerClientManager {
483
531
  };
484
532
 
485
533
  this.processes[0].send(aggregatorCmd);
486
- const result = await this.waitForBenchResult(0, config.timeoutMs + 30000);
534
+ const aggregatorBudgetMs = config.timeoutMs + BENCHMARK_CONSTANTS.MAX_PEER_WAIT_MS + 30000;
535
+ const result = await this.waitForBenchResult(0, aggregatorBudgetMs);
487
536
 
488
537
  this.logger.info(
489
538
  `Benchmark complete: fetched=${result.fetchedCount}/${config.txCount}, duration=${result.durationMs.toFixed(0)}ms, success=${result.success}`,
@@ -492,7 +541,6 @@ class WorkerClientManager {
492
541
  return {
493
542
  txCount: config.txCount,
494
543
  distribution: config.distribution,
495
- collector: config.collectorType,
496
544
  durationMs: result.durationMs,
497
545
  fetchedCount: result.fetchedCount,
498
546
  success: result.success,
@@ -570,5 +618,4 @@ class WorkerClientManager {
570
618
  }
571
619
 
572
620
  export { WorkerClientManager, testChainConfig };
573
- export type { DistributionPattern, CollectorType } from './p2p_client_testbench_worker.js';
574
- export { COLLECTOR_DISPLAY_NAMES } from './p2p_client_testbench_worker.js';
621
+ export type { DistributionPattern } from './p2p_client_testbench_worker.js';
package/src/util.ts CHANGED
@@ -1,13 +1,13 @@
1
1
  import { SecretValue } from '@aztec/foundation/config';
2
- import type { Logger } from '@aztec/foundation/log';
2
+ import { type Logger, createLogger } from '@aztec/foundation/log';
3
3
  import type { AztecAsyncKVStore, AztecAsyncSingleton } from '@aztec/kv-store';
4
- import type { DataStoreConfig } from '@aztec/kv-store/config';
4
+ import type { DataStoreConfig } from '@aztec/stdlib/kv-store';
5
5
 
6
6
  import type { GossipSub } from '@chainsafe/libp2p-gossipsub';
7
7
  import { generateKeyPair, marshalPrivateKey, unmarshalPrivateKey } from '@libp2p/crypto/keys';
8
8
  import type { Identify } from '@libp2p/identify';
9
9
  import type { PeerId, PrivateKey } from '@libp2p/interface';
10
- import type { ConnectionManager } from '@libp2p/interface-internal';
10
+ import type { AddressManager, ConnectionManager } from '@libp2p/interface-internal';
11
11
  import { createFromPrivKey } from '@libp2p/peer-id-factory';
12
12
  import { resolve } from 'dns/promises';
13
13
  import { promises as fs } from 'fs';
@@ -15,7 +15,7 @@ import type { Libp2p } from 'libp2p';
15
15
  import net from 'net';
16
16
  import path from 'path';
17
17
 
18
- import type { P2PConfig } from './config.js';
18
+ import { DEFAULT_PUBLIC_IP_SERVICES, type P2PConfig } from './config.js';
19
19
 
20
20
  const PEER_ID_DATA_DIR_FILE = 'p2p-private-key';
21
21
 
@@ -31,6 +31,9 @@ export interface PubSubLibp2p extends Pick<Libp2p, 'status' | 'start' | 'stop' |
31
31
  | 'direct'
32
32
  | 'getMeshPeers'
33
33
  > & { score: Pick<GossipSub['score'], 'score'> };
34
+ components: {
35
+ addressManager: Pick<AddressManager, 'addObservedAddr' | 'confirmObservedAddr' | 'removeObservedAddr'>;
36
+ };
34
37
  };
35
38
  }
36
39
 
@@ -39,6 +42,7 @@ export type FullLibp2p = Libp2p<{
39
42
  pubsub: GossipSub;
40
43
  components: {
41
44
  connectionManager: ConnectionManager;
45
+ addressManager: AddressManager;
42
46
  };
43
47
  }>;
44
48
 
@@ -60,16 +64,25 @@ export function convertToMultiaddr(address: string, port: number, protocol: 'tcp
60
64
  }
61
65
 
62
66
  /**
63
- * Queries the public IP address of the machine.
67
+ * Queries the public IP address of the machine, trying multiple services in order.
68
+ * @param services - HTTPS URLs to try; defaults to {@link DEFAULT_PUBLIC_IP_SERVICES}.
64
69
  */
65
- export async function getPublicIp(): Promise<string> {
66
- const resp = await fetch('https://checkip.amazonaws.com/');
67
- const text = await resp.text();
68
- const address = text.trim();
69
- if (!isValidIpAddress(address)) {
70
- throw new Error(`Received invalid IP address from checkip service: ${address}`);
70
+ export async function getPublicIp(services: string[] = DEFAULT_PUBLIC_IP_SERVICES): Promise<string> {
71
+ const errors: string[] = [];
72
+ for (const url of services) {
73
+ try {
74
+ const resp = await fetch(url, { signal: AbortSignal.timeout(5000) });
75
+ const text = await resp.text();
76
+ const address = text.trim();
77
+ if (isValidIpAddress(address)) {
78
+ return address;
79
+ }
80
+ errors.push(`${url}: invalid IP "${address}"`);
81
+ } catch (err: any) {
82
+ errors.push(`${url}: ${err.message ?? err}`);
83
+ }
71
84
  }
72
- return address;
85
+ throw new Error(`Failed to determine public IP from all services:\n${errors.join('\n')}`);
73
86
  }
74
87
 
75
88
  export function isValidIpAddress(address: string): boolean {
@@ -107,18 +120,20 @@ export async function configureP2PClientAddresses(
107
120
  ): Promise<P2PConfig & DataStoreConfig> {
108
121
  const config = { ..._config };
109
122
  const { p2pIp, queryForIp, p2pBroadcastPort, p2pPort } = config;
123
+ const logger = createLogger('p2p:config');
110
124
 
111
125
  // If no broadcast port is provided, use the given p2p port as the broadcast port
112
126
  if (!p2pBroadcastPort) {
113
127
  config.p2pBroadcastPort = p2pPort;
114
128
  }
115
129
 
116
- // check if no announce IP was provided
117
- if (!p2pIp) {
118
- if (queryForIp) {
119
- const publicIp = await getPublicIp();
120
- config.p2pIp = publicIp;
121
- }
130
+ // Resolve the initial public IP so the ENR and announce address are set at startup.
131
+ // If queryForIp is enabled, discv5 will also track IP changes at runtime via enrUpdate.
132
+ if (!p2pIp && queryForIp) {
133
+ config.p2pIp = await getPublicIp(config.publicIpServices);
134
+ logger.info('Resolved initial public IP for P2P', { ip: config.p2pIp, queryForIp });
135
+ } else if (p2pIp) {
136
+ logger.info('Using configured static P2P IP', { ip: p2pIp, queryForIp });
122
137
  }
123
138
  // TODO(md): guard against setting a local ip address as the announce ip
124
139
 
package/src/versioning.ts CHANGED
@@ -1,33 +1,21 @@
1
- import { toBufferBE } from '@aztec/foundation/bigint-buffer';
2
1
  import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
3
2
  import { protocolContractsHash } from '@aztec/protocol-contracts';
4
3
  import type { ChainConfig } from '@aztec/stdlib/config';
5
- import {
6
- type ComponentsVersions,
7
- checkCompressedComponentVersion,
8
- compressComponentVersions,
9
- getComponentsVersionsFromConfig,
10
- } from '@aztec/stdlib/versioning';
4
+ import { compressComponentVersions, getComponentsVersionsFromConfig } from '@aztec/stdlib/versioning';
11
5
 
12
6
  import type { SignableENR } from '@nethermindeth/enr';
13
- import xxhashFactory from 'xxhash-wasm';
14
7
 
15
8
  import { AZTEC_ENR_CLIENT_VERSION_KEY, AZTEC_ENR_KEY } from './types/index.js';
16
9
 
17
- const USE_XX_HASH = false; // Enable to reduce the size of the ENR record for production
18
- const XX_HASH_LEN = 8;
19
- const xxhash = await xxhashFactory();
20
-
21
10
  /** Returns the component versions based on config and this build. */
22
11
  export function getVersions(config: ChainConfig) {
23
12
  return getComponentsVersionsFromConfig(config, protocolContractsHash, getVKTreeRoot());
24
13
  }
25
14
 
26
15
  /** Sets the aztec key on the ENR record with versioning info. */
27
- export function setAztecEnrKey(enr: SignableENR, config: ChainConfig, useXxHash = USE_XX_HASH) {
16
+ export function setAztecEnrKey(enr: SignableENR, config: ChainConfig) {
28
17
  const versions = getVersions(config);
29
- const value = versionsToEnrValue(versions, useXxHash);
30
- enr.set(AZTEC_ENR_KEY, value);
18
+ enr.set(AZTEC_ENR_KEY, Buffer.from(compressComponentVersions(versions)));
31
19
  return versions;
32
20
  }
33
21
 
@@ -37,21 +25,3 @@ export function setAztecClientVersionEnrKey(enr: SignableENR, clientVersion: str
37
25
  enr.set(AZTEC_ENR_CLIENT_VERSION_KEY, Buffer.from(clientVersion));
38
26
  }
39
27
  }
40
-
41
- /** Checks the given value from an ENR record against the expected versions. */
42
- export function checkAztecEnrVersion(enrValue: Buffer, expectedVersions: ComponentsVersions) {
43
- if (enrValue.length === XX_HASH_LEN) {
44
- const expected = versionsToEnrValue(expectedVersions, true);
45
- if (!Buffer.from(enrValue).equals(expected)) {
46
- throw new Error(`Expected ENR version ${expected.toString('hex')} but received ${enrValue.toString('hex')}`);
47
- }
48
- } else {
49
- const actual = Buffer.from(enrValue).toString();
50
- checkCompressedComponentVersion(actual, expectedVersions);
51
- }
52
- }
53
-
54
- function versionsToEnrValue(versions: ComponentsVersions, useXxHash: boolean) {
55
- const compressed = compressComponentVersions(versions);
56
- return useXxHash ? toBufferBE(xxhash.h64(compressed), XX_HASH_LEN) : Buffer.from(compressed);
57
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcG9zYWxfdHhfY29sbGVjdG9yX3dvcmtlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NsaWVudC90ZXN0L3R4X3Byb3Bvc2FsX2NvbGxlY3Rvci9wcm9wb3NhbF90eF9jb2xsZWN0b3Jfd29ya2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"proposal_tx_collector_worker.d.ts","sourceRoot":"","sources":["../../../../src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts"],"names":[],"mappings":""}