@aztec/p2p 0.0.0-test.0 → 0.0.1-commit.24de95ac
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.map +1 -1
- package/dest/bootstrap/bootstrap.js +22 -9
- package/dest/client/factory.d.ts +13 -3
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +60 -24
- package/dest/client/index.d.ts +1 -0
- package/dest/client/index.d.ts.map +1 -1
- package/dest/client/index.js +1 -0
- package/dest/client/interface.d.ts +155 -0
- package/dest/client/interface.d.ts.map +1 -0
- package/dest/client/interface.js +9 -0
- package/dest/client/p2p_client.d.ts +72 -169
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +365 -174
- package/dest/config.d.ts +123 -103
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +173 -34
- package/dest/enr/generate-enr.d.ts +10 -2
- package/dest/enr/generate-enr.d.ts.map +1 -1
- package/dest/enr/generate-enr.js +27 -5
- package/dest/index.d.ts +3 -0
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +2 -0
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +42 -4
- 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.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +204 -54
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +10 -2
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +93 -15
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +10 -2
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +86 -18
- package/dest/mem_pools/attestation_pool/mocks.d.ts +1 -2
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +9 -15
- package/dest/mem_pools/instrumentation.d.ts +7 -11
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +25 -37
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +93 -9
- 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 +469 -97
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +33 -9
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/memory_tx_pool.js +133 -36
- package/dest/mem_pools/tx_pool/priority.js +1 -1
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +64 -8
- 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.map +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +264 -39
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +1 -0
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +45 -9
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +5 -1
- 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 +61 -12
- package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts +10 -0
- package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts.map +1 -0
- package/dest/msg_validators/msg_seen_validator/msg_seen_validator.js +36 -0
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +3 -0
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/allowed_public_setup.js +27 -0
- package/dest/msg_validators/tx_validator/archive_cache.d.ts +14 -0
- package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/archive_cache.js +22 -0
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.js +4 -4
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +56 -86
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +0 -2
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.js +21 -27
- package/dest/msg_validators/tx_validator/factory.d.ts +15 -0
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/factory.js +74 -0
- package/dest/msg_validators/tx_validator/gas_validator.d.ts +11 -0
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/gas_validator.js +115 -0
- package/dest/msg_validators/tx_validator/index.d.ts +7 -0
- package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/index.js +7 -0
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts +7 -3
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.js +39 -20
- package/dest/msg_validators/tx_validator/phases_validator.d.ts +14 -0
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/phases_validator.js +91 -0
- package/dest/msg_validators/tx_validator/test_utils.d.ts +17 -0
- package/dest/msg_validators/tx_validator/test_utils.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/test_utils.js +22 -0
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +12 -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 +8 -0
- package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/tx_permitted_validator.js +24 -0
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/tx_proof_validator.js +6 -5
- package/dest/services/discv5/discV5_service.d.ts +9 -8
- package/dest/services/discv5/discV5_service.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.js +63 -36
- package/dest/services/dummy_service.d.ts +49 -10
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +88 -5
- package/dest/services/encoding.d.ts +25 -6
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +73 -5
- package/dest/services/index.d.ts +4 -0
- package/dest/services/index.d.ts.map +1 -1
- package/dest/services/index.js +4 -0
- package/dest/services/libp2p/instrumentation.d.ts +18 -0
- package/dest/services/libp2p/instrumentation.d.ts.map +1 -0
- package/dest/services/libp2p/instrumentation.js +157 -0
- package/dest/services/libp2p/libp2p_service.d.ts +87 -42
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +500 -218
- package/dest/services/peer-manager/interface.d.ts +23 -0
- package/dest/services/peer-manager/interface.d.ts.map +1 -0
- package/dest/services/peer-manager/interface.js +1 -0
- 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 -2
- package/dest/services/peer-manager/peer_manager.d.ts +126 -15
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +547 -72
- package/dest/services/reqresp/config.d.ts +10 -8
- package/dest/services/reqresp/config.d.ts.map +1 -1
- package/dest/services/reqresp/config.js +18 -4
- 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/batch_connection_sampler.js +10 -6
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +30 -13
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.js +142 -84
- package/dest/services/reqresp/index.d.ts +2 -1
- package/dest/services/reqresp/index.d.ts.map +1 -1
- package/dest/services/reqresp/index.js +2 -1
- package/dest/services/reqresp/interface.d.ts +72 -23
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +45 -26
- package/dest/services/reqresp/metrics.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/auth.d.ts +43 -0
- package/dest/services/reqresp/protocols/auth.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/auth.js +71 -0
- package/dest/services/reqresp/protocols/block.d.ts +5 -0
- package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block.js +28 -5
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +30 -0
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/bitvector.js +75 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +11 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +39 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +49 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +75 -0
- package/dest/services/reqresp/protocols/block_txs/index.d.ts +4 -0
- package/dest/services/reqresp/protocols/block_txs/index.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/index.js +3 -0
- package/dest/services/reqresp/protocols/goodbye.d.ts +2 -4
- package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/goodbye.js +7 -7
- package/dest/services/reqresp/protocols/index.d.ts +2 -0
- package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/index.js +2 -0
- package/dest/services/reqresp/protocols/ping.d.ts +0 -2
- package/dest/services/reqresp/protocols/ping.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/status.d.ts +38 -6
- package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/status.js +72 -5
- package/dest/services/reqresp/protocols/tx.d.ts +12 -1
- package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/tx.js +34 -6
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +4 -2
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -2
- package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limits.js +21 -1
- package/dest/services/reqresp/reqresp.d.ts +45 -47
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +298 -207
- package/dest/services/reqresp/status.d.ts +9 -3
- package/dest/services/reqresp/status.d.ts.map +1 -1
- package/dest/services/reqresp/status.js +9 -2
- package/dest/services/service.d.ts +22 -18
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +25 -0
- package/dest/services/tx_collection/config.d.ts.map +1 -0
- package/dest/services/tx_collection/config.js +58 -0
- package/dest/services/tx_collection/fast_tx_collection.d.ts +56 -0
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/fast_tx_collection.js +300 -0
- package/dest/services/tx_collection/index.d.ts +3 -0
- package/dest/services/tx_collection/index.d.ts.map +1 -0
- package/dest/services/tx_collection/index.js +2 -0
- package/dest/services/tx_collection/instrumentation.d.ts +10 -0
- package/dest/services/tx_collection/instrumentation.d.ts.map +1 -0
- package/dest/services/tx_collection/instrumentation.js +34 -0
- package/dest/services/tx_collection/slow_tx_collection.d.ts +54 -0
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/slow_tx_collection.js +176 -0
- package/dest/services/tx_collection/tx_collection.d.ts +110 -0
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_collection.js +128 -0
- package/dest/services/tx_collection/tx_collection_sink.d.ts +30 -0
- package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_collection_sink.js +111 -0
- package/dest/services/tx_collection/tx_source.d.ts +18 -0
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_source.js +31 -0
- package/dest/services/tx_provider.d.ts +49 -0
- package/dest/services/tx_provider.d.ts.map +1 -0
- package/dest/services/tx_provider.js +210 -0
- package/dest/services/tx_provider_instrumentation.d.ts +13 -0
- package/dest/services/tx_provider_instrumentation.d.ts.map +1 -0
- package/dest/services/tx_provider_instrumentation.js +34 -0
- package/dest/test-helpers/get-ports.d.ts.map +1 -1
- package/dest/test-helpers/index.d.ts +1 -0
- package/dest/test-helpers/index.d.ts.map +1 -1
- package/dest/test-helpers/index.js +1 -0
- package/dest/test-helpers/make-enrs.d.ts.map +1 -1
- package/dest/test-helpers/make-enrs.js +4 -5
- package/dest/test-helpers/make-test-p2p-clients.d.ts +32 -4
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.js +86 -16
- package/dest/test-helpers/mock-pubsub.d.ts +59 -0
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -0
- package/dest/test-helpers/mock-pubsub.js +130 -0
- 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 +14 -10
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +62 -28
- package/dest/testbench/p2p_client_testbench_worker.js +96 -25
- package/dest/testbench/parse_log_file.js +4 -4
- package/dest/testbench/testbench.js +4 -4
- package/dest/testbench/worker_client_manager.d.ts +0 -5
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +11 -19
- package/dest/types/index.d.ts +3 -1
- package/dest/types/index.d.ts.map +1 -1
- package/dest/types/index.js +2 -0
- package/dest/util.d.ts +22 -15
- package/dest/util.d.ts.map +1 -1
- package/dest/util.js +64 -67
- package/dest/versioning.d.ts +3 -3
- package/dest/versioning.d.ts.map +1 -1
- package/dest/versioning.js +8 -3
- package/package.json +28 -24
- package/src/bootstrap/bootstrap.ts +27 -11
- package/src/client/factory.ts +136 -45
- package/src/client/index.ts +1 -0
- package/src/client/interface.ts +195 -0
- package/src/client/p2p_client.ts +460 -327
- package/src/config.ts +288 -134
- package/src/enr/generate-enr.ts +39 -6
- package/src/index.ts +4 -0
- package/src/mem_pools/attestation_pool/attestation_pool.ts +48 -4
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +241 -55
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +117 -20
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +114 -22
- package/src/mem_pools/attestation_pool/mocks.ts +11 -10
- package/src/mem_pools/instrumentation.ts +32 -46
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +549 -108
- package/src/mem_pools/tx_pool/memory_tx_pool.ts +153 -44
- package/src/mem_pools/tx_pool/priority.ts +1 -1
- package/src/mem_pools/tx_pool/tx_pool.ts +67 -8
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +217 -34
- package/src/msg_validators/attestation_validator/attestation_validator.ts +55 -10
- package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +66 -14
- package/src/msg_validators/msg_seen_validator/msg_seen_validator.ts +36 -0
- package/src/msg_validators/tx_validator/allowed_public_setup.ts +35 -0
- package/src/msg_validators/tx_validator/archive_cache.ts +28 -0
- package/src/msg_validators/tx_validator/block_header_validator.ts +4 -4
- package/src/msg_validators/tx_validator/data_validator.ts +81 -69
- package/src/msg_validators/tx_validator/double_spend_validator.ts +19 -17
- package/src/msg_validators/tx_validator/factory.ts +109 -0
- package/src/msg_validators/tx_validator/gas_validator.ts +134 -0
- package/src/msg_validators/tx_validator/index.ts +7 -0
- package/src/msg_validators/tx_validator/metadata_validator.ts +58 -21
- package/src/msg_validators/tx_validator/phases_validator.ts +114 -0
- package/src/msg_validators/tx_validator/test_utils.ts +43 -0
- package/src/msg_validators/tx_validator/timestamp_validator.ts +46 -0
- package/src/msg_validators/tx_validator/tx_permitted_validator.ts +17 -0
- package/src/msg_validators/tx_validator/tx_proof_validator.ts +6 -5
- package/src/services/discv5/discV5_service.ts +84 -38
- package/src/services/dummy_service.ts +147 -9
- package/src/services/encoding.ts +80 -5
- package/src/services/index.ts +4 -0
- package/src/services/libp2p/instrumentation.ts +158 -0
- package/src/services/libp2p/libp2p_service.ts +646 -263
- package/src/services/peer-manager/interface.ts +29 -0
- package/src/services/peer-manager/metrics.ts +16 -1
- package/src/services/peer-manager/peer_manager.ts +652 -78
- package/src/services/reqresp/config.ts +26 -9
- package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +12 -6
- package/src/services/reqresp/connection-sampler/connection_sampler.ts +148 -95
- package/src/services/reqresp/index.ts +2 -0
- package/src/services/reqresp/interface.ts +91 -36
- package/src/services/reqresp/metrics.ts +4 -1
- package/src/services/reqresp/protocols/auth.ts +83 -0
- package/src/services/reqresp/protocols/block.ts +24 -3
- package/src/services/reqresp/protocols/block_txs/bitvector.ts +90 -0
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +53 -0
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +79 -0
- package/src/services/reqresp/protocols/block_txs/index.ts +3 -0
- package/src/services/reqresp/protocols/goodbye.ts +9 -7
- package/src/services/reqresp/protocols/index.ts +2 -0
- package/src/services/reqresp/protocols/status.ts +117 -5
- package/src/services/reqresp/protocols/tx.ts +35 -6
- package/src/services/reqresp/rate-limiter/rate_limiter.ts +12 -3
- package/src/services/reqresp/rate-limiter/rate_limits.ts +21 -1
- package/src/services/reqresp/reqresp.ts +387 -256
- package/src/services/reqresp/status.ts +12 -3
- package/src/services/service.ts +45 -21
- package/src/services/tx_collection/config.ts +84 -0
- package/src/services/tx_collection/fast_tx_collection.ts +340 -0
- package/src/services/tx_collection/index.ts +2 -0
- package/src/services/tx_collection/instrumentation.ts +43 -0
- package/src/services/tx_collection/slow_tx_collection.ts +232 -0
- package/src/services/tx_collection/tx_collection.ts +215 -0
- package/src/services/tx_collection/tx_collection_sink.ts +129 -0
- package/src/services/tx_collection/tx_source.ts +37 -0
- package/src/services/tx_provider.ts +216 -0
- package/src/services/tx_provider_instrumentation.ts +44 -0
- package/src/test-helpers/index.ts +1 -0
- package/src/test-helpers/make-enrs.ts +4 -5
- package/src/test-helpers/make-test-p2p-clients.ts +111 -21
- package/src/test-helpers/mock-pubsub.ts +188 -0
- package/src/test-helpers/mock-tx-helpers.ts +24 -0
- package/src/test-helpers/reqresp-nodes.ts +86 -35
- package/src/testbench/p2p_client_testbench_worker.ts +145 -22
- package/src/testbench/parse_log_file.ts +4 -4
- package/src/testbench/testbench.ts +4 -4
- package/src/testbench/worker_client_manager.ts +17 -23
- package/src/types/index.ts +2 -0
- package/src/util.ts +93 -89
- package/src/versioning.ts +11 -4
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { TypedEventEmitter } from '@aztec/foundation/types';
|
|
2
|
+
import { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
|
|
2
3
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
3
|
-
import type { TxPool } from './tx_pool.js';
|
|
4
|
+
import type { TxPool, TxPoolEvents, TxPoolOptions } from './tx_pool.js';
|
|
5
|
+
declare const InMemoryTxPool_base: new () => TypedEventEmitter<TxPoolEvents>;
|
|
4
6
|
/**
|
|
5
7
|
* In-memory implementation of the Transaction Pool.
|
|
6
8
|
*/
|
|
7
|
-
export declare class InMemoryTxPool implements TxPool {
|
|
9
|
+
export declare class InMemoryTxPool extends InMemoryTxPool_base implements TxPool {
|
|
8
10
|
private log;
|
|
9
11
|
/**
|
|
10
12
|
* Our tx pool, stored as a Map in-memory, with K: tx hash and V: the transaction.
|
|
@@ -12,36 +14,49 @@ export declare class InMemoryTxPool implements TxPool {
|
|
|
12
14
|
private txs;
|
|
13
15
|
private minedTxs;
|
|
14
16
|
private pendingTxs;
|
|
17
|
+
private deletedMinedTxHashes;
|
|
18
|
+
private blockToDeletedMinedTxHash;
|
|
15
19
|
private metrics;
|
|
16
20
|
/**
|
|
17
21
|
* Class constructor for in-memory TxPool. Initiates our transaction pool as a JS Map.
|
|
18
22
|
* @param log - A logger.
|
|
19
23
|
*/
|
|
20
24
|
constructor(telemetry?: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
|
|
21
|
-
|
|
25
|
+
private countTx;
|
|
26
|
+
isEmpty(): Promise<boolean>;
|
|
27
|
+
markAsMined(txHashes: TxHash[], blockHeader: BlockHeader): Promise<void>;
|
|
22
28
|
markMinedAsPending(txHashes: TxHash[]): Promise<void>;
|
|
23
29
|
getPendingTxHashes(): Promise<TxHash[]>;
|
|
24
30
|
getMinedTxHashes(): Promise<[TxHash, number][]>;
|
|
25
|
-
|
|
31
|
+
getPendingTxCount(): Promise<number>;
|
|
32
|
+
getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | 'deleted' | undefined>;
|
|
26
33
|
/**
|
|
27
34
|
* Checks if a transaction exists in the pool and returns it.
|
|
28
35
|
* @param txHash - The generated tx hash.
|
|
29
36
|
* @returns The transaction, if found, 'undefined' otherwise.
|
|
30
37
|
*/
|
|
31
38
|
getTxByHash(txHash: TxHash): Promise<Tx | undefined>;
|
|
39
|
+
getTxsByHash(txHashes: TxHash[]): Promise<(Tx | undefined)[]>;
|
|
40
|
+
hasTxs(txHashes: TxHash[]): Promise<boolean[]>;
|
|
41
|
+
hasTx(txHash: TxHash): Promise<boolean>;
|
|
32
42
|
getArchivedTxByHash(): Promise<Tx | undefined>;
|
|
33
43
|
/**
|
|
34
44
|
* Adds a list of transactions to the pool. Duplicates are ignored.
|
|
35
45
|
* @param txs - An array of txs to be added to the pool.
|
|
36
46
|
* @returns Empty promise.
|
|
37
47
|
*/
|
|
38
|
-
addTxs(txs: Tx[]
|
|
48
|
+
addTxs(txs: Tx[], opts?: {
|
|
49
|
+
source?: string;
|
|
50
|
+
}): Promise<number>;
|
|
39
51
|
/**
|
|
40
52
|
* Deletes transactions from the pool. Tx hashes that are not present are ignored.
|
|
41
|
-
*
|
|
42
|
-
* @
|
|
53
|
+
* Mined transactions are soft-deleted with a timestamp, pending transactions are permanently deleted.
|
|
54
|
+
* @param txHashes - An array of tx hashes to be deleted from the tx pool.
|
|
55
|
+
* @returns Empty promise.
|
|
43
56
|
*/
|
|
44
|
-
deleteTxs(txHashes: TxHash[]
|
|
57
|
+
deleteTxs(txHashes: TxHash[], opts?: {
|
|
58
|
+
permanently?: boolean;
|
|
59
|
+
}): Promise<void>;
|
|
45
60
|
/**
|
|
46
61
|
* Gets all the transactions stored in the pool.
|
|
47
62
|
* @returns Array of tx objects in the order they were added to the pool.
|
|
@@ -52,5 +67,14 @@ export declare class InMemoryTxPool implements TxPool {
|
|
|
52
67
|
* @returns An array of transaction hashes found in the tx pool.
|
|
53
68
|
*/
|
|
54
69
|
getAllTxHashes(): Promise<TxHash[]>;
|
|
70
|
+
updateConfig(_config: TxPoolOptions): void;
|
|
71
|
+
markTxsAsNonEvictable(_: TxHash[]): Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* Permanently deletes deleted mined transactions from blocks up to and including the specified block number.
|
|
74
|
+
* @param blockNumber - Block number threshold. Deleted mined txs from this block or earlier will be permanently deleted.
|
|
75
|
+
* @returns The number of transactions permanently deleted.
|
|
76
|
+
*/
|
|
77
|
+
cleanupDeletedMinedTxs(blockNumber: number): Promise<number>;
|
|
55
78
|
}
|
|
79
|
+
export {};
|
|
56
80
|
//# sourceMappingURL=memory_tx_pool.d.ts.map
|
|
@@ -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":"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;IAkB7G,OAAO,CAAC,GAAG;IAjBb;;OAEG;IACH,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,oBAAoB,CAAsB;IAClD,OAAO,CAAC,yBAAyB,CAA2B;IAE5D,OAAO,CAAC,OAAO,CAA0B;IAEzC;;;OAGG;gBAED,SAAS,GAAE,eAAsC,EACzC,GAAG,yCAA8B;IAW3C,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;IAsBxE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB/C,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAa7C,gBAAgB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAM/C,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKpC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;IAexF;;;;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;IAIxC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKtC,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;;;;;OAKG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BrF;;;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;IAIjD;;;;OAIG;IACI,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CA2BpE"}
|
|
@@ -1,36 +1,63 @@
|
|
|
1
1
|
import { createLogger } from '@aztec/foundation/log';
|
|
2
2
|
import { Tx, TxHash } from '@aztec/stdlib/tx';
|
|
3
3
|
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
4
|
+
import EventEmitter from 'node:events';
|
|
4
5
|
import { PoolInstrumentation, PoolName } from '../instrumentation.js';
|
|
5
6
|
import { getPendingTxPriority } from './priority.js';
|
|
6
7
|
/**
|
|
7
8
|
* In-memory implementation of the Transaction Pool.
|
|
8
|
-
*/ export class InMemoryTxPool {
|
|
9
|
+
*/ export class InMemoryTxPool extends EventEmitter {
|
|
9
10
|
log;
|
|
10
11
|
/**
|
|
11
12
|
* Our tx pool, stored as a Map in-memory, with K: tx hash and V: the transaction.
|
|
12
13
|
*/ txs;
|
|
13
14
|
minedTxs;
|
|
14
15
|
pendingTxs;
|
|
16
|
+
deletedMinedTxHashes;
|
|
17
|
+
blockToDeletedMinedTxHash;
|
|
15
18
|
metrics;
|
|
16
19
|
/**
|
|
17
20
|
* Class constructor for in-memory TxPool. Initiates our transaction pool as a JS Map.
|
|
18
21
|
* @param log - A logger.
|
|
19
22
|
*/ constructor(telemetry = getTelemetryClient(), log = createLogger('p2p:tx_pool')){
|
|
20
|
-
this.log = log
|
|
23
|
+
super(), this.log = log, this.countTx = ()=>{
|
|
24
|
+
return Promise.resolve({
|
|
25
|
+
itemCount: {
|
|
26
|
+
mined: this.minedTxs.size,
|
|
27
|
+
pending: this.pendingTxs.size
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
};
|
|
21
31
|
this.txs = new Map();
|
|
22
32
|
this.minedTxs = new Map();
|
|
23
33
|
this.pendingTxs = new Set();
|
|
24
|
-
this.
|
|
34
|
+
this.deletedMinedTxHashes = new Map();
|
|
35
|
+
this.blockToDeletedMinedTxHash = new Map();
|
|
36
|
+
this.metrics = new PoolInstrumentation(telemetry, PoolName.TX_POOL, this.countTx);
|
|
37
|
+
}
|
|
38
|
+
countTx;
|
|
39
|
+
isEmpty() {
|
|
40
|
+
return Promise.resolve(this.txs.size === 0);
|
|
25
41
|
}
|
|
26
|
-
markAsMined(txHashes,
|
|
42
|
+
markAsMined(txHashes, blockHeader) {
|
|
27
43
|
const keys = txHashes.map((x)=>x.toBigInt());
|
|
28
44
|
for (const key of keys){
|
|
29
|
-
this
|
|
45
|
+
// If this tx was previously soft-deleted, remove it from the deleted sets
|
|
46
|
+
if (this.deletedMinedTxHashes.has(key)) {
|
|
47
|
+
const originalBlock = this.deletedMinedTxHashes.get(key);
|
|
48
|
+
this.deletedMinedTxHashes.delete(key);
|
|
49
|
+
// Remove from block-to-hash mapping
|
|
50
|
+
const txHashesForBlock = this.blockToDeletedMinedTxHash.get(originalBlock);
|
|
51
|
+
if (txHashesForBlock) {
|
|
52
|
+
txHashesForBlock.delete(key);
|
|
53
|
+
if (txHashesForBlock.size === 0) {
|
|
54
|
+
this.blockToDeletedMinedTxHash.delete(originalBlock);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
this.minedTxs.set(key, blockHeader.globalVariables.blockNumber);
|
|
30
59
|
this.pendingTxs.delete(key);
|
|
31
60
|
}
|
|
32
|
-
this.metrics.recordRemovedObjects(txHashes.length, 'pending');
|
|
33
|
-
this.metrics.recordAddedObjects(txHashes.length, 'mined');
|
|
34
61
|
return Promise.resolve();
|
|
35
62
|
}
|
|
36
63
|
markMinedAsPending(txHashes) {
|
|
@@ -38,26 +65,23 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
38
65
|
return Promise.resolve();
|
|
39
66
|
}
|
|
40
67
|
const keys = txHashes.map((x)=>x.toBigInt());
|
|
41
|
-
let deleted = 0;
|
|
42
|
-
let added = 0;
|
|
43
68
|
for (const key of keys){
|
|
44
|
-
|
|
45
|
-
deleted++;
|
|
46
|
-
}
|
|
69
|
+
this.minedTxs.delete(key);
|
|
47
70
|
// only add back to the pending set if we have the tx object
|
|
48
71
|
if (this.txs.has(key)) {
|
|
49
|
-
added++;
|
|
50
72
|
this.pendingTxs.add(key);
|
|
51
73
|
}
|
|
52
74
|
}
|
|
53
|
-
this.metrics.recordRemovedObjects(deleted, 'mined');
|
|
54
|
-
this.metrics.recordAddedObjects(added, 'pending');
|
|
55
75
|
return Promise.resolve();
|
|
56
76
|
}
|
|
57
77
|
async getPendingTxHashes() {
|
|
58
78
|
const txs = (await this.getAllTxs()).sort((tx1, tx2)=>-getPendingTxPriority(tx1).localeCompare(getPendingTxPriority(tx2)));
|
|
59
79
|
const txHashes = await Promise.all(txs.map((tx)=>tx.getTxHash()));
|
|
60
|
-
|
|
80
|
+
// No need to check deleted since pending txs are never soft-deleted
|
|
81
|
+
return txHashes.filter((txHash)=>{
|
|
82
|
+
const key = txHash.toBigInt();
|
|
83
|
+
return this.pendingTxs.has(key);
|
|
84
|
+
});
|
|
61
85
|
}
|
|
62
86
|
getMinedTxHashes() {
|
|
63
87
|
return Promise.resolve(Array.from(this.minedTxs.entries()).map(([txHash, blockNumber])=>[
|
|
@@ -65,14 +89,21 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
65
89
|
blockNumber
|
|
66
90
|
]));
|
|
67
91
|
}
|
|
92
|
+
getPendingTxCount() {
|
|
93
|
+
// Soft-deleted transactions are always mined, never pending
|
|
94
|
+
return Promise.resolve(this.pendingTxs.size);
|
|
95
|
+
}
|
|
68
96
|
getTxStatus(txHash) {
|
|
69
97
|
const key = txHash.toBigInt();
|
|
70
|
-
if (this.
|
|
71
|
-
return Promise.resolve('
|
|
98
|
+
if (this.deletedMinedTxHashes.has(key)) {
|
|
99
|
+
return Promise.resolve('deleted');
|
|
72
100
|
}
|
|
73
101
|
if (this.minedTxs.has(key)) {
|
|
74
102
|
return Promise.resolve('mined');
|
|
75
103
|
}
|
|
104
|
+
if (this.pendingTxs.has(key)) {
|
|
105
|
+
return Promise.resolve('pending');
|
|
106
|
+
}
|
|
76
107
|
return Promise.resolve(undefined);
|
|
77
108
|
}
|
|
78
109
|
/**
|
|
@@ -83,6 +114,18 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
83
114
|
const result = this.txs.get(txHash.toBigInt());
|
|
84
115
|
return Promise.resolve(result === undefined ? undefined : Tx.clone(result));
|
|
85
116
|
}
|
|
117
|
+
getTxsByHash(txHashes) {
|
|
118
|
+
return Promise.all(txHashes.map((txHash)=>this.getTxByHash(txHash)));
|
|
119
|
+
}
|
|
120
|
+
hasTxs(txHashes) {
|
|
121
|
+
return Promise.resolve(txHashes.map((txHash)=>this.txs.has(txHash.toBigInt())));
|
|
122
|
+
}
|
|
123
|
+
async hasTx(txHash) {
|
|
124
|
+
const result = await this.hasTxs([
|
|
125
|
+
txHash
|
|
126
|
+
]);
|
|
127
|
+
return result[0];
|
|
128
|
+
}
|
|
86
129
|
getArchivedTxByHash() {
|
|
87
130
|
return Promise.resolve(undefined);
|
|
88
131
|
}
|
|
@@ -90,40 +133,62 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
90
133
|
* Adds a list of transactions to the pool. Duplicates are ignored.
|
|
91
134
|
* @param txs - An array of txs to be added to the pool.
|
|
92
135
|
* @returns Empty promise.
|
|
93
|
-
*/
|
|
94
|
-
|
|
136
|
+
*/ addTxs(txs, opts = {}) {
|
|
137
|
+
const added = [];
|
|
95
138
|
for (const tx of txs){
|
|
96
|
-
const txHash =
|
|
139
|
+
const txHash = tx.getTxHash();
|
|
97
140
|
this.log.verbose(`Adding tx ${txHash.toString()} to pool`, {
|
|
98
141
|
eventName: 'tx-added-to-pool',
|
|
99
|
-
...
|
|
142
|
+
...tx.getStats()
|
|
100
143
|
});
|
|
101
144
|
const key = txHash.toBigInt();
|
|
102
|
-
this.txs.
|
|
145
|
+
if (!this.txs.has(key)) {
|
|
146
|
+
added.push(tx);
|
|
147
|
+
this.txs.set(key, tx);
|
|
148
|
+
}
|
|
103
149
|
if (!this.minedTxs.has(key)) {
|
|
104
|
-
pending++;
|
|
105
150
|
this.metrics.recordSize(tx);
|
|
106
151
|
this.pendingTxs.add(key);
|
|
107
152
|
}
|
|
108
153
|
}
|
|
109
|
-
|
|
110
|
-
|
|
154
|
+
if (added.length > 0) {
|
|
155
|
+
this.emit('txs-added', {
|
|
156
|
+
...opts,
|
|
157
|
+
txs: added
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
return Promise.resolve(added.length);
|
|
111
161
|
}
|
|
112
162
|
/**
|
|
113
163
|
* Deletes transactions from the pool. Tx hashes that are not present are ignored.
|
|
114
|
-
*
|
|
115
|
-
* @
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
let deletedPending = 0;
|
|
164
|
+
* Mined transactions are soft-deleted with a timestamp, pending transactions are permanently deleted.
|
|
165
|
+
* @param txHashes - An array of tx hashes to be deleted from the tx pool.
|
|
166
|
+
* @returns Empty promise.
|
|
167
|
+
*/ deleteTxs(txHashes, opts) {
|
|
119
168
|
for (const txHash of txHashes){
|
|
120
169
|
const key = txHash.toBigInt();
|
|
121
|
-
this.txs.
|
|
122
|
-
|
|
123
|
-
|
|
170
|
+
if (this.txs.has(key)) {
|
|
171
|
+
if (this.minedTxs.has(key)) {
|
|
172
|
+
const blockNumber = this.minedTxs.get(key);
|
|
173
|
+
this.minedTxs.delete(key);
|
|
174
|
+
// Soft-delete mined transactions: remove from mined set but keep in storage
|
|
175
|
+
if (opts?.permanently) {
|
|
176
|
+
// Permanently delete mined transactions if specified
|
|
177
|
+
this.txs.delete(key);
|
|
178
|
+
} else {
|
|
179
|
+
this.deletedMinedTxHashes.set(key, blockNumber);
|
|
180
|
+
if (!this.blockToDeletedMinedTxHash.has(blockNumber)) {
|
|
181
|
+
this.blockToDeletedMinedTxHash.set(blockNumber, new Set());
|
|
182
|
+
}
|
|
183
|
+
this.blockToDeletedMinedTxHash.get(blockNumber).add(key);
|
|
184
|
+
}
|
|
185
|
+
} else {
|
|
186
|
+
// Permanently delete pending transactions
|
|
187
|
+
this.txs.delete(key);
|
|
188
|
+
this.pendingTxs.delete(key);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
124
191
|
}
|
|
125
|
-
this.metrics.recordRemovedObjects(deletedPending, 'pending');
|
|
126
|
-
this.metrics.recordRemovedObjects(deletedMined, 'mined');
|
|
127
192
|
return Promise.resolve();
|
|
128
193
|
}
|
|
129
194
|
/**
|
|
@@ -138,4 +203,36 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
138
203
|
*/ getAllTxHashes() {
|
|
139
204
|
return Promise.resolve(Array.from(this.txs.keys()).map((x)=>TxHash.fromBigInt(x)));
|
|
140
205
|
}
|
|
206
|
+
updateConfig(_config) {}
|
|
207
|
+
markTxsAsNonEvictable(_) {
|
|
208
|
+
return Promise.resolve();
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Permanently deletes deleted mined transactions from blocks up to and including the specified block number.
|
|
212
|
+
* @param blockNumber - Block number threshold. Deleted mined txs from this block or earlier will be permanently deleted.
|
|
213
|
+
* @returns The number of transactions permanently deleted.
|
|
214
|
+
*/ cleanupDeletedMinedTxs(blockNumber) {
|
|
215
|
+
let deletedCount = 0;
|
|
216
|
+
const blocksToDelete = [];
|
|
217
|
+
// Find all blocks up to the specified block number
|
|
218
|
+
for (const [block, txHashes] of this.blockToDeletedMinedTxHash.entries()){
|
|
219
|
+
if (block <= blockNumber) {
|
|
220
|
+
// Permanently delete all transactions from this block
|
|
221
|
+
for (const txHash of txHashes){
|
|
222
|
+
this.txs.delete(txHash);
|
|
223
|
+
this.deletedMinedTxHashes.delete(txHash);
|
|
224
|
+
deletedCount++;
|
|
225
|
+
}
|
|
226
|
+
blocksToDelete.push(block);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
// Clean up block-to-hash mapping
|
|
230
|
+
for (const block of blocksToDelete){
|
|
231
|
+
this.blockToDeletedMinedTxHash.delete(block);
|
|
232
|
+
}
|
|
233
|
+
if (deletedCount > 0) {
|
|
234
|
+
this.log.debug(`Permanently deleted ${deletedCount} deleted mined txs from blocks up to ${blockNumber}`);
|
|
235
|
+
}
|
|
236
|
+
return Promise.resolve(deletedCount);
|
|
237
|
+
}
|
|
141
238
|
}
|
|
@@ -5,6 +5,6 @@ import { Buffer32 } from '@aztec/foundation/buffer';
|
|
|
5
5
|
* We currently use the sum of the priority fees for the tx for this value, represented as hex.
|
|
6
6
|
*/ export function getPendingTxPriority(tx) {
|
|
7
7
|
const priorityFees = tx.getGasSettings().maxPriorityFeesPerGas;
|
|
8
|
-
const totalFees = priorityFees.feePerDaGas
|
|
8
|
+
const totalFees = priorityFees.feePerDaGas + priorityFees.feePerL2Gas;
|
|
9
9
|
return Buffer32.fromBigInt(totalFees).toString();
|
|
10
10
|
}
|
|
@@ -1,19 +1,52 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { TypedEventEmitter } from '@aztec/foundation/types';
|
|
2
|
+
import type { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
|
|
3
|
+
export type TxPoolOptions = {
|
|
4
|
+
maxTxPoolSize?: number;
|
|
5
|
+
txPoolOverflowFactor?: number;
|
|
6
|
+
archivedTxLimit?: number;
|
|
7
|
+
};
|
|
8
|
+
export type TxPoolEvents = {
|
|
9
|
+
['txs-added']: (args: {
|
|
10
|
+
txs: Tx[];
|
|
11
|
+
source?: string;
|
|
12
|
+
}) => void | Promise<void>;
|
|
13
|
+
};
|
|
2
14
|
/**
|
|
3
15
|
* Interface of a transaction pool. The pool includes tx requests and is kept up-to-date by a P2P client.
|
|
4
16
|
*/
|
|
5
|
-
export interface TxPool {
|
|
17
|
+
export interface TxPool extends TypedEventEmitter<TxPoolEvents> {
|
|
6
18
|
/**
|
|
7
19
|
* Adds a list of transactions to the pool. Duplicates are ignored.
|
|
8
20
|
* @param txs - An array of txs to be added to the pool.
|
|
21
|
+
* @returns The number of txs added to the pool. Note if the transaction already exists, it will not be added again.
|
|
9
22
|
*/
|
|
10
|
-
addTxs(txs: Tx[]
|
|
23
|
+
addTxs(txs: Tx[], opts?: {
|
|
24
|
+
source?: string;
|
|
25
|
+
}): Promise<number>;
|
|
11
26
|
/**
|
|
12
27
|
* Checks if a transaction exists in the pool and returns it.
|
|
13
28
|
* @param txHash - The hash of the transaction, used as an ID.
|
|
14
29
|
* @returns The transaction, if found, 'undefined' otherwise.
|
|
15
30
|
*/
|
|
16
31
|
getTxByHash(txHash: TxHash): Promise<Tx | undefined>;
|
|
32
|
+
/**
|
|
33
|
+
* Checks if transactions exist in the pool and returns them.
|
|
34
|
+
* @param txHashes - The hashes of the transactions
|
|
35
|
+
* @returns The transactions, if found, 'undefined' otherwise.
|
|
36
|
+
*/
|
|
37
|
+
getTxsByHash(txHashes: TxHash[]): Promise<(Tx | undefined)[]>;
|
|
38
|
+
/**
|
|
39
|
+
* Checks if transactions exist in the pool
|
|
40
|
+
* @param txHashes - The hashes of the transactions to check for
|
|
41
|
+
* @returns True or False for each tx hash
|
|
42
|
+
*/
|
|
43
|
+
hasTxs(txHashes: TxHash[]): Promise<boolean[]>;
|
|
44
|
+
/**
|
|
45
|
+
* Checks if a transaction exists in the pool
|
|
46
|
+
* @param txHash - The hash of the transaction to check for
|
|
47
|
+
* @returns True if the transaction exists, false otherwise
|
|
48
|
+
*/
|
|
49
|
+
hasTx(txHash: TxHash): Promise<boolean>;
|
|
17
50
|
/**
|
|
18
51
|
* Checks if an archived transaction exists in the pool and returns it.
|
|
19
52
|
* @param txHash - The hash of the transaction, used as an ID.
|
|
@@ -23,8 +56,9 @@ export interface TxPool {
|
|
|
23
56
|
/**
|
|
24
57
|
* Marks the set of txs as mined, as opposed to pending.
|
|
25
58
|
* @param txHashes - Hashes of the txs to flag as mined.
|
|
59
|
+
* @param blockHeader - The header of the mined block.
|
|
26
60
|
*/
|
|
27
|
-
markAsMined(txHashes: TxHash[],
|
|
61
|
+
markAsMined(txHashes: TxHash[], blockHeader: BlockHeader): Promise<void>;
|
|
28
62
|
/**
|
|
29
63
|
* Moves mined txs back to the pending set in the case of a reorg.
|
|
30
64
|
* Note: txs not known by this peer will be ignored.
|
|
@@ -35,7 +69,9 @@ export interface TxPool {
|
|
|
35
69
|
* Deletes transactions from the pool. Tx hashes that are not present are ignored.
|
|
36
70
|
* @param txHashes - An array of tx hashes to be removed from the tx pool.
|
|
37
71
|
*/
|
|
38
|
-
deleteTxs(txHashes: TxHash[]
|
|
72
|
+
deleteTxs(txHashes: TxHash[], opts?: {
|
|
73
|
+
permanently?: boolean;
|
|
74
|
+
}): Promise<void>;
|
|
39
75
|
/**
|
|
40
76
|
* Gets all transactions currently in the tx pool.
|
|
41
77
|
* @returns An array of transaction objects found in the tx pool.
|
|
@@ -51,16 +87,36 @@ export interface TxPool {
|
|
|
51
87
|
* @returns An array of pending transaction hashes found in the tx pool.
|
|
52
88
|
*/
|
|
53
89
|
getPendingTxHashes(): Promise<TxHash[]>;
|
|
90
|
+
/** Returns the number of pending txs in the pool. */
|
|
91
|
+
getPendingTxCount(): Promise<number>;
|
|
54
92
|
/**
|
|
55
93
|
* Gets the hashes of mined transactions currently in the tx pool.
|
|
56
94
|
* @returns An array of mined transaction hashes found in the tx pool.
|
|
57
95
|
*/
|
|
58
96
|
getMinedTxHashes(): Promise<[tx: TxHash, blockNumber: number][]>;
|
|
59
97
|
/**
|
|
60
|
-
* Returns whether the given tx hash is flagged as pending or
|
|
98
|
+
* Returns whether the given tx hash is flagged as pending, mined, or deleted.
|
|
61
99
|
* @param txHash - Hash of the tx to query.
|
|
62
|
-
* @returns Pending or
|
|
100
|
+
* @returns Pending, mined, or deleted depending on its status, or undefined if not found.
|
|
101
|
+
*/
|
|
102
|
+
getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | 'deleted' | undefined>;
|
|
103
|
+
/**
|
|
104
|
+
* Configure the maximum size of the tx pool
|
|
105
|
+
* @param maxSizeBytes - The maximum size in bytes of the mempool. Set to undefined to disable it
|
|
106
|
+
*/
|
|
107
|
+
updateConfig(config: TxPoolOptions): void;
|
|
108
|
+
/** Returns whether the pool is empty. */
|
|
109
|
+
isEmpty(): Promise<boolean>;
|
|
110
|
+
/**
|
|
111
|
+
* Marks transactions as non-evictible in the pool.
|
|
112
|
+
* @param txHashes - Hashes of the transactions to mark as non-evictible.
|
|
113
|
+
*/
|
|
114
|
+
markTxsAsNonEvictable(txHashes: TxHash[]): Promise<void>;
|
|
115
|
+
/**
|
|
116
|
+
* Permanently deletes deleted mined transactions from blocks up to and including the specified block number.
|
|
117
|
+
* @param blockNumber - Block number threshold. Deleted mined txs from this block or earlier will be permanently deleted.
|
|
118
|
+
* @returns The number of transactions permanently deleted.
|
|
63
119
|
*/
|
|
64
|
-
|
|
120
|
+
cleanupDeletedMinedTxs(blockNumber: number): Promise<number>;
|
|
65
121
|
}
|
|
66
122
|
//# sourceMappingURL=tx_pool.d.ts.map
|
|
@@ -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,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"tx_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/tx_pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,
|
|
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,QA6SrD"}
|