@aztec/p2p 3.0.0-canary.a9708bd → 3.0.0-devnet.2-patch.1

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 (294) 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 +14 -4
  4. package/dest/client/factory.d.ts +2 -1
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +8 -3
  7. package/dest/client/index.d.ts +1 -1
  8. package/dest/client/interface.d.ts +8 -6
  9. package/dest/client/interface.d.ts.map +1 -1
  10. package/dest/client/p2p_client.d.ts +11 -34
  11. package/dest/client/p2p_client.d.ts.map +1 -1
  12. package/dest/client/p2p_client.js +68 -46
  13. package/dest/config.d.ts +65 -56
  14. package/dest/config.d.ts.map +1 -1
  15. package/dest/config.js +21 -5
  16. package/dest/enr/generate-enr.d.ts +2 -2
  17. package/dest/enr/generate-enr.d.ts.map +1 -1
  18. package/dest/enr/generate-enr.js +1 -1
  19. package/dest/enr/index.d.ts +1 -1
  20. package/dest/errors/attestation-pool.error.d.ts +7 -0
  21. package/dest/errors/attestation-pool.error.d.ts.map +1 -0
  22. package/dest/errors/attestation-pool.error.js +12 -0
  23. package/dest/errors/reqresp.error.d.ts +1 -1
  24. package/dest/errors/reqresp.error.d.ts.map +1 -1
  25. package/dest/index.d.ts +1 -1
  26. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +43 -6
  27. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  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 +72 -46
  31. package/dest/mem_pools/attestation_pool/index.d.ts +1 -1
  32. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +15 -6
  33. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
  34. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +73 -18
  35. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +13 -6
  36. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
  37. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +69 -11
  38. package/dest/mem_pools/attestation_pool/mocks.d.ts +226 -5
  39. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  40. package/dest/mem_pools/attestation_pool/mocks.js +9 -7
  41. package/dest/mem_pools/index.d.ts +1 -1
  42. package/dest/mem_pools/instrumentation.d.ts +3 -1
  43. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  44. package/dest/mem_pools/instrumentation.js +11 -2
  45. package/dest/mem_pools/interface.d.ts +1 -1
  46. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +17 -40
  47. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  48. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +103 -44
  49. package/dest/mem_pools/tx_pool/index.d.ts +1 -1
  50. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +19 -6
  51. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +1 -1
  52. package/dest/mem_pools/tx_pool/memory_tx_pool.js +88 -9
  53. package/dest/mem_pools/tx_pool/priority.d.ts +1 -1
  54. package/dest/mem_pools/tx_pool/tx_pool.d.ts +21 -6
  55. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
  56. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
  57. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  58. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +132 -7
  59. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +4 -2
  60. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  61. package/dest/msg_validators/attestation_validator/attestation_validator.js +32 -5
  62. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +20 -0
  63. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -0
  64. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +67 -0
  65. package/dest/msg_validators/attestation_validator/index.d.ts +2 -1
  66. package/dest/msg_validators/attestation_validator/index.d.ts.map +1 -1
  67. package/dest/msg_validators/attestation_validator/index.js +1 -0
  68. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +5 -2
  69. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +1 -1
  70. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +56 -9
  71. package/dest/msg_validators/block_proposal_validator/index.d.ts +1 -1
  72. package/dest/msg_validators/index.d.ts +1 -1
  73. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts +1 -1
  74. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts.map +1 -1
  75. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +1 -1
  76. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  77. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +1 -1
  78. package/dest/msg_validators/tx_validator/archive_cache.d.ts +2 -2
  79. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  80. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +2 -2
  81. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  82. package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
  83. package/dest/msg_validators/tx_validator/data_validator.d.ts +1 -1
  84. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  85. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +1 -1
  86. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  87. package/dest/msg_validators/tx_validator/double_spend_validator.js +1 -1
  88. package/dest/msg_validators/tx_validator/factory.d.ts +4 -3
  89. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  90. package/dest/msg_validators/tx_validator/factory.js +11 -5
  91. package/dest/msg_validators/tx_validator/gas_validator.d.ts +1 -1
  92. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  93. package/dest/msg_validators/tx_validator/index.d.ts +2 -1
  94. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  95. package/dest/msg_validators/tx_validator/index.js +1 -0
  96. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -6
  97. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  98. package/dest/msg_validators/tx_validator/metadata_validator.js +6 -24
  99. package/dest/msg_validators/tx_validator/phases_validator.d.ts +1 -1
  100. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  101. package/dest/msg_validators/tx_validator/phases_validator.js +3 -1
  102. package/dest/msg_validators/tx_validator/test_utils.d.ts +2 -2
  103. package/dest/msg_validators/tx_validator/test_utils.d.ts.map +1 -1
  104. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +13 -0
  105. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -0
  106. package/dest/msg_validators/tx_validator/timestamp_validator.js +32 -0
  107. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +1 -1
  108. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  109. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +1 -1
  110. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  111. package/dest/services/data_store.d.ts +1 -1
  112. package/dest/services/data_store.d.ts.map +1 -1
  113. package/dest/services/discv5/discV5_service.d.ts +3 -3
  114. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  115. package/dest/services/discv5/discV5_service.js +2 -2
  116. package/dest/services/dummy_service.d.ts +2 -2
  117. package/dest/services/dummy_service.d.ts.map +1 -1
  118. package/dest/services/encoding.d.ts +25 -4
  119. package/dest/services/encoding.d.ts.map +1 -1
  120. package/dest/services/encoding.js +74 -6
  121. package/dest/services/gossipsub/scoring.d.ts +1 -1
  122. package/dest/services/index.d.ts +1 -1
  123. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  124. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  125. package/dest/services/libp2p/instrumentation.js +9 -2
  126. package/dest/services/libp2p/libp2p_service.d.ts +29 -69
  127. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  128. package/dest/services/libp2p/libp2p_service.js +375 -133
  129. package/dest/services/peer-manager/interface.d.ts +1 -1
  130. package/dest/services/peer-manager/metrics.d.ts +3 -1
  131. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  132. package/dest/services/peer-manager/metrics.js +11 -0
  133. package/dest/services/peer-manager/peer_manager.d.ts +1 -32
  134. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  135. package/dest/services/peer-manager/peer_manager.js +27 -12
  136. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  137. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  138. package/dest/services/peer-manager/peer_scoring.js +40 -2
  139. package/dest/services/reqresp/config.d.ts +1 -1
  140. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +1 -1
  141. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  142. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +1 -4
  143. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  144. package/dest/services/reqresp/index.d.ts +1 -1
  145. package/dest/services/reqresp/interface.d.ts +2 -11
  146. package/dest/services/reqresp/interface.d.ts.map +1 -1
  147. package/dest/services/reqresp/interface.js +1 -18
  148. package/dest/services/reqresp/metrics.d.ts +1 -1
  149. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  150. package/dest/services/reqresp/protocols/auth.d.ts +2 -2
  151. package/dest/services/reqresp/protocols/auth.d.ts.map +1 -1
  152. package/dest/services/reqresp/protocols/auth.js +2 -2
  153. package/dest/services/reqresp/protocols/block.d.ts +1 -1
  154. package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
  155. package/dest/services/reqresp/protocols/block.js +3 -2
  156. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +1 -1
  157. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  158. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +1 -1
  159. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +4 -6
  160. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  161. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +1 -1
  162. package/dest/services/reqresp/protocols/block_txs/index.d.ts +1 -1
  163. package/dest/services/reqresp/protocols/goodbye.d.ts +1 -1
  164. package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
  165. package/dest/services/reqresp/protocols/index.d.ts +1 -1
  166. package/dest/services/reqresp/protocols/ping.d.ts +1 -1
  167. package/dest/services/reqresp/protocols/status.d.ts +6 -5
  168. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  169. package/dest/services/reqresp/protocols/status.js +4 -3
  170. package/dest/services/reqresp/protocols/tx.d.ts +1 -1
  171. package/dest/services/reqresp/rate-limiter/index.d.ts +1 -1
  172. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +2 -2
  173. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  174. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  175. package/dest/services/reqresp/reqresp.d.ts +1 -41
  176. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  177. package/dest/services/reqresp/reqresp.js +14 -10
  178. package/dest/services/reqresp/status.d.ts +2 -2
  179. package/dest/services/reqresp/status.d.ts.map +1 -1
  180. package/dest/services/service.d.ts +2 -2
  181. package/dest/services/service.d.ts.map +1 -1
  182. package/dest/services/tx_collection/config.d.ts +1 -1
  183. package/dest/services/tx_collection/fast_tx_collection.d.ts +4 -9
  184. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  185. package/dest/services/tx_collection/fast_tx_collection.js +6 -1
  186. package/dest/services/tx_collection/index.d.ts +1 -1
  187. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  188. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  189. package/dest/services/tx_collection/slow_tx_collection.d.ts +6 -7
  190. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  191. package/dest/services/tx_collection/slow_tx_collection.js +2 -1
  192. package/dest/services/tx_collection/tx_collection.d.ts +12 -11
  193. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  194. package/dest/services/tx_collection/tx_collection.js +3 -2
  195. package/dest/services/tx_collection/tx_collection_sink.d.ts +3 -3
  196. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  197. package/dest/services/tx_collection/tx_collection_sink.js +34 -4
  198. package/dest/services/tx_collection/tx_source.d.ts +1 -1
  199. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  200. package/dest/services/tx_collection/tx_source.js +2 -2
  201. package/dest/services/tx_provider.d.ts +5 -4
  202. package/dest/services/tx_provider.d.ts.map +1 -1
  203. package/dest/services/tx_provider.js +8 -4
  204. package/dest/services/tx_provider_instrumentation.d.ts +1 -1
  205. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  206. package/dest/test-helpers/generate-peer-id-private-keys.d.ts +1 -1
  207. package/dest/test-helpers/get-ports.d.ts +1 -1
  208. package/dest/test-helpers/get-ports.d.ts.map +1 -1
  209. package/dest/test-helpers/index.d.ts +1 -1
  210. package/dest/test-helpers/make-enrs.d.ts +1 -1
  211. package/dest/test-helpers/make-enrs.js +1 -1
  212. package/dest/test-helpers/make-test-p2p-clients.d.ts +2 -2
  213. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  214. package/dest/test-helpers/mock-pubsub.d.ts +4 -4
  215. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  216. package/dest/test-helpers/mock-tx-helpers.d.ts +12 -0
  217. package/dest/test-helpers/mock-tx-helpers.d.ts.map +1 -0
  218. package/dest/test-helpers/mock-tx-helpers.js +19 -0
  219. package/dest/test-helpers/reqresp-nodes.d.ts +2 -2
  220. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  221. package/dest/test-helpers/reqresp-nodes.js +4 -3
  222. package/dest/testbench/p2p_client_testbench_worker.d.ts +1 -1
  223. package/dest/testbench/p2p_client_testbench_worker.js +16 -9
  224. package/dest/testbench/parse_log_file.d.ts +1 -1
  225. package/dest/testbench/testbench.d.ts +1 -1
  226. package/dest/testbench/testbench.js +2 -2
  227. package/dest/testbench/worker_client_manager.d.ts +1 -1
  228. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  229. package/dest/types/index.d.ts +1 -1
  230. package/dest/util.d.ts +2 -1
  231. package/dest/util.d.ts.map +1 -1
  232. package/dest/util.js +11 -2
  233. package/dest/versioning.d.ts +2 -2
  234. package/dest/versioning.d.ts.map +1 -1
  235. package/dest/versioning.js +2 -2
  236. package/package.json +21 -21
  237. package/src/bootstrap/bootstrap.ts +15 -4
  238. package/src/client/factory.ts +17 -3
  239. package/src/client/interface.ts +8 -5
  240. package/src/client/p2p_client.ts +88 -74
  241. package/src/config.ts +33 -6
  242. package/src/enr/generate-enr.ts +1 -1
  243. package/src/errors/attestation-pool.error.ts +13 -0
  244. package/src/mem_pools/attestation_pool/attestation_pool.ts +46 -5
  245. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +89 -48
  246. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +107 -24
  247. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +98 -19
  248. package/src/mem_pools/attestation_pool/mocks.ts +11 -8
  249. package/src/mem_pools/instrumentation.ts +13 -0
  250. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +116 -48
  251. package/src/mem_pools/tx_pool/memory_tx_pool.ts +98 -12
  252. package/src/mem_pools/tx_pool/tx_pool.ts +20 -5
  253. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +115 -7
  254. package/src/msg_validators/attestation_validator/attestation_validator.ts +41 -6
  255. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +91 -0
  256. package/src/msg_validators/attestation_validator/index.ts +1 -0
  257. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +63 -18
  258. package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
  259. package/src/msg_validators/tx_validator/block_header_validator.ts +2 -2
  260. package/src/msg_validators/tx_validator/double_spend_validator.ts +1 -1
  261. package/src/msg_validators/tx_validator/factory.ts +13 -6
  262. package/src/msg_validators/tx_validator/index.ts +1 -0
  263. package/src/msg_validators/tx_validator/metadata_validator.ts +8 -42
  264. package/src/msg_validators/tx_validator/phases_validator.ts +3 -1
  265. package/src/msg_validators/tx_validator/test_utils.ts +1 -1
  266. package/src/msg_validators/tx_validator/timestamp_validator.ts +47 -0
  267. package/src/services/discv5/discV5_service.ts +2 -2
  268. package/src/services/dummy_service.ts +1 -1
  269. package/src/services/encoding.ts +81 -6
  270. package/src/services/libp2p/instrumentation.ts +10 -1
  271. package/src/services/libp2p/libp2p_service.ts +427 -157
  272. package/src/services/peer-manager/metrics.ts +10 -0
  273. package/src/services/peer-manager/peer_manager.ts +22 -14
  274. package/src/services/peer-manager/peer_scoring.ts +46 -3
  275. package/src/services/reqresp/interface.ts +1 -22
  276. package/src/services/reqresp/protocols/auth.ts +2 -2
  277. package/src/services/reqresp/protocols/block.ts +3 -2
  278. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +1 -1
  279. package/src/services/reqresp/protocols/status.ts +9 -8
  280. package/src/services/reqresp/reqresp.ts +15 -11
  281. package/src/services/service.ts +1 -1
  282. package/src/services/tx_collection/fast_tx_collection.ts +8 -5
  283. package/src/services/tx_collection/slow_tx_collection.ts +7 -6
  284. package/src/services/tx_collection/tx_collection.ts +12 -10
  285. package/src/services/tx_collection/tx_collection_sink.ts +34 -3
  286. package/src/services/tx_collection/tx_source.ts +2 -2
  287. package/src/services/tx_provider.ts +9 -7
  288. package/src/test-helpers/make-enrs.ts +1 -1
  289. package/src/test-helpers/mock-tx-helpers.ts +24 -0
  290. package/src/test-helpers/reqresp-nodes.ts +3 -2
  291. package/src/testbench/p2p_client_testbench_worker.ts +12 -5
  292. package/src/testbench/testbench.ts +2 -2
  293. package/src/util.ts +12 -2
  294. package/src/versioning.ts +3 -3
@@ -1,9 +1,9 @@
1
- import { Fr } from '@aztec/foundation/fields';
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import { toArray } from '@aztec/foundation/iterable';
3
3
  import { createLogger } from '@aztec/foundation/log';
4
4
  import { ProtocolContractAddress } from '@aztec/protocol-contracts';
5
5
  import { GasFees } from '@aztec/stdlib/gas';
6
- import { ClientIvcProof } from '@aztec/stdlib/proofs';
6
+ import { ChonkProof } from '@aztec/stdlib/proofs';
7
7
  import { DatabasePublicStateSource } from '@aztec/stdlib/trees';
8
8
  import { Tx, TxHash } from '@aztec/stdlib/tx';
9
9
  import { getTelemetryClient } from '@aztec/telemetry-client';
@@ -24,6 +24,8 @@ import { getPendingTxPriority } from './priority.js';
24
24
  /** Index from tx priority (stored as hex) to its tx hash, filtered by pending txs. */ #pendingTxPriorityToHash;
25
25
  /** Index from tx hash to its tx size (in bytes), filtered by pending txs. */ #pendingTxHashToSize;
26
26
  /** Index from tx hash to its header hash, filtered by pending txs. */ #pendingTxHashToHeaderHash;
27
+ /** Map from tx hash to the block number it was originally mined in (for soft-deleted txs). */ #deletedMinedTxHashes;
28
+ /** MultiMap from block number to deleted mined tx hashes for efficient cleanup. */ #blockToDeletedMinedTxHash;
27
29
  /** The cumulative tx size in bytes that the pending txs in the pool take up. */ #pendingTxSize;
28
30
  /** In-memory mapping of pending tx hashes to the hydrated pending tx in the pool. */ #pendingTxs;
29
31
  /** In-memory set of txs that should not be evicted from the pool. */ #nonEvictableTxs;
@@ -51,6 +53,8 @@ import { getPendingTxPriority } from './priority.js';
51
53
  this.#pendingTxHashToSize = store.openMap('pendingTxHashToSize');
52
54
  this.#pendingTxHashToHeaderHash = store.openMap('pendingTxHashToHeaderHash');
53
55
  this.#pendingTxSize = store.openSingleton('pendingTxSize');
56
+ this.#deletedMinedTxHashes = store.openMap('deletedMinedTxHashes');
57
+ this.#blockToDeletedMinedTxHash = store.openMultiMap('blockToDeletedMinedTxHash');
54
58
  this.#pendingTxs = new Map();
55
59
  this.#nonEvictableTxs = new Set();
56
60
  this.#archivedTxs = archive.openMap('archivedTxs');
@@ -94,6 +98,15 @@ import { getPendingTxPriority } from './priority.js';
94
98
  let pendingTxSize = await this.#pendingTxSize.getAsync() ?? 0;
95
99
  for (const hash of txHashes){
96
100
  const key = hash.toString();
101
+ // If this tx was previously soft-deleted, remove it from the deleted sets
102
+ if (await this.#deletedMinedTxHashes.hasAsync(key)) {
103
+ const originalBlock = await this.#deletedMinedTxHashes.getAsync(key);
104
+ await this.#deletedMinedTxHashes.delete(key);
105
+ // Remove from block-to-hash mapping
106
+ if (originalBlock !== undefined) {
107
+ await this.#blockToDeletedMinedTxHash.deleteValue(originalBlock, key);
108
+ }
109
+ }
97
110
  await this.#minedTxHashToBlock.set(key, blockHeader.globalVariables.blockNumber);
98
111
  const tx = await this.getPendingTxByHash(hash);
99
112
  if (tx) {
@@ -137,7 +150,7 @@ import { getPendingTxPriority } from './priority.js';
137
150
  const vals = await toArray(this.#pendingTxPriorityToHash.valuesAsync({
138
151
  reverse: true
139
152
  }));
140
- return vals.map((x)=>TxHash.fromString(x));
153
+ return vals.map(TxHash.fromString);
141
154
  }
142
155
  async getMinedTxHashes() {
143
156
  const vals = await toArray(this.#minedTxHashToBlock.entriesAsync());
@@ -154,11 +167,14 @@ import { getPendingTxPriority } from './priority.js';
154
167
  }
155
168
  async getTxStatus(txHash) {
156
169
  const key = txHash.toString();
157
- const [isMined, isKnown] = await Promise.all([
170
+ const [isMined, isKnown, isDeleted] = await Promise.all([
158
171
  this.#minedTxHashToBlock.hasAsync(key),
159
- this.#txs.hasAsync(key)
172
+ this.#txs.hasAsync(key),
173
+ this.#deletedMinedTxHashes.hasAsync(key)
160
174
  ]);
161
- if (isMined) {
175
+ if (isDeleted) {
176
+ return 'deleted';
177
+ } else if (isMined) {
162
178
  return 'mined';
163
179
  } else if (isKnown) {
164
180
  return 'pending';
@@ -172,39 +188,28 @@ import { getPendingTxPriority } from './priority.js';
172
188
  * @returns The transaction, if found, 'undefined' otherwise.
173
189
  */ async getTxByHash(txHash) {
174
190
  const buffer = await this.#txs.getAsync(txHash.toString());
175
- if (buffer) {
176
- const tx = Tx.fromBuffer(buffer);
177
- tx.setTxHash(txHash);
178
- return tx;
179
- }
180
- return undefined;
191
+ return buffer ? Tx.fromBuffer(buffer) : undefined;
181
192
  }
182
193
  async getTxsByHash(txHashes) {
183
194
  const txs = await Promise.all(txHashes.map((txHash)=>this.#txs.getAsync(txHash.toString())));
184
- return txs.map((buffer, index)=>{
185
- if (buffer) {
186
- const tx = Tx.fromBuffer(buffer);
187
- tx.setTxHash(txHashes[index]);
188
- return tx;
189
- }
190
- return undefined;
191
- });
195
+ return txs.map((buffer)=>buffer ? Tx.fromBuffer(buffer) : undefined);
192
196
  }
193
197
  async hasTxs(txHashes) {
194
198
  return await Promise.all(txHashes.map((txHash)=>this.#txs.hasAsync(txHash.toString())));
195
199
  }
200
+ async hasTx(txHash) {
201
+ const result = await this.hasTxs([
202
+ txHash
203
+ ]);
204
+ return result[0];
205
+ }
196
206
  /**
197
207
  * Checks if an archived tx exists and returns it.
198
208
  * @param txHash - The tx hash.
199
209
  * @returns The transaction metadata, if found, 'undefined' otherwise.
200
210
  */ async getArchivedTxByHash(txHash) {
201
211
  const buffer = await this.#archivedTxs.getAsync(txHash.toString());
202
- if (buffer) {
203
- const tx = Tx.fromBuffer(buffer);
204
- tx.setTxHash(txHash);
205
- return tx;
206
- }
207
- return undefined;
212
+ return buffer ? Tx.fromBuffer(buffer) : undefined;
208
213
  }
209
214
  /**
210
215
  * Adds a list of transactions to the pool. Duplicates are ignored.
@@ -250,9 +255,10 @@ import { getPendingTxPriority } from './priority.js';
250
255
  }
251
256
  /**
252
257
  * Deletes transactions from the pool. Tx hashes that are not present are ignored.
253
- * @param txHashes - An array of tx hashes to be removed from the tx pool.
258
+ * Mined transactions are soft-deleted with a timestamp, pending transactions are permanently deleted.
259
+ * @param txHashes - An array of tx hashes to be deleted from the tx pool.
254
260
  * @returns Empty promise.
255
- */ deleteTxs(txHashes, eviction = false) {
261
+ */ deleteTxs(txHashes, opts = {}) {
256
262
  if (txHashes.length === 0) {
257
263
  return Promise.resolve();
258
264
  }
@@ -263,16 +269,31 @@ import { getPendingTxPriority } from './priority.js';
263
269
  const key = hash.toString();
264
270
  const tx = await this.getTxByHash(hash);
265
271
  if (tx) {
266
- const isMined = await this.#minedTxHashToBlock.hasAsync(key);
267
- if (!isMined) {
272
+ const minedBlockNumber = await this.#minedTxHashToBlock.getAsync(key);
273
+ if (minedBlockNumber !== undefined) {
274
+ await this.#minedTxHashToBlock.delete(key);
275
+ if (opts.permanently) {
276
+ // Permanently delete mined transactions if specified
277
+ this.#log.trace(`Deleting mined tx ${key} from pool`);
278
+ await this.#txs.delete(key);
279
+ } else {
280
+ // Soft-delete mined transactions: remove from mined set but keep in storage
281
+ this.#log.trace(`Soft-deleting mined tx ${key} from pool`);
282
+ await this.#deletedMinedTxHashes.set(key, minedBlockNumber);
283
+ await this.#blockToDeletedMinedTxHash.set(minedBlockNumber, key);
284
+ }
285
+ } else {
286
+ // Permanently delete pending transactions
287
+ this.#log.trace(`Deleting pending tx ${key} from pool`);
268
288
  pendingTxSize -= tx.getSize();
269
289
  await this.removePendingTxIndices(tx, key);
290
+ await this.#txs.delete(key);
270
291
  }
271
- if (!eviction && this.#archivedTxLimit) {
292
+ if (!opts.eviction && this.#archivedTxLimit) {
272
293
  deletedTxs.push(tx);
273
294
  }
274
- await this.#txs.delete(key);
275
- await this.#minedTxHashToBlock.delete(key);
295
+ } else {
296
+ this.#log.trace(`Skipping deletion of missing tx ${key} from pool`);
276
297
  }
277
298
  }
278
299
  await this.#pendingTxSize.set(pendingTxSize);
@@ -286,12 +307,8 @@ import { getPendingTxPriority } from './priority.js';
286
307
  * Gets all the transactions stored in the pool.
287
308
  * @returns Array of tx objects in the order they were added to the pool.
288
309
  */ async getAllTxs() {
289
- const vals = await toArray(this.#txs.entriesAsync());
290
- return vals.map(([hash, buffer])=>{
291
- const tx = Tx.fromBuffer(buffer);
292
- tx.setTxHash(TxHash.fromString(hash));
293
- return tx;
294
- });
310
+ const vals = await toArray(this.#txs.valuesAsync());
311
+ return vals.map((buffer)=>Tx.fromBuffer(buffer));
295
312
  }
296
313
  /**
297
314
  * Gets the hashes of all transactions currently in the tx pool.
@@ -324,12 +341,48 @@ import { getPendingTxPriority } from './priority.js';
324
341
  assert(archivedTxLimit >= 0, 'archivedTxLimit must be greater or equal to 0');
325
342
  this.#archivedTxLimit = archivedTxLimit;
326
343
  }
344
+ // deletedMinedCleanupThresholdMs is no longer used in block-based cleanup
327
345
  }
328
346
  markTxsAsNonEvictable(txHashes) {
329
347
  txHashes.forEach((txHash)=>this.#nonEvictableTxs.add(txHash.toString()));
330
348
  return Promise.resolve();
331
349
  }
332
350
  /**
351
+ * Permanently deletes deleted mined transactions from blocks up to and including the specified block number.
352
+ * @param blockNumber - Block number threshold. Deleted mined txs from this block or earlier will be permanently deleted.
353
+ * @returns The number of transactions permanently deleted.
354
+ */ async cleanupDeletedMinedTxs(blockNumber) {
355
+ let deletedCount = 0;
356
+ const txHashesToDelete = [];
357
+ const blocksToDelete = [];
358
+ await this.#store.transactionAsync(async ()=>{
359
+ // Iterate through all entries and check block numbers
360
+ for await (const [block, txHash] of this.#blockToDeletedMinedTxHash.entriesAsync()){
361
+ if (block <= blockNumber) {
362
+ // Permanently delete the transaction
363
+ await this.#txs.delete(txHash);
364
+ await this.#deletedMinedTxHashes.delete(txHash);
365
+ txHashesToDelete.push(txHash);
366
+ if (!blocksToDelete.includes(block)) {
367
+ blocksToDelete.push(block);
368
+ }
369
+ deletedCount++;
370
+ }
371
+ }
372
+ // Clean up block-to-hash mapping - delete all values for each block
373
+ for (const block of blocksToDelete){
374
+ const txHashesForBlock = await toArray(this.#blockToDeletedMinedTxHash.getValuesAsync(block));
375
+ for (const txHash of txHashesForBlock){
376
+ await this.#blockToDeletedMinedTxHash.deleteValue(block, txHash);
377
+ }
378
+ }
379
+ });
380
+ if (deletedCount > 0) {
381
+ this.#log.debug(`Permanently deleted ${deletedCount} deleted mined txs from blocks up to ${blockNumber}`);
382
+ }
383
+ return deletedCount;
384
+ }
385
+ /**
333
386
  * Creates a GasTxValidator instance.
334
387
  * @param db - DB for the validator to use
335
388
  * @returns A GasTxValidator instance
@@ -395,7 +448,7 @@ import { getPendingTxPriority } from './priority.js';
395
448
  }
396
449
  tailIdx++;
397
450
  }
398
- const archivedTx = new Tx(tx.txHash, tx.data, ClientIvcProof.empty(), tx.contractClassLogFields, tx.publicFunctionCalldata);
451
+ const archivedTx = new Tx(tx.txHash, tx.data, ChonkProof.empty(), tx.contractClassLogFields, tx.publicFunctionCalldata);
399
452
  const txHash = txHashes[i].toString();
400
453
  await this.#archivedTxs.set(txHash, archivedTx.toBuffer());
401
454
  await this.#archivedTxIndices.set(headIdx, txHash);
@@ -449,7 +502,9 @@ import { getPendingTxPriority } from './priority.js';
449
502
  numNewTxsEvicted += newTxHashes.filter((txHash)=>txsToEvict.includes(txHash)).length;
450
503
  }
451
504
  if (txsToEvict.length > 0) {
452
- await this.deleteTxs(txsToEvict, true);
505
+ await this.deleteTxs(txsToEvict, {
506
+ eviction: true
507
+ });
453
508
  }
454
509
  return {
455
510
  numLowPriorityTxsEvicted: txsToEvict.length,
@@ -503,7 +558,9 @@ import { getPendingTxPriority } from './priority.js';
503
558
  }
504
559
  }
505
560
  if (txsToEvict.length > 0) {
506
- await this.deleteTxs(txsToEvict, true);
561
+ await this.deleteTxs(txsToEvict, {
562
+ eviction: true
563
+ });
507
564
  }
508
565
  return txsToEvict.length;
509
566
  }
@@ -540,14 +597,16 @@ import { getPendingTxPriority } from './priority.js';
540
597
  }
541
598
  }
542
599
  if (txsToEvict.length > 0) {
543
- await this.deleteTxs(txsToEvict, true);
600
+ await this.deleteTxs(txsToEvict, {
601
+ eviction: true
602
+ });
544
603
  }
545
604
  return txsToEvict.length;
546
605
  }
547
606
  async addPendingTxIndices(tx, txHash) {
548
607
  await this.#pendingTxPriorityToHash.set(getPendingTxPriority(tx), txHash);
549
608
  await this.#pendingTxHashToSize.set(txHash, tx.getSize());
550
- await this.#pendingTxHashToHeaderHash.set(txHash, (await tx.data.constants.historicalHeader.hash()).toString());
609
+ await this.#pendingTxHashToHeaderHash.set(txHash, (await tx.data.constants.anchorBlockHeader.hash()).toString());
551
610
  }
552
611
  async removePendingTxIndices(tx, txHash) {
553
612
  await this.#pendingTxPriorityToHash.deleteValue(getPendingTxPriority(tx), txHash);
@@ -1,4 +1,4 @@
1
1
  export * from './tx_pool.js';
2
2
  export * from './memory_tx_pool.js';
3
3
  export * from './aztec_kv_tx_pool.js';
4
- //# sourceMappingURL=index.d.ts.map
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZW1fcG9vbHMvdHhfcG9vbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsdUJBQXVCLENBQUMifQ==
@@ -1,3 +1,4 @@
1
+ import { BlockNumber } from '@aztec/foundation/branded-types';
1
2
  import type { TypedEventEmitter } from '@aztec/foundation/types';
2
3
  import { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
3
4
  import { type TelemetryClient } from '@aztec/telemetry-client';
@@ -14,6 +15,8 @@ export declare class InMemoryTxPool extends InMemoryTxPool_base implements TxPoo
14
15
  private txs;
15
16
  private minedTxs;
16
17
  private pendingTxs;
18
+ private deletedMinedTxHashes;
19
+ private blockToDeletedMinedTxHash;
17
20
  private metrics;
18
21
  /**
19
22
  * Class constructor for in-memory TxPool. Initiates our transaction pool as a JS Map.
@@ -25,9 +28,9 @@ export declare class InMemoryTxPool extends InMemoryTxPool_base implements TxPoo
25
28
  markAsMined(txHashes: TxHash[], blockHeader: BlockHeader): Promise<void>;
26
29
  markMinedAsPending(txHashes: TxHash[]): Promise<void>;
27
30
  getPendingTxHashes(): Promise<TxHash[]>;
28
- getMinedTxHashes(): Promise<[TxHash, number][]>;
31
+ getMinedTxHashes(): Promise<[TxHash, BlockNumber][]>;
29
32
  getPendingTxCount(): Promise<number>;
30
- getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | undefined>;
33
+ getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | 'deleted' | undefined>;
31
34
  /**
32
35
  * Checks if a transaction exists in the pool and returns it.
33
36
  * @param txHash - The generated tx hash.
@@ -36,6 +39,7 @@ export declare class InMemoryTxPool extends InMemoryTxPool_base implements TxPoo
36
39
  getTxByHash(txHash: TxHash): Promise<Tx | undefined>;
37
40
  getTxsByHash(txHashes: TxHash[]): Promise<(Tx | undefined)[]>;
38
41
  hasTxs(txHashes: TxHash[]): Promise<boolean[]>;
42
+ hasTx(txHash: TxHash): Promise<boolean>;
39
43
  getArchivedTxByHash(): Promise<Tx | undefined>;
40
44
  /**
41
45
  * Adds a list of transactions to the pool. Duplicates are ignored.
@@ -47,10 +51,13 @@ export declare class InMemoryTxPool extends InMemoryTxPool_base implements TxPoo
47
51
  }): Promise<number>;
48
52
  /**
49
53
  * Deletes transactions from the pool. Tx hashes that are not present are ignored.
50
- * @param txHashes - An array of tx hashes to be removed from the tx pool.
51
- * @returns The number of transactions that was deleted from the pool.
54
+ * Mined transactions are soft-deleted with a timestamp, pending transactions are permanently deleted.
55
+ * @param txHashes - An array of tx hashes to be deleted from the tx pool.
56
+ * @returns Empty promise.
52
57
  */
53
- deleteTxs(txHashes: TxHash[]): Promise<void>;
58
+ deleteTxs(txHashes: TxHash[], opts?: {
59
+ permanently?: boolean;
60
+ }): Promise<void>;
54
61
  /**
55
62
  * Gets all the transactions stored in the pool.
56
63
  * @returns Array of tx objects in the order they were added to the pool.
@@ -63,6 +70,12 @@ export declare class InMemoryTxPool extends InMemoryTxPool_base implements TxPoo
63
70
  getAllTxHashes(): Promise<TxHash[]>;
64
71
  updateConfig(_config: TxPoolOptions): void;
65
72
  markTxsAsNonEvictable(_: TxHash[]): Promise<void>;
73
+ /**
74
+ * Permanently deletes deleted mined transactions from blocks up to and including the specified block number.
75
+ * @param blockNumber - Block number threshold. Deleted mined txs from this block or earlier will be permanently deleted.
76
+ * @returns The number of transactions permanently deleted.
77
+ */
78
+ cleanupDeletedMinedTxs(blockNumber: BlockNumber): Promise<number>;
66
79
  }
67
80
  export {};
68
- //# sourceMappingURL=memory_tx_pool.d.ts.map
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5X3R4X3Bvb2wuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZW1fcG9vbHMvdHhfcG9vbC9tZW1vcnlfdHhfcG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXNCLE1BQU0seUJBQXlCLENBQUM7QUFNbkYsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRXhFOztHQUVHO0FBQ0gscUJBQWEsY0FBZSxTQUFRLG1CQUE0RCxZQUFXLE1BQU07SUFtQjdHLE9BQU8sQ0FBQyxHQUFHO0lBbEJiOztPQUVHO0lBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBa0I7SUFDN0IsT0FBTyxDQUFDLFFBQVEsQ0FBMkI7SUFDM0MsT0FBTyxDQUFDLFVBQVUsQ0FBYztJQUNoQyxPQUFPLENBQUMsb0JBQW9CLENBQTJCO0lBRXZELE9BQU8sQ0FBQyx5QkFBeUIsQ0FBZ0M7SUFFakUsT0FBTyxDQUFDLE9BQU8sQ0FBMEI7SUFFekM7OztPQUdHO0lBQ0gsWUFDRSxTQUFTLEdBQUUsZUFBc0MsRUFDekMsR0FBRyx5Q0FBOEIsRUFTMUM7SUFFRCxPQUFPLENBQUMsT0FBTyxDQU9iO0lBRUssT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FFakM7SUFFTSxXQUFXLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLFdBQVcsRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQW9COUU7SUFFTSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQWdCM0Q7SUFFWSxrQkFBa0IsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FXbkQ7SUFFTSxnQkFBZ0IsSUFBSSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUkxRDtJQUVNLGlCQUFpQixJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FHMUM7SUFFTSxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsU0FBUyxHQUFHLE9BQU8sR0FBRyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBYXZGO0lBRUQ7Ozs7T0FJRztJQUNJLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBRzFEO0lBRUQsWUFBWSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUU1RDtJQUNELE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBRTdDO0lBRUssS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUc1QztJQUVNLG1CQUFtQixJQUFJLE9BQU8sQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBRXBEO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxHQUFFO1FBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFBO0tBQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBd0J4RTtJQUVEOzs7OztPQUtHO0lBQ0ksU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtRQUFFLFdBQVcsQ0FBQyxFQUFFLE9BQU8sQ0FBQTtLQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQTJCcEY7SUFFRDs7O09BR0c7SUFDSSxTQUFTLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBRWhDO0lBRUQ7OztPQUdHO0lBQ0ksY0FBYyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUV6QztJQUVELFlBQVksQ0FBQyxPQUFPLEVBQUUsYUFBYSxHQUFHLElBQUksQ0FBRztJQUU3QyxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUVoRDtJQUVEOzs7O09BSUc7SUFDSSxzQkFBc0IsQ0FBQyxXQUFXLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0EwQnZFO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"memory_tx_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/memory_tx_pool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAMnF,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;mCAKnB,UAAU,iBAAiB,CAAC,YAAY,CAAC;AAH9F;;GAEG;AACH,qBAAa,cAAe,SAAQ,mBAA4D,YAAW,MAAM;IAgB7G,OAAO,CAAC,GAAG;IAfb;;OAEG;IACH,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,UAAU,CAAc;IAEhC,OAAO,CAAC,OAAO,CAA0B;IAEzC;;;OAGG;gBAED,SAAS,GAAE,eAAsC,EACzC,GAAG,yCAA8B;IAS3C,OAAO,CAAC,OAAO,CAOb;IAEK,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAI3B,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IASxE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB/C,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAQ7C,gBAAgB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAM/C,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIpC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IAW5E;;;;OAIG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAK3D,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;IAG7D,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAIvC,mBAAmB,IAAI,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAIrD;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BzE;;;;OAIG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnD;;;OAGG;IACI,SAAS,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAIjC;;;OAGG;IACI,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI1C,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAE1C,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAGlD"}
1
+ {"version":3,"file":"memory_tx_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/memory_tx_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAMnF,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;;AAExE;;GAEG;AACH,qBAAa,cAAe,SAAQ,mBAA4D,YAAW,MAAM;IAmB7G,OAAO,CAAC,GAAG;IAlBb;;OAEG;IACH,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,oBAAoB,CAA2B;IAEvD,OAAO,CAAC,yBAAyB,CAAgC;IAEjE,OAAO,CAAC,OAAO,CAA0B;IAEzC;;;OAGG;IACH,YACE,SAAS,GAAE,eAAsC,EACzC,GAAG,yCAA8B,EAS1C;IAED,OAAO,CAAC,OAAO,CAOb;IAEK,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAEjC;IAEM,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB9E;IAEM,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB3D;IAEY,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAWnD;IAEM,gBAAgB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC,CAI1D;IAEM,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAG1C;IAEM,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC,CAavF;IAED;;;;OAIG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAG1D;IAED,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAE5D;IACD,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAE7C;IAEK,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG5C;IAEM,mBAAmB,IAAI,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAEpD;IAED;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAwBxE;IAED;;;;;OAKG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BpF;IAED;;;OAGG;IACI,SAAS,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,CAEhC;IAED;;;OAGG;IACI,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAEzC;IAED,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAG;IAE7C,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhD;IAED;;;;OAIG;IACI,sBAAsB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CA0BvE;CACF"}
@@ -13,6 +13,9 @@ import { getPendingTxPriority } from './priority.js';
13
13
  */ txs;
14
14
  minedTxs;
15
15
  pendingTxs;
16
+ deletedMinedTxHashes;
17
+ // eslint-disable-next-line aztec-custom/no-non-primitive-in-collections
18
+ blockToDeletedMinedTxHash;
16
19
  metrics;
17
20
  /**
18
21
  * Class constructor for in-memory TxPool. Initiates our transaction pool as a JS Map.
@@ -29,6 +32,8 @@ import { getPendingTxPriority } from './priority.js';
29
32
  this.txs = new Map();
30
33
  this.minedTxs = new Map();
31
34
  this.pendingTxs = new Set();
35
+ this.deletedMinedTxHashes = new Map();
36
+ this.blockToDeletedMinedTxHash = new Map();
32
37
  this.metrics = new PoolInstrumentation(telemetry, PoolName.TX_POOL, this.countTx);
33
38
  }
34
39
  countTx;
@@ -38,6 +43,19 @@ import { getPendingTxPriority } from './priority.js';
38
43
  markAsMined(txHashes, blockHeader) {
39
44
  const keys = txHashes.map((x)=>x.toBigInt());
40
45
  for (const key of keys){
46
+ // If this tx was previously soft-deleted, remove it from the deleted sets
47
+ if (this.deletedMinedTxHashes.has(key)) {
48
+ const originalBlock = this.deletedMinedTxHashes.get(key);
49
+ this.deletedMinedTxHashes.delete(key);
50
+ // Remove from block-to-hash mapping
51
+ const txHashesForBlock = this.blockToDeletedMinedTxHash.get(originalBlock);
52
+ if (txHashesForBlock) {
53
+ txHashesForBlock.delete(key);
54
+ if (txHashesForBlock.size === 0) {
55
+ this.blockToDeletedMinedTxHash.delete(originalBlock);
56
+ }
57
+ }
58
+ }
41
59
  this.minedTxs.set(key, blockHeader.globalVariables.blockNumber);
42
60
  this.pendingTxs.delete(key);
43
61
  }
@@ -60,7 +78,11 @@ import { getPendingTxPriority } from './priority.js';
60
78
  async getPendingTxHashes() {
61
79
  const txs = (await this.getAllTxs()).sort((tx1, tx2)=>-getPendingTxPriority(tx1).localeCompare(getPendingTxPriority(tx2)));
62
80
  const txHashes = await Promise.all(txs.map((tx)=>tx.getTxHash()));
63
- return txHashes.filter((txHash)=>this.pendingTxs.has(txHash.toBigInt()));
81
+ // No need to check deleted since pending txs are never soft-deleted
82
+ return txHashes.filter((txHash)=>{
83
+ const key = txHash.toBigInt();
84
+ return this.pendingTxs.has(key);
85
+ });
64
86
  }
65
87
  getMinedTxHashes() {
66
88
  return Promise.resolve(Array.from(this.minedTxs.entries()).map(([txHash, blockNumber])=>[
@@ -69,16 +91,20 @@ import { getPendingTxPriority } from './priority.js';
69
91
  ]));
70
92
  }
71
93
  getPendingTxCount() {
94
+ // Soft-deleted transactions are always mined, never pending
72
95
  return Promise.resolve(this.pendingTxs.size);
73
96
  }
74
97
  getTxStatus(txHash) {
75
98
  const key = txHash.toBigInt();
76
- if (this.pendingTxs.has(key)) {
77
- return Promise.resolve('pending');
99
+ if (this.deletedMinedTxHashes.has(key)) {
100
+ return Promise.resolve('deleted');
78
101
  }
79
102
  if (this.minedTxs.has(key)) {
80
103
  return Promise.resolve('mined');
81
104
  }
105
+ if (this.pendingTxs.has(key)) {
106
+ return Promise.resolve('pending');
107
+ }
82
108
  return Promise.resolve(undefined);
83
109
  }
84
110
  /**
@@ -95,6 +121,12 @@ import { getPendingTxPriority } from './priority.js';
95
121
  hasTxs(txHashes) {
96
122
  return Promise.resolve(txHashes.map((txHash)=>this.txs.has(txHash.toBigInt())));
97
123
  }
124
+ async hasTx(txHash) {
125
+ const result = await this.hasTxs([
126
+ txHash
127
+ ]);
128
+ return result[0];
129
+ }
98
130
  getArchivedTxByHash() {
99
131
  return Promise.resolve(undefined);
100
132
  }
@@ -130,14 +162,33 @@ import { getPendingTxPriority } from './priority.js';
130
162
  }
131
163
  /**
132
164
  * Deletes transactions from the pool. Tx hashes that are not present are ignored.
133
- * @param txHashes - An array of tx hashes to be removed from the tx pool.
134
- * @returns The number of transactions that was deleted from the pool.
135
- */ deleteTxs(txHashes) {
165
+ * Mined transactions are soft-deleted with a timestamp, pending transactions are permanently deleted.
166
+ * @param txHashes - An array of tx hashes to be deleted from the tx pool.
167
+ * @returns Empty promise.
168
+ */ deleteTxs(txHashes, opts) {
136
169
  for (const txHash of txHashes){
137
170
  const key = txHash.toBigInt();
138
- this.txs.delete(key);
139
- this.pendingTxs.delete(key);
140
- this.minedTxs.delete(key);
171
+ if (this.txs.has(key)) {
172
+ if (this.minedTxs.has(key)) {
173
+ const blockNumber = this.minedTxs.get(key);
174
+ this.minedTxs.delete(key);
175
+ // Soft-delete mined transactions: remove from mined set but keep in storage
176
+ if (opts?.permanently) {
177
+ // Permanently delete mined transactions if specified
178
+ this.txs.delete(key);
179
+ } else {
180
+ this.deletedMinedTxHashes.set(key, blockNumber);
181
+ if (!this.blockToDeletedMinedTxHash.has(blockNumber)) {
182
+ this.blockToDeletedMinedTxHash.set(blockNumber, new Set());
183
+ }
184
+ this.blockToDeletedMinedTxHash.get(blockNumber).add(key);
185
+ }
186
+ } else {
187
+ // Permanently delete pending transactions
188
+ this.txs.delete(key);
189
+ this.pendingTxs.delete(key);
190
+ }
191
+ }
141
192
  }
142
193
  return Promise.resolve();
143
194
  }
@@ -157,4 +208,32 @@ import { getPendingTxPriority } from './priority.js';
157
208
  markTxsAsNonEvictable(_) {
158
209
  return Promise.resolve();
159
210
  }
211
+ /**
212
+ * Permanently deletes deleted mined transactions from blocks up to and including the specified block number.
213
+ * @param blockNumber - Block number threshold. Deleted mined txs from this block or earlier will be permanently deleted.
214
+ * @returns The number of transactions permanently deleted.
215
+ */ cleanupDeletedMinedTxs(blockNumber) {
216
+ let deletedCount = 0;
217
+ const blocksToDelete = [];
218
+ // Find all blocks up to the specified block number
219
+ for (const [block, txHashes] of this.blockToDeletedMinedTxHash.entries()){
220
+ if (block <= blockNumber) {
221
+ // Permanently delete all transactions from this block
222
+ for (const txHash of txHashes){
223
+ this.txs.delete(txHash);
224
+ this.deletedMinedTxHashes.delete(txHash);
225
+ deletedCount++;
226
+ }
227
+ blocksToDelete.push(block);
228
+ }
229
+ }
230
+ // Clean up block-to-hash mapping
231
+ for (const block of blocksToDelete){
232
+ this.blockToDeletedMinedTxHash.delete(block);
233
+ }
234
+ if (deletedCount > 0) {
235
+ this.log.debug(`Permanently deleted ${deletedCount} deleted mined txs from blocks up to ${blockNumber}`);
236
+ }
237
+ return Promise.resolve(deletedCount);
238
+ }
160
239
  }
@@ -5,4 +5,4 @@ import type { Tx } from '@aztec/stdlib/tx';
5
5
  * We currently use the sum of the priority fees for the tx for this value, represented as hex.
6
6
  */
7
7
  export declare function getPendingTxPriority(tx: Tx): string;
8
- //# sourceMappingURL=priority.d.ts.map
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpb3JpdHkuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZW1fcG9vbHMvdHhfcG9vbC9wcmlvcml0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUzQzs7OztHQUlHO0FBQ0gsd0JBQWdCLG9CQUFvQixDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsTUFBTSxDQUluRCJ9
@@ -1,3 +1,4 @@
1
+ import type { BlockNumber } from '@aztec/foundation/branded-types';
1
2
  import type { TypedEventEmitter } from '@aztec/foundation/types';
2
3
  import type { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
3
4
  export type TxPoolOptions = {
@@ -41,6 +42,12 @@ export interface TxPool extends TypedEventEmitter<TxPoolEvents> {
41
42
  * @returns True or False for each tx hash
42
43
  */
43
44
  hasTxs(txHashes: TxHash[]): Promise<boolean[]>;
45
+ /**
46
+ * Checks if a transaction exists in the pool
47
+ * @param txHash - The hash of the transaction to check for
48
+ * @returns True if the transaction exists, false otherwise
49
+ */
50
+ hasTx(txHash: TxHash): Promise<boolean>;
44
51
  /**
45
52
  * Checks if an archived transaction exists in the pool and returns it.
46
53
  * @param txHash - The hash of the transaction, used as an ID.
@@ -63,7 +70,9 @@ export interface TxPool extends TypedEventEmitter<TxPoolEvents> {
63
70
  * Deletes transactions from the pool. Tx hashes that are not present are ignored.
64
71
  * @param txHashes - An array of tx hashes to be removed from the tx pool.
65
72
  */
66
- deleteTxs(txHashes: TxHash[]): Promise<void>;
73
+ deleteTxs(txHashes: TxHash[], opts?: {
74
+ permanently?: boolean;
75
+ }): Promise<void>;
67
76
  /**
68
77
  * Gets all transactions currently in the tx pool.
69
78
  * @returns An array of transaction objects found in the tx pool.
@@ -85,13 +94,13 @@ export interface TxPool extends TypedEventEmitter<TxPoolEvents> {
85
94
  * Gets the hashes of mined transactions currently in the tx pool.
86
95
  * @returns An array of mined transaction hashes found in the tx pool.
87
96
  */
88
- getMinedTxHashes(): Promise<[tx: TxHash, blockNumber: number][]>;
97
+ getMinedTxHashes(): Promise<[tx: TxHash, blockNumber: BlockNumber][]>;
89
98
  /**
90
- * Returns whether the given tx hash is flagged as pending or mined.
99
+ * Returns whether the given tx hash is flagged as pending, mined, or deleted.
91
100
  * @param txHash - Hash of the tx to query.
92
- * @returns Pending or mined depending on its status, or undefined if not found.
101
+ * @returns Pending, mined, or deleted depending on its status, or undefined if not found.
93
102
  */
94
- getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | undefined>;
103
+ getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | 'deleted' | undefined>;
95
104
  /**
96
105
  * Configure the maximum size of the tx pool
97
106
  * @param maxSizeBytes - The maximum size in bytes of the mempool. Set to undefined to disable it
@@ -104,5 +113,11 @@ export interface TxPool extends TypedEventEmitter<TxPoolEvents> {
104
113
  * @param txHashes - Hashes of the transactions to mark as non-evictible.
105
114
  */
106
115
  markTxsAsNonEvictable(txHashes: TxHash[]): Promise<void>;
116
+ /**
117
+ * Permanently deletes deleted mined transactions from blocks up to and including the specified block number.
118
+ * @param blockNumber - Block number threshold. Deleted mined txs from this block or earlier will be permanently deleted.
119
+ * @returns The number of transactions permanently deleted.
120
+ */
121
+ cleanupDeletedMinedTxs(blockNumber: BlockNumber): Promise<number>;
107
122
  }
108
- //# sourceMappingURL=tx_pool.d.ts.map
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfcG9vbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21lbV9wb29scy90eF9wb29sL3R4X3Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhFLE1BQU0sTUFBTSxhQUFhLEdBQUc7SUFDMUIsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3ZCLG9CQUFvQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQzlCLGVBQWUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUMxQixDQUFDO0FBRUYsTUFBTSxNQUFNLFlBQVksR0FBRztJQUN6QixDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFO1FBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFBO0tBQUUsS0FBSyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0NBQy9FLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sV0FBVyxNQUFPLFNBQVEsaUJBQWlCLENBQUMsWUFBWSxDQUFDO0lBQzdEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1FBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFBO0tBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFL0Q7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFFckQ7Ozs7T0FJRztJQUNILFlBQVksQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUU5RDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUUvQzs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXhDOzs7O09BSUc7SUFDSCxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFFN0Q7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFekU7Ozs7T0FJRztJQUNILGtCQUFrQixDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFdEQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtRQUFFLFdBQVcsQ0FBQyxFQUFFLE9BQU8sQ0FBQTtLQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRS9FOzs7T0FHRztJQUNILFNBQVMsSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUUzQjs7O09BR0c7SUFDSCxjQUFjLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFFcEM7OztPQUdHO0lBQ0gsa0JBQWtCLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFFeEMscURBQXFEO0lBQ3JELGlCQUFpQixJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVyQzs7O09BR0c7SUFDSCxnQkFBZ0IsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFdEU7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEdBQUcsT0FBTyxHQUFHLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQztJQUVsRjs7O09BR0c7SUFDSCxZQUFZLENBQUMsTUFBTSxFQUFFLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFFMUMseUNBQXlDO0lBQ3pDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFNUI7OztPQUdHO0lBQ0gscUJBQXFCLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUV6RDs7OztPQUlHO0lBQ0gsc0JBQXNCLENBQUMsV0FBVyxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Q0FDbkUifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"tx_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/tx_pool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEhE,MAAM,MAAM,aAAa,GAAG;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/E,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,MAAO,SAAQ,iBAAiB,CAAC,YAAY,CAAC;IAC7D;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE/D;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IAErD;;;;OAIG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;IAE9D;;;;OAIG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAE/C;;;;OAIG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IAE7D;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzE;;;;OAIG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtD;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7C;;;OAGG;IACH,SAAS,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAE3B;;;OAGG;IACH,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAEpC;;;OAGG;IACH,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAExC,qDAAqD;IACrD,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAErC;;;OAGG;IACH,gBAAgB,IAAI,OAAO,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAEjE;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IAEtE;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAE1C,yCAAyC;IACzC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAE5B;;;OAGG;IACH,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1D"}
1
+ {"version":3,"file":"tx_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/tx_pool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEhE,MAAM,MAAM,aAAa,GAAG;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/E,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,MAAO,SAAQ,iBAAiB,CAAC,YAAY,CAAC;IAC7D;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE/D;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IAErD;;;;OAIG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;IAE9D;;;;OAIG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAE/C;;;;OAIG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAExC;;;;OAIG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IAE7D;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzE;;;;OAIG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtD;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/E;;;OAGG;IACH,SAAS,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAE3B;;;OAGG;IACH,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAEpC;;;OAGG;IACH,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAExC,qDAAqD;IACrD,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAErC;;;OAGG;IACH,gBAAgB,IAAI,OAAO,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IAEtE;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC,CAAC;IAElF;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAE1C,yCAAyC;IACzC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAE5B;;;OAGG;IACH,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzD;;;;OAIG;IACH,sBAAsB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACnE"}
@@ -4,4 +4,4 @@ import type { TxPool } from './tx_pool.js';
4
4
  * @param getTxPool - Gets a fresh TxPool
5
5
  */
6
6
  export declare function describeTxPool(getTxPool: () => TxPool): void;
7
- //# sourceMappingURL=tx_pool_test_suite.d.ts.map
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfcG9vbF90ZXN0X3N1aXRlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWVtX3Bvb2xzL3R4X3Bvb2wvdHhfcG9vbF90ZXN0X3N1aXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUzQzs7O0dBR0c7QUFDSCx3QkFBZ0IsY0FBYyxDQUFDLFNBQVMsRUFBRSxNQUFNLE1BQU0sUUE2U3JEIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"tx_pool_test_suite.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/tx_pool_test_suite.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,MAAM,QAkMrD"}
1
+ {"version":3,"file":"tx_pool_test_suite.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/tx_pool_test_suite.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,MAAM,QA6SrD"}