@aztec/p2p 0.0.1-commit.8c0b8ff → 0.0.1-commit.8cb2d04d8

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 (270) hide show
  1. package/dest/client/factory.d.ts +2 -2
  2. package/dest/client/factory.d.ts.map +1 -1
  3. package/dest/client/factory.js +1 -0
  4. package/dest/client/interface.d.ts +9 -2
  5. package/dest/client/interface.d.ts.map +1 -1
  6. package/dest/client/p2p_client.d.ts +3 -2
  7. package/dest/client/p2p_client.d.ts.map +1 -1
  8. package/dest/client/p2p_client.js +30 -8
  9. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +17 -6
  10. package/dest/config.d.ts +107 -103
  11. package/dest/config.d.ts.map +1 -1
  12. package/dest/config.js +17 -12
  13. package/dest/errors/p2p-service.error.d.ts +9 -0
  14. package/dest/errors/p2p-service.error.d.ts.map +1 -0
  15. package/dest/errors/p2p-service.error.js +10 -0
  16. package/dest/index.d.ts +1 -2
  17. package/dest/index.d.ts.map +1 -1
  18. package/dest/index.js +0 -1
  19. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +7 -5
  20. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  21. package/dest/mem_pools/attestation_pool/attestation_pool.js +16 -9
  22. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +6 -6
  23. package/dest/mem_pools/index.d.ts +1 -2
  24. package/dest/mem_pools/index.d.ts.map +1 -1
  25. package/dest/mem_pools/instrumentation.d.ts +4 -2
  26. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  27. package/dest/mem_pools/instrumentation.js +16 -14
  28. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +2 -2
  29. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +7 -5
  30. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
  31. package/dest/mem_pools/tx_pool_v2/interfaces.js +1 -0
  32. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +5 -6
  33. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
  34. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +6 -2
  35. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +1 -1
  36. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
  37. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +26 -43
  38. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +1 -1
  39. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
  40. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +3 -0
  41. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +2 -1
  42. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
  43. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +18 -1
  44. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +5 -2
  45. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  46. package/dest/msg_validators/attestation_validator/attestation_validator.js +20 -11
  47. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +4 -2
  48. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  49. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +2 -2
  50. package/dest/msg_validators/clock_tolerance.d.ts +12 -1
  51. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
  52. package/dest/msg_validators/clock_tolerance.js +54 -3
  53. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +2 -1
  54. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  55. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +2 -1
  56. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  57. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +3 -1
  58. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  59. package/dest/msg_validators/proposal_validator/proposal_validator.js +19 -11
  60. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  61. package/dest/msg_validators/tx_validator/gas_validator.d.ts +1 -1
  62. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  63. package/dest/msg_validators/tx_validator/gas_validator.js +11 -9
  64. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
  65. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  66. package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
  67. package/dest/services/data_store.d.ts +1 -1
  68. package/dest/services/data_store.d.ts.map +1 -1
  69. package/dest/services/data_store.js +5 -5
  70. package/dest/services/dummy_service.d.ts +6 -3
  71. package/dest/services/dummy_service.d.ts.map +1 -1
  72. package/dest/services/dummy_service.js +6 -1
  73. package/dest/services/gossipsub/topic_score_params.d.ts +13 -2
  74. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
  75. package/dest/services/gossipsub/topic_score_params.js +21 -4
  76. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  77. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  78. package/dest/services/libp2p/instrumentation.js +14 -0
  79. package/dest/services/libp2p/libp2p_service.d.ts +15 -25
  80. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  81. package/dest/services/libp2p/libp2p_service.js +150 -115
  82. package/dest/services/peer-manager/metrics.d.ts +3 -1
  83. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  84. package/dest/services/peer-manager/metrics.js +6 -0
  85. package/dest/services/peer-manager/peer_manager.d.ts +6 -2
  86. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  87. package/dest/services/peer-manager/peer_manager.js +39 -11
  88. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  89. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  90. package/dest/services/peer-manager/peer_scoring.js +32 -10
  91. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +11 -8
  92. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  93. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +82 -101
  94. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +3 -2
  95. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  96. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +5 -4
  97. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  98. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +13 -7
  99. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +19 -11
  100. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  101. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +52 -15
  102. package/dest/services/reqresp/config.d.ts +3 -3
  103. package/dest/services/reqresp/config.d.ts.map +1 -1
  104. package/dest/services/reqresp/interface.d.ts +14 -9
  105. package/dest/services/reqresp/interface.d.ts.map +1 -1
  106. package/dest/services/reqresp/interface.js +10 -11
  107. package/dest/services/reqresp/metrics.d.ts +1 -1
  108. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  109. package/dest/services/reqresp/metrics.js +0 -1
  110. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  111. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  112. package/dest/services/reqresp/protocols/index.js +0 -1
  113. package/dest/services/reqresp/protocols/tx.d.ts +1 -1
  114. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  115. package/dest/services/reqresp/protocols/tx.js +1 -3
  116. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  117. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  118. package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
  119. package/dest/services/reqresp/reqresp.d.ts +4 -2
  120. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  121. package/dest/services/reqresp/reqresp.js +13 -3
  122. package/dest/services/service.d.ts +5 -2
  123. package/dest/services/service.d.ts.map +1 -1
  124. package/dest/services/tx_collection/fast_tx_collection.d.ts +1 -4
  125. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  126. package/dest/services/tx_collection/fast_tx_collection.js +57 -73
  127. package/dest/services/tx_collection/proposal_tx_collector.d.ts +6 -7
  128. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  129. package/dest/services/tx_collection/proposal_tx_collector.js +4 -4
  130. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  131. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  132. package/dest/services/tx_collection/request_tracker.js +84 -0
  133. package/dest/services/tx_collection/slow_tx_collection.js +1 -1
  134. package/dest/services/tx_collection/tx_collection.d.ts +3 -6
  135. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  136. package/dest/test-helpers/make-test-p2p-clients.d.ts +1 -1
  137. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  138. package/dest/test-helpers/mock-pubsub.d.ts +11 -3
  139. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  140. package/dest/test-helpers/mock-pubsub.js +35 -10
  141. package/dest/test-helpers/reqresp-nodes.d.ts +1 -1
  142. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  143. package/dest/test-helpers/reqresp-nodes.js +1 -2
  144. package/dest/test-helpers/testbench-utils.d.ts +1 -1
  145. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  146. package/dest/test-helpers/testbench-utils.js +21 -2
  147. package/dest/testbench/p2p_client_testbench_worker.js +66 -15
  148. package/dest/testbench/worker_client_manager.d.ts +8 -1
  149. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  150. package/dest/testbench/worker_client_manager.js +51 -2
  151. package/dest/util.d.ts +1 -1
  152. package/package.json +14 -14
  153. package/src/client/factory.ts +2 -1
  154. package/src/client/interface.ts +9 -1
  155. package/src/client/p2p_client.ts +34 -9
  156. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +19 -9
  157. package/src/config.ts +29 -17
  158. package/src/errors/p2p-service.error.ts +11 -0
  159. package/src/index.ts +0 -1
  160. package/src/mem_pools/attestation_pool/attestation_pool.ts +17 -12
  161. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +6 -6
  162. package/src/mem_pools/index.ts +0 -3
  163. package/src/mem_pools/instrumentation.ts +17 -13
  164. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +3 -3
  165. package/src/mem_pools/tx_pool_v2/interfaces.ts +7 -4
  166. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +12 -6
  167. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +29 -43
  168. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +3 -0
  169. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +19 -1
  170. package/src/msg_validators/attestation_validator/README.md +1 -1
  171. package/src/msg_validators/attestation_validator/attestation_validator.ts +21 -9
  172. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +4 -1
  173. package/src/msg_validators/clock_tolerance.ts +72 -3
  174. package/src/msg_validators/proposal_validator/README.md +4 -4
  175. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +4 -1
  176. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +4 -1
  177. package/src/msg_validators/proposal_validator/proposal_validator.ts +17 -10
  178. package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
  179. package/src/msg_validators/tx_validator/gas_validator.ts +25 -9
  180. package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
  181. package/src/services/data_store.ts +5 -13
  182. package/src/services/dummy_service.ts +8 -2
  183. package/src/services/gossipsub/topic_score_params.ts +36 -4
  184. package/src/services/libp2p/instrumentation.ts +14 -0
  185. package/src/services/libp2p/libp2p_service.ts +146 -130
  186. package/src/services/peer-manager/metrics.ts +7 -0
  187. package/src/services/peer-manager/peer_manager.ts +45 -11
  188. package/src/services/peer-manager/peer_scoring.ts +27 -5
  189. package/src/services/reqresp/batch-tx-requester/README.md +46 -7
  190. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +78 -111
  191. package/src/services/reqresp/batch-tx-requester/interface.ts +2 -1
  192. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +13 -6
  193. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +68 -24
  194. package/src/services/reqresp/config.ts +2 -2
  195. package/src/services/reqresp/interface.ts +21 -11
  196. package/src/services/reqresp/metrics.ts +0 -1
  197. package/src/services/reqresp/protocols/index.ts +0 -1
  198. package/src/services/reqresp/protocols/tx.ts +1 -3
  199. package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
  200. package/src/services/reqresp/reqresp.ts +21 -2
  201. package/src/services/service.ts +6 -1
  202. package/src/services/tx_collection/fast_tx_collection.ts +57 -83
  203. package/src/services/tx_collection/proposal_tx_collector.ts +8 -13
  204. package/src/services/tx_collection/request_tracker.ts +127 -0
  205. package/src/services/tx_collection/slow_tx_collection.ts +1 -1
  206. package/src/services/tx_collection/tx_collection.ts +3 -5
  207. package/src/test-helpers/make-test-p2p-clients.ts +1 -1
  208. package/src/test-helpers/mock-pubsub.ts +31 -5
  209. package/src/test-helpers/reqresp-nodes.ts +3 -3
  210. package/src/test-helpers/testbench-utils.ts +29 -3
  211. package/src/testbench/p2p_client_testbench_worker.ts +71 -15
  212. package/src/testbench/worker_client_manager.ts +57 -2
  213. package/src/util.ts +1 -1
  214. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  215. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  216. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  217. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  218. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  219. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  220. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  221. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  222. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  223. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  224. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  225. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -123
  226. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  227. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  228. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +0 -84
  229. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  230. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  231. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  232. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  233. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  234. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  235. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  236. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  237. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  238. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  239. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  240. package/dest/mem_pools/tx_pool/index.js +0 -2
  241. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  242. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  243. package/dest/mem_pools/tx_pool/priority.js +0 -15
  244. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  245. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  246. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  247. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  248. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  249. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -402
  250. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  251. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  252. package/dest/services/reqresp/protocols/block.js +0 -32
  253. package/dest/services/tx_collection/missing_txs_tracker.d.ts +0 -32
  254. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +0 -1
  255. package/dest/services/tx_collection/missing_txs_tracker.js +0 -27
  256. package/src/mem_pools/tx_pool/README.md +0 -270
  257. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  258. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  259. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  260. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -163
  261. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  262. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  263. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  264. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  265. package/src/mem_pools/tx_pool/index.ts +0 -2
  266. package/src/mem_pools/tx_pool/priority.ts +0 -20
  267. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  268. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -321
  269. package/src/services/reqresp/protocols/block.ts +0 -37
  270. package/src/services/tx_collection/missing_txs_tracker.ts +0 -52
@@ -1,37 +0,0 @@
1
- import { BlockNumber } from '@aztec/foundation/branded-types';
2
- import { Fr } from '@aztec/foundation/curves/bn254';
3
- import type { L2BlockSource } from '@aztec/stdlib/block';
4
-
5
- import type { PeerId } from '@libp2p/interface';
6
-
7
- import type { ReqRespSubProtocolHandler } from '../interface.js';
8
- import { ReqRespStatus, ReqRespStatusError } from '../status.js';
9
-
10
- /**
11
- * Handler for L2 Block requests
12
- * @param l2BlockSource - source for L2 blocks
13
- * @returns the Block request handler
14
- * */
15
- export function reqRespBlockHandler(l2BlockSource: L2BlockSource): ReqRespSubProtocolHandler {
16
- /**
17
- * @param peerId - the peer ID of the requester
18
- * @param msg - the block request message, which is expected to contain valid block number as a Buffer
19
- * @returns a Buffer containing the requested block data, or an empty Buffer if the block is not found
20
- * @throws ReqRespStatusError if the input msg is not a valid block number
21
- * */
22
- return async (_peerId: PeerId, msg: Buffer) => {
23
- let blockNumber: Fr;
24
- try {
25
- blockNumber = Fr.fromBuffer(msg);
26
- } catch (err: any) {
27
- throw new ReqRespStatusError(ReqRespStatus.BADLY_FORMED_REQUEST, { cause: err });
28
- }
29
-
30
- try {
31
- const foundBlock = await l2BlockSource.getBlock(BlockNumber(Number(blockNumber)));
32
- return foundBlock ? foundBlock.toBuffer() : Buffer.alloc(0);
33
- } catch (err: any) {
34
- throw new ReqRespStatusError(ReqRespStatus.INTERNAL_ERROR, { cause: err });
35
- }
36
- };
37
- }
@@ -1,52 +0,0 @@
1
- import { TxHash } from '@aztec/stdlib/tx';
2
- import type { Tx } from '@aztec/stdlib/tx';
3
-
4
- /**
5
- * Tracks which transactions are still missing and need to be fetched.
6
- * Allows external code to mark transactions as fetched, enabling coordination
7
- * between multiple fetching mechanisms (e.g., BatchTxRequester and Rpc Node requests).
8
- */
9
- export interface IMissingTxsTracker {
10
- /** Returns the set of transaction hashes that are still missing. */
11
- get missingTxHashes(): Set<string>;
12
- /** Size of this.missingTxHashes */
13
- get numberOfMissingTxs(): number;
14
- /** Are all requested txs are fetched */
15
- allFetched(): boolean;
16
- /** Checks that transaction is still missing */
17
- isMissing(txHash: string): boolean;
18
- /** Marks a transaction as fetched. Returns true if it was previously missing. */
19
- markFetched(tx: Tx): boolean;
20
- /** Get list of collected txs */
21
- get collectedTxs(): Tx[];
22
- }
23
-
24
- export class MissingTxsTracker implements IMissingTxsTracker {
25
- public readonly collectedTxs: Tx[] = [];
26
-
27
- private constructor(public readonly missingTxHashes: Set<string>) {}
28
-
29
- public static fromArray(hashes: TxHash[] | string[]) {
30
- return new MissingTxsTracker(new Set(hashes.map(hash => hash.toString())));
31
- }
32
-
33
- markFetched(tx: Tx): boolean {
34
- if (this.missingTxHashes.delete(tx.txHash.toString())) {
35
- this.collectedTxs.push(tx);
36
- return true;
37
- }
38
- return false;
39
- }
40
-
41
- get numberOfMissingTxs(): number {
42
- return this.missingTxHashes.size;
43
- }
44
-
45
- allFetched(): boolean {
46
- return this.numberOfMissingTxs === 0;
47
- }
48
-
49
- isMissing(txHash: string): boolean {
50
- return this.missingTxHashes.has(txHash.toString());
51
- }
52
- }