@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.
- package/dest/bootstrap/bootstrap.d.ts +1 -1
- package/dest/bootstrap/bootstrap.d.ts.map +1 -1
- package/dest/bootstrap/bootstrap.js +14 -4
- package/dest/client/factory.d.ts +2 -1
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +8 -3
- package/dest/client/index.d.ts +1 -1
- package/dest/client/interface.d.ts +8 -6
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +11 -34
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +68 -46
- package/dest/config.d.ts +65 -56
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +21 -5
- package/dest/enr/generate-enr.d.ts +2 -2
- package/dest/enr/generate-enr.d.ts.map +1 -1
- package/dest/enr/generate-enr.js +1 -1
- package/dest/enr/index.d.ts +1 -1
- package/dest/errors/attestation-pool.error.d.ts +7 -0
- package/dest/errors/attestation-pool.error.d.ts.map +1 -0
- package/dest/errors/attestation-pool.error.js +12 -0
- package/dest/errors/reqresp.error.d.ts +1 -1
- package/dest/errors/reqresp.error.d.ts.map +1 -1
- package/dest/index.d.ts +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +43 -6
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +72 -46
- package/dest/mem_pools/attestation_pool/index.d.ts +1 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +15 -6
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +73 -18
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +13 -6
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +69 -11
- package/dest/mem_pools/attestation_pool/mocks.d.ts +226 -5
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +9 -7
- package/dest/mem_pools/index.d.ts +1 -1
- package/dest/mem_pools/instrumentation.d.ts +3 -1
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +11 -2
- package/dest/mem_pools/interface.d.ts +1 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +17 -40
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +103 -44
- package/dest/mem_pools/tx_pool/index.d.ts +1 -1
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +19 -6
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/memory_tx_pool.js +88 -9
- package/dest/mem_pools/tx_pool/priority.d.ts +1 -1
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +21 -6
- package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +132 -7
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +4 -2
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +32 -5
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +20 -0
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -0
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +67 -0
- package/dest/msg_validators/attestation_validator/index.d.ts +2 -1
- package/dest/msg_validators/attestation_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/index.js +1 -0
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +5 -2
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +56 -9
- package/dest/msg_validators/block_proposal_validator/index.d.ts +1 -1
- package/dest/msg_validators/index.d.ts +1 -1
- package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts +1 -1
- package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +1 -1
- package/dest/msg_validators/tx_validator/archive_cache.d.ts +2 -2
- package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts +2 -2
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
- package/dest/msg_validators/tx_validator/data_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.js +1 -1
- package/dest/msg_validators/tx_validator/factory.d.ts +4 -3
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/factory.js +11 -5
- package/dest/msg_validators/tx_validator/gas_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/index.d.ts +2 -1
- package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/index.js +1 -0
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -6
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.js +6 -24
- package/dest/msg_validators/tx_validator/phases_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/phases_validator.js +3 -1
- package/dest/msg_validators/tx_validator/test_utils.d.ts +2 -2
- package/dest/msg_validators/tx_validator/test_utils.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +13 -0
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/timestamp_validator.js +32 -0
- package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
- package/dest/services/data_store.d.ts +1 -1
- package/dest/services/data_store.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.d.ts +3 -3
- package/dest/services/discv5/discV5_service.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.js +2 -2
- package/dest/services/dummy_service.d.ts +2 -2
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/encoding.d.ts +25 -4
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +74 -6
- package/dest/services/gossipsub/scoring.d.ts +1 -1
- package/dest/services/index.d.ts +1 -1
- package/dest/services/libp2p/instrumentation.d.ts +3 -1
- package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
- package/dest/services/libp2p/instrumentation.js +9 -2
- package/dest/services/libp2p/libp2p_service.d.ts +29 -69
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +375 -133
- package/dest/services/peer-manager/interface.d.ts +1 -1
- package/dest/services/peer-manager/metrics.d.ts +3 -1
- package/dest/services/peer-manager/metrics.d.ts.map +1 -1
- package/dest/services/peer-manager/metrics.js +11 -0
- package/dest/services/peer-manager/peer_manager.d.ts +1 -32
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +27 -12
- package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
- package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_scoring.js +40 -2
- package/dest/services/reqresp/config.d.ts +1 -1
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +1 -1
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +1 -4
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/index.d.ts +1 -1
- package/dest/services/reqresp/interface.d.ts +2 -11
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +1 -18
- package/dest/services/reqresp/metrics.d.ts +1 -1
- package/dest/services/reqresp/metrics.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/auth.d.ts +2 -2
- package/dest/services/reqresp/protocols/auth.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/auth.js +2 -2
- package/dest/services/reqresp/protocols/block.d.ts +1 -1
- package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block.js +3 -2
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +1 -1
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +1 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +4 -6
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +1 -1
- package/dest/services/reqresp/protocols/block_txs/index.d.ts +1 -1
- package/dest/services/reqresp/protocols/goodbye.d.ts +1 -1
- package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/index.d.ts +1 -1
- package/dest/services/reqresp/protocols/ping.d.ts +1 -1
- package/dest/services/reqresp/protocols/status.d.ts +6 -5
- package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/status.js +4 -3
- package/dest/services/reqresp/protocols/tx.d.ts +1 -1
- package/dest/services/reqresp/rate-limiter/index.d.ts +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +2 -2
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
- package/dest/services/reqresp/reqresp.d.ts +1 -41
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +14 -10
- package/dest/services/reqresp/status.d.ts +2 -2
- package/dest/services/reqresp/status.d.ts.map +1 -1
- package/dest/services/service.d.ts +2 -2
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +1 -1
- package/dest/services/tx_collection/fast_tx_collection.d.ts +4 -9
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/fast_tx_collection.js +6 -1
- package/dest/services/tx_collection/index.d.ts +1 -1
- package/dest/services/tx_collection/instrumentation.d.ts +1 -1
- package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
- package/dest/services/tx_collection/slow_tx_collection.d.ts +6 -7
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/slow_tx_collection.js +2 -1
- package/dest/services/tx_collection/tx_collection.d.ts +12 -11
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection.js +3 -2
- package/dest/services/tx_collection/tx_collection_sink.d.ts +3 -3
- package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection_sink.js +34 -4
- package/dest/services/tx_collection/tx_source.d.ts +1 -1
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_source.js +2 -2
- package/dest/services/tx_provider.d.ts +5 -4
- package/dest/services/tx_provider.d.ts.map +1 -1
- package/dest/services/tx_provider.js +8 -4
- package/dest/services/tx_provider_instrumentation.d.ts +1 -1
- package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
- package/dest/test-helpers/generate-peer-id-private-keys.d.ts +1 -1
- package/dest/test-helpers/get-ports.d.ts +1 -1
- package/dest/test-helpers/get-ports.d.ts.map +1 -1
- package/dest/test-helpers/index.d.ts +1 -1
- package/dest/test-helpers/make-enrs.d.ts +1 -1
- package/dest/test-helpers/make-enrs.js +1 -1
- package/dest/test-helpers/make-test-p2p-clients.d.ts +2 -2
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.d.ts +4 -4
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-tx-helpers.d.ts +12 -0
- package/dest/test-helpers/mock-tx-helpers.d.ts.map +1 -0
- package/dest/test-helpers/mock-tx-helpers.js +19 -0
- package/dest/test-helpers/reqresp-nodes.d.ts +2 -2
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +4 -3
- package/dest/testbench/p2p_client_testbench_worker.d.ts +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +16 -9
- package/dest/testbench/parse_log_file.d.ts +1 -1
- package/dest/testbench/testbench.d.ts +1 -1
- package/dest/testbench/testbench.js +2 -2
- package/dest/testbench/worker_client_manager.d.ts +1 -1
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/types/index.d.ts +1 -1
- package/dest/util.d.ts +2 -1
- package/dest/util.d.ts.map +1 -1
- package/dest/util.js +11 -2
- package/dest/versioning.d.ts +2 -2
- package/dest/versioning.d.ts.map +1 -1
- package/dest/versioning.js +2 -2
- package/package.json +21 -21
- package/src/bootstrap/bootstrap.ts +15 -4
- package/src/client/factory.ts +17 -3
- package/src/client/interface.ts +8 -5
- package/src/client/p2p_client.ts +88 -74
- package/src/config.ts +33 -6
- package/src/enr/generate-enr.ts +1 -1
- package/src/errors/attestation-pool.error.ts +13 -0
- package/src/mem_pools/attestation_pool/attestation_pool.ts +46 -5
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +89 -48
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +107 -24
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +98 -19
- package/src/mem_pools/attestation_pool/mocks.ts +11 -8
- package/src/mem_pools/instrumentation.ts +13 -0
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +116 -48
- package/src/mem_pools/tx_pool/memory_tx_pool.ts +98 -12
- package/src/mem_pools/tx_pool/tx_pool.ts +20 -5
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +115 -7
- package/src/msg_validators/attestation_validator/attestation_validator.ts +41 -6
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +91 -0
- package/src/msg_validators/attestation_validator/index.ts +1 -0
- package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +63 -18
- package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
- package/src/msg_validators/tx_validator/block_header_validator.ts +2 -2
- package/src/msg_validators/tx_validator/double_spend_validator.ts +1 -1
- package/src/msg_validators/tx_validator/factory.ts +13 -6
- package/src/msg_validators/tx_validator/index.ts +1 -0
- package/src/msg_validators/tx_validator/metadata_validator.ts +8 -42
- package/src/msg_validators/tx_validator/phases_validator.ts +3 -1
- package/src/msg_validators/tx_validator/test_utils.ts +1 -1
- package/src/msg_validators/tx_validator/timestamp_validator.ts +47 -0
- package/src/services/discv5/discV5_service.ts +2 -2
- package/src/services/dummy_service.ts +1 -1
- package/src/services/encoding.ts +81 -6
- package/src/services/libp2p/instrumentation.ts +10 -1
- package/src/services/libp2p/libp2p_service.ts +427 -157
- package/src/services/peer-manager/metrics.ts +10 -0
- package/src/services/peer-manager/peer_manager.ts +22 -14
- package/src/services/peer-manager/peer_scoring.ts +46 -3
- package/src/services/reqresp/interface.ts +1 -22
- package/src/services/reqresp/protocols/auth.ts +2 -2
- package/src/services/reqresp/protocols/block.ts +3 -2
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +1 -1
- package/src/services/reqresp/protocols/status.ts +9 -8
- package/src/services/reqresp/reqresp.ts +15 -11
- package/src/services/service.ts +1 -1
- package/src/services/tx_collection/fast_tx_collection.ts +8 -5
- package/src/services/tx_collection/slow_tx_collection.ts +7 -6
- package/src/services/tx_collection/tx_collection.ts +12 -10
- package/src/services/tx_collection/tx_collection_sink.ts +34 -3
- package/src/services/tx_collection/tx_source.ts +2 -2
- package/src/services/tx_provider.ts +9 -7
- package/src/test-helpers/make-enrs.ts +1 -1
- package/src/test-helpers/mock-tx-helpers.ts +24 -0
- package/src/test-helpers/reqresp-nodes.ts +3 -2
- package/src/testbench/p2p_client_testbench_worker.ts +12 -5
- package/src/testbench/testbench.ts +2 -2
- package/src/util.ts +12 -2
- package/src/versioning.ts +3 -3
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/
|
|
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 {
|
|
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(
|
|
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 (
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
*
|
|
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,
|
|
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
|
|
267
|
-
if (
|
|
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
|
-
|
|
275
|
-
|
|
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.
|
|
290
|
-
return vals.map((
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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.
|
|
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=
|
|
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,
|
|
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
|
-
*
|
|
51
|
-
* @
|
|
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[]
|
|
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=
|
|
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":"
|
|
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
|
-
|
|
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.
|
|
77
|
-
return Promise.resolve('
|
|
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
|
-
*
|
|
134
|
-
* @
|
|
135
|
-
|
|
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.
|
|
139
|
-
|
|
140
|
-
|
|
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=
|
|
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[]
|
|
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:
|
|
97
|
+
getMinedTxHashes(): Promise<[tx: TxHash, blockNumber: BlockNumber][]>;
|
|
89
98
|
/**
|
|
90
|
-
* Returns whether the given tx hash is flagged as pending or
|
|
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
|
|
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=
|
|
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;
|
|
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=
|
|
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":"
|
|
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"}
|