@aztec/p2p 0.0.0-test.1 → 0.0.1-commit.017a351
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/README.md +129 -3
- package/dest/bootstrap/bootstrap.d.ts +4 -3
- package/dest/bootstrap/bootstrap.d.ts.map +1 -1
- package/dest/bootstrap/bootstrap.js +34 -13
- package/dest/client/factory.d.ts +23 -12
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +106 -26
- package/dest/client/index.d.ts +2 -1
- package/dest/client/index.d.ts.map +1 -1
- package/dest/client/index.js +1 -0
- package/dest/client/interface.d.ts +192 -0
- package/dest/client/interface.d.ts.map +1 -0
- package/dest/client/interface.js +9 -0
- package/dest/client/p2p_client.d.ts +97 -221
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +818 -289
- package/dest/config.d.ts +235 -133
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +295 -36
- package/dest/enr/generate-enr.d.ts +11 -3
- package/dest/enr/generate-enr.d.ts.map +1 -1
- package/dest/enr/generate-enr.js +27 -5
- package/dest/enr/index.d.ts +1 -1
- package/dest/errors/attestation-pool.error.d.ts +7 -0
- package/dest/errors/attestation-pool.error.d.ts.map +1 -0
- package/dest/errors/attestation-pool.error.js +12 -0
- package/dest/errors/p2p-service.error.d.ts +9 -0
- package/dest/errors/p2p-service.error.d.ts.map +1 -0
- package/dest/errors/p2p-service.error.js +10 -0
- package/dest/errors/reqresp.error.d.ts +1 -20
- package/dest/errors/reqresp.error.d.ts.map +1 -1
- package/dest/errors/reqresp.error.js +0 -21
- 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 +5 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +3 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +165 -30
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.js +511 -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 +680 -173
- 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 +234 -11
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +21 -21
- package/dest/mem_pools/index.d.ts +3 -3
- 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 +18 -12
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +74 -41
- package/dest/mem_pools/interface.d.ts +6 -7
- package/dest/mem_pools/interface.d.ts.map +1 -1
- 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 +39 -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 +97 -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 +94 -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 +97 -0
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +11 -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 +12 -0
- package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
- package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +62 -0
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +180 -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 +75 -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 +218 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.js +10 -0
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +137 -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 +223 -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 +337 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +62 -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 +167 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +78 -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 +914 -0
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +14 -6
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +106 -12
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +24 -0
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -0
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +75 -0
- package/dest/msg_validators/attestation_validator/index.d.ts +2 -1
- package/dest/msg_validators/attestation_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/index.js +1 -0
- package/dest/msg_validators/clock_tolerance.d.ts +32 -0
- package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
- package/dest/msg_validators/clock_tolerance.js +90 -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/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/proposal_validator/block_proposal_validator.d.ts +15 -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 +14 -0
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +15 -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 +20 -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 +26 -0
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/proposal_validator.js +150 -0
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +11 -18
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +4 -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 +31 -0
- package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
- package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -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 +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 +7 -6
- package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts +15 -0
- package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/cached_tx_validator.js +19 -0
- package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
- package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
- package/dest/msg_validators/tx_validator/data_validator.d.ts +4 -1
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +94 -87
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -6
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.js +24 -29
- package/dest/msg_validators/tx_validator/factory.d.ts +149 -0
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/factory.js +275 -0
- 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 +24 -0
- package/dest/msg_validators/tx_validator/gas_validator.d.ts +108 -0
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/gas_validator.js +194 -0
- package/dest/msg_validators/tx_validator/index.d.ts +13 -1
- package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/index.js +12 -0
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts +10 -5
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.js +40 -21
- package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
- package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
- package/dest/msg_validators/tx_validator/phases_validator.d.ts +35 -0
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/phases_validator.js +141 -0
- 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/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 +30 -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 +9 -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 +4 -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 +10 -7
- package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts +48 -0
- package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/tx_validation_cache.js +68 -0
- 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 +14 -10
- package/dest/services/discv5/discV5_service.d.ts +11 -9
- package/dest/services/discv5/discV5_service.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.js +92 -38
- package/dest/services/dummy_service.d.ts +77 -18
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +139 -12
- package/dest/services/encoding.d.ts +30 -7
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +88 -12
- 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 +184 -0
- package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
- package/dest/services/gossipsub/topic_score_params.js +363 -0
- package/dest/services/index.d.ts +6 -1
- package/dest/services/index.d.ts.map +1 -1
- package/dest/services/index.js +5 -0
- package/dest/services/libp2p/instrumentation.d.ts +22 -0
- package/dest/services/libp2p/instrumentation.d.ts.map +1 -0
- package/dest/services/libp2p/instrumentation.js +136 -0
- package/dest/services/libp2p/libp2p_service.d.ts +165 -111
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +1517 -379
- 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 +14 -3
- package/dest/services/peer-manager/metrics.d.ts.map +1 -1
- package/dest/services/peer-manager/metrics.js +50 -12
- package/dest/services/peer-manager/peer_manager.d.ts +108 -24
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +583 -85
- package/dest/services/peer-manager/peer_scoring.d.ts +12 -2
- package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_scoring.js +99 -13
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +44 -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 +534 -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 +50 -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 +35 -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 +136 -0
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +62 -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 +176 -0
- package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +11 -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 +7 -0
- package/dest/services/reqresp/config.d.ts +13 -11
- package/dest/services/reqresp/config.d.ts.map +1 -1
- package/dest/services/reqresp/config.js +18 -4
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +32 -17
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.js +154 -84
- 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/index.d.ts +3 -2
- 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 +88 -30
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +61 -38
- 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 +16 -21
- 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_txs/bitvector.d.ts +35 -0
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/bitvector.js +88 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +13 -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 +60 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +75 -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 +139 -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 +3 -5
- 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 +3 -2
- package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/index.js +2 -1
- package/dest/services/reqresp/protocols/ping.d.ts +1 -3
- package/dest/services/reqresp/protocols/ping.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/status.d.ts +40 -7
- package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/status.js +76 -5
- package/dest/services/reqresp/protocols/tx.d.ts +20 -4
- package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/tx.js +52 -6
- package/dest/services/reqresp/rate-limiter/index.d.ts +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +10 -7
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.js +20 -10
- package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limits.js +16 -6
- package/dest/services/reqresp/reqresp.d.ts +32 -91
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +695 -355
- package/dest/services/reqresp/status.d.ts +10 -4
- package/dest/services/reqresp/status.d.ts.map +1 -1
- package/dest/services/reqresp/status.js +9 -2
- package/dest/services/service.d.ts +76 -23
- 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 +59 -0
- package/dest/services/tx_collection/file_store_tx_collection.d.ts +37 -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 +127 -0
- package/dest/services/tx_collection/file_store_tx_source.d.ts +38 -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 +100 -0
- package/dest/services/tx_collection/index.d.ts +4 -0
- package/dest/services/tx_collection/index.d.ts.map +1 -0
- package/dest/services/tx_collection/index.js +3 -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 +30 -0
- package/dest/services/tx_collection/request_tracker.d.ts +53 -0
- package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
- package/dest/services/tx_collection/request_tracker.js +84 -0
- package/dest/services/tx_collection/tx_collection.d.ts +104 -0
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_collection.js +356 -0
- package/dest/services/tx_collection/tx_collection_sink.d.ts +40 -0
- package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_collection_sink.js +108 -0
- package/dest/services/tx_collection/tx_source.d.ts +24 -0
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_source.js +50 -0
- 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 +46 -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 +142 -0
- package/dest/services/tx_provider.d.ts +53 -0
- package/dest/services/tx_provider.d.ts.map +1 -0
- package/dest/services/tx_provider.js +223 -0
- package/dest/services/tx_provider_instrumentation.d.ts +16 -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/generate-peer-id-private-keys.d.ts +1 -1
- package/dest/test-helpers/get-ports.d.ts +1 -1
- package/dest/test-helpers/get-ports.d.ts.map +1 -1
- package/dest/test-helpers/index.d.ts +4 -1
- package/dest/test-helpers/index.d.ts.map +1 -1
- package/dest/test-helpers/index.js +3 -0
- package/dest/test-helpers/make-enrs.d.ts +1 -1
- 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 +35 -8
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.js +89 -17
- package/dest/test-helpers/mock-pubsub.d.ts +99 -0
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -0
- package/dest/test-helpers/mock-pubsub.js +231 -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 +17 -15
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +73 -40
- package/dest/test-helpers/test_tx_provider.d.ts +42 -0
- package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
- package/dest/test-helpers/test_tx_provider.js +44 -0
- package/dest/test-helpers/testbench-utils.d.ts +161 -0
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
- package/dest/test-helpers/testbench-utils.js +391 -0
- package/dest/testbench/p2p_client_testbench_worker.d.ts +26 -2
- package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +310 -95
- package/dest/testbench/parse_log_file.d.ts +1 -1
- package/dest/testbench/parse_log_file.js +4 -4
- package/dest/testbench/testbench.d.ts +1 -1
- package/dest/testbench/testbench.js +4 -4
- package/dest/testbench/worker_client_manager.d.ts +57 -11
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +283 -58
- package/dest/types/index.d.ts +4 -2
- package/dest/types/index.d.ts.map +1 -1
- package/dest/types/index.js +2 -0
- package/dest/util.d.ts +33 -20
- package/dest/util.d.ts.map +1 -1
- package/dest/util.js +98 -71
- package/dest/versioning.d.ts +6 -9
- package/dest/versioning.d.ts.map +1 -1
- package/dest/versioning.js +9 -25
- package/package.json +33 -27
- package/src/bootstrap/bootstrap.ts +42 -15
- package/src/client/factory.ts +242 -60
- package/src/client/index.ts +1 -0
- package/src/client/interface.ts +239 -0
- package/src/client/p2p_client.ts +527 -460
- package/src/client/test/p2p_client.batch_tx_requester.bench.README.md +197 -0
- package/src/config.ts +518 -127
- package/src/enr/generate-enr.ts +39 -6
- package/src/errors/attestation-pool.error.ts +13 -0
- package/src/errors/p2p-service.error.ts +11 -0
- package/src/errors/reqresp.error.ts +0 -25
- package/src/errors/tx-pool.error.ts +12 -0
- package/src/index.ts +5 -1
- package/src/mem_pools/attestation_pool/attestation_pool.ts +605 -29
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +828 -201
- package/src/mem_pools/attestation_pool/index.ts +9 -2
- package/src/mem_pools/attestation_pool/mocks.ts +32 -19
- package/src/mem_pools/index.ts +2 -2
- package/src/mem_pools/instrumentation.ts +79 -47
- package/src/mem_pools/interface.ts +5 -7
- package/src/mem_pools/tx_pool_v2/README.md +283 -0
- package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
- package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +112 -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 +122 -0
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
- package/src/mem_pools/tx_pool_v2/eviction/index.ts +28 -0
- package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +65 -0
- package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +219 -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 +99 -0
- package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +32 -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 +250 -0
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +349 -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 +430 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +238 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1090 -0
- package/src/msg_validators/attestation_validator/README.md +49 -0
- package/src/msg_validators/attestation_validator/attestation_validator.ts +105 -15
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +101 -0
- package/src/msg_validators/attestation_validator/index.ts +1 -0
- package/src/msg_validators/clock_tolerance.ts +121 -0
- package/src/msg_validators/index.ts +1 -1
- package/src/msg_validators/msg_seen_validator/msg_seen_validator.ts +36 -0
- package/src/msg_validators/proposal_validator/README.md +123 -0
- package/src/msg_validators/proposal_validator/block_proposal_validator.ts +30 -0
- package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +41 -0
- package/src/msg_validators/proposal_validator/index.ts +3 -0
- package/src/msg_validators/proposal_validator/proposal_validator.ts +159 -0
- package/src/msg_validators/tx_validator/README.md +127 -0
- package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +8 -17
- package/src/msg_validators/tx_validator/allowed_public_setup.ts +30 -0
- package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
- package/src/msg_validators/tx_validator/archive_cache.ts +28 -0
- package/src/msg_validators/tx_validator/block_header_validator.ts +23 -10
- package/src/msg_validators/tx_validator/cached_tx_validator.ts +31 -0
- package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
- package/src/msg_validators/tx_validator/data_validator.ts +138 -71
- package/src/msg_validators/tx_validator/double_spend_validator.ts +31 -23
- package/src/msg_validators/tx_validator/factory.ts +478 -0
- package/src/msg_validators/tx_validator/fee_payer_balance.ts +44 -0
- package/src/msg_validators/tx_validator/gas_validator.ts +268 -0
- package/src/msg_validators/tx_validator/index.ts +12 -0
- package/src/msg_validators/tx_validator/metadata_validator.ts +80 -24
- package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
- package/src/msg_validators/tx_validator/phases_validator.ts +173 -0
- package/src/msg_validators/tx_validator/size_validator.ts +22 -0
- package/src/msg_validators/tx_validator/test_utils.ts +43 -0
- package/src/msg_validators/tx_validator/timestamp_validator.ts +57 -0
- package/src/msg_validators/tx_validator/tx_permitted_validator.ts +22 -0
- package/src/msg_validators/tx_validator/tx_proof_validator.ts +16 -8
- package/src/msg_validators/tx_validator/tx_validation_cache.ts +101 -0
- package/src/services/data_store.ts +14 -19
- package/src/services/discv5/discV5_service.ts +118 -39
- package/src/services/dummy_service.ts +196 -20
- package/src/services/encoding.ts +95 -11
- 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 +519 -0
- package/src/services/index.ts +5 -0
- package/src/services/libp2p/instrumentation.ts +140 -0
- package/src/services/libp2p/libp2p_service.ts +1373 -438
- package/src/services/peer-manager/interface.ts +29 -0
- package/src/services/peer-manager/metrics.ts +62 -12
- package/src/services/peer-manager/peer_manager.ts +695 -83
- package/src/services/peer-manager/peer_scoring.ts +96 -7
- package/src/services/reqresp/README.md +215 -0
- package/src/services/reqresp/batch-tx-requester/README.md +344 -0
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +660 -0
- package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
- package/src/services/reqresp/batch-tx-requester/interface.ts +61 -0
- package/src/services/reqresp/batch-tx-requester/missing_txs.ts +168 -0
- package/src/services/reqresp/batch-tx-requester/peer_collection.ts +249 -0
- package/src/services/reqresp/batch-tx-requester/tx_validator.ts +24 -0
- package/src/services/reqresp/config.ts +27 -10
- package/src/services/reqresp/connection-sampler/connection_sampler.ts +166 -95
- package/src/services/reqresp/constants.ts +14 -0
- package/src/services/reqresp/index.ts +2 -0
- package/src/services/reqresp/interface.ts +116 -59
- package/src/services/reqresp/metrics.ts +39 -28
- package/src/services/reqresp/protocols/auth.ts +83 -0
- package/src/services/reqresp/protocols/block_txs/bitvector.ts +107 -0
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +80 -0
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +171 -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 -1
- package/src/services/reqresp/protocols/status.ts +121 -5
- package/src/services/reqresp/protocols/tx.ts +56 -8
- package/src/services/reqresp/rate-limiter/rate_limiter.ts +25 -12
- package/src/services/reqresp/rate-limiter/rate_limits.ts +16 -6
- package/src/services/reqresp/reqresp.ts +397 -422
- package/src/services/reqresp/status.ts +12 -3
- package/src/services/service.ts +104 -28
- package/src/services/tx_collection/config.ts +89 -0
- package/src/services/tx_collection/file_store_tx_collection.ts +153 -0
- package/src/services/tx_collection/file_store_tx_source.ts +129 -0
- package/src/services/tx_collection/index.ts +3 -0
- package/src/services/tx_collection/instrumentation.ts +35 -0
- package/src/services/tx_collection/request_tracker.ts +127 -0
- package/src/services/tx_collection/tx_collection.ts +468 -0
- package/src/services/tx_collection/tx_collection_sink.ts +125 -0
- package/src/services/tx_collection/tx_source.ts +57 -0
- 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 +163 -0
- package/src/services/tx_provider.ts +238 -0
- package/src/services/tx_provider_instrumentation.ts +54 -0
- package/src/test-helpers/index.ts +3 -0
- package/src/test-helpers/make-enrs.ts +4 -5
- package/src/test-helpers/make-test-p2p-clients.ts +117 -26
- package/src/test-helpers/mock-pubsub.ts +311 -0
- package/src/test-helpers/mock-tx-helpers.ts +24 -0
- package/src/test-helpers/reqresp-nodes.ts +101 -62
- package/src/test-helpers/test_tx_provider.ts +69 -0
- package/src/test-helpers/testbench-utils.ts +453 -0
- package/src/testbench/p2p_client_testbench_worker.ts +477 -95
- package/src/testbench/parse_log_file.ts +4 -4
- package/src/testbench/testbench.ts +4 -4
- package/src/testbench/worker_client_manager.ts +366 -63
- package/src/types/index.ts +2 -0
- package/src/util.ts +128 -93
- package/src/versioning.ts +11 -34
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -22
- 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 -112
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -17
- 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 -129
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -66
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -245
- package/dest/mem_pools/tx_pool/index.d.ts +0 -4
- package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/index.js +0 -3
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +0 -56
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/memory_tx_pool.js +0 -141
- package/dest/mem_pools/tx_pool/priority.d.ts +0 -8
- package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/priority.js +0 -10
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -66
- package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -169
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -8
- 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 -21
- 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/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +0 -45
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +0 -1
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +0 -88
- package/dest/services/reqresp/protocols/block.d.ts +0 -4
- package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
- package/dest/services/reqresp/protocols/block.js +0 -8
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -159
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -161
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -309
- package/src/mem_pools/tx_pool/index.ts +0 -3
- package/src/mem_pools/tx_pool/memory_tx_pool.ts +0 -174
- package/src/mem_pools/tx_pool/priority.ts +0 -13
- package/src/mem_pools/tx_pool/tx_pool.ts +0 -76
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -130
- package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -29
- package/src/msg_validators/block_proposal_validator/index.ts +0 -1
- package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +0 -94
- package/src/services/reqresp/protocols/block.ts +0 -15
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
-
import type { BlockAttestation } from '@aztec/stdlib/p2p';
|
|
3
|
-
import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
|
|
4
|
-
|
|
5
|
-
import { PoolInstrumentation, PoolName } from '../instrumentation.js';
|
|
6
|
-
import type { AttestationPool } from './attestation_pool.js';
|
|
7
|
-
|
|
8
|
-
export class InMemoryAttestationPool implements AttestationPool {
|
|
9
|
-
private metrics: PoolInstrumentation<BlockAttestation>;
|
|
10
|
-
|
|
11
|
-
private attestations: Map</*slot=*/ bigint, Map</*proposalId*/ string, Map</*address=*/ string, BlockAttestation>>>;
|
|
12
|
-
|
|
13
|
-
constructor(telemetry: TelemetryClient = getTelemetryClient(), private log = createLogger('p2p:attestation_pool')) {
|
|
14
|
-
this.attestations = new Map();
|
|
15
|
-
this.metrics = new PoolInstrumentation(telemetry, PoolName.ATTESTATION_POOL);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
public getAttestationsForSlot(slot: bigint, proposalId: string): Promise<BlockAttestation[]> {
|
|
19
|
-
const slotAttestationMap = this.attestations.get(slot);
|
|
20
|
-
if (slotAttestationMap) {
|
|
21
|
-
const proposalAttestationMap = slotAttestationMap.get(proposalId);
|
|
22
|
-
if (proposalAttestationMap) {
|
|
23
|
-
return Promise.resolve(Array.from(proposalAttestationMap.values()));
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
return Promise.resolve([]);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
public async addAttestations(attestations: BlockAttestation[]): Promise<void> {
|
|
30
|
-
for (const attestation of attestations) {
|
|
31
|
-
// Perf: order and group by slot before insertion
|
|
32
|
-
const slotNumber = attestation.payload.header.globalVariables.slotNumber;
|
|
33
|
-
|
|
34
|
-
const proposalId = attestation.archive.toString();
|
|
35
|
-
const address = await attestation.getSender();
|
|
36
|
-
|
|
37
|
-
const slotAttestationMap = getSlotOrDefault(this.attestations, slotNumber.toBigInt());
|
|
38
|
-
const proposalAttestationMap = getProposalOrDefault(slotAttestationMap, proposalId);
|
|
39
|
-
proposalAttestationMap.set(address.toString(), attestation);
|
|
40
|
-
|
|
41
|
-
this.log.verbose(`Added attestation for slot ${slotNumber} from ${address}`);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// TODO: set these to pending or something ????
|
|
45
|
-
this.metrics.recordAddedObjects(attestations.length);
|
|
46
|
-
return Promise.resolve();
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
#getNumberOfAttestationsInSlot(slot: bigint): number {
|
|
50
|
-
let total = 0;
|
|
51
|
-
const slotAttestationMap = getSlotOrDefault(this.attestations, slot);
|
|
52
|
-
|
|
53
|
-
if (slotAttestationMap) {
|
|
54
|
-
for (const proposalAttestationMap of slotAttestationMap.values() ?? []) {
|
|
55
|
-
total += proposalAttestationMap.size;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
return total;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
public async deleteAttestationsOlderThan(oldestSlot: bigint): Promise<void> {
|
|
62
|
-
const olderThan = [];
|
|
63
|
-
|
|
64
|
-
// Entries are iterated in insertion order, so we can break as soon as we find a slot that is older than the oldestSlot.
|
|
65
|
-
// Note: this will only prune correctly if attestations are added in order of rising slot, it is important that we do not allow
|
|
66
|
-
// insertion of attestations that are old. #(https://github.com/AztecProtocol/aztec-packages/issues/10322)
|
|
67
|
-
const slots = this.attestations.keys();
|
|
68
|
-
for (const slot of slots) {
|
|
69
|
-
if (slot < oldestSlot) {
|
|
70
|
-
olderThan.push(slot);
|
|
71
|
-
} else {
|
|
72
|
-
break;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
for (const oldSlot of olderThan) {
|
|
77
|
-
await this.deleteAttestationsForSlot(oldSlot);
|
|
78
|
-
}
|
|
79
|
-
return Promise.resolve();
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
public deleteAttestationsForSlot(slot: bigint): Promise<void> {
|
|
83
|
-
// We count the number of attestations we are removing
|
|
84
|
-
const numberOfAttestations = this.#getNumberOfAttestationsInSlot(slot);
|
|
85
|
-
|
|
86
|
-
this.attestations.delete(slot);
|
|
87
|
-
this.log.verbose(`Removed ${numberOfAttestations} attestations for slot ${slot}`);
|
|
88
|
-
|
|
89
|
-
this.metrics.recordRemovedObjects(numberOfAttestations);
|
|
90
|
-
return Promise.resolve();
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
public deleteAttestationsForSlotAndProposal(slot: bigint, proposalId: string): Promise<void> {
|
|
94
|
-
const slotAttestationMap = getSlotOrDefault(this.attestations, slot);
|
|
95
|
-
if (slotAttestationMap) {
|
|
96
|
-
if (slotAttestationMap.has(proposalId)) {
|
|
97
|
-
const numberOfAttestations = slotAttestationMap.get(proposalId)?.size ?? 0;
|
|
98
|
-
|
|
99
|
-
slotAttestationMap.delete(proposalId);
|
|
100
|
-
|
|
101
|
-
this.log.verbose(`Removed ${numberOfAttestations} attestations for slot ${slot} and proposal ${proposalId}`);
|
|
102
|
-
this.metrics.recordRemovedObjects(numberOfAttestations);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
return Promise.resolve();
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
public async deleteAttestations(attestations: BlockAttestation[]): Promise<void> {
|
|
109
|
-
for (const attestation of attestations) {
|
|
110
|
-
const slotNumber = attestation.payload.header.globalVariables.slotNumber;
|
|
111
|
-
const slotAttestationMap = this.attestations.get(slotNumber.toBigInt());
|
|
112
|
-
if (slotAttestationMap) {
|
|
113
|
-
const proposalId = attestation.archive.toString();
|
|
114
|
-
const proposalAttestationMap = getProposalOrDefault(slotAttestationMap, proposalId);
|
|
115
|
-
if (proposalAttestationMap) {
|
|
116
|
-
const address = await attestation.getSender();
|
|
117
|
-
proposalAttestationMap.delete(address.toString());
|
|
118
|
-
this.log.debug(`Deleted attestation for slot ${slotNumber} from ${address}`);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
this.metrics.recordRemovedObjects(attestations.length);
|
|
123
|
-
return Promise.resolve();
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* Get Slot or Default
|
|
129
|
-
*
|
|
130
|
-
* Fetch the slot mapping, if it does not exist, then create a mapping and return it
|
|
131
|
-
* @param map - The map to fetch from
|
|
132
|
-
* @param slot - The slot to fetch
|
|
133
|
-
* @returns The slot mapping
|
|
134
|
-
*/
|
|
135
|
-
function getSlotOrDefault(
|
|
136
|
-
map: Map<bigint, Map<string, Map<string, BlockAttestation>>>,
|
|
137
|
-
slot: bigint,
|
|
138
|
-
): Map<string, Map<string, BlockAttestation>> {
|
|
139
|
-
if (!map.has(slot)) {
|
|
140
|
-
map.set(slot, new Map<string, Map<string, BlockAttestation>>());
|
|
141
|
-
}
|
|
142
|
-
return map.get(slot)!;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Get Proposal or Default
|
|
147
|
-
*
|
|
148
|
-
* Fetch the proposal mapping, if it does not exist, then create a mapping and return it
|
|
149
|
-
* @param map - The map to fetch from
|
|
150
|
-
* @param proposalId - The proposal id to fetch
|
|
151
|
-
* @returns The proposal mapping
|
|
152
|
-
*/
|
|
153
|
-
function getProposalOrDefault(
|
|
154
|
-
map: Map<string, Map<string, BlockAttestation>>,
|
|
155
|
-
proposalId: string,
|
|
156
|
-
): Map<string, BlockAttestation> {
|
|
157
|
-
if (!map.has(proposalId)) {
|
|
158
|
-
map.set(proposalId, new Map<string, BlockAttestation>());
|
|
159
|
-
}
|
|
160
|
-
return map.get(proposalId)!;
|
|
161
|
-
}
|
|
@@ -1,309 +0,0 @@
|
|
|
1
|
-
import { toArray } from '@aztec/foundation/iterable';
|
|
2
|
-
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
3
|
-
import type { AztecAsyncKVStore, AztecAsyncMap, AztecAsyncMultiMap } from '@aztec/kv-store';
|
|
4
|
-
import { ClientIvcProof } from '@aztec/stdlib/proofs';
|
|
5
|
-
import type { TxAddedToPoolStats } from '@aztec/stdlib/stats';
|
|
6
|
-
import { Tx, TxHash } from '@aztec/stdlib/tx';
|
|
7
|
-
import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
|
|
8
|
-
|
|
9
|
-
import { PoolInstrumentation, PoolName } from '../instrumentation.js';
|
|
10
|
-
import { getPendingTxPriority } from './priority.js';
|
|
11
|
-
import type { TxPool } from './tx_pool.js';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* KV implementation of the Transaction Pool.
|
|
15
|
-
*/
|
|
16
|
-
export class AztecKVTxPool implements TxPool {
|
|
17
|
-
#store: AztecAsyncKVStore;
|
|
18
|
-
|
|
19
|
-
/** Our tx pool, stored as a Map, with K: tx hash and V: the transaction. */
|
|
20
|
-
#txs: AztecAsyncMap<string, Buffer>;
|
|
21
|
-
|
|
22
|
-
/** Index from tx hash to the block number in which they were mined, filtered by mined txs. */
|
|
23
|
-
#minedTxHashToBlock: AztecAsyncMap<string, number>;
|
|
24
|
-
|
|
25
|
-
/** Index from tx priority (stored as hex) to its tx hash, filtered by pending txs. */
|
|
26
|
-
#pendingTxPriorityToHash: AztecAsyncMultiMap<string, string>;
|
|
27
|
-
|
|
28
|
-
/** KV store for archived txs. */
|
|
29
|
-
#archive: AztecAsyncKVStore;
|
|
30
|
-
|
|
31
|
-
/** Archived txs map for future lookup. */
|
|
32
|
-
#archivedTxs: AztecAsyncMap<string, Buffer>;
|
|
33
|
-
|
|
34
|
-
/** Indexes of the archived txs by insertion order. */
|
|
35
|
-
#archivedTxIndices: AztecAsyncMap<number, string>;
|
|
36
|
-
|
|
37
|
-
/** Number of txs to archive. */
|
|
38
|
-
#archivedTxLimit: number;
|
|
39
|
-
|
|
40
|
-
#log: Logger;
|
|
41
|
-
|
|
42
|
-
#metrics: PoolInstrumentation<Tx>;
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Class constructor for KV TxPool. Initiates our transaction pool as an AztecMap.
|
|
46
|
-
* @param store - A KV store for live txs in the pool.
|
|
47
|
-
* @param archive - A KV store for archived txs.
|
|
48
|
-
* @param telemetry - A telemetry client.
|
|
49
|
-
* @param archivedTxLimit - The number of txs to archive.
|
|
50
|
-
* @param log - A logger.
|
|
51
|
-
*/
|
|
52
|
-
constructor(
|
|
53
|
-
store: AztecAsyncKVStore,
|
|
54
|
-
archive: AztecAsyncKVStore,
|
|
55
|
-
telemetry: TelemetryClient = getTelemetryClient(),
|
|
56
|
-
archivedTxLimit: number = 0,
|
|
57
|
-
log = createLogger('p2p:tx_pool'),
|
|
58
|
-
) {
|
|
59
|
-
this.#txs = store.openMap('txs');
|
|
60
|
-
this.#minedTxHashToBlock = store.openMap('txHashToBlockMined');
|
|
61
|
-
this.#pendingTxPriorityToHash = store.openMultiMap('pendingTxFeeToHash');
|
|
62
|
-
|
|
63
|
-
this.#archivedTxs = archive.openMap('archivedTxs');
|
|
64
|
-
this.#archivedTxIndices = archive.openMap('archivedTxIndices');
|
|
65
|
-
this.#archivedTxLimit = archivedTxLimit;
|
|
66
|
-
|
|
67
|
-
this.#store = store;
|
|
68
|
-
this.#archive = archive;
|
|
69
|
-
this.#log = log;
|
|
70
|
-
this.#metrics = new PoolInstrumentation(telemetry, PoolName.TX_POOL, () => store.estimateSize());
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
public markAsMined(txHashes: TxHash[], blockNumber: number): Promise<void> {
|
|
74
|
-
if (txHashes.length === 0) {
|
|
75
|
-
return Promise.resolve();
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
let deletedPending = 0;
|
|
79
|
-
return this.#store.transactionAsync(async () => {
|
|
80
|
-
for (const hash of txHashes) {
|
|
81
|
-
const key = hash.toString();
|
|
82
|
-
await this.#minedTxHashToBlock.set(key, blockNumber);
|
|
83
|
-
|
|
84
|
-
const tx = await this.getTxByHash(hash);
|
|
85
|
-
if (tx) {
|
|
86
|
-
deletedPending++;
|
|
87
|
-
const fee = getPendingTxPriority(tx);
|
|
88
|
-
await this.#pendingTxPriorityToHash.deleteValue(fee, key);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
this.#metrics.recordAddedObjects(txHashes.length, 'mined');
|
|
92
|
-
this.#metrics.recordRemovedObjects(deletedPending, 'pending');
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
public markMinedAsPending(txHashes: TxHash[]): Promise<void> {
|
|
97
|
-
if (txHashes.length === 0) {
|
|
98
|
-
return Promise.resolve();
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
let markedAsPending = 0;
|
|
102
|
-
return this.#store.transactionAsync(async () => {
|
|
103
|
-
for (const hash of txHashes) {
|
|
104
|
-
const key = hash.toString();
|
|
105
|
-
await this.#minedTxHashToBlock.delete(key);
|
|
106
|
-
|
|
107
|
-
const tx = await this.getTxByHash(hash);
|
|
108
|
-
if (tx) {
|
|
109
|
-
await this.#pendingTxPriorityToHash.set(getPendingTxPriority(tx), key);
|
|
110
|
-
markedAsPending++;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
this.#metrics.recordAddedObjects(markedAsPending, 'pending');
|
|
115
|
-
this.#metrics.recordRemovedObjects(markedAsPending, 'mined');
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
public async getPendingTxHashes(): Promise<TxHash[]> {
|
|
120
|
-
const vals = await toArray(this.#pendingTxPriorityToHash.valuesAsync({ reverse: true }));
|
|
121
|
-
return vals.map(x => TxHash.fromString(x));
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
public async getMinedTxHashes(): Promise<[TxHash, number][]> {
|
|
125
|
-
const vals = await toArray(this.#minedTxHashToBlock.entriesAsync());
|
|
126
|
-
return vals.map(([txHash, blockNumber]) => [TxHash.fromString(txHash), blockNumber]);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
public async getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | undefined> {
|
|
130
|
-
const key = txHash.toString();
|
|
131
|
-
const [isMined, isKnown] = await Promise.all([this.#minedTxHashToBlock.hasAsync(key), this.#txs.hasAsync(key)]);
|
|
132
|
-
|
|
133
|
-
if (isMined) {
|
|
134
|
-
return 'mined';
|
|
135
|
-
} else if (isKnown) {
|
|
136
|
-
return 'pending';
|
|
137
|
-
} else {
|
|
138
|
-
return undefined;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* Checks if a transaction exists in the pool and returns it.
|
|
144
|
-
* @param txHash - The generated tx hash.
|
|
145
|
-
* @returns The transaction, if found, 'undefined' otherwise.
|
|
146
|
-
*/
|
|
147
|
-
public async getTxByHash(txHash: TxHash): Promise<Tx | undefined> {
|
|
148
|
-
const buffer = await this.#txs.getAsync(txHash.toString());
|
|
149
|
-
if (buffer) {
|
|
150
|
-
const tx = Tx.fromBuffer(buffer);
|
|
151
|
-
tx.setTxHash(txHash);
|
|
152
|
-
return tx;
|
|
153
|
-
}
|
|
154
|
-
return undefined;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* Checks if an archived tx exists and returns it.
|
|
159
|
-
* @param txHash - The tx hash.
|
|
160
|
-
* @returns The transaction metadata, if found, 'undefined' otherwise.
|
|
161
|
-
*/
|
|
162
|
-
public async getArchivedTxByHash(txHash: TxHash): Promise<Tx | undefined> {
|
|
163
|
-
const buffer = await this.#archivedTxs.getAsync(txHash.toString());
|
|
164
|
-
if (buffer) {
|
|
165
|
-
const tx = Tx.fromBuffer(buffer);
|
|
166
|
-
tx.setTxHash(txHash);
|
|
167
|
-
return tx;
|
|
168
|
-
}
|
|
169
|
-
return undefined;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
/**
|
|
173
|
-
* Adds a list of transactions to the pool. Duplicates are ignored.
|
|
174
|
-
* @param txs - An array of txs to be added to the pool.
|
|
175
|
-
* @returns Empty promise.
|
|
176
|
-
*/
|
|
177
|
-
public async addTxs(txs: Tx[]): Promise<void> {
|
|
178
|
-
const hashesAndStats = await Promise.all(
|
|
179
|
-
txs.map(async tx => ({ txHash: await tx.getTxHash(), txStats: await tx.getStats() })),
|
|
180
|
-
);
|
|
181
|
-
await this.#store.transactionAsync(async () => {
|
|
182
|
-
let pendingCount = 0;
|
|
183
|
-
await Promise.all(
|
|
184
|
-
txs.map(async (tx, i) => {
|
|
185
|
-
const { txHash, txStats } = hashesAndStats[i];
|
|
186
|
-
this.#log.verbose(`Adding tx ${txHash.toString()} to pool`, {
|
|
187
|
-
eventName: 'tx-added-to-pool',
|
|
188
|
-
...txStats,
|
|
189
|
-
} satisfies TxAddedToPoolStats);
|
|
190
|
-
|
|
191
|
-
const key = txHash.toString();
|
|
192
|
-
await this.#txs.set(key, tx.toBuffer());
|
|
193
|
-
|
|
194
|
-
if (!(await this.#minedTxHashToBlock.hasAsync(key))) {
|
|
195
|
-
pendingCount++;
|
|
196
|
-
// REFACTOR: Use an lmdb conditional write to avoid race conditions with this write tx
|
|
197
|
-
await this.#pendingTxPriorityToHash.set(getPendingTxPriority(tx), key);
|
|
198
|
-
this.#metrics.recordSize(tx);
|
|
199
|
-
}
|
|
200
|
-
}),
|
|
201
|
-
);
|
|
202
|
-
|
|
203
|
-
this.#metrics.recordAddedObjects(pendingCount, 'pending');
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
/**
|
|
208
|
-
* Deletes transactions from the pool. Tx hashes that are not present are ignored.
|
|
209
|
-
* @param txHashes - An array of tx hashes to be removed from the tx pool.
|
|
210
|
-
* @returns Empty promise.
|
|
211
|
-
*/
|
|
212
|
-
public deleteTxs(txHashes: TxHash[]): Promise<void> {
|
|
213
|
-
let pendingDeleted = 0;
|
|
214
|
-
let minedDeleted = 0;
|
|
215
|
-
|
|
216
|
-
const deletedTxs: Tx[] = [];
|
|
217
|
-
const poolDbTx = this.#store.transactionAsync(async () => {
|
|
218
|
-
for (const hash of txHashes) {
|
|
219
|
-
const key = hash.toString();
|
|
220
|
-
const tx = await this.getTxByHash(hash);
|
|
221
|
-
|
|
222
|
-
if (tx) {
|
|
223
|
-
const fee = getPendingTxPriority(tx);
|
|
224
|
-
await this.#pendingTxPriorityToHash.deleteValue(fee, key);
|
|
225
|
-
|
|
226
|
-
const isMined = await this.#minedTxHashToBlock.hasAsync(key);
|
|
227
|
-
if (isMined) {
|
|
228
|
-
minedDeleted++;
|
|
229
|
-
} else {
|
|
230
|
-
pendingDeleted++;
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
if (this.#archivedTxLimit) {
|
|
234
|
-
deletedTxs.push(tx);
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
await this.#txs.delete(key);
|
|
238
|
-
await this.#minedTxHashToBlock.delete(key);
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
this.#metrics.recordRemovedObjects(pendingDeleted, 'pending');
|
|
243
|
-
this.#metrics.recordRemovedObjects(minedDeleted, 'mined');
|
|
244
|
-
});
|
|
245
|
-
|
|
246
|
-
return this.#archivedTxLimit ? poolDbTx.then(() => this.archiveTxs(deletedTxs)) : poolDbTx;
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
/**
|
|
250
|
-
* Gets all the transactions stored in the pool.
|
|
251
|
-
* @returns Array of tx objects in the order they were added to the pool.
|
|
252
|
-
*/
|
|
253
|
-
public async getAllTxs(): Promise<Tx[]> {
|
|
254
|
-
const vals = await toArray(this.#txs.entriesAsync());
|
|
255
|
-
return vals.map(([hash, buffer]) => {
|
|
256
|
-
const tx = Tx.fromBuffer(buffer);
|
|
257
|
-
tx.setTxHash(TxHash.fromString(hash));
|
|
258
|
-
return tx;
|
|
259
|
-
});
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
/**
|
|
263
|
-
* Gets the hashes of all transactions currently in the tx pool.
|
|
264
|
-
* @returns An array of transaction hashes found in the tx pool.
|
|
265
|
-
*/
|
|
266
|
-
public async getAllTxHashes(): Promise<TxHash[]> {
|
|
267
|
-
const vals = await toArray(this.#txs.keysAsync());
|
|
268
|
-
return vals.map(x => TxHash.fromString(x));
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
/**
|
|
272
|
-
* Archives a list of txs for future reference. The number of archived txs is limited by the specified archivedTxLimit.
|
|
273
|
-
* @param txs - The list of transactions to archive.
|
|
274
|
-
* @returns Empty promise.
|
|
275
|
-
*/
|
|
276
|
-
private async archiveTxs(txs: Tx[]): Promise<void> {
|
|
277
|
-
const txHashes = await Promise.all(txs.map(tx => tx.getTxHash()));
|
|
278
|
-
await this.#archive.transactionAsync(async () => {
|
|
279
|
-
// calcualte the head and tail indices of the archived txs by insertion order.
|
|
280
|
-
let headIdx =
|
|
281
|
-
((await this.#archivedTxIndices.entriesAsync({ limit: 1, reverse: true }).next()).value?.[0] ?? -1) + 1;
|
|
282
|
-
let tailIdx = (await this.#archivedTxIndices.entriesAsync({ limit: 1 }).next()).value?.[0] ?? 0;
|
|
283
|
-
|
|
284
|
-
for (let i = 0; i < txs.length; i++) {
|
|
285
|
-
const tx = txs[i];
|
|
286
|
-
while (headIdx - tailIdx >= this.#archivedTxLimit) {
|
|
287
|
-
const txHash = await this.#archivedTxIndices.getAsync(tailIdx);
|
|
288
|
-
if (txHash) {
|
|
289
|
-
await this.#archivedTxs.delete(txHash);
|
|
290
|
-
await this.#archivedTxIndices.delete(tailIdx);
|
|
291
|
-
}
|
|
292
|
-
tailIdx++;
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
const archivedTx: Tx = new Tx(
|
|
296
|
-
tx.data,
|
|
297
|
-
ClientIvcProof.empty(),
|
|
298
|
-
tx.contractClassLogs,
|
|
299
|
-
tx.enqueuedPublicFunctionCalls,
|
|
300
|
-
tx.publicTeardownFunctionCall,
|
|
301
|
-
);
|
|
302
|
-
const txHash = txHashes[i].toString();
|
|
303
|
-
await this.#archivedTxs.set(txHash, archivedTx.toBuffer());
|
|
304
|
-
await this.#archivedTxIndices.set(headIdx, txHash);
|
|
305
|
-
headIdx++;
|
|
306
|
-
}
|
|
307
|
-
});
|
|
308
|
-
}
|
|
309
|
-
}
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
-
import type { TxAddedToPoolStats } from '@aztec/stdlib/stats';
|
|
3
|
-
import { Tx, TxHash } from '@aztec/stdlib/tx';
|
|
4
|
-
import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
|
|
5
|
-
|
|
6
|
-
import { PoolInstrumentation, PoolName } from '../instrumentation.js';
|
|
7
|
-
import { getPendingTxPriority } from './priority.js';
|
|
8
|
-
import type { TxPool } from './tx_pool.js';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* In-memory implementation of the Transaction Pool.
|
|
12
|
-
*/
|
|
13
|
-
export class InMemoryTxPool implements TxPool {
|
|
14
|
-
/**
|
|
15
|
-
* Our tx pool, stored as a Map in-memory, with K: tx hash and V: the transaction.
|
|
16
|
-
*/
|
|
17
|
-
private txs: Map<bigint, Tx>;
|
|
18
|
-
private minedTxs: Map<bigint, number>;
|
|
19
|
-
private pendingTxs: Set<bigint>;
|
|
20
|
-
|
|
21
|
-
private metrics: PoolInstrumentation<Tx>;
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Class constructor for in-memory TxPool. Initiates our transaction pool as a JS Map.
|
|
25
|
-
* @param log - A logger.
|
|
26
|
-
*/
|
|
27
|
-
constructor(telemetry: TelemetryClient = getTelemetryClient(), private log = createLogger('p2p:tx_pool')) {
|
|
28
|
-
this.txs = new Map<bigint, Tx>();
|
|
29
|
-
this.minedTxs = new Map();
|
|
30
|
-
this.pendingTxs = new Set();
|
|
31
|
-
this.metrics = new PoolInstrumentation(telemetry, PoolName.TX_POOL);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
public markAsMined(txHashes: TxHash[], blockNumber: number): Promise<void> {
|
|
35
|
-
const keys = txHashes.map(x => x.toBigInt());
|
|
36
|
-
for (const key of keys) {
|
|
37
|
-
this.minedTxs.set(key, blockNumber);
|
|
38
|
-
this.pendingTxs.delete(key);
|
|
39
|
-
}
|
|
40
|
-
this.metrics.recordRemovedObjects(txHashes.length, 'pending');
|
|
41
|
-
this.metrics.recordAddedObjects(txHashes.length, 'mined');
|
|
42
|
-
return Promise.resolve();
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
public markMinedAsPending(txHashes: TxHash[]): Promise<void> {
|
|
46
|
-
if (txHashes.length === 0) {
|
|
47
|
-
return Promise.resolve();
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
const keys = txHashes.map(x => x.toBigInt());
|
|
51
|
-
let deleted = 0;
|
|
52
|
-
let added = 0;
|
|
53
|
-
for (const key of keys) {
|
|
54
|
-
if (this.minedTxs.delete(key)) {
|
|
55
|
-
deleted++;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
// only add back to the pending set if we have the tx object
|
|
59
|
-
if (this.txs.has(key)) {
|
|
60
|
-
added++;
|
|
61
|
-
this.pendingTxs.add(key);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
this.metrics.recordRemovedObjects(deleted, 'mined');
|
|
66
|
-
this.metrics.recordAddedObjects(added, 'pending');
|
|
67
|
-
|
|
68
|
-
return Promise.resolve();
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
public async getPendingTxHashes(): Promise<TxHash[]> {
|
|
72
|
-
const txs = (await this.getAllTxs()).sort(
|
|
73
|
-
(tx1, tx2) => -getPendingTxPriority(tx1).localeCompare(getPendingTxPriority(tx2)),
|
|
74
|
-
);
|
|
75
|
-
const txHashes = await Promise.all(txs.map(tx => tx.getTxHash()));
|
|
76
|
-
return txHashes.filter(txHash => this.pendingTxs.has(txHash.toBigInt()));
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
public getMinedTxHashes(): Promise<[TxHash, number][]> {
|
|
80
|
-
return Promise.resolve(
|
|
81
|
-
Array.from(this.minedTxs.entries()).map(([txHash, blockNumber]) => [TxHash.fromBigInt(txHash), blockNumber]),
|
|
82
|
-
);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
public getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | undefined> {
|
|
86
|
-
const key = txHash.toBigInt();
|
|
87
|
-
if (this.pendingTxs.has(key)) {
|
|
88
|
-
return Promise.resolve('pending');
|
|
89
|
-
}
|
|
90
|
-
if (this.minedTxs.has(key)) {
|
|
91
|
-
return Promise.resolve('mined');
|
|
92
|
-
}
|
|
93
|
-
return Promise.resolve(undefined);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Checks if a transaction exists in the pool and returns it.
|
|
98
|
-
* @param txHash - The generated tx hash.
|
|
99
|
-
* @returns The transaction, if found, 'undefined' otherwise.
|
|
100
|
-
*/
|
|
101
|
-
public getTxByHash(txHash: TxHash): Promise<Tx | undefined> {
|
|
102
|
-
const result = this.txs.get(txHash.toBigInt());
|
|
103
|
-
return Promise.resolve(result === undefined ? undefined : Tx.clone(result));
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
public getArchivedTxByHash(): Promise<Tx | undefined> {
|
|
107
|
-
return Promise.resolve(undefined);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Adds a list of transactions to the pool. Duplicates are ignored.
|
|
112
|
-
* @param txs - An array of txs to be added to the pool.
|
|
113
|
-
* @returns Empty promise.
|
|
114
|
-
*/
|
|
115
|
-
public async addTxs(txs: Tx[]): Promise<void> {
|
|
116
|
-
let pending = 0;
|
|
117
|
-
for (const tx of txs) {
|
|
118
|
-
const txHash = await tx.getTxHash();
|
|
119
|
-
this.log.verbose(`Adding tx ${txHash.toString()} to pool`, {
|
|
120
|
-
eventName: 'tx-added-to-pool',
|
|
121
|
-
...(await tx.getStats()),
|
|
122
|
-
} satisfies TxAddedToPoolStats);
|
|
123
|
-
|
|
124
|
-
const key = txHash.toBigInt();
|
|
125
|
-
this.txs.set(key, tx);
|
|
126
|
-
if (!this.minedTxs.has(key)) {
|
|
127
|
-
pending++;
|
|
128
|
-
this.metrics.recordSize(tx);
|
|
129
|
-
this.pendingTxs.add(key);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
this.metrics.recordAddedObjects(pending, 'pending');
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* Deletes transactions from the pool. Tx hashes that are not present are ignored.
|
|
139
|
-
* @param txHashes - An array of tx hashes to be removed from the tx pool.
|
|
140
|
-
* @returns The number of transactions that was deleted from the pool.
|
|
141
|
-
*/
|
|
142
|
-
public deleteTxs(txHashes: TxHash[]): Promise<void> {
|
|
143
|
-
let deletedMined = 0;
|
|
144
|
-
let deletedPending = 0;
|
|
145
|
-
|
|
146
|
-
for (const txHash of txHashes) {
|
|
147
|
-
const key = txHash.toBigInt();
|
|
148
|
-
this.txs.delete(key);
|
|
149
|
-
deletedPending += this.pendingTxs.delete(key) ? 1 : 0;
|
|
150
|
-
deletedMined += this.minedTxs.delete(key) ? 1 : 0;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
this.metrics.recordRemovedObjects(deletedPending, 'pending');
|
|
154
|
-
this.metrics.recordRemovedObjects(deletedMined, 'mined');
|
|
155
|
-
|
|
156
|
-
return Promise.resolve();
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* Gets all the transactions stored in the pool.
|
|
161
|
-
* @returns Array of tx objects in the order they were added to the pool.
|
|
162
|
-
*/
|
|
163
|
-
public getAllTxs(): Promise<Tx[]> {
|
|
164
|
-
return Promise.resolve(Array.from(this.txs.values()).map(x => Tx.clone(x)));
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
* Gets the hashes of all transactions currently in the tx pool.
|
|
169
|
-
* @returns An array of transaction hashes found in the tx pool.
|
|
170
|
-
*/
|
|
171
|
-
public getAllTxHashes(): Promise<TxHash[]> {
|
|
172
|
-
return Promise.resolve(Array.from(this.txs.keys()).map(x => TxHash.fromBigInt(x)));
|
|
173
|
-
}
|
|
174
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { Buffer32 } from '@aztec/foundation/buffer';
|
|
2
|
-
import type { Tx } from '@aztec/stdlib/tx';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Returns a string representing the priority of a tx.
|
|
6
|
-
* Txs with a higher priority value are returned first when retrieving pending tx hashes.
|
|
7
|
-
* We currently use the sum of the priority fees for the tx for this value, represented as hex.
|
|
8
|
-
*/
|
|
9
|
-
export function getPendingTxPriority(tx: Tx): string {
|
|
10
|
-
const priorityFees = tx.getGasSettings().maxPriorityFeesPerGas;
|
|
11
|
-
const totalFees = priorityFees.feePerDaGas.toBigInt() + priorityFees.feePerL2Gas.toBigInt();
|
|
12
|
-
return Buffer32.fromBigInt(totalFees).toString();
|
|
13
|
-
}
|