@aztec/p2p 0.0.1-commit.fcb71a6 → 0.0.1-commit.ff7989d6c
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 +4 -3
- package/dest/bootstrap/bootstrap.d.ts.map +1 -1
- package/dest/bootstrap/bootstrap.js +4 -4
- package/dest/client/factory.d.ts +7 -6
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +53 -14
- package/dest/client/interface.d.ts +58 -25
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +46 -51
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +601 -259
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +2 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +1 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +305 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +73 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +1 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +8 -0
- package/dest/config.d.ts +35 -7
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +23 -9
- package/dest/errors/tx-pool.error.d.ts +8 -0
- package/dest/errors/tx-pool.error.d.ts.map +1 -0
- package/dest/errors/tx-pool.error.js +9 -0
- package/dest/index.d.ts +2 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -0
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +111 -76
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.js +441 -3
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
- 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 +527 -287
- package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
- package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/index.js +1 -2
- package/dest/mem_pools/attestation_pool/mocks.d.ts +9 -6
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +16 -12
- package/dest/mem_pools/index.d.ts +3 -2
- package/dest/mem_pools/index.d.ts.map +1 -1
- package/dest/mem_pools/index.js +1 -1
- package/dest/mem_pools/instrumentation.d.ts +1 -1
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +5 -14
- package/dest/mem_pools/interface.d.ts +5 -5
- package/dest/mem_pools/interface.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +15 -10
- 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 +91 -50
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +19 -5
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +59 -3
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +79 -5
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +47 -0
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +16 -0
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +122 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +2 -2
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +3 -3
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +4 -4
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +2 -0
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +2 -2
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
- package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
- package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
- package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
- package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +93 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +95 -0
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +174 -0
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +73 -0
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
- package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
- package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/index.js +5 -0
- package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
- package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +211 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.js +9 -0
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +97 -0
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_metadata.js +152 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +355 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +60 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +161 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +77 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +896 -0
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +4 -4
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +51 -18
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +7 -7
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +22 -13
- package/dest/msg_validators/clock_tolerance.d.ts +21 -0
- package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
- package/dest/msg_validators/clock_tolerance.js +37 -0
- package/dest/msg_validators/index.d.ts +2 -2
- package/dest/msg_validators/index.d.ts.map +1 -1
- package/dest/msg_validators/index.js +1 -1
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +9 -0
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/block_proposal_validator.js +6 -0
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +9 -0
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +6 -0
- package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
- package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/index.js +3 -0
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -0
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/proposal_validator.js +104 -0
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +23 -0
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +212 -0
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +3 -3
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
- package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts +20 -6
- 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 -3
- package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +4 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -4
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.js +7 -6
- package/dest/msg_validators/tx_validator/factory.d.ts +8 -3
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/factory.js +21 -11
- package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
- package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/fee_payer_balance.js +20 -0
- package/dest/msg_validators/tx_validator/gas_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/gas_validator.js +11 -16
- 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 -2
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.js +2 -2
- package/dest/msg_validators/tx_validator/phases_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/phases_validator.js +3 -3
- package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
- package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/size_validator.js +23 -0
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +22 -5
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/timestamp_validator.js +8 -8
- package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
- package/dest/services/data_store.d.ts +1 -1
- package/dest/services/data_store.d.ts.map +1 -1
- package/dest/services/data_store.js +10 -6
- package/dest/services/discv5/discV5_service.js +1 -1
- package/dest/services/dummy_service.d.ts +28 -3
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +51 -0
- package/dest/services/encoding.d.ts +2 -2
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +9 -7
- package/dest/services/gossipsub/index.d.ts +3 -0
- package/dest/services/gossipsub/index.d.ts.map +1 -0
- package/dest/services/gossipsub/index.js +2 -0
- package/dest/services/gossipsub/scoring.d.ts +21 -3
- package/dest/services/gossipsub/scoring.d.ts.map +1 -1
- package/dest/services/gossipsub/scoring.js +24 -7
- package/dest/services/gossipsub/topic_score_params.d.ts +173 -0
- package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
- package/dest/services/gossipsub/topic_score_params.js +346 -0
- package/dest/services/index.d.ts +2 -1
- package/dest/services/index.d.ts.map +1 -1
- package/dest/services/index.js +1 -0
- package/dest/services/libp2p/instrumentation.d.ts +1 -1
- package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
- package/dest/services/libp2p/instrumentation.js +30 -72
- package/dest/services/libp2p/libp2p_service.d.ts +106 -33
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +984 -317
- package/dest/services/peer-manager/metrics.d.ts +2 -2
- package/dest/services/peer-manager/metrics.d.ts.map +1 -1
- package/dest/services/peer-manager/metrics.js +21 -26
- package/dest/services/peer-manager/peer_manager.d.ts +2 -2
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +0 -10
- package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
- package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_scoring.js +32 -6
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +48 -0
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +562 -0
- package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
- package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts +46 -0
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +34 -0
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/missing_txs.js +130 -0
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +54 -0
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/peer_collection.js +139 -0
- package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
- package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +22 -3
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +63 -4
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
- package/dest/services/reqresp/constants.d.ts +12 -0
- package/dest/services/reqresp/constants.d.ts.map +1 -0
- package/dest/services/reqresp/constants.js +7 -0
- package/dest/services/reqresp/interface.d.ts +12 -1
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +15 -1
- package/dest/services/reqresp/metrics.d.ts +6 -5
- package/dest/services/reqresp/metrics.d.ts.map +1 -1
- package/dest/services/reqresp/metrics.js +17 -21
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/bitvector.js +12 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +27 -9
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +29 -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 +59 -13
- package/dest/services/reqresp/protocols/status.d.ts +1 -1
- package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/status.js +4 -1
- package/dest/services/reqresp/protocols/tx.d.ts +7 -1
- package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/tx.js +20 -0
- package/dest/services/reqresp/reqresp.d.ts +6 -1
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +471 -50
- package/dest/services/service.d.ts +55 -3
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +22 -1
- package/dest/services/tx_collection/config.d.ts.map +1 -1
- package/dest/services/tx_collection/config.js +55 -1
- package/dest/services/tx_collection/fast_tx_collection.d.ts +7 -4
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/fast_tx_collection.js +71 -44
- package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
- package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
- package/dest/services/tx_collection/file_store_tx_source.d.ts +37 -0
- package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
- package/dest/services/tx_collection/file_store_tx_source.js +90 -0
- package/dest/services/tx_collection/index.d.ts +3 -1
- package/dest/services/tx_collection/index.d.ts.map +1 -1
- package/dest/services/tx_collection/index.js +2 -0
- 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/instrumentation.js +11 -13
- package/dest/services/tx_collection/missing_txs_tracker.d.ts +32 -0
- package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +1 -0
- package/dest/services/tx_collection/missing_txs_tracker.js +27 -0
- package/dest/services/tx_collection/proposal_tx_collector.d.ts +49 -0
- package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
- package/dest/services/tx_collection/proposal_tx_collector.js +50 -0
- package/dest/services/tx_collection/slow_tx_collection.d.ts +9 -5
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/slow_tx_collection.js +60 -26
- package/dest/services/tx_collection/tx_collection.d.ts +29 -16
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection.js +79 -7
- package/dest/services/tx_collection/tx_collection_sink.d.ts +18 -8
- package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection_sink.js +26 -29
- package/dest/services/tx_collection/tx_source.d.ts +8 -3
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_source.js +19 -2
- package/dest/services/tx_file_store/config.d.ts +16 -0
- package/dest/services/tx_file_store/config.d.ts.map +1 -0
- package/dest/services/tx_file_store/config.js +22 -0
- package/dest/services/tx_file_store/index.d.ts +4 -0
- package/dest/services/tx_file_store/index.d.ts.map +1 -0
- package/dest/services/tx_file_store/index.js +3 -0
- package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
- package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
- package/dest/services/tx_file_store/instrumentation.js +29 -0
- package/dest/services/tx_file_store/tx_file_store.d.ts +48 -0
- package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
- package/dest/services/tx_file_store/tx_file_store.js +152 -0
- package/dest/services/tx_provider.d.ts +5 -5
- package/dest/services/tx_provider.d.ts.map +1 -1
- package/dest/services/tx_provider.js +5 -4
- package/dest/services/tx_provider_instrumentation.d.ts +1 -1
- package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
- package/dest/services/tx_provider_instrumentation.js +7 -20
- package/dest/test-helpers/index.d.ts +3 -1
- package/dest/test-helpers/index.d.ts.map +1 -1
- package/dest/test-helpers/index.js +2 -0
- package/dest/test-helpers/make-test-p2p-clients.d.ts +3 -3
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.d.ts +29 -2
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.js +103 -2
- package/dest/test-helpers/reqresp-nodes.d.ts +1 -1
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +2 -1
- package/dest/test-helpers/test_tx_provider.d.ts +40 -0
- package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
- package/dest/test-helpers/test_tx_provider.js +41 -0
- package/dest/test-helpers/testbench-utils.d.ts +163 -0
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
- package/dest/test-helpers/testbench-utils.js +366 -0
- package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
- package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +221 -127
- package/dest/testbench/worker_client_manager.d.ts +51 -6
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +226 -39
- package/dest/util.d.ts +2 -2
- package/dest/util.d.ts.map +1 -1
- package/package.json +16 -16
- package/src/bootstrap/bootstrap.ts +7 -4
- package/src/client/factory.ts +96 -24
- package/src/client/interface.ts +76 -25
- package/src/client/p2p_client.ts +269 -290
- package/src/client/test/tx_proposal_collector/README.md +227 -0
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +346 -0
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
- package/src/config.ts +49 -13
- package/src/errors/tx-pool.error.ts +12 -0
- package/src/index.ts +1 -0
- package/src/mem_pools/attestation_pool/attestation_pool.ts +510 -78
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +612 -320
- package/src/mem_pools/attestation_pool/index.ts +9 -2
- package/src/mem_pools/attestation_pool/mocks.ts +20 -13
- package/src/mem_pools/index.ts +4 -1
- package/src/mem_pools/instrumentation.ts +10 -18
- package/src/mem_pools/interface.ts +4 -4
- package/src/mem_pools/tx_pool/README.md +29 -14
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +130 -75
- package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +66 -5
- package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +119 -4
- package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +162 -0
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +3 -3
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +4 -2
- package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
- package/src/mem_pools/tx_pool_v2/README.md +275 -0
- package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
- package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
- package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
- package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +121 -0
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +122 -0
- package/src/mem_pools/tx_pool_v2/eviction/index.ts +27 -0
- package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +209 -0
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +90 -0
- package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +31 -0
- package/src/mem_pools/tx_pool_v2/index.ts +12 -0
- package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
- package/src/mem_pools/tx_pool_v2/interfaces.ts +242 -0
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +242 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +444 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +223 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1069 -0
- package/src/msg_validators/attestation_validator/attestation_validator.ts +36 -21
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +21 -18
- package/src/msg_validators/clock_tolerance.ts +51 -0
- package/src/msg_validators/index.ts +1 -1
- package/src/msg_validators/proposal_validator/block_proposal_validator.ts +10 -0
- package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +13 -0
- package/src/msg_validators/proposal_validator/index.ts +3 -0
- package/src/msg_validators/proposal_validator/proposal_validator.ts +92 -0
- package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +230 -0
- package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +2 -2
- package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
- package/src/msg_validators/tx_validator/block_header_validator.ts +21 -8
- package/src/msg_validators/tx_validator/data_validator.ts +18 -6
- package/src/msg_validators/tx_validator/double_spend_validator.ts +15 -9
- package/src/msg_validators/tx_validator/factory.ts +64 -23
- package/src/msg_validators/tx_validator/fee_payer_balance.ts +40 -0
- package/src/msg_validators/tx_validator/gas_validator.ts +17 -28
- package/src/msg_validators/tx_validator/index.ts +1 -0
- package/src/msg_validators/tx_validator/metadata_validator.ts +18 -7
- package/src/msg_validators/tx_validator/phases_validator.ts +5 -3
- package/src/msg_validators/tx_validator/size_validator.ts +22 -0
- package/src/msg_validators/tx_validator/timestamp_validator.ts +29 -19
- package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
- package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
- package/src/services/data_store.ts +10 -7
- package/src/services/discv5/discV5_service.ts +1 -1
- package/src/services/dummy_service.ts +68 -1
- package/src/services/encoding.ts +8 -6
- package/src/services/gossipsub/README.md +641 -0
- package/src/services/gossipsub/index.ts +2 -0
- package/src/services/gossipsub/scoring.ts +29 -5
- package/src/services/gossipsub/topic_score_params.ts +487 -0
- package/src/services/index.ts +1 -0
- package/src/services/libp2p/instrumentation.ts +32 -73
- package/src/services/libp2p/libp2p_service.ts +651 -301
- package/src/services/peer-manager/metrics.ts +22 -26
- package/src/services/peer-manager/peer_manager.ts +1 -2
- package/src/services/peer-manager/peer_scoring.ts +28 -4
- package/src/services/reqresp/batch-tx-requester/README.md +305 -0
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +706 -0
- package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
- package/src/services/reqresp/batch-tx-requester/interface.ts +53 -0
- package/src/services/reqresp/batch-tx-requester/missing_txs.ts +161 -0
- package/src/services/reqresp/batch-tx-requester/peer_collection.ts +205 -0
- package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
- package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +65 -4
- package/src/services/reqresp/connection-sampler/connection_sampler.ts +19 -1
- package/src/services/reqresp/constants.ts +14 -0
- package/src/services/reqresp/interface.ts +29 -1
- package/src/services/reqresp/metrics.ts +36 -27
- package/src/services/reqresp/protocols/block_txs/bitvector.ts +16 -0
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +35 -12
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +74 -9
- package/src/services/reqresp/protocols/status.ts +7 -4
- package/src/services/reqresp/protocols/tx.ts +22 -0
- package/src/services/reqresp/reqresp.ts +79 -22
- package/src/services/service.ts +72 -4
- package/src/services/tx_collection/config.ts +83 -1
- package/src/services/tx_collection/fast_tx_collection.ts +93 -47
- package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
- package/src/services/tx_collection/file_store_tx_source.ts +117 -0
- package/src/services/tx_collection/index.ts +6 -0
- package/src/services/tx_collection/instrumentation.ts +11 -13
- package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
- package/src/services/tx_collection/proposal_tx_collector.ts +113 -0
- package/src/services/tx_collection/slow_tx_collection.ts +68 -35
- package/src/services/tx_collection/tx_collection.ts +121 -24
- package/src/services/tx_collection/tx_collection_sink.ts +30 -34
- package/src/services/tx_collection/tx_source.ts +22 -3
- package/src/services/tx_file_store/config.ts +37 -0
- package/src/services/tx_file_store/index.ts +3 -0
- package/src/services/tx_file_store/instrumentation.ts +36 -0
- package/src/services/tx_file_store/tx_file_store.ts +175 -0
- package/src/services/tx_provider.ts +10 -9
- package/src/services/tx_provider_instrumentation.ts +13 -20
- package/src/test-helpers/index.ts +2 -0
- package/src/test-helpers/make-test-p2p-clients.ts +3 -3
- package/src/test-helpers/mock-pubsub.ts +143 -3
- package/src/test-helpers/reqresp-nodes.ts +2 -1
- package/src/test-helpers/test_tx_provider.ts +64 -0
- package/src/test-helpers/testbench-utils.ts +430 -0
- package/src/testbench/p2p_client_testbench_worker.ts +348 -123
- package/src/testbench/worker_client_manager.ts +304 -42
- package/src/util.ts +7 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -37
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -213
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -30
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -219
- package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts +0 -15
- package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.js +0 -88
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -12
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +0 -82
- package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
- package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
- package/dest/msg_validators/block_proposal_validator/index.js +0 -1
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -298
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -287
- package/src/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.ts +0 -108
- package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -97
- package/src/msg_validators/block_proposal_validator/index.ts +0 -1
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZW1fcG9vbHMvYXR0ZXN0YXRpb25fcG9vbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsOEJBQThCLENBQUMifQ==
|
|
1
|
+
export { AttestationPool, type AttestationPoolApi, type TryAddResult, createTestAttestationPool, MAX_CHECKPOINT_PROPOSALS_PER_SLOT, MAX_BLOCK_PROPOSALS_PER_POSITION, MAX_ATTESTATIONS_PER_SLOT_AND_SIGNER, } from './attestation_pool.js';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZW1fcG9vbHMvYXR0ZXN0YXRpb25fcG9vbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZUFBZSxFQUNmLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssWUFBWSxFQUNqQix5QkFBeUIsRUFDekIsaUNBQWlDLEVBQ2pDLGdDQUFnQyxFQUNoQyxvQ0FBb0MsR0FDckMsTUFBTSx1QkFBdUIsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,yBAAyB,EACzB,iCAAiC,EACjC,gCAAgC,EAChC,oCAAoC,GACrC,MAAM,uBAAuB,CAAC"}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export
|
|
2
|
-
export * from './memory_attestation_pool.js';
|
|
1
|
+
export { AttestationPool, createTestAttestationPool, MAX_CHECKPOINT_PROPOSALS_PER_SLOT, MAX_BLOCK_PROPOSALS_PER_POSITION, MAX_ATTESTATIONS_PER_SLOT_AND_SIGNER } from './attestation_pool.js';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Secp256k1Signer } from '@aztec/foundation/crypto/secp256k1-signer';
|
|
2
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
|
-
import {
|
|
3
|
+
import { CheckpointAttestation } from '@aztec/stdlib/p2p';
|
|
4
|
+
import { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
4
5
|
/** Generate Account
|
|
5
6
|
*
|
|
6
7
|
* Create a random signer
|
|
@@ -229,11 +230,13 @@ export declare const generateAccount: () => {
|
|
|
229
230
|
source: string;
|
|
230
231
|
type: "local";
|
|
231
232
|
};
|
|
232
|
-
/** Mock Attestation
|
|
233
|
+
/** Mock Checkpoint Attestation
|
|
233
234
|
*
|
|
234
|
-
* @param signer A
|
|
235
|
+
* @param signer A Secp256k1Signer to create a signature
|
|
235
236
|
* @param slot The slot number the attestation is for
|
|
236
|
-
* @
|
|
237
|
+
* @param archive The archive root (defaults to random)
|
|
238
|
+
* @param header The checkpoint header (defaults to random with given slot)
|
|
239
|
+
* @returns A Checkpoint Attestation
|
|
237
240
|
*/
|
|
238
|
-
export declare const
|
|
239
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
241
|
+
export declare const mockCheckpointAttestation: (signer: Secp256k1Signer, slot?: number, archive?: Fr, header?: CheckpointHeader | undefined, feeAssetPriceModifier?: bigint) => CheckpointAttestation;
|
|
242
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja3MuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZW1fcG9vbHMvYXR0ZXN0YXRpb25fcG9vbC9tb2Nrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUNMLHFCQUFxQixFQUl0QixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSXhEOzs7O0dBSUc7QUFDSCxlQUFPLE1BQU0sZUFBZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBRzNCLENBQUM7QUFFRjs7Ozs7OztHQU9HO0FBQ0gsZUFBTyxNQUFNLHlCQUF5Qix3SkFvQnJDLENBQUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/mocks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/mocks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EACL,qBAAqB,EAItB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIxD;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAG3B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,wJAoBrC,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
3
|
+
import { CheckpointAttestation, ConsensusPayload, SignatureDomainSeparator, getHashedSignaturePayloadEthSignedMessage } from '@aztec/stdlib/p2p';
|
|
4
|
+
import { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
4
5
|
import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';
|
|
5
6
|
/** Generate Account
|
|
6
7
|
*
|
|
@@ -10,18 +11,21 @@ import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';
|
|
|
10
11
|
const privateKey = generatePrivateKey();
|
|
11
12
|
return privateKeyToAccount(privateKey);
|
|
12
13
|
};
|
|
13
|
-
/** Mock Attestation
|
|
14
|
+
/** Mock Checkpoint Attestation
|
|
14
15
|
*
|
|
15
|
-
* @param signer A
|
|
16
|
+
* @param signer A Secp256k1Signer to create a signature
|
|
16
17
|
* @param slot The slot number the attestation is for
|
|
17
|
-
* @
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
* @param archive The archive root (defaults to random)
|
|
19
|
+
* @param header The checkpoint header (defaults to random with given slot)
|
|
20
|
+
* @returns A Checkpoint Attestation
|
|
21
|
+
*/ export const mockCheckpointAttestation = (signer, slot = 0, archive = Fr.random(), header, feeAssetPriceModifier = 0n)=>{
|
|
22
|
+
header = header ?? CheckpointHeader.random({
|
|
23
|
+
slotNumber: SlotNumber(slot)
|
|
24
|
+
});
|
|
25
|
+
const payload = new ConsensusPayload(header, archive, feeAssetPriceModifier);
|
|
26
|
+
const attestationHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.checkpointAttestation);
|
|
23
27
|
const attestationSignature = signer.sign(attestationHash);
|
|
24
|
-
const proposalHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.
|
|
28
|
+
const proposalHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.checkpointProposal);
|
|
25
29
|
const proposerSignature = signer.sign(proposalHash);
|
|
26
|
-
return new
|
|
30
|
+
return new CheckpointAttestation(payload, attestationSignature, proposerSignature);
|
|
27
31
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export { type
|
|
1
|
+
export { AttestationPool, type AttestationPoolApi } from './attestation_pool/attestation_pool.js';
|
|
2
2
|
export { type MemPools } from './interface.js';
|
|
3
3
|
export { type TxPool } from './tx_pool/tx_pool.js';
|
|
4
|
-
|
|
4
|
+
export { type TxPoolV2, type TxPoolV2Config, type TxPoolV2Events, type AddTxsResult } from './tx_pool_v2/index.js';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZW1fcG9vbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLGtCQUFrQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDbEcsT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0MsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFFLEtBQUssY0FBYyxFQUFFLEtBQUssY0FBYyxFQUFFLEtBQUssWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mem_pools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mem_pools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAClG,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dest/mem_pools/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { };
|
|
1
|
+
export { AttestationPool } from './attestation_pool/attestation_pool.js';
|
|
@@ -31,4 +31,4 @@ export declare class PoolInstrumentation<PoolObject extends Gossipable> {
|
|
|
31
31
|
transactionsRemoved(hashes: Iterable<bigint> | Iterable<string>): void;
|
|
32
32
|
private observeStats;
|
|
33
33
|
}
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWVtX3Bvb2xzL2luc3RydW1lbnRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzQyxPQUFPLEVBS0wsS0FBSyxpQkFBaUIsRUFLdEIsS0FBSyxlQUFlLEVBR3JCLE1BQU0seUJBQXlCLENBQUM7QUFFakMsb0JBQVksUUFBUTtJQUNsQixPQUFPLFdBQVc7SUFDbEIsZ0JBQWdCLG9CQUFvQjtDQUNyQztBQWtDRCxNQUFNLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxPQUFPLENBQUM7SUFDNUMsU0FBUyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0NBQzVDLENBQUMsQ0FBQztBQUVIOztHQUVHO0FBQ0gscUJBQWEsbUJBQW1CLENBQUMsVUFBVSxTQUFTLFVBQVU7SUFtQjFELE9BQU8sQ0FBQyxTQUFTO0lBbEJuQix1Q0FBdUM7SUFDdkMsT0FBTyxDQUFDLGdCQUFnQixDQUFrQjtJQUMxQyxPQUFPLENBQUMsZ0JBQWdCLENBQWdCO0lBQ3hDLHFCQUFxQjtJQUNyQixPQUFPLENBQUMsVUFBVSxDQUFZO0lBQzlCLHdEQUF3RDtJQUN4RCxPQUFPLENBQUMsVUFBVSxDQUFZO0lBRTlCLE9BQU8sQ0FBQyxTQUFTLENBQWM7SUFFL0IsT0FBTyxDQUFDLGlCQUFpQixDQUFDO0lBQzFCLE9BQU8sQ0FBQyxLQUFLLENBQVE7SUFFckIsT0FBTyxDQUFDLGdCQUFnQixDQUFrRDtJQUUxRSxZQUNFLFNBQVMsRUFBRSxlQUFlLEVBQzFCLElBQUksRUFBRSxRQUFRLEVBQ04sU0FBUyxFQUFFLGlCQUFpQixFQUNwQyxPQUFPLENBQUMsRUFBRSxpQkFBaUIsRUF3QjVCO0lBRU0sVUFBVSxDQUFDLFVBQVUsRUFBRSxVQUFVLFFBRXZDO0lBRU0scUJBQXFCLENBQUMsS0FBSyxFQUFFLE1BQU0sUUFFekM7SUFFTSxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsRUFBRSxFQUFFLFFBSzFDO0lBRU0sbUJBQW1CLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBWXJFO0lBRUQsT0FBTyxDQUFDLFlBQVksQ0FZbEI7Q0FDSCJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/mem_pools/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAKL,KAAK,iBAAiB,EAKtB,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/mem_pools/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAKL,KAAK,iBAAiB,EAKtB,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAEjC,oBAAY,QAAQ;IAClB,OAAO,WAAW;IAClB,gBAAgB,oBAAoB;CACrC;AAkCD,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC;IAC5C,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C,CAAC,CAAC;AAEH;;GAEG;AACH,qBAAa,mBAAmB,CAAC,UAAU,SAAS,UAAU;IAmB1D,OAAO,CAAC,SAAS;IAlBnB,uCAAuC;IACvC,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,gBAAgB,CAAgB;IACxC,qBAAqB;IACrB,OAAO,CAAC,UAAU,CAAY;IAC9B,wDAAwD;IACxD,OAAO,CAAC,UAAU,CAAY;IAE9B,OAAO,CAAC,SAAS,CAAc;IAE/B,OAAO,CAAC,iBAAiB,CAAC;IAC1B,OAAO,CAAC,KAAK,CAAQ;IAErB,OAAO,CAAC,gBAAgB,CAAkD;IAE1E,YACE,SAAS,EAAE,eAAe,EAC1B,IAAI,EAAE,QAAQ,EACN,SAAS,EAAE,iBAAiB,EACpC,OAAO,CAAC,EAAE,iBAAiB,EAwB5B;IAEM,UAAU,CAAC,UAAU,EAAE,UAAU,QAEvC;IAEM,qBAAqB,CAAC,KAAK,EAAE,MAAM,QAEzC;IAEM,iBAAiB,CAAC,YAAY,EAAE,EAAE,EAAE,QAK1C;IAEM,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,QAYrE;IAED,OAAO,CAAC,YAAY,CAYlB;CACH"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Attributes, LmdbMetrics, Metrics } from '@aztec/telemetry-client';
|
|
1
|
+
import { Attributes, LmdbMetrics, Metrics, createUpDownCounterWithDefault } from '@aztec/telemetry-client';
|
|
2
2
|
export var PoolName = /*#__PURE__*/ function(PoolName) {
|
|
3
3
|
PoolName["TX_POOL"] = "TxPool";
|
|
4
4
|
PoolName["ATTESTATION_POOL"] = "AttestationPool";
|
|
@@ -59,22 +59,13 @@ export var PoolName = /*#__PURE__*/ function(PoolName) {
|
|
|
59
59
|
[Attributes.POOL_NAME]: name
|
|
60
60
|
};
|
|
61
61
|
const metricsLabels = getMetricsLabels(name);
|
|
62
|
-
this.objectsInMempool = this.meter.createObservableGauge(metricsLabels.objectInMempool
|
|
63
|
-
|
|
64
|
-
});
|
|
65
|
-
this.objectSize = this.meter.createHistogram(metricsLabels.objectSize, {
|
|
66
|
-
unit: 'By',
|
|
67
|
-
description: 'The size of transactions in the mempool'
|
|
68
|
-
});
|
|
62
|
+
this.objectsInMempool = this.meter.createObservableGauge(metricsLabels.objectInMempool);
|
|
63
|
+
this.objectSize = this.meter.createHistogram(metricsLabels.objectSize);
|
|
69
64
|
this.dbMetrics = new LmdbMetrics(this.meter, {
|
|
70
65
|
[Attributes.DB_DATA_TYPE]: 'tx-pool'
|
|
71
66
|
}, dbStats);
|
|
72
|
-
this.addObjectCounter = this.meter
|
|
73
|
-
|
|
74
|
-
});
|
|
75
|
-
this.minedDelay = this.meter.createHistogram(metricsLabels.itemMinedDelay, {
|
|
76
|
-
description: 'Delay between transaction added and evicted from the mempool'
|
|
77
|
-
});
|
|
67
|
+
this.addObjectCounter = createUpDownCounterWithDefault(this.meter, metricsLabels.itemsAdded);
|
|
68
|
+
this.minedDelay = this.meter.createHistogram(metricsLabels.itemMinedDelay);
|
|
78
69
|
this.meter.addBatchObservableCallback(this.observeStats, [
|
|
79
70
|
this.objectsInMempool
|
|
80
71
|
]);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { AttestationPoolApi } from './attestation_pool/attestation_pool.js';
|
|
2
|
+
import type { TxPoolV2 } from './tx_pool_v2/interfaces.js';
|
|
3
3
|
/**
|
|
4
4
|
* A interface the combines all mempools
|
|
5
5
|
*/
|
|
6
6
|
export type MemPools = {
|
|
7
|
-
txPool:
|
|
8
|
-
attestationPool:
|
|
7
|
+
txPool: TxPoolV2;
|
|
8
|
+
attestationPool: AttestationPoolApi;
|
|
9
9
|
};
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWVtX3Bvb2xzL2ludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2pGLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTNEOztHQUVHO0FBQ0gsTUFBTSxNQUFNLFFBQVEsR0FBRztJQUNyQixNQUFNLEVBQUUsUUFBUSxDQUFDO0lBQ2pCLGVBQWUsRUFBRSxrQkFBa0IsQ0FBQztDQUNyQyxDQUFDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/mem_pools/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/mem_pools/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,QAAQ,CAAC;IACjB,eAAe,EAAE,kBAAkB,CAAC;CACrC,CAAC"}
|
|
@@ -3,12 +3,12 @@ import { Fr } from '@aztec/foundation/curves/bn254';
|
|
|
3
3
|
import { type Logger } from '@aztec/foundation/log';
|
|
4
4
|
import type { TypedEventEmitter } from '@aztec/foundation/types';
|
|
5
5
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
6
|
-
import
|
|
7
|
-
import type { MerkleTreeReadOperations,
|
|
6
|
+
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
7
|
+
import type { MerkleTreeReadOperations, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
8
8
|
import { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
|
|
9
9
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
10
10
|
import { ArchiveCache } from '../../msg_validators/tx_validator/archive_cache.js';
|
|
11
|
-
import type
|
|
11
|
+
import { FeePayerTxInfo, type PendingTxInfo, type TxBlockReference, type TxPoolOperations } from './eviction/eviction_strategy.js';
|
|
12
12
|
import type { TxPool, TxPoolEvents, TxPoolOptions } from './tx_pool.js';
|
|
13
13
|
declare const AztecKVTxPool_base: new () => TypedEventEmitter<TxPoolEvents>;
|
|
14
14
|
/**
|
|
@@ -24,7 +24,7 @@ export declare class AztecKVTxPool extends AztecKVTxPool_base implements TxPool,
|
|
|
24
24
|
* @param archivedTxLimit - The number of txs to archive.
|
|
25
25
|
* @param log - A logger.
|
|
26
26
|
*/
|
|
27
|
-
constructor(store: AztecAsyncKVStore, archive: AztecAsyncKVStore, worldState:
|
|
27
|
+
constructor(store: AztecAsyncKVStore, archive: AztecAsyncKVStore, worldState: WorldStateSynchronizer, telemetry?: TelemetryClient, config?: TxPoolOptions, log?: Logger);
|
|
28
28
|
private countTxs;
|
|
29
29
|
isEmpty(): Promise<boolean>;
|
|
30
30
|
/**
|
|
@@ -54,6 +54,8 @@ export declare class AztecKVTxPool extends AztecKVTxPool_base implements TxPool,
|
|
|
54
54
|
getArchivedTxByHash(txHash: TxHash): Promise<Tx | undefined>;
|
|
55
55
|
/**
|
|
56
56
|
* Adds a list of transactions to the pool. Duplicates are ignored.
|
|
57
|
+
* Handles nullifier deduplication: if an incoming tx has a nullifier conflict with
|
|
58
|
+
* existing pending txs, it will either replace them (if higher fee) or be rejected.
|
|
57
59
|
* @param txs - An array of txs to be added to the pool.
|
|
58
60
|
* @returns count of added transactions
|
|
59
61
|
*/
|
|
@@ -70,7 +72,7 @@ export declare class AztecKVTxPool extends AztecKVTxPool_base implements TxPool,
|
|
|
70
72
|
permanently?: boolean;
|
|
71
73
|
}): Promise<void>;
|
|
72
74
|
private deleteMinedTx;
|
|
73
|
-
private
|
|
75
|
+
private deletePendingTxInDbTx;
|
|
74
76
|
/**
|
|
75
77
|
* Gets all the transactions stored in the pool.
|
|
76
78
|
* @returns Array of tx objects in the order they were added to the pool.
|
|
@@ -84,7 +86,8 @@ export declare class AztecKVTxPool extends AztecKVTxPool_base implements TxPool,
|
|
|
84
86
|
getPendingTxInfos(): Promise<PendingTxInfo[]>;
|
|
85
87
|
private getPendingTxInfo;
|
|
86
88
|
getPendingTxsReferencingBlocks(blockHashes: Fr[]): Promise<TxBlockReference[]>;
|
|
87
|
-
|
|
89
|
+
getPendingFeePayers(): Promise<AztecAddress[]>;
|
|
90
|
+
getFeePayerTxInfos(feePayer: AztecAddress): AsyncIterable<FeePayerTxInfo>;
|
|
88
91
|
getMinedTxHashes(): Promise<[TxHash, BlockNumber][]>;
|
|
89
92
|
getPendingTxCount(): Promise<number>;
|
|
90
93
|
getMinedTxCount(): Promise<number>;
|
|
@@ -104,17 +107,19 @@ export declare class AztecKVTxPool extends AztecKVTxPool_base implements TxPool,
|
|
|
104
107
|
* @returns An ArchiveCache instance
|
|
105
108
|
*/
|
|
106
109
|
protected createArchiveCache(db: MerkleTreeReadOperations): ArchiveCache;
|
|
107
|
-
private getPendingTxByHash;
|
|
108
110
|
private archiveTxs;
|
|
109
111
|
private addPendingTxIndicesInDbTx;
|
|
110
|
-
private addPendingTxIndices;
|
|
111
112
|
private removePendingTxIndicesInDbTx;
|
|
112
|
-
private removePendingTxIndices;
|
|
113
113
|
/**
|
|
114
114
|
* Returns up to `limit` lowest-priority evictable pending tx hashes without hydrating transactions.
|
|
115
115
|
* Iterates the priority index in ascending order and skips non-evictable txs.
|
|
116
116
|
*/
|
|
117
117
|
getLowestPriorityEvictable(limit: number): Promise<TxHash[]>;
|
|
118
|
+
/**
|
|
119
|
+
* Creates a PreAddPoolAccess object for use by pre-add eviction rules.
|
|
120
|
+
* Provides read-only access to pool state during addTxs transaction.
|
|
121
|
+
*/
|
|
122
|
+
private getPreAddPoolAccess;
|
|
118
123
|
}
|
|
119
124
|
export {};
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp0ZWNfa3ZfdHhfcG9vbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21lbV9wb29scy90eF9wb29sL2F6dGVjX2t2X3R4X3Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBcUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUd4RyxPQUFPLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXNCLE1BQU0seUJBQXlCLENBQUM7QUFLbkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBR2xGLE9BQU8sRUFDTCxjQUFjLEVBQ2QsS0FBSyxhQUFhLEVBRWxCLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssZ0JBQWdCLEVBQ3RCLE1BQU0saUNBQWlDLENBQUM7QUFPekMsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRXhFOztHQUVHO0FBQ0gscUJBQWEsYUFDWCxTQUFRLGtCQUNSLFlBQVcsTUFBTSxFQUFFLGdCQUFnQjs7SUFrRG5DOzs7Ozs7O09BT0c7SUFDSCxZQUNFLEtBQUss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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aztec_kv_tx_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/aztec_kv_tx_pool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAqC,MAAM,iBAAiB,CAAC;AAC5F,OAAO,
|
|
1
|
+
{"version":3,"file":"aztec_kv_tx_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/aztec_kv_tx_pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { insertIntoSortedArray } from '@aztec/foundation/array';
|
|
|
2
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import { toArray } from '@aztec/foundation/iterable';
|
|
4
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
5
|
+
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
6
|
import { ChonkProof } from '@aztec/stdlib/proofs';
|
|
6
7
|
import { Tx, TxHash } from '@aztec/stdlib/tx';
|
|
7
8
|
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
@@ -10,10 +11,12 @@ import EventEmitter from 'node:events';
|
|
|
10
11
|
import { ArchiveCache } from '../../msg_validators/tx_validator/archive_cache.js';
|
|
11
12
|
import { PoolInstrumentation, PoolName } from '../instrumentation.js';
|
|
12
13
|
import { EvictionManager } from './eviction/eviction_manager.js';
|
|
13
|
-
import {
|
|
14
|
+
import { FeePayerTxInfo } from './eviction/eviction_strategy.js';
|
|
15
|
+
import { FeePayerBalanceEvictionRule } from './eviction/fee_payer_balance_eviction_rule.js';
|
|
14
16
|
import { InvalidTxsAfterMiningRule } from './eviction/invalid_txs_after_mining_rule.js';
|
|
15
17
|
import { InvalidTxsAfterReorgRule } from './eviction/invalid_txs_after_reorg_rule.js';
|
|
16
18
|
import { LowPriorityEvictionRule } from './eviction/low_priority_eviction_rule.js';
|
|
19
|
+
import { NullifierConflictPreAddRule } from './eviction/nullifier_conflict_pre_add_rule.js';
|
|
17
20
|
import { getPendingTxPriority } from './priority.js';
|
|
18
21
|
/**
|
|
19
22
|
* KV implementation of the Transaction Pool.
|
|
@@ -26,7 +29,8 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
26
29
|
/** Map from tx hash to the block number it was originally mined in (for soft-deleted txs). */ #deletedMinedTxHashes;
|
|
27
30
|
/** MultiMap from block number to deleted mined tx hashes for efficient cleanup. */ #blockToDeletedMinedTxHash;
|
|
28
31
|
#historicalHeaderToTxHash;
|
|
29
|
-
#
|
|
32
|
+
#feePayerToBalanceEntry;
|
|
33
|
+
/** Index from nullifier to pending tx hash */ #pendingNullifierToTxHash;
|
|
30
34
|
/** In-memory set of txs that should not be evicted from the pool. */ #nonEvictableTxs;
|
|
31
35
|
/** KV store for archived txs. */ #archive;
|
|
32
36
|
/** Archived txs map for future lookup. */ #archivedTxs;
|
|
@@ -48,11 +52,12 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
48
52
|
this.#evictionManager = new EvictionManager(this);
|
|
49
53
|
this.#evictionManager.registerRule(new InvalidTxsAfterMiningRule());
|
|
50
54
|
this.#evictionManager.registerRule(new InvalidTxsAfterReorgRule(worldState));
|
|
51
|
-
this.#evictionManager.registerRule(new
|
|
55
|
+
this.#evictionManager.registerRule(new FeePayerBalanceEvictionRule(worldState));
|
|
52
56
|
this.#evictionManager.registerRule(new LowPriorityEvictionRule({
|
|
53
57
|
//NOTE: 0 effectively disables low priority eviction
|
|
54
58
|
maxPoolSize: config.maxPendingTxCount ?? 0
|
|
55
59
|
}));
|
|
60
|
+
this.#evictionManager.registerPreAddRule(new NullifierConflictPreAddRule());
|
|
56
61
|
this.updateConfig(config);
|
|
57
62
|
this.#txs = store.openMap('txs');
|
|
58
63
|
this.#minedTxHashToBlock = store.openMap('txHashToBlockMined');
|
|
@@ -61,7 +66,8 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
61
66
|
this.#blockToDeletedMinedTxHash = store.openMultiMap('blockToDeletedMinedTxHash');
|
|
62
67
|
this.#pendingTxHashToHistoricalBlockHeaderHash = store.openMap('txHistoricalBlock');
|
|
63
68
|
this.#historicalHeaderToTxHash = store.openMultiMap('historicalHeaderToPendingTxHash');
|
|
64
|
-
this.#
|
|
69
|
+
this.#feePayerToBalanceEntry = store.openMultiMap('feePayerToBalanceEntry');
|
|
70
|
+
this.#pendingNullifierToTxHash = store.openMap('pendingNullifierToTxHash');
|
|
65
71
|
this.#nonEvictableTxs = new Set();
|
|
66
72
|
this.#archivedTxs = archive.openMap('archivedTxs');
|
|
67
73
|
this.#archivedTxIndices = archive.openMap('archivedTxIndices');
|
|
@@ -104,7 +110,7 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
104
110
|
for (const hash of txHashes){
|
|
105
111
|
const key = hash.toString();
|
|
106
112
|
await this.#minedTxHashToBlock.set(key, blockHeader.globalVariables.blockNumber);
|
|
107
|
-
const tx = await this.
|
|
113
|
+
const tx = await this.getTxByHash(hash);
|
|
108
114
|
if (tx) {
|
|
109
115
|
const nullifiers = tx.data.getNonEmptyNullifiers();
|
|
110
116
|
nullifiers.forEach((nullifier)=>insertIntoSortedArray(uniqueMinedNullifiers, nullifier, Fr.cmp, false));
|
|
@@ -139,8 +145,15 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
139
145
|
for (const hash of txHashes){
|
|
140
146
|
const key = hash.toString();
|
|
141
147
|
await this.#minedTxHashToBlock.delete(key);
|
|
148
|
+
// Clear soft-delete metadata if this tx was previously soft-deleted,
|
|
149
|
+
// so cleanupDeletedMinedTxs won't later hard-delete it while it's pending
|
|
150
|
+
const deletedBlock = await this.#deletedMinedTxHashes.getAsync(key);
|
|
151
|
+
if (deletedBlock !== undefined) {
|
|
152
|
+
await this.#deletedMinedTxHashes.delete(key);
|
|
153
|
+
await this.#blockToDeletedMinedTxHash.deleteValue(deletedBlock, key);
|
|
154
|
+
}
|
|
142
155
|
// Rehydrate the tx in the in-memory pending txs mapping
|
|
143
|
-
const tx = await this.
|
|
156
|
+
const tx = await this.getTxByHash(hash);
|
|
144
157
|
if (tx) {
|
|
145
158
|
await this.addPendingTxIndicesInDbTx(tx, key);
|
|
146
159
|
}
|
|
@@ -190,6 +203,8 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
190
203
|
}
|
|
191
204
|
/**
|
|
192
205
|
* Adds a list of transactions to the pool. Duplicates are ignored.
|
|
206
|
+
* Handles nullifier deduplication: if an incoming tx has a nullifier conflict with
|
|
207
|
+
* existing pending txs, it will either replace them (if higher fee) or be rejected.
|
|
193
208
|
* @param txs - An array of txs to be added to the pool.
|
|
194
209
|
* @returns count of added transactions
|
|
195
210
|
*/ async addTxs(txs, opts = {}) {
|
|
@@ -197,38 +212,59 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
197
212
|
return Promise.resolve(0);
|
|
198
213
|
}
|
|
199
214
|
const addedTxs = [];
|
|
215
|
+
const uniqueFeePayers = [];
|
|
216
|
+
const replacedTxHashes = [];
|
|
200
217
|
const hashesAndStats = txs.map((tx)=>({
|
|
201
218
|
txHash: tx.getTxHash(),
|
|
202
219
|
txStats: tx.getStats()
|
|
203
220
|
}));
|
|
204
221
|
try {
|
|
205
222
|
await this.#store.transactionAsync(async ()=>{
|
|
206
|
-
|
|
223
|
+
for(let i = 0; i < txs.length; i++){
|
|
224
|
+
const tx = txs[i];
|
|
207
225
|
const { txHash, txStats } = hashesAndStats[i];
|
|
208
226
|
const key = txHash.toString();
|
|
209
227
|
if (await this.#txs.hasAsync(key)) {
|
|
210
|
-
this.#log.debug(`Tx ${
|
|
211
|
-
|
|
228
|
+
this.#log.debug(`Tx ${key} already exists in the pool`);
|
|
229
|
+
continue;
|
|
212
230
|
}
|
|
213
|
-
|
|
231
|
+
const poolAccess = this.getPreAddPoolAccess();
|
|
232
|
+
const { shouldReject, txHashesToEvict } = await this.#evictionManager.runPreAddRules(tx, poolAccess);
|
|
233
|
+
if (shouldReject) {
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
for (const txHashToEvict of txHashesToEvict){
|
|
237
|
+
const txToDelete = await this.getTxByHash(txHashToEvict);
|
|
238
|
+
if (txToDelete) {
|
|
239
|
+
const evictedKey = txHashToEvict.toString();
|
|
240
|
+
await this.deletePendingTxInDbTx(txToDelete, evictedKey);
|
|
241
|
+
replacedTxHashes.push(txHashToEvict);
|
|
242
|
+
this.#log.verbose(`Evicted tx ${evictedKey} due to higher-fee tx ${key}`);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
this.#log.verbose(`Adding tx ${key} to pool`, {
|
|
214
246
|
eventName: 'tx-added-to-pool',
|
|
215
247
|
...txStats
|
|
216
248
|
});
|
|
217
249
|
await this.#txs.set(key, tx.toBuffer());
|
|
218
250
|
addedTxs.push(tx);
|
|
251
|
+
insertIntoSortedArray(uniqueFeePayers, tx.data.feePayer, (a, b)=>a.toField().cmp(b.toField()), false);
|
|
219
252
|
await this.#pendingTxHashToHistoricalBlockHeaderHash.set(key, (await tx.data.constants.anchorBlockHeader.hash()).toString());
|
|
220
253
|
if (!await this.#minedTxHashToBlock.hasAsync(key)) {
|
|
221
254
|
await this.addPendingTxIndicesInDbTx(tx, key);
|
|
222
255
|
this.#metrics.recordSize(tx);
|
|
223
256
|
}
|
|
224
|
-
}
|
|
257
|
+
}
|
|
225
258
|
});
|
|
226
|
-
await this.#evictionManager.evictAfterNewTxs(addedTxs.map(({ txHash })=>txHash));
|
|
259
|
+
await this.#evictionManager.evictAfterNewTxs(addedTxs.map(({ txHash })=>txHash), uniqueFeePayers);
|
|
227
260
|
} catch (err) {
|
|
228
261
|
this.#log.warn('Unexpected error when adding txs', {
|
|
229
262
|
err
|
|
230
263
|
});
|
|
231
264
|
}
|
|
265
|
+
if (replacedTxHashes.length > 0) {
|
|
266
|
+
this.#metrics.transactionsRemoved(replacedTxHashes.map((hash)=>hash.toBigInt()));
|
|
267
|
+
}
|
|
232
268
|
if (addedTxs.length > 0) {
|
|
233
269
|
this.#metrics.transactionsAdded(addedTxs);
|
|
234
270
|
this.emit('txs-added', {
|
|
@@ -259,7 +295,7 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
259
295
|
const minedBlockNumber = await this.#minedTxHashToBlock.getAsync(key);
|
|
260
296
|
const txIsPending = minedBlockNumber === undefined;
|
|
261
297
|
if (txIsPending) {
|
|
262
|
-
await this.
|
|
298
|
+
await this.deletePendingTxInDbTx(tx, key);
|
|
263
299
|
} else {
|
|
264
300
|
await this.deleteMinedTx(key, minedBlockNumber, opts?.permanently ?? false);
|
|
265
301
|
const shouldArchiveTx = this.#archivedTxLimit && !opts?.permanently;
|
|
@@ -287,10 +323,11 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
287
323
|
await this.#deletedMinedTxHashes.set(txHash, minedBlockNumber);
|
|
288
324
|
await this.#blockToDeletedMinedTxHash.set(minedBlockNumber, txHash);
|
|
289
325
|
}
|
|
290
|
-
|
|
326
|
+
// Assumes being called within a DB transaction
|
|
327
|
+
async deletePendingTxInDbTx(tx, txHash) {
|
|
291
328
|
// We always permanently delete pending transactions
|
|
292
329
|
this.#log.trace(`Deleting pending tx ${txHash} from pool`);
|
|
293
|
-
await this.
|
|
330
|
+
await this.removePendingTxIndicesInDbTx(tx, txHash);
|
|
294
331
|
await this.#txs.delete(txHash);
|
|
295
332
|
await this.#pendingTxHashToHistoricalBlockHeaderHash.delete(txHash);
|
|
296
333
|
}
|
|
@@ -317,7 +354,7 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
317
354
|
let historicalBlockHash = await this.#pendingTxHashToHistoricalBlockHeaderHash.getAsync(txHash.toString());
|
|
318
355
|
// Not all tx might have this index created.
|
|
319
356
|
if (!historicalBlockHash) {
|
|
320
|
-
const tx = await this.
|
|
357
|
+
const tx = await this.getTxByHash(txHash);
|
|
321
358
|
if (!tx) {
|
|
322
359
|
this.#log.warn(`PendingTxInfo:tx ${txHash} not found`);
|
|
323
360
|
return undefined;
|
|
@@ -343,14 +380,20 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
343
380
|
}
|
|
344
381
|
return result;
|
|
345
382
|
}
|
|
346
|
-
async
|
|
347
|
-
const
|
|
348
|
-
for (const feePayer of
|
|
349
|
-
const
|
|
350
|
-
|
|
351
|
-
|
|
383
|
+
async getPendingFeePayers() {
|
|
384
|
+
const feePayers = [];
|
|
385
|
+
for await (const feePayer of this.#feePayerToBalanceEntry.keysAsync()){
|
|
386
|
+
const address = AztecAddress.fromString(feePayer);
|
|
387
|
+
insertIntoSortedArray(feePayers, address, (a, b)=>a.toField().cmp(b.toField()), false);
|
|
388
|
+
}
|
|
389
|
+
return feePayers;
|
|
390
|
+
}
|
|
391
|
+
async *getFeePayerTxInfos(feePayer) {
|
|
392
|
+
for await (const value of this.#feePayerToBalanceEntry.getValuesAsync(feePayer.toString())){
|
|
393
|
+
const info = FeePayerTxInfo.decode(value);
|
|
394
|
+
info.isEvictable = !this.#nonEvictableTxs.has(info.txHash.toString());
|
|
395
|
+
yield info;
|
|
352
396
|
}
|
|
353
|
-
return result;
|
|
354
397
|
}
|
|
355
398
|
async getMinedTxHashes() {
|
|
356
399
|
const vals = await toArray(this.#minedTxHashToBlock.entriesAsync());
|
|
@@ -447,21 +490,6 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
447
490
|
return new ArchiveCache(db);
|
|
448
491
|
}
|
|
449
492
|
/**
|
|
450
|
-
* Checks if a cached transaction exists in the in-memory pending tx pool and returns it.
|
|
451
|
-
* Otherwise, it checks the tx pool, updates the pending tx pool, and returns the tx.
|
|
452
|
-
* @param txHash - The generated tx hash.
|
|
453
|
-
* @returns The transaction, if found, 'undefined' otherwise.
|
|
454
|
-
*/ async getPendingTxByHash(txHash) {
|
|
455
|
-
if (typeof txHash === 'string') {
|
|
456
|
-
txHash = TxHash.fromString(txHash);
|
|
457
|
-
}
|
|
458
|
-
const tx = await this.getTxByHash(txHash);
|
|
459
|
-
if (tx) {
|
|
460
|
-
return tx;
|
|
461
|
-
}
|
|
462
|
-
return undefined;
|
|
463
|
-
}
|
|
464
|
-
/**
|
|
465
493
|
* Archives a list of txs for future reference. The number of archived txs is limited by the specified archivedTxLimit.
|
|
466
494
|
* Note: Pending txs should not be archived, only finalized txs
|
|
467
495
|
* @param txs - The list of transactions to archive.
|
|
@@ -515,23 +543,23 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
515
543
|
async addPendingTxIndicesInDbTx(tx, txHash) {
|
|
516
544
|
await this.#pendingTxPriorityToHash.set(getPendingTxPriority(tx), txHash);
|
|
517
545
|
await this.#historicalHeaderToTxHash.set((await tx.data.constants.anchorBlockHeader.hash()).toString(), txHash);
|
|
518
|
-
await this.#
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
await this.
|
|
523
|
-
}
|
|
546
|
+
await this.#feePayerToBalanceEntry.set(tx.data.feePayer.toString(), await FeePayerTxInfo.encode(tx, txHash));
|
|
547
|
+
// Add nullifier entries for conflict detection
|
|
548
|
+
const nullifiers = tx.data.getNonEmptyNullifiers();
|
|
549
|
+
for (const nullifier of nullifiers){
|
|
550
|
+
await this.#pendingNullifierToTxHash.set(nullifier.toString(), txHash);
|
|
551
|
+
}
|
|
524
552
|
}
|
|
525
553
|
// Assumes being called within a DB transaction
|
|
526
554
|
async removePendingTxIndicesInDbTx(tx, txHash) {
|
|
527
555
|
await this.#pendingTxPriorityToHash.deleteValue(getPendingTxPriority(tx), txHash);
|
|
528
556
|
await this.#historicalHeaderToTxHash.deleteValue((await tx.data.constants.anchorBlockHeader.hash()).toString(), txHash);
|
|
529
|
-
await this.#
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
await this.
|
|
534
|
-
}
|
|
557
|
+
await this.#feePayerToBalanceEntry.deleteValue(tx.data.feePayer.toString(), await FeePayerTxInfo.encode(tx, txHash));
|
|
558
|
+
// Remove nullifier entries
|
|
559
|
+
const nullifiers = tx.data.getNonEmptyNullifiers();
|
|
560
|
+
for (const nullifier of nullifiers){
|
|
561
|
+
await this.#pendingNullifierToTxHash.delete(nullifier.toString());
|
|
562
|
+
}
|
|
535
563
|
}
|
|
536
564
|
/**
|
|
537
565
|
* Returns up to `limit` lowest-priority evictable pending tx hashes without hydrating transactions.
|
|
@@ -552,4 +580,17 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
552
580
|
}
|
|
553
581
|
return txsToEvict;
|
|
554
582
|
}
|
|
583
|
+
/**
|
|
584
|
+
* Creates a PreAddPoolAccess object for use by pre-add eviction rules.
|
|
585
|
+
* Provides read-only access to pool state during addTxs transaction.
|
|
586
|
+
*/ getPreAddPoolAccess() {
|
|
587
|
+
return {
|
|
588
|
+
getTxHashByNullifier: async (nullifier)=>{
|
|
589
|
+
const hashStr = await this.#pendingNullifierToTxHash.getAsync(nullifier.toString());
|
|
590
|
+
return hashStr ? TxHash.fromString(hashStr) : undefined;
|
|
591
|
+
},
|
|
592
|
+
getPendingTxByHash: this.getTxByHash.bind(this),
|
|
593
|
+
getTxPriority: getPendingTxPriority
|
|
594
|
+
};
|
|
595
|
+
}
|
|
555
596
|
}
|