@aztec/p2p 0.0.0-test.1 → 0.0.1-commit.0b941701

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 (463) hide show
  1. package/dest/bootstrap/bootstrap.d.ts +1 -1
  2. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  3. package/dest/bootstrap/bootstrap.js +22 -9
  4. package/dest/client/factory.d.ts +15 -5
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +60 -25
  7. package/dest/client/index.d.ts +2 -1
  8. package/dest/client/index.d.ts.map +1 -1
  9. package/dest/client/index.js +1 -0
  10. package/dest/client/interface.d.ts +170 -0
  11. package/dest/client/interface.d.ts.map +1 -0
  12. package/dest/client/interface.js +9 -0
  13. package/dest/client/p2p_client.d.ts +75 -193
  14. package/dest/client/p2p_client.d.ts.map +1 -1
  15. package/dest/client/p2p_client.js +757 -228
  16. package/dest/config.d.ts +148 -125
  17. package/dest/config.d.ts.map +1 -1
  18. package/dest/config.js +180 -34
  19. package/dest/enr/generate-enr.d.ts +11 -3
  20. package/dest/enr/generate-enr.d.ts.map +1 -1
  21. package/dest/enr/generate-enr.js +27 -5
  22. package/dest/enr/index.d.ts +1 -1
  23. package/dest/errors/attestation-pool.error.d.ts +7 -0
  24. package/dest/errors/attestation-pool.error.d.ts.map +1 -0
  25. package/dest/errors/attestation-pool.error.js +12 -0
  26. package/dest/errors/reqresp.error.d.ts +1 -1
  27. package/dest/errors/reqresp.error.d.ts.map +1 -1
  28. package/dest/index.d.ts +4 -1
  29. package/dest/index.d.ts.map +1 -1
  30. package/dest/index.js +2 -0
  31. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +104 -25
  32. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  33. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
  34. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  35. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +299 -174
  36. package/dest/mem_pools/attestation_pool/index.d.ts +1 -1
  37. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +29 -11
  38. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
  39. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +168 -62
  40. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +24 -10
  41. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
  42. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +133 -82
  43. package/dest/mem_pools/attestation_pool/mocks.d.ts +234 -11
  44. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  45. package/dest/mem_pools/attestation_pool/mocks.js +19 -21
  46. package/dest/mem_pools/index.d.ts +1 -1
  47. package/dest/mem_pools/instrumentation.d.ts +16 -12
  48. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  49. package/dest/mem_pools/instrumentation.js +55 -40
  50. package/dest/mem_pools/interface.d.ts +3 -4
  51. package/dest/mem_pools/interface.d.ts.map +1 -1
  52. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +75 -16
  53. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  54. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +493 -142
  55. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +32 -0
  56. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -0
  57. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +112 -0
  58. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +157 -0
  59. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -0
  60. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +52 -0
  61. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +16 -0
  62. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  63. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +122 -0
  64. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +17 -0
  65. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  66. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +84 -0
  67. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +19 -0
  68. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  69. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +78 -0
  70. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +26 -0
  71. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  72. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +84 -0
  73. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
  74. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
  75. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
  76. package/dest/mem_pools/tx_pool/index.d.ts +1 -2
  77. package/dest/mem_pools/tx_pool/index.d.ts.map +1 -1
  78. package/dest/mem_pools/tx_pool/index.js +0 -1
  79. package/dest/mem_pools/tx_pool/priority.d.ts +5 -1
  80. package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
  81. package/dest/mem_pools/tx_pool/priority.js +7 -2
  82. package/dest/mem_pools/tx_pool/tx_pool.d.ts +72 -11
  83. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
  84. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
  85. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  86. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +276 -45
  87. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +7 -5
  88. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  89. package/dest/msg_validators/attestation_validator/attestation_validator.js +79 -10
  90. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +20 -0
  91. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -0
  92. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +71 -0
  93. package/dest/msg_validators/attestation_validator/index.d.ts +2 -1
  94. package/dest/msg_validators/attestation_validator/index.d.ts.map +1 -1
  95. package/dest/msg_validators/attestation_validator/index.js +1 -0
  96. package/dest/msg_validators/clock_tolerance.d.ts +21 -0
  97. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
  98. package/dest/msg_validators/clock_tolerance.js +37 -0
  99. package/dest/msg_validators/index.d.ts +2 -2
  100. package/dest/msg_validators/index.d.ts.map +1 -1
  101. package/dest/msg_validators/index.js +1 -1
  102. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts +10 -0
  103. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts.map +1 -0
  104. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.js +36 -0
  105. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +9 -0
  106. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
  107. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +6 -0
  108. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +9 -0
  109. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
  110. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +6 -0
  111. package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
  112. package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
  113. package/dest/msg_validators/proposal_validator/index.js +3 -0
  114. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -0
  115. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
  116. package/dest/msg_validators/proposal_validator/proposal_validator.js +104 -0
  117. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +23 -0
  118. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -0
  119. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +212 -0
  120. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +1 -1
  121. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  122. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +3 -0
  123. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -0
  124. package/dest/msg_validators/tx_validator/allowed_public_setup.js +27 -0
  125. package/dest/msg_validators/tx_validator/archive_cache.d.ts +14 -0
  126. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -0
  127. package/dest/msg_validators/tx_validator/archive_cache.js +22 -0
  128. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +2 -2
  129. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  130. package/dest/msg_validators/tx_validator/block_header_validator.js +4 -4
  131. package/dest/msg_validators/tx_validator/data_validator.d.ts +1 -1
  132. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  133. package/dest/msg_validators/tx_validator/data_validator.js +56 -86
  134. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +1 -3
  135. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  136. package/dest/msg_validators/tx_validator/double_spend_validator.js +21 -27
  137. package/dest/msg_validators/tx_validator/factory.d.ts +16 -0
  138. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -0
  139. package/dest/msg_validators/tx_validator/factory.js +74 -0
  140. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
  141. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
  142. package/dest/msg_validators/tx_validator/fee_payer_balance.js +20 -0
  143. package/dest/msg_validators/tx_validator/gas_validator.d.ts +11 -0
  144. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -0
  145. package/dest/msg_validators/tx_validator/gas_validator.js +109 -0
  146. package/dest/msg_validators/tx_validator/index.d.ts +9 -1
  147. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  148. package/dest/msg_validators/tx_validator/index.js +8 -0
  149. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +9 -5
  150. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  151. package/dest/msg_validators/tx_validator/metadata_validator.js +39 -20
  152. package/dest/msg_validators/tx_validator/phases_validator.d.ts +14 -0
  153. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -0
  154. package/dest/msg_validators/tx_validator/phases_validator.js +93 -0
  155. package/dest/msg_validators/tx_validator/size_validator.d.ts +6 -0
  156. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
  157. package/dest/msg_validators/tx_validator/size_validator.js +20 -0
  158. package/dest/msg_validators/tx_validator/test_utils.d.ts +17 -0
  159. package/dest/msg_validators/tx_validator/test_utils.d.ts.map +1 -0
  160. package/dest/msg_validators/tx_validator/test_utils.js +22 -0
  161. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +13 -0
  162. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -0
  163. package/dest/msg_validators/tx_validator/timestamp_validator.js +32 -0
  164. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +8 -0
  165. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -0
  166. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +24 -0
  167. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +1 -1
  168. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  169. package/dest/msg_validators/tx_validator/tx_proof_validator.js +6 -5
  170. package/dest/services/data_store.d.ts +1 -1
  171. package/dest/services/data_store.d.ts.map +1 -1
  172. package/dest/services/discv5/discV5_service.d.ts +10 -9
  173. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  174. package/dest/services/discv5/discV5_service.js +63 -36
  175. package/dest/services/dummy_service.d.ts +54 -11
  176. package/dest/services/dummy_service.d.ts.map +1 -1
  177. package/dest/services/dummy_service.js +91 -5
  178. package/dest/services/encoding.d.ts +26 -7
  179. package/dest/services/encoding.d.ts.map +1 -1
  180. package/dest/services/encoding.js +75 -6
  181. package/dest/services/gossipsub/scoring.d.ts +1 -1
  182. package/dest/services/index.d.ts +5 -1
  183. package/dest/services/index.d.ts.map +1 -1
  184. package/dest/services/index.js +4 -0
  185. package/dest/services/libp2p/instrumentation.d.ts +20 -0
  186. package/dest/services/libp2p/instrumentation.d.ts.map +1 -0
  187. package/dest/services/libp2p/instrumentation.js +111 -0
  188. package/dest/services/libp2p/libp2p_service.d.ts +103 -97
  189. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  190. package/dest/services/libp2p/libp2p_service.js +1316 -310
  191. package/dest/services/peer-manager/interface.d.ts +23 -0
  192. package/dest/services/peer-manager/interface.d.ts.map +1 -0
  193. package/dest/services/peer-manager/interface.js +1 -0
  194. package/dest/services/peer-manager/metrics.d.ts +11 -2
  195. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  196. package/dest/services/peer-manager/metrics.js +29 -12
  197. package/dest/services/peer-manager/peer_manager.d.ts +103 -23
  198. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  199. package/dest/services/peer-manager/peer_manager.js +551 -82
  200. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  201. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  202. package/dest/services/peer-manager/peer_scoring.js +37 -2
  203. package/dest/services/reqresp/config.d.ts +11 -9
  204. package/dest/services/reqresp/config.d.ts.map +1 -1
  205. package/dest/services/reqresp/config.js +18 -4
  206. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +2 -2
  207. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  208. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +10 -6
  209. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +31 -17
  210. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  211. package/dest/services/reqresp/connection-sampler/connection_sampler.js +142 -84
  212. package/dest/services/reqresp/constants.d.ts +12 -0
  213. package/dest/services/reqresp/constants.d.ts.map +1 -0
  214. package/dest/services/reqresp/constants.js +7 -0
  215. package/dest/services/reqresp/index.d.ts +3 -2
  216. package/dest/services/reqresp/index.d.ts.map +1 -1
  217. package/dest/services/reqresp/index.js +2 -1
  218. package/dest/services/reqresp/interface.d.ts +73 -24
  219. package/dest/services/reqresp/interface.d.ts.map +1 -1
  220. package/dest/services/reqresp/interface.js +46 -27
  221. package/dest/services/reqresp/metrics.d.ts +1 -1
  222. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  223. package/dest/services/reqresp/metrics.js +5 -21
  224. package/dest/services/reqresp/protocols/auth.d.ts +43 -0
  225. package/dest/services/reqresp/protocols/auth.d.ts.map +1 -0
  226. package/dest/services/reqresp/protocols/auth.js +71 -0
  227. package/dest/services/reqresp/protocols/block.d.ts +6 -1
  228. package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
  229. package/dest/services/reqresp/protocols/block.js +30 -6
  230. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +30 -0
  231. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -0
  232. package/dest/services/reqresp/protocols/block_txs/bitvector.js +82 -0
  233. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +11 -0
  234. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -0
  235. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +39 -0
  236. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +47 -0
  237. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -0
  238. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +75 -0
  239. package/dest/services/reqresp/protocols/block_txs/index.d.ts +4 -0
  240. package/dest/services/reqresp/protocols/block_txs/index.d.ts.map +1 -0
  241. package/dest/services/reqresp/protocols/block_txs/index.js +3 -0
  242. package/dest/services/reqresp/protocols/goodbye.d.ts +3 -5
  243. package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
  244. package/dest/services/reqresp/protocols/goodbye.js +7 -7
  245. package/dest/services/reqresp/protocols/index.d.ts +3 -1
  246. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  247. package/dest/services/reqresp/protocols/index.js +2 -0
  248. package/dest/services/reqresp/protocols/ping.d.ts +1 -3
  249. package/dest/services/reqresp/protocols/ping.d.ts.map +1 -1
  250. package/dest/services/reqresp/protocols/status.d.ts +40 -7
  251. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  252. package/dest/services/reqresp/protocols/status.js +76 -5
  253. package/dest/services/reqresp/protocols/tx.d.ts +14 -4
  254. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  255. package/dest/services/reqresp/protocols/tx.js +34 -6
  256. package/dest/services/reqresp/rate-limiter/index.d.ts +1 -1
  257. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +6 -4
  258. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  259. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -2
  260. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  261. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  262. package/dest/services/reqresp/rate-limiter/rate_limits.js +21 -1
  263. package/dest/services/reqresp/reqresp.d.ts +24 -66
  264. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  265. package/dest/services/reqresp/reqresp.js +699 -230
  266. package/dest/services/reqresp/status.d.ts +10 -4
  267. package/dest/services/reqresp/status.d.ts.map +1 -1
  268. package/dest/services/reqresp/status.js +9 -2
  269. package/dest/services/service.d.ts +37 -20
  270. package/dest/services/service.d.ts.map +1 -1
  271. package/dest/services/tx_collection/config.d.ts +25 -0
  272. package/dest/services/tx_collection/config.d.ts.map +1 -0
  273. package/dest/services/tx_collection/config.js +58 -0
  274. package/dest/services/tx_collection/fast_tx_collection.d.ts +51 -0
  275. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -0
  276. package/dest/services/tx_collection/fast_tx_collection.js +300 -0
  277. package/dest/services/tx_collection/index.d.ts +3 -0
  278. package/dest/services/tx_collection/index.d.ts.map +1 -0
  279. package/dest/services/tx_collection/index.js +2 -0
  280. package/dest/services/tx_collection/instrumentation.d.ts +10 -0
  281. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -0
  282. package/dest/services/tx_collection/instrumentation.js +24 -0
  283. package/dest/services/tx_collection/slow_tx_collection.d.ts +53 -0
  284. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -0
  285. package/dest/services/tx_collection/slow_tx_collection.js +177 -0
  286. package/dest/services/tx_collection/tx_collection.d.ts +110 -0
  287. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -0
  288. package/dest/services/tx_collection/tx_collection.js +128 -0
  289. package/dest/services/tx_collection/tx_collection_sink.d.ts +30 -0
  290. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -0
  291. package/dest/services/tx_collection/tx_collection_sink.js +111 -0
  292. package/dest/services/tx_collection/tx_source.d.ts +18 -0
  293. package/dest/services/tx_collection/tx_source.d.ts.map +1 -0
  294. package/dest/services/tx_collection/tx_source.js +31 -0
  295. package/dest/services/tx_provider.d.ts +51 -0
  296. package/dest/services/tx_provider.d.ts.map +1 -0
  297. package/dest/services/tx_provider.js +219 -0
  298. package/dest/services/tx_provider_instrumentation.d.ts +16 -0
  299. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -0
  300. package/dest/services/tx_provider_instrumentation.js +34 -0
  301. package/dest/test-helpers/generate-peer-id-private-keys.d.ts +1 -1
  302. package/dest/test-helpers/get-ports.d.ts +1 -1
  303. package/dest/test-helpers/get-ports.d.ts.map +1 -1
  304. package/dest/test-helpers/index.d.ts +2 -1
  305. package/dest/test-helpers/index.d.ts.map +1 -1
  306. package/dest/test-helpers/index.js +1 -0
  307. package/dest/test-helpers/make-enrs.d.ts +1 -1
  308. package/dest/test-helpers/make-enrs.d.ts.map +1 -1
  309. package/dest/test-helpers/make-enrs.js +4 -5
  310. package/dest/test-helpers/make-test-p2p-clients.d.ts +33 -5
  311. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  312. package/dest/test-helpers/make-test-p2p-clients.js +86 -16
  313. package/dest/test-helpers/mock-pubsub.d.ts +59 -0
  314. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -0
  315. package/dest/test-helpers/mock-pubsub.js +130 -0
  316. package/dest/test-helpers/mock-tx-helpers.d.ts +12 -0
  317. package/dest/test-helpers/mock-tx-helpers.d.ts.map +1 -0
  318. package/dest/test-helpers/mock-tx-helpers.js +19 -0
  319. package/dest/test-helpers/reqresp-nodes.d.ts +15 -11
  320. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  321. package/dest/test-helpers/reqresp-nodes.js +62 -28
  322. package/dest/testbench/p2p_client_testbench_worker.d.ts +1 -1
  323. package/dest/testbench/p2p_client_testbench_worker.js +127 -39
  324. package/dest/testbench/parse_log_file.d.ts +1 -1
  325. package/dest/testbench/parse_log_file.js +4 -4
  326. package/dest/testbench/testbench.d.ts +1 -1
  327. package/dest/testbench/testbench.js +4 -4
  328. package/dest/testbench/worker_client_manager.d.ts +1 -6
  329. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  330. package/dest/testbench/worker_client_manager.js +17 -20
  331. package/dest/types/index.d.ts +4 -2
  332. package/dest/types/index.d.ts.map +1 -1
  333. package/dest/types/index.js +2 -0
  334. package/dest/util.d.ts +24 -16
  335. package/dest/util.d.ts.map +1 -1
  336. package/dest/util.js +75 -69
  337. package/dest/versioning.d.ts +4 -4
  338. package/dest/versioning.d.ts.map +1 -1
  339. package/dest/versioning.js +8 -3
  340. package/package.json +32 -27
  341. package/src/bootstrap/bootstrap.ts +27 -11
  342. package/src/client/factory.ts +139 -53
  343. package/src/client/index.ts +1 -0
  344. package/src/client/interface.ts +213 -0
  345. package/src/client/p2p_client.ts +469 -383
  346. package/src/config.ts +299 -134
  347. package/src/enr/generate-enr.ts +39 -6
  348. package/src/errors/attestation-pool.error.ts +13 -0
  349. package/src/index.ts +4 -0
  350. package/src/mem_pools/attestation_pool/attestation_pool.ts +119 -24
  351. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +352 -201
  352. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +233 -72
  353. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +199 -96
  354. package/src/mem_pools/attestation_pool/mocks.ts +24 -17
  355. package/src/mem_pools/instrumentation.ts +71 -48
  356. package/src/mem_pools/interface.ts +2 -4
  357. package/src/mem_pools/tx_pool/README.md +270 -0
  358. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +580 -143
  359. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +132 -0
  360. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +208 -0
  361. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +162 -0
  362. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +104 -0
  363. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +93 -0
  364. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +106 -0
  365. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
  366. package/src/mem_pools/tx_pool/index.ts +0 -1
  367. package/src/mem_pools/tx_pool/priority.ts +9 -2
  368. package/src/mem_pools/tx_pool/tx_pool.ts +75 -10
  369. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +225 -36
  370. package/src/msg_validators/attestation_validator/attestation_validator.ts +72 -14
  371. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +88 -0
  372. package/src/msg_validators/attestation_validator/index.ts +1 -0
  373. package/src/msg_validators/clock_tolerance.ts +51 -0
  374. package/src/msg_validators/index.ts +1 -1
  375. package/src/msg_validators/msg_seen_validator/msg_seen_validator.ts +36 -0
  376. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +10 -0
  377. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +13 -0
  378. package/src/msg_validators/proposal_validator/index.ts +3 -0
  379. package/src/msg_validators/proposal_validator/proposal_validator.ts +92 -0
  380. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +230 -0
  381. package/src/msg_validators/tx_validator/allowed_public_setup.ts +35 -0
  382. package/src/msg_validators/tx_validator/archive_cache.ts +28 -0
  383. package/src/msg_validators/tx_validator/block_header_validator.ts +7 -5
  384. package/src/msg_validators/tx_validator/data_validator.ts +89 -69
  385. package/src/msg_validators/tx_validator/double_spend_validator.ts +19 -17
  386. package/src/msg_validators/tx_validator/factory.ts +110 -0
  387. package/src/msg_validators/tx_validator/fee_payer_balance.ts +40 -0
  388. package/src/msg_validators/tx_validator/gas_validator.ts +117 -0
  389. package/src/msg_validators/tx_validator/index.ts +8 -0
  390. package/src/msg_validators/tx_validator/metadata_validator.ts +67 -22
  391. package/src/msg_validators/tx_validator/phases_validator.ts +116 -0
  392. package/src/msg_validators/tx_validator/size_validator.ts +18 -0
  393. package/src/msg_validators/tx_validator/test_utils.ts +43 -0
  394. package/src/msg_validators/tx_validator/timestamp_validator.ts +49 -0
  395. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +17 -0
  396. package/src/msg_validators/tx_validator/tx_proof_validator.ts +6 -5
  397. package/src/services/discv5/discV5_service.ts +84 -38
  398. package/src/services/dummy_service.ts +153 -9
  399. package/src/services/encoding.ts +82 -6
  400. package/src/services/index.ts +4 -0
  401. package/src/services/libp2p/instrumentation.ts +113 -0
  402. package/src/services/libp2p/libp2p_service.ts +1142 -339
  403. package/src/services/peer-manager/interface.ts +29 -0
  404. package/src/services/peer-manager/metrics.ts +38 -12
  405. package/src/services/peer-manager/peer_manager.ts +657 -80
  406. package/src/services/peer-manager/peer_scoring.ts +42 -3
  407. package/src/services/reqresp/config.ts +26 -9
  408. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +12 -6
  409. package/src/services/reqresp/connection-sampler/connection_sampler.ts +150 -95
  410. package/src/services/reqresp/constants.ts +14 -0
  411. package/src/services/reqresp/index.ts +2 -0
  412. package/src/services/reqresp/interface.ts +92 -37
  413. package/src/services/reqresp/metrics.ts +11 -24
  414. package/src/services/reqresp/protocols/auth.ts +83 -0
  415. package/src/services/reqresp/protocols/block.ts +26 -4
  416. package/src/services/reqresp/protocols/block_txs/bitvector.ts +99 -0
  417. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +53 -0
  418. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +79 -0
  419. package/src/services/reqresp/protocols/block_txs/index.ts +3 -0
  420. package/src/services/reqresp/protocols/goodbye.ts +9 -7
  421. package/src/services/reqresp/protocols/index.ts +2 -0
  422. package/src/services/reqresp/protocols/status.ts +121 -5
  423. package/src/services/reqresp/protocols/tx.ts +36 -8
  424. package/src/services/reqresp/rate-limiter/rate_limiter.ts +12 -3
  425. package/src/services/reqresp/rate-limiter/rate_limits.ts +21 -1
  426. package/src/services/reqresp/reqresp.ts +387 -256
  427. package/src/services/reqresp/status.ts +12 -3
  428. package/src/services/service.ts +61 -22
  429. package/src/services/tx_collection/config.ts +84 -0
  430. package/src/services/tx_collection/fast_tx_collection.ts +341 -0
  431. package/src/services/tx_collection/index.ts +2 -0
  432. package/src/services/tx_collection/instrumentation.ts +26 -0
  433. package/src/services/tx_collection/slow_tx_collection.ts +233 -0
  434. package/src/services/tx_collection/tx_collection.ts +216 -0
  435. package/src/services/tx_collection/tx_collection_sink.ts +129 -0
  436. package/src/services/tx_collection/tx_source.ts +37 -0
  437. package/src/services/tx_provider.ts +232 -0
  438. package/src/services/tx_provider_instrumentation.ts +48 -0
  439. package/src/test-helpers/index.ts +1 -0
  440. package/src/test-helpers/make-enrs.ts +4 -5
  441. package/src/test-helpers/make-test-p2p-clients.ts +111 -21
  442. package/src/test-helpers/mock-pubsub.ts +188 -0
  443. package/src/test-helpers/mock-tx-helpers.ts +24 -0
  444. package/src/test-helpers/reqresp-nodes.ts +87 -36
  445. package/src/testbench/p2p_client_testbench_worker.ts +183 -37
  446. package/src/testbench/parse_log_file.ts +4 -4
  447. package/src/testbench/testbench.ts +4 -4
  448. package/src/testbench/worker_client_manager.ts +23 -24
  449. package/src/types/index.ts +2 -0
  450. package/src/util.ts +105 -91
  451. package/src/versioning.ts +11 -4
  452. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +0 -56
  453. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +0 -1
  454. package/dest/mem_pools/tx_pool/memory_tx_pool.js +0 -141
  455. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -8
  456. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
  457. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +0 -21
  458. package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
  459. package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
  460. package/dest/msg_validators/block_proposal_validator/index.js +0 -1
  461. package/src/mem_pools/tx_pool/memory_tx_pool.ts +0 -174
  462. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -29
  463. package/src/msg_validators/block_proposal_validator/index.ts +0 -1
@@ -0,0 +1,4 @@
1
+ export * from './block_txs_handler.js';
2
+ export * from './bitvector.js';
3
+ export * from './block_txs_reqresp.js';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL3Byb3RvY29scy9ibG9ja190eHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsd0JBQXdCLENBQUMifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/reqresp/protocols/block_txs/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './block_txs_handler.js';
2
+ export * from './bitvector.js';
3
+ export * from './block_txs_reqresp.js';
@@ -1,7 +1,5 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- /// <reference types="node" resolution-mode="require"/>
3
1
  import type { PeerId } from '@libp2p/interface';
4
- import type { PeerManager } from '../../peer-manager/peer_manager.js';
2
+ import type { PeerManagerInterface } from '../../peer-manager/interface.js';
5
3
  import { type ReqRespSubProtocolHandler } from '../interface.js';
6
4
  import type { ReqResp } from '../reqresp.js';
7
5
  /**
@@ -47,5 +45,5 @@ export declare class GoodbyeProtocolHandler {
47
45
  * @param peerManager - The peer manager.
48
46
  * @returns A resolved promise with the goodbye response.
49
47
  */
50
- export declare function reqGoodbyeHandler(peerManager: PeerManager): ReqRespSubProtocolHandler;
51
- //# sourceMappingURL=goodbye.d.ts.map
48
+ export declare function reqGoodbyeHandler(peerManager: PeerManagerInterface): ReqRespSubProtocolHandler;
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZGJ5ZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3JlcXJlc3AvcHJvdG9jb2xzL2dvb2RieWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFaEQsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RSxPQUFPLEVBQXNCLEtBQUsseUJBQXlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRixPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0M7O0dBRUc7QUFDSCxvQkFBWSxhQUFhO0lBQ3ZCLDBGQUEwRjtJQUMxRixRQUFRLElBQU07SUFDZCxzSUFBc0k7SUFDdEksU0FBUyxJQUFNO0lBQ2YsZ0ZBQWdGO0lBQ2hGLFNBQVMsSUFBTTtJQUNmLDJFQUEyRTtJQUMzRSxNQUFNLElBQU07SUFDWiwyQkFBMkI7SUFDM0IsYUFBYSxJQUFNO0lBQ25CLHFCQUFxQjtJQUNyQixPQUFPLElBQU07Q0FDZDtBQUVELHdCQUFnQixtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsYUFBYSxHQUFHLE1BQU0sQ0FFakU7QUFFRCx3QkFBZ0IsbUJBQW1CLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxhQUFhLENBU2pFO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFnQixtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsYUFBYSxHQUFHLE1BQU0sQ0FnQmpFO0FBRUQ7O0dBRUc7QUFDSCxxQkFBYSxzQkFBc0I7SUFHckIsT0FBTyxDQUFDLE9BQU87SUFGM0IsT0FBTyxDQUFDLE1BQU0sQ0FBd0M7SUFFdEQsWUFBb0IsT0FBTyxFQUFFLE9BQU8sRUFBSTtJQUUzQixXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsYUFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FPN0U7Q0FDRjtBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQWdCLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxvQkFBb0IsR0FBRyx5QkFBeUIsQ0FXOUYifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"goodbye.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/protocols/goodbye.ts"],"names":[],"mappings":";;AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAsB,KAAK,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C;;GAEG;AACH,oBAAY,aAAa;IACvB,0FAA0F;IAC1F,QAAQ,IAAM;IACd,sIAAsI;IACtI,SAAS,IAAM;IACf,gFAAgF;IAChF,SAAS,IAAM;IACf,2EAA2E;IAC3E,MAAM,IAAM;IACZ,2BAA2B;IAC3B,aAAa,IAAM;IACnB,qBAAqB;IACrB,OAAO,IAAM;CACd;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAEjE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CASjE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAgBjE;AAED;;GAEG;AACH,qBAAa,sBAAsB;IAGrB,OAAO,CAAC,OAAO;IAF3B,OAAO,CAAC,MAAM,CAAwC;gBAElC,OAAO,EAAE,OAAO;IAEvB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAQ/E;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,WAAW,GAAG,yBAAyB,CASrF"}
1
+ {"version":3,"file":"goodbye.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/protocols/goodbye.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAsB,KAAK,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C;;GAEG;AACH,oBAAY,aAAa;IACvB,0FAA0F;IAC1F,QAAQ,IAAM;IACd,sIAAsI;IACtI,SAAS,IAAM;IACf,gFAAgF;IAChF,SAAS,IAAM;IACf,2EAA2E;IAC3E,MAAM,IAAM;IACZ,2BAA2B;IAC3B,aAAa,IAAM;IACnB,qBAAqB;IACrB,OAAO,IAAM;CACd;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAEjE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CASjE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAgBjE;AAED;;GAEG;AACH,qBAAa,sBAAsB;IAGrB,OAAO,CAAC,OAAO;IAF3B,OAAO,CAAC,MAAM,CAAwC;IAEtD,YAAoB,OAAO,EAAE,OAAO,EAAI;IAE3B,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAO7E;CACF;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,oBAAoB,GAAG,yBAAyB,CAW9F"}
@@ -22,7 +22,7 @@ export function decodeGoodbyeReason(buffer) {
22
22
  throw new Error('Invalid goodbye reason buffer length');
23
23
  }
24
24
  return buffer[0];
25
- } catch (error) {
25
+ } catch {
26
26
  return 6;
27
27
  }
28
28
  }
@@ -76,12 +76,12 @@ export function decodeGoodbyeReason(buffer) {
76
76
  * @param peerManager - The peer manager.
77
77
  * @returns A resolved promise with the goodbye response.
78
78
  */ export function reqGoodbyeHandler(peerManager) {
79
- return (peerId, _msg)=>{
80
- const reason = decodeGoodbyeReason(_msg);
79
+ return (peerId, msg)=>{
80
+ const reason = decodeGoodbyeReason(msg);
81
81
  peerManager.goodbyeReceived(peerId, reason);
82
- // Return a buffer of length 1 as an acknowledgement: this is allowed to fail
83
- return Promise.resolve(Buffer.from([
84
- 0x0
85
- ]));
82
+ // NOTE: In the current implementation this won't be sent to peer,
83
+ // as the connection to peer has been already closed by peerManager.goodbyeReceived
84
+ // We have this just to satisfy interface
85
+ return Promise.resolve(Buffer.alloc(0));
86
86
  };
87
87
  }
@@ -6,4 +6,6 @@ export * from './status.js';
6
6
  export * from './tx.js';
7
7
  export * from './goodbye.js';
8
8
  export * from './block.js';
9
- //# sourceMappingURL=index.d.ts.map
9
+ export * from './auth.js';
10
+ export * from './block_txs/index.js';
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL3Byb3RvY29scy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsc0JBQXNCLENBQUMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/protocols/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/protocols/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC"}
@@ -5,3 +5,5 @@ export * from './status.js';
5
5
  export * from './tx.js';
6
6
  export * from './goodbye.js';
7
7
  export * from './block.js';
8
+ export * from './auth.js';
9
+ export * from './block_txs/index.js';
@@ -1,9 +1,7 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- /// <reference types="node" resolution-mode="require"/>
3
1
  /**
4
2
  * Handles the ping request.
5
3
  * @param _msg - The ping request message.
6
4
  * @returns A resolved promise with the pong response.
7
5
  */
8
6
  export declare function pingHandler(_msg: any): Promise<Buffer>;
9
- //# sourceMappingURL=ping.d.ts.map
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluZy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3JlcXJlc3AvcHJvdG9jb2xzL3BpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILHdCQUFnQixXQUFXLENBQUMsSUFBSSxFQUFFLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBRXREIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"ping.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/protocols/ping.ts"],"names":[],"mappings":";;AAAA;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAEtD"}
1
+ {"version":3,"file":"ping.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/protocols/ping.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAEtD"}
@@ -1,9 +1,42 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- /// <reference types="node" resolution-mode="require"/>
1
+ import { BlockNumber } from '@aztec/foundation/branded-types';
2
+ import type { Logger } from '@aztec/foundation/log';
3
+ import { BufferReader } from '@aztec/foundation/serialize';
4
+ import type { WorldStateSyncStatus, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
5
+ import type { PeerId } from '@libp2p/interface';
6
+ export declare class StatusMessage {
7
+ readonly compressedComponentsVersion: string;
8
+ readonly latestBlockNumber: BlockNumber;
9
+ readonly latestBlockHash: string;
10
+ readonly finalizedBlockNumber: BlockNumber;
11
+ constructor(compressedComponentsVersion: string, latestBlockNumber: BlockNumber, latestBlockHash: string, finalizedBlockNumber: BlockNumber);
12
+ /**
13
+ * Deserializes the StatusMessage object from a Buffer.
14
+ * @param buffer - Buffer or BufferReader object to deserialize.
15
+ * @returns An instance of StatusMessage.
16
+ */
17
+ static fromBuffer(buffer: Buffer | BufferReader): StatusMessage;
18
+ /**
19
+ * Serializes the StatusMessage object into a Buffer.
20
+ * @returns Buffer representation of the StatusMessage object.
21
+ */
22
+ toBuffer(): Buffer<ArrayBufferLike>;
23
+ /**
24
+ * Builds Status message
25
+ * @param version - Compressed Components Version
26
+ * @param worldStateSyncStatus - Info about the current sync status
27
+ * @returns StatusMessage instance
28
+ */
29
+ static fromWorldStateSyncStatus(version: string, syncStatus: WorldStateSyncStatus): StatusMessage;
30
+ static random(): StatusMessage;
31
+ validate(peerStatus: StatusMessage): boolean;
32
+ equals(other: StatusMessage): boolean;
33
+ }
3
34
  /**
4
- * Handles the status request.
5
- * @param _msg - The status request message.
6
- * @returns A resolved promise with the ok response.
35
+ * Handles the status request. By immediately responding with the current node status.
36
+ * @param compressedComponentsVersion - Compressed Components Version
37
+ * @param worldStateSynchronizer - World State Synchronizer to fetch the sync status from.
38
+ * Note the WorldStateSynchronizer must be injected to fetch the fresh sync status, we cannot pass in pre-built StatusMessage.
39
+ * @returns Status message handler
7
40
  */
8
- export declare function statusHandler(_msg: any): Promise<Buffer>;
9
- //# sourceMappingURL=status.d.ts.map
41
+ export declare function reqRespStatusHandler(compressedComponentsVersion: string, worldStateSynchronizer: WorldStateSynchronizer, logger?: Logger): (peerId: PeerId, _msg: Buffer<ArrayBufferLike>) => Promise<Buffer<ArrayBufferLike>>;
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvcmVxcmVzcC9wcm90b2NvbHMvc3RhdHVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFxQixNQUFNLDZCQUE2QixDQUFDO0FBRTlFLE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFcEcsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFVaEQscUJBQWEsYUFBYTtJQUV0QixRQUFRLENBQUMsMkJBQTJCLEVBQUUsTUFBTTtJQUM1QyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsV0FBVztJQUN2QyxRQUFRLENBQUMsZUFBZSxFQUFFLE1BQU07SUFDaEMsUUFBUSxDQUFDLG9CQUFvQixFQUFFLFdBQVc7SUFKNUMsWUFDVywyQkFBMkIsRUFBRSxNQUFNLEVBQ25DLGlCQUFpQixFQUFFLFdBQVcsRUFDOUIsZUFBZSxFQUFFLE1BQU0sRUFDdkIsb0JBQW9CLEVBQUUsV0FBVyxFQUkzQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsWUFBWSxHQUFHLGFBQWEsQ0FVOUQ7SUFFRDs7O09BR0c7SUFDSCxRQUFRLDRCQVNQO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsd0JBQXdCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEdBQUcsYUFBYSxDQVFoRztJQUVELE1BQU0sQ0FBQyxNQUFNLElBQUksYUFBYSxDQVE3QjtJQUVELFFBQVEsQ0FBQyxVQUFVLEVBQUUsYUFBYSxHQUFHLE9BQU8sQ0FHM0M7SUFFRCxNQUFNLENBQUMsS0FBSyxFQUFFLGFBQWEsR0FBRyxPQUFPLENBT3BDO0NBQ0Y7QUFFRDs7Ozs7O0dBTUc7QUFDSCx3QkFBZ0Isb0JBQW9CLENBQ2xDLDJCQUEyQixFQUFFLE1BQU0sRUFDbkMsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQzlDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sdUZBWWhCIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/protocols/status.ts"],"names":[],"mappings":";;AAAA;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAExD"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/protocols/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAE9E,OAAO,KAAK,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAEpG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAUhD,qBAAa,aAAa;IAEtB,QAAQ,CAAC,2BAA2B,EAAE,MAAM;IAC5C,QAAQ,CAAC,iBAAiB,EAAE,WAAW;IACvC,QAAQ,CAAC,eAAe,EAAE,MAAM;IAChC,QAAQ,CAAC,oBAAoB,EAAE,WAAW;IAJ5C,YACW,2BAA2B,EAAE,MAAM,EACnC,iBAAiB,EAAE,WAAW,EAC9B,eAAe,EAAE,MAAM,EACvB,oBAAoB,EAAE,WAAW,EAI3C;IAED;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,aAAa,CAU9D;IAED;;;OAGG;IACH,QAAQ,4BASP;IAED;;;;;OAKG;IACH,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,oBAAoB,GAAG,aAAa,CAQhG;IAED,MAAM,CAAC,MAAM,IAAI,aAAa,CAQ7B;IAED,QAAQ,CAAC,UAAU,EAAE,aAAa,GAAG,OAAO,CAG3C;IAED,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAOpC;CACF;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,2BAA2B,EAAE,MAAM,EACnC,sBAAsB,EAAE,sBAAsB,EAC9C,MAAM,CAAC,EAAE,MAAM,uFAYhB"}
@@ -1,7 +1,78 @@
1
+ import { BlockNumber } from '@aztec/foundation/branded-types';
2
+ import { Buffer32 } from '@aztec/foundation/buffer';
3
+ import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
4
+ import { bufferToHex } from '@aztec/foundation/string';
5
+ import { MAX_BLOCK_HASH_STRING_LENGTH, MAX_VERSION_STRING_LENGTH } from '../constants.js';
6
+ /*
7
+ * P2P Status Message
8
+ * It is used to establish Status handshake between to peers
9
+ * By validating Status handshake we ensure peers are on the same Blockchain fork
10
+ * And get peer sync status
11
+ */ export class StatusMessage {
12
+ compressedComponentsVersion;
13
+ latestBlockNumber;
14
+ latestBlockHash;
15
+ finalizedBlockNumber;
16
+ constructor(compressedComponentsVersion, latestBlockNumber, latestBlockHash, finalizedBlockNumber){
17
+ this.compressedComponentsVersion = compressedComponentsVersion;
18
+ this.latestBlockNumber = latestBlockNumber;
19
+ this.latestBlockHash = latestBlockHash;
20
+ this.finalizedBlockNumber = finalizedBlockNumber;
21
+ //TODO: add finalizedBlockHash
22
+ //readonly finalizedBlockHash: string,
23
+ }
24
+ /**
25
+ * Deserializes the StatusMessage object from a Buffer.
26
+ * @param buffer - Buffer or BufferReader object to deserialize.
27
+ * @returns An instance of StatusMessage.
28
+ */ static fromBuffer(buffer) {
29
+ const reader = BufferReader.asReader(buffer);
30
+ return new StatusMessage(reader.readString(MAX_VERSION_STRING_LENGTH), BlockNumber(reader.readNumber()), reader.readString(MAX_BLOCK_HASH_STRING_LENGTH), BlockNumber(reader.readNumber()));
31
+ }
32
+ /**
33
+ * Serializes the StatusMessage object into a Buffer.
34
+ * @returns Buffer representation of the StatusMessage object.
35
+ */ toBuffer() {
36
+ return serializeToBuffer([
37
+ this.compressedComponentsVersion,
38
+ this.latestBlockNumber,
39
+ this.latestBlockHash,
40
+ this.finalizedBlockNumber
41
+ ]);
42
+ }
43
+ /**
44
+ * Builds Status message
45
+ * @param version - Compressed Components Version
46
+ * @param worldStateSyncStatus - Info about the current sync status
47
+ * @returns StatusMessage instance
48
+ */ static fromWorldStateSyncStatus(version, syncStatus) {
49
+ return new StatusMessage(version, BlockNumber(syncStatus.latestBlockNumber), syncStatus.latestBlockHash, BlockNumber(syncStatus.finalizedBlockNumber));
50
+ }
51
+ static random() {
52
+ return new StatusMessage('1.0.0', BlockNumber(Math.floor(Math.random() * 100)), Buffer32.random().toString(), BlockNumber(Math.floor(Math.random() * 100)));
53
+ }
54
+ validate(peerStatus) {
55
+ // TODO: Validate other fields as well
56
+ return this.compressedComponentsVersion === peerStatus.compressedComponentsVersion;
57
+ }
58
+ equals(other) {
59
+ return this.compressedComponentsVersion === other.compressedComponentsVersion && this.latestBlockNumber === other.latestBlockNumber && this.latestBlockHash === other.latestBlockHash && this.finalizedBlockNumber === other.finalizedBlockNumber;
60
+ }
61
+ }
1
62
  /**
2
- * Handles the status request.
3
- * @param _msg - The status request message.
4
- * @returns A resolved promise with the ok response.
5
- */ export function statusHandler(_msg) {
6
- return Promise.resolve(Buffer.from('ok'));
63
+ * Handles the status request. By immediately responding with the current node status.
64
+ * @param compressedComponentsVersion - Compressed Components Version
65
+ * @param worldStateSynchronizer - World State Synchronizer to fetch the sync status from.
66
+ * Note the WorldStateSynchronizer must be injected to fetch the fresh sync status, we cannot pass in pre-built StatusMessage.
67
+ * @returns Status message handler
68
+ */ export function reqRespStatusHandler(compressedComponentsVersion, worldStateSynchronizer, logger) {
69
+ return async (peerId, _msg)=>{
70
+ logger?.trace(`Received status handshake request from ${peerId}`);
71
+ const status = StatusMessage.fromWorldStateSyncStatus(compressedComponentsVersion, (await worldStateSynchronizer.status()).syncSummary);
72
+ const response = status.toBuffer();
73
+ logger?.trace(`Responding status handshake from ${peerId}`, {
74
+ data: bufferToHex(response)
75
+ });
76
+ return response;
77
+ };
7
78
  }
@@ -1,4 +1,4 @@
1
- import type { P2PClientType } from '@aztec/stdlib/p2p';
1
+ import { TxHash, TxHashArray } from '@aztec/stdlib/tx';
2
2
  import type { MemPools } from '../../../mem_pools/interface.js';
3
3
  import type { ReqRespSubProtocolHandler } from '../interface.js';
4
4
  /**
@@ -7,7 +7,17 @@ import type { ReqRespSubProtocolHandler } from '../interface.js';
7
7
  *
8
8
  * Handler for tx requests
9
9
  * @param mempools - the mempools
10
- * @returns the tx response message
10
+ * @returns the Tx request handler
11
11
  */
12
- export declare function reqRespTxHandler<T extends P2PClientType>(mempools: MemPools<T>): ReqRespSubProtocolHandler;
13
- //# sourceMappingURL=tx.d.ts.map
12
+ export declare function reqRespTxHandler(mempools: MemPools): ReqRespSubProtocolHandler;
13
+ /**
14
+ * Helper function to chunk an array of transaction hashes into chunks of a specified size.
15
+ * This is mainly used in ReqResp in order not to request too many transactions at once from the single peer.
16
+ *
17
+ * @param hashes - The array of transaction hashes to chunk.
18
+ * @param chunkSize - The size of each chunk. Default is 8. Reasoning:
19
+ * Per: https://github.com/AztecProtocol/aztec-packages/issues/15149#issuecomment-2999054485
20
+ * we define Q as max number of transactions per batch, the comment explains why we use 8.
21
+ */
22
+ export declare function chunkTxHashesRequest(hashes: TxHash[], chunkSize?: number): Array<TxHashArray>;
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL3Byb3RvY29scy90eC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQVcsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSWhFLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHakU7Ozs7Ozs7R0FPRztBQUNILHdCQUFnQixnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxHQUFHLHlCQUF5QixDQXdCOUU7QUFFRDs7Ozs7Ozs7R0FRRztBQUdILHdCQUFnQixvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsU0FBUyxTQUFJLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUV4RiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"tx.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/protocols/tx.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAEjE;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,yBAAyB,CAY1G"}
1
+ {"version":3,"file":"tx.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/protocols/tx.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAGjE;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,yBAAyB,CAwB9E;AAED;;;;;;;;GAQG;AAGH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,SAAI,GAAG,KAAK,CAAC,WAAW,CAAC,CAExF"}
@@ -1,20 +1,48 @@
1
- import { TxHash } from '@aztec/stdlib/tx';
1
+ import { chunk } from '@aztec/foundation/collection';
2
+ import { TxArray, TxHashArray } from '@aztec/stdlib/tx';
3
+ import { ReqRespStatus, ReqRespStatusError } from '../status.js';
2
4
  /**
3
5
  * We want to keep the logic of the req resp handler in this file, but we do not have a reference to the mempools here
4
6
  * so we need to pass it in as a parameter.
5
7
  *
6
8
  * Handler for tx requests
7
9
  * @param mempools - the mempools
8
- * @returns the tx response message
10
+ * @returns the Tx request handler
9
11
  */ export function reqRespTxHandler(mempools) {
10
12
  /**
11
13
  * Handler for tx requests
12
14
  * @param msg - the tx request message
13
15
  * @returns the tx response message
16
+ * @throws if msg is not a valid tx hash
14
17
  */ return async (_peerId, msg)=>{
15
- const txHash = TxHash.fromBuffer(msg);
16
- const foundTx = await mempools.txPool.getTxByHash(txHash);
17
- const buf = foundTx ? foundTx.toBuffer() : Buffer.alloc(0);
18
- return buf;
18
+ let txHashes;
19
+ try {
20
+ txHashes = TxHashArray.fromBuffer(msg);
21
+ } catch (err) {
22
+ throw new ReqRespStatusError(ReqRespStatus.BADLY_FORMED_REQUEST, {
23
+ cause: err
24
+ });
25
+ }
26
+ try {
27
+ const txs = new TxArray(...(await Promise.all(txHashes.map((txHash)=>mempools.txPool.getTxByHash(txHash)))).filter((t)=>!!t));
28
+ return txs.toBuffer();
29
+ } catch (err) {
30
+ throw new ReqRespStatusError(ReqRespStatus.INTERNAL_ERROR, {
31
+ cause: err
32
+ });
33
+ }
19
34
  };
20
35
  }
36
+ /**
37
+ * Helper function to chunk an array of transaction hashes into chunks of a specified size.
38
+ * This is mainly used in ReqResp in order not to request too many transactions at once from the single peer.
39
+ *
40
+ * @param hashes - The array of transaction hashes to chunk.
41
+ * @param chunkSize - The size of each chunk. Default is 8. Reasoning:
42
+ * Per: https://github.com/AztecProtocol/aztec-packages/issues/15149#issuecomment-2999054485
43
+ * we define Q as max number of transactions per batch, the comment explains why we use 8.
44
+ */ //TODO: (mralj) chunk size should by default be 8, this is just temporary until the protocol is implemented correctly
45
+ //more info: https://github.com/AztecProtocol/aztec-packages/pull/15516#pullrequestreview-2995474321
46
+ export function chunkTxHashesRequest(hashes, chunkSize = 1) {
47
+ return chunk(hashes, chunkSize).map((chunk)=>new TxHashArray(...chunk));
48
+ }
@@ -1,2 +1,2 @@
1
1
  export { RequestResponseRateLimiter } from './rate_limiter.js';
2
- //# sourceMappingURL=index.d.ts.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL3JhdGUtbGltaXRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQyJ9
@@ -1,6 +1,6 @@
1
1
  import type { PeerId } from '@libp2p/interface';
2
2
  import type { PeerScoring } from '../../peer-manager/peer_scoring.js';
3
- import type { ReqRespSubProtocol, ReqRespSubProtocolRateLimits } from '../interface.js';
3
+ import type { ProtocolRateLimitQuota, ReqRespSubProtocol, ReqRespSubProtocolRateLimits } from '../interface.js';
4
4
  /**
5
5
  * GCRARateLimiter: A Generic Cell Rate Algorithm (GCRA) based rate limiter.
6
6
  *
@@ -37,7 +37,7 @@ export declare enum RateLimitStatus {
37
37
  DeniedPeer = 1,
38
38
  Allowed = 2
39
39
  }
40
- export declare function prettyPrintRateLimitStatus(status: RateLimitStatus): "DeniedGlobal" | "DeniedPeer" | "Allowed";
40
+ export declare function prettyPrintRateLimitStatus(status: RateLimitStatus): "Allowed" | "DeniedGlobal" | "DeniedPeer";
41
41
  /**
42
42
  * SubProtocolRateLimiter: A rate limiter for managing request rates on a per-peer and global basis for a specific subprotocol.
43
43
  *
@@ -89,8 +89,9 @@ export declare class SubProtocolRateLimiter {
89
89
  export declare class RequestResponseRateLimiter {
90
90
  private peerScoring;
91
91
  private subProtocolRateLimiters;
92
+ private rateLimits;
92
93
  private cleanupInterval;
93
- constructor(peerScoring: PeerScoring, rateLimits?: ReqRespSubProtocolRateLimits);
94
+ constructor(peerScoring: PeerScoring, rateLimits?: Partial<ReqRespSubProtocolRateLimits>);
94
95
  start(): void;
95
96
  allow(subProtocol: ReqRespSubProtocol, peerId: PeerId): RateLimitStatus;
96
97
  cleanupInactivePeers(): void;
@@ -98,5 +99,6 @@ export declare class RequestResponseRateLimiter {
98
99
  * Make sure to call destroy on each of the sub protocol rate limiters when cleaning up
99
100
  */
100
101
  stop(): void;
102
+ getRateLimits(protocol: ReqRespSubProtocol): ProtocolRateLimitQuota;
101
103
  }
102
- //# sourceMappingURL=rate_limiter.d.ts.map
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZV9saW1pdGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvcmVxcmVzcC9yYXRlLWxpbWl0ZXIvcmF0ZV9saW1pdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWhELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RFLE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLGtCQUFrQixFQUFFLDRCQUE0QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFNaEg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxxQkFBYSxlQUFlO0lBRTFCLE9BQU8sQ0FBQyxHQUFHLENBQVM7SUFFcEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBUztJQUUxQyxPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBUztJQUV2Qzs7O09BR0c7SUFDSCxZQUFZLFVBQVUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFJbEQ7SUFFRCxLQUFLLElBQUksT0FBTyxDQVVmO0NBQ0Y7QUFTRCxvQkFBWSxlQUFlO0lBQ3pCLFlBQVksSUFBQTtJQUNaLFVBQVUsSUFBQTtJQUNWLE9BQU8sSUFBQTtDQUNSO0FBRUQsd0JBQWdCLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxlQUFlLDZDQVNqRTtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILHFCQUFhLHNCQUFzQjtJQUNqQyxPQUFPLENBQUMsWUFBWSxDQUEyQztJQUMvRCxPQUFPLENBQUMsYUFBYSxDQUFrQjtJQUN2QyxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBUztJQUN4QyxPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBUztJQUV6QyxZQUFZLGNBQWMsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUsvRztJQUVELEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLGVBQWUsQ0FzQnJDO0lBRUQsb0JBQW9CLFNBT25CO0NBQ0Y7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNILHFCQUFhLDBCQUEwQjtJQU9uQyxPQUFPLENBQUMsV0FBVztJQU5yQixPQUFPLENBQUMsdUJBQXVCLENBQWtEO0lBQ2pGLE9BQU8sQ0FBQyxVQUFVLENBQStCO0lBRWpELE9BQU8sQ0FBQyxlQUFlLENBQXlDO0lBRWhFLFlBQ1UsV0FBVyxFQUFFLFdBQVcsRUFDaEMsVUFBVSxHQUFFLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBTSxFQWdCdkQ7SUFFRCxLQUFLLFNBSUo7SUFFRCxLQUFLLENBQUMsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsZUFBZSxDQVd0RTtJQUVELG9CQUFvQixTQUVuQjtJQUVEOztPQUVHO0lBQ0gsSUFBSSxTQUVIO0lBRUQsYUFBYSxDQUFDLFFBQVEsRUFBRSxrQkFBa0IsR0FBRyxzQkFBc0IsQ0FFbEU7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"rate_limiter.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/rate-limiter/rate_limiter.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAMxF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,eAAe;IAE1B,OAAO,CAAC,GAAG,CAAS;IAEpB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAE1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC;;;OAGG;gBACS,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAMnD,KAAK,IAAI,OAAO;CAWjB;AASD,oBAAY,eAAe;IACzB,YAAY,IAAA;IACZ,UAAU,IAAA;IACV,OAAO,IAAA;CACR;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,eAAe,6CASjE;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,YAAY,CAA2C;IAC/D,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;gBAE7B,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM;IAOhH,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;IAwBtC,oBAAoB;CAQrB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,0BAA0B;IAKzB,OAAO,CAAC,WAAW;IAJ/B,OAAO,CAAC,uBAAuB,CAAkD;IAEjF,OAAO,CAAC,eAAe,CAAyC;gBAE5C,WAAW,EAAE,WAAW,EAAE,UAAU,GAAE,4BAAkD;IAgB5G,KAAK;IAML,KAAK,CAAC,WAAW,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe;IAavE,oBAAoB;IAIpB;;OAEG;IACH,IAAI;CAGL"}
1
+ {"version":3,"file":"rate_limiter.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/rate-limiter/rate_limiter.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAMhH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,eAAe;IAE1B,OAAO,CAAC,GAAG,CAAS;IAEpB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAE1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC;;;OAGG;IACH,YAAY,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAIlD;IAED,KAAK,IAAI,OAAO,CAUf;CACF;AASD,oBAAY,eAAe;IACzB,YAAY,IAAA;IACZ,UAAU,IAAA;IACV,OAAO,IAAA;CACR;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,eAAe,6CASjE;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,YAAY,CAA2C;IAC/D,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IAEzC,YAAY,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAK/G;IAED,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAsBrC;IAED,oBAAoB,SAOnB;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,0BAA0B;IAOnC,OAAO,CAAC,WAAW;IANrB,OAAO,CAAC,uBAAuB,CAAkD;IACjF,OAAO,CAAC,UAAU,CAA+B;IAEjD,OAAO,CAAC,eAAe,CAAyC;IAEhE,YACU,WAAW,EAAE,WAAW,EAChC,UAAU,GAAE,OAAO,CAAC,4BAA4B,CAAM,EAgBvD;IAED,KAAK,SAIJ;IAED,KAAK,CAAC,WAAW,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAWtE;IAED,oBAAoB,SAEnB;IAED;;OAEG;IACH,IAAI,SAEH;IAED,aAAa,CAAC,QAAQ,EAAE,kBAAkB,GAAG,sBAAsB,CAElE;CACF"}
@@ -148,12 +148,17 @@ export function prettyPrintRateLimitStatus(status) {
148
148
  */ export class RequestResponseRateLimiter {
149
149
  peerScoring;
150
150
  subProtocolRateLimiters;
151
+ rateLimits;
151
152
  cleanupInterval;
152
- constructor(peerScoring, rateLimits = DEFAULT_RATE_LIMITS){
153
+ constructor(peerScoring, rateLimits = {}){
153
154
  this.peerScoring = peerScoring;
154
155
  this.cleanupInterval = undefined;
155
156
  this.subProtocolRateLimiters = new Map();
156
- for (const [subProtocol, protocolLimits] of Object.entries(rateLimits)){
157
+ this.rateLimits = {
158
+ ...DEFAULT_RATE_LIMITS,
159
+ ...rateLimits
160
+ };
161
+ for (const [subProtocol, protocolLimits] of Object.entries(this.rateLimits)){
157
162
  this.subProtocolRateLimiters.set(subProtocol, new SubProtocolRateLimiter(protocolLimits.peerLimit.quotaCount, protocolLimits.peerLimit.quotaTimeMs, protocolLimits.globalLimit.quotaCount, protocolLimits.globalLimit.quotaTimeMs));
158
163
  }
159
164
  }
@@ -181,4 +186,7 @@ export function prettyPrintRateLimitStatus(status) {
181
186
  */ stop() {
182
187
  clearInterval(this.cleanupInterval);
183
188
  }
189
+ getRateLimits(protocol) {
190
+ return this.rateLimits[protocol];
191
+ }
184
192
  }
@@ -1,3 +1,3 @@
1
1
  import { type ReqRespSubProtocolRateLimits } from '../interface.js';
2
2
  export declare const DEFAULT_RATE_LIMITS: ReqRespSubProtocolRateLimits;
3
- //# sourceMappingURL=rate_limits.d.ts.map
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZV9saW1pdHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL3JhdGUtbGltaXRlci9yYXRlX2xpbWl0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXNCLEtBQUssNEJBQTRCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUd4RixlQUFPLE1BQU0sbUJBQW1CLEVBQUUsNEJBdUVqQyxDQUFDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"rate_limits.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/rate-limiter/rate_limits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAGxF,eAAO,MAAM,mBAAmB,EAAE,4BAmDjC,CAAC"}
1
+ {"version":3,"file":"rate_limits.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/rate-limiter/rate_limits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAGxF,eAAO,MAAM,mBAAmB,EAAE,4BAuEjC,CAAC"}
@@ -21,6 +21,16 @@ export const DEFAULT_RATE_LIMITS = {
21
21
  quotaCount: 10
22
22
  }
23
23
  },
24
+ [ReqRespSubProtocol.AUTH]: {
25
+ peerLimit: {
26
+ quotaTimeMs: 1000,
27
+ quotaCount: 5
28
+ },
29
+ globalLimit: {
30
+ quotaTimeMs: 1000,
31
+ quotaCount: 10
32
+ }
33
+ },
24
34
  [ReqRespSubProtocol.TX]: {
25
35
  peerLimit: {
26
36
  quotaTimeMs: 1000,
@@ -28,7 +38,7 @@ export const DEFAULT_RATE_LIMITS = {
28
38
  },
29
39
  globalLimit: {
30
40
  quotaTimeMs: 1000,
31
- quotaCount: 20
41
+ quotaCount: 200
32
42
  }
33
43
  },
34
44
  [ReqRespSubProtocol.BLOCK]: {
@@ -50,5 +60,15 @@ export const DEFAULT_RATE_LIMITS = {
50
60
  quotaTimeMs: 1000,
51
61
  quotaCount: 10
52
62
  }
63
+ },
64
+ [ReqRespSubProtocol.BLOCK_TXS]: {
65
+ peerLimit: {
66
+ quotaTimeMs: 1000,
67
+ quotaCount: 10
68
+ },
69
+ globalLimit: {
70
+ quotaTimeMs: 1000,
71
+ quotaCount: 200
72
+ }
53
73
  }
54
74
  };