@aztec/p2p 0.0.1-commit.f146247c → 0.0.1-commit.f1b29a41e
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/client/factory.d.ts +11 -11
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +55 -15
- package/dest/client/interface.d.ts +54 -34
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +43 -52
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +174 -224
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +21 -11
- package/dest/config.d.ts +60 -17
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +105 -39
- 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/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 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +104 -88
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.js +446 -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 +353 -87
- 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 +2 -2
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +2 -2
- 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 +4 -2
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +16 -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_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 +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 +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 +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 → tx_pool_v2}/eviction/invalid_txs_after_mining_rule.js +16 -35
- 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 → tx_pool_v2}/eviction/invalid_txs_after_reorg_rule.js +39 -24
- 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 +215 -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 +134 -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 +220 -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 +923 -0
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +5 -4
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +3 -3
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/clock_tolerance.d.ts +1 -1
- package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
- package/dest/msg_validators/clock_tolerance.js +4 -3
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +6 -4
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +6 -4
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -8
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator.js +53 -41
- 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 +3 -3
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/allowed_public_setup.js +24 -20
- 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/block_header_validator.d.ts +16 -3
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
- package/dest/msg_validators/tx_validator/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 +1 -1
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +35 -2
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +13 -3
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.js +4 -4
- package/dest/msg_validators/tx_validator/factory.d.ts +133 -6
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/factory.js +247 -60
- package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
- package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
- package/dest/msg_validators/tx_validator/gas_validator.d.ts +67 -3
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/gas_validator.js +104 -37
- package/dest/msg_validators/tx_validator/index.d.ts +3 -1
- package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/index.js +2 -0
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
- 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 +22 -2
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/phases_validator.js +72 -24
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +20 -4
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
- package/dest/services/dummy_service.d.ts +16 -6
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +15 -5
- package/dest/services/encoding.d.ts +7 -3
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +18 -11
- 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/libp2p_service.d.ts +106 -51
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +538 -378
- package/dest/services/peer-manager/metrics.d.ts +3 -1
- package/dest/services/peer-manager/metrics.d.ts.map +1 -1
- package/dest/services/peer-manager/metrics.js +6 -0
- package/dest/services/peer-manager/peer_manager.d.ts +6 -2
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +24 -9
- package/dest/services/peer-manager/peer_scoring.d.ts +5 -2
- package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_scoring.js +53 -12
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +14 -10
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +89 -112
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts +4 -7
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +11 -13
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/missing_txs.js +31 -46
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +19 -11
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/peer_collection.js +52 -15
- package/dest/services/reqresp/batch-tx-requester/tx_validator.js +2 -2
- package/dest/services/reqresp/interface.d.ts +10 -1
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +15 -1
- 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 +16 -11
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +21 -10
- 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 +27 -11
- 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/rate-limiter/rate_limiter.d.ts +5 -4
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
- package/dest/services/reqresp/reqresp.d.ts +1 -1
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +30 -14
- package/dest/services/service.d.ts +43 -4
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +22 -4
- package/dest/services/tx_collection/config.d.ts.map +1 -1
- package/dest/services/tx_collection/config.js +49 -3
- package/dest/services/tx_collection/fast_tx_collection.d.ts +6 -8
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/fast_tx_collection.js +88 -88
- 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 +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 +3 -2
- package/dest/services/tx_collection/index.d.ts.map +1 -1
- package/dest/services/tx_collection/index.js +1 -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 +2 -1
- package/dest/services/tx_collection/proposal_tx_collector.d.ts +15 -15
- package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
- package/dest/services/tx_collection/proposal_tx_collector.js +6 -6
- 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/slow_tx_collection.d.ts +7 -3
- 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 +23 -13
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection.js +75 -3
- 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 +13 -7
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_source.js +26 -7
- 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 +4 -4
- package/dest/services/tx_provider.d.ts.map +1 -1
- package/dest/services/tx_provider.js +9 -8
- package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.js +1 -2
- package/dest/test-helpers/mock-pubsub.d.ts +30 -4
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.js +105 -4
- package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +4 -3
- package/dest/test-helpers/testbench-utils.d.ts +43 -38
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
- package/dest/test-helpers/testbench-utils.js +149 -61
- package/dest/testbench/p2p_client_testbench_worker.d.ts +2 -2
- package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +58 -28
- package/dest/testbench/worker_client_manager.d.ts +3 -1
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +6 -3
- package/dest/util.d.ts +3 -3
- package/dest/util.d.ts.map +1 -1
- package/package.json +14 -14
- package/src/client/factory.ts +108 -28
- package/src/client/interface.ts +65 -35
- package/src/client/p2p_client.ts +210 -269
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +34 -15
- package/src/config.ts +165 -44
- package/src/errors/p2p-service.error.ts +11 -0
- package/src/errors/tx-pool.error.ts +12 -0
- package/src/index.ts +1 -1
- package/src/mem_pools/attestation_pool/attestation_pool.ts +499 -91
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +442 -102
- package/src/mem_pools/attestation_pool/index.ts +9 -2
- package/src/mem_pools/attestation_pool/mocks.ts +2 -1
- package/src/mem_pools/index.ts +2 -2
- package/src/mem_pools/instrumentation.ts +17 -13
- package/src/mem_pools/interface.ts +4 -4
- 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 +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 +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 +27 -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 +247 -0
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +343 -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 +1105 -0
- package/src/msg_validators/attestation_validator/README.md +49 -0
- package/src/msg_validators/attestation_validator/attestation_validator.ts +5 -4
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +2 -2
- package/src/msg_validators/clock_tolerance.ts +4 -3
- package/src/msg_validators/proposal_validator/README.md +123 -0
- package/src/msg_validators/proposal_validator/block_proposal_validator.ts +14 -4
- package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +20 -7
- package/src/msg_validators/proposal_validator/proposal_validator.ts +69 -45
- package/src/msg_validators/tx_validator/README.md +119 -0
- package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +5 -5
- package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
- package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
- package/src/msg_validators/tx_validator/block_header_validator.ts +15 -3
- package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
- package/src/msg_validators/tx_validator/data_validator.ts +42 -1
- package/src/msg_validators/tx_validator/double_spend_validator.ts +11 -6
- package/src/msg_validators/tx_validator/factory.ts +394 -78
- package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
- package/src/msg_validators/tx_validator/gas_validator.ts +123 -27
- package/src/msg_validators/tx_validator/index.ts +2 -0
- package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
- package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
- package/src/msg_validators/tx_validator/phases_validator.ts +82 -27
- package/src/msg_validators/tx_validator/timestamp_validator.ts +23 -18
- package/src/services/dummy_service.ts +24 -7
- package/src/services/encoding.ts +18 -10
- 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/libp2p_service.ts +564 -412
- package/src/services/peer-manager/metrics.ts +7 -0
- package/src/services/peer-manager/peer_manager.ts +28 -9
- package/src/services/peer-manager/peer_scoring.ts +46 -5
- package/src/services/reqresp/README.md +229 -0
- package/src/services/reqresp/batch-tx-requester/README.md +53 -14
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +89 -122
- package/src/services/reqresp/batch-tx-requester/interface.ts +3 -6
- package/src/services/reqresp/batch-tx-requester/missing_txs.ts +30 -71
- package/src/services/reqresp/batch-tx-requester/peer_collection.ts +68 -24
- package/src/services/reqresp/batch-tx-requester/tx_validator.ts +2 -2
- package/src/services/reqresp/interface.ts +26 -1
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +23 -14
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +38 -15
- package/src/services/reqresp/protocols/tx.ts +22 -0
- package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
- package/src/services/reqresp/reqresp.ts +35 -15
- package/src/services/service.ts +57 -3
- package/src/services/tx_collection/config.ts +74 -6
- package/src/services/tx_collection/fast_tx_collection.ts +94 -97
- package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
- package/src/services/tx_collection/file_store_tx_source.ts +129 -0
- package/src/services/tx_collection/index.ts +2 -1
- package/src/services/tx_collection/instrumentation.ts +7 -1
- package/src/services/tx_collection/proposal_tx_collector.ts +21 -27
- package/src/services/tx_collection/request_tracker.ts +127 -0
- package/src/services/tx_collection/slow_tx_collection.ts +66 -33
- package/src/services/tx_collection/tx_collection.ts +114 -19
- package/src/services/tx_collection/tx_collection_sink.ts +30 -34
- package/src/services/tx_collection/tx_source.ts +28 -8
- 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/test-helpers/make-test-p2p-clients.ts +4 -6
- package/src/test-helpers/mock-pubsub.ts +146 -9
- package/src/test-helpers/reqresp-nodes.ts +5 -7
- package/src/test-helpers/testbench-utils.ts +156 -74
- package/src/testbench/p2p_client_testbench_worker.ts +64 -31
- package/src/testbench/worker_client_manager.ts +13 -6
- package/src/util.ts +8 -2
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
- 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 -218
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
- 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 -180
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
- 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 -596
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -122
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
- package/dest/mem_pools/tx_pool/index.d.ts +0 -3
- package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/index.js +0 -2
- package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
- package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/priority.js +0 -15
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
- 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 -400
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
- package/src/mem_pools/tx_pool/README.md +0 -270
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
- package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
- package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
- package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -162
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
- package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
- package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
- package/src/mem_pools/tx_pool/index.ts +0 -2
- package/src/mem_pools/tx_pool/priority.ts +0 -20
- package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -319
- package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import { chunkWrapAround } from '@aztec/foundation/collection';
|
|
2
|
-
import { TimeoutError } from '@aztec/foundation/error';
|
|
3
2
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
3
|
import { FifoMemoryQueue, Semaphore } from '@aztec/foundation/queue';
|
|
5
4
|
import { sleep } from '@aztec/foundation/sleep';
|
|
6
|
-
import { DateProvider
|
|
5
|
+
import { DateProvider } from '@aztec/foundation/timer';
|
|
7
6
|
import { PeerErrorSeverity } from '@aztec/stdlib/p2p';
|
|
8
7
|
import { TxHash } from '@aztec/stdlib/tx';
|
|
9
|
-
import { peerIdFromString } from '@libp2p/peer-id';
|
|
10
8
|
import { ReqRespSubProtocol } from '.././interface.js';
|
|
11
9
|
import { BlockTxsRequest, BlockTxsResponse } from '.././protocols/index.js';
|
|
12
10
|
import { ReqRespStatus } from '.././status.js';
|
|
13
11
|
import { DEFAULT_BATCH_TX_REQUESTER_BAD_PEER_THRESHOLD, DEFAULT_BATCH_TX_REQUESTER_DUMB_PARALLEL_WORKER_COUNT, DEFAULT_BATCH_TX_REQUESTER_SMART_PARALLEL_WORKER_COUNT, DEFAULT_BATCH_TX_REQUESTER_TX_BATCH_SIZE } from './config.js';
|
|
14
|
-
import {
|
|
12
|
+
import { MissingTxMetadataCollection } from './missing_txs.js';
|
|
15
13
|
import { PeerCollection } from './peer_collection.js';
|
|
16
14
|
import { BatchRequestTxValidator } from './tx_validator.js';
|
|
17
15
|
/*
|
|
@@ -31,83 +29,64 @@ import { BatchRequestTxValidator } from './tx_validator.js';
|
|
|
31
29
|
* - Bad peer:
|
|
32
30
|
* - Is the peer which was unable to send us successful response N times in a row
|
|
33
31
|
* */ export class BatchTxRequester {
|
|
34
|
-
|
|
32
|
+
requestTracker;
|
|
33
|
+
blockTxsSource;
|
|
35
34
|
pinnedPeer;
|
|
36
|
-
timeoutMs;
|
|
37
35
|
p2pService;
|
|
38
36
|
logger;
|
|
39
|
-
dateProvider;
|
|
40
37
|
opts;
|
|
41
38
|
peers;
|
|
42
39
|
txsMetadata;
|
|
43
|
-
deadline;
|
|
44
40
|
smartRequesterSemaphore;
|
|
45
41
|
txQueue;
|
|
46
42
|
txValidator;
|
|
47
43
|
smartParallelWorkerCount;
|
|
48
44
|
dumbParallelWorkerCount;
|
|
49
45
|
txBatchSize;
|
|
50
|
-
constructor(
|
|
51
|
-
this.
|
|
46
|
+
constructor(requestTracker, blockTxsSource, pinnedPeer, p2pService, logger, dateProvider, opts){
|
|
47
|
+
this.requestTracker = requestTracker;
|
|
48
|
+
this.blockTxsSource = blockTxsSource;
|
|
52
49
|
this.pinnedPeer = pinnedPeer;
|
|
53
|
-
this.timeoutMs = timeoutMs;
|
|
54
50
|
this.p2pService = p2pService;
|
|
55
51
|
this.logger = logger ?? createLogger('p2p:reqresp_batch');
|
|
56
|
-
this.dateProvider = dateProvider ?? new DateProvider();
|
|
57
52
|
this.opts = opts ?? {};
|
|
58
53
|
this.smartParallelWorkerCount = this.opts.smartParallelWorkerCount ?? DEFAULT_BATCH_TX_REQUESTER_SMART_PARALLEL_WORKER_COUNT;
|
|
59
54
|
this.dumbParallelWorkerCount = this.opts.dumbParallelWorkerCount ?? DEFAULT_BATCH_TX_REQUESTER_DUMB_PARALLEL_WORKER_COUNT;
|
|
60
55
|
this.txBatchSize = this.opts.txBatchSize ?? DEFAULT_BATCH_TX_REQUESTER_TX_BATCH_SIZE;
|
|
61
|
-
this.deadline = this.dateProvider.now() + this.timeoutMs;
|
|
62
56
|
this.txQueue = new FifoMemoryQueue(this.logger);
|
|
63
57
|
this.txValidator = this.opts.txValidator ?? new BatchRequestTxValidator(this.p2pService.txValidatorConfig);
|
|
64
58
|
if (this.opts.peerCollection) {
|
|
65
59
|
this.peers = this.opts.peerCollection;
|
|
66
60
|
} else {
|
|
67
|
-
const initialPeers = this.p2pService.connectionSampler.getPeerListSortedByConnectionCountAsc();
|
|
68
61
|
const badPeerThreshold = this.opts.badPeerThreshold ?? DEFAULT_BATCH_TX_REQUESTER_BAD_PEER_THRESHOLD;
|
|
69
|
-
this.peers = new PeerCollection(
|
|
62
|
+
this.peers = new PeerCollection(this.p2pService.connectionSampler, this.pinnedPeer, dateProvider ?? new DateProvider(), badPeerThreshold, this.p2pService.peerScoring);
|
|
70
63
|
}
|
|
71
|
-
|
|
72
|
-
h.toString(),
|
|
73
|
-
new MissingTxMetadata(h)
|
|
74
|
-
]);
|
|
75
|
-
this.txsMetadata = new MissingTxMetadataCollection(entries, this.txBatchSize);
|
|
64
|
+
this.txsMetadata = new MissingTxMetadataCollection(requestTracker, this.txBatchSize);
|
|
76
65
|
this.smartRequesterSemaphore = this.opts.semaphore ?? new Semaphore(0);
|
|
77
66
|
}
|
|
78
67
|
/*
|
|
79
68
|
* Fetches all missing transactions and yields them one by one
|
|
80
69
|
* */ async *run() {
|
|
81
|
-
// Our timeout is represented in milliseconds but queue expects seconds
|
|
82
|
-
// We also want to make sure we wait at least 1 second in case of very low timeouts
|
|
83
|
-
const timeoutQueueAfter = Math.max(Math.ceil(this.timeoutMs / 1_000), 1);
|
|
84
70
|
try {
|
|
85
71
|
if (this.txsMetadata.getMissingTxHashes().size === 0) {
|
|
86
72
|
return undefined;
|
|
87
73
|
}
|
|
88
|
-
// Start workers in background
|
|
89
|
-
const workersPromise =
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
74
|
+
// Start workers in background. Workers stop themselves via requestTracker.checkCancelled().
|
|
75
|
+
const workersPromise = Promise.allSettled([
|
|
76
|
+
this.smartRequester(),
|
|
77
|
+
this.dumbRequester(),
|
|
78
|
+
this.pinnedPeerRequester()
|
|
79
|
+
]).finally(()=>{
|
|
94
80
|
this.txQueue.end();
|
|
95
81
|
});
|
|
82
|
+
// Yield txs as workers put them on the queue. The queue's end() drains remaining items
|
|
83
|
+
// before returning null, so we don't lose any txs.
|
|
96
84
|
while(true){
|
|
97
|
-
const tx = await this.txQueue.get(
|
|
98
|
-
// null indicates that the queue has ended
|
|
85
|
+
const tx = await this.txQueue.get();
|
|
99
86
|
if (tx === null) {
|
|
100
87
|
break;
|
|
101
88
|
}
|
|
102
89
|
yield tx;
|
|
103
|
-
if (this.shouldStop()) {
|
|
104
|
-
// Drain queue before ending
|
|
105
|
-
let remaining;
|
|
106
|
-
while((remaining = this.txQueue.getImmediate()) !== undefined){
|
|
107
|
-
yield remaining;
|
|
108
|
-
}
|
|
109
|
-
break;
|
|
110
|
-
}
|
|
111
90
|
}
|
|
112
91
|
this.unlockSmartRequesterSemaphores();
|
|
113
92
|
await workersPromise;
|
|
@@ -164,7 +143,7 @@ import { BatchRequestTxValidator } from './tx_validator.js';
|
|
|
164
143
|
this.logger.debug(`Pinned peer ${this.pinnedPeer.toString()} has no txs to request`);
|
|
165
144
|
return;
|
|
166
145
|
}
|
|
167
|
-
const request = BlockTxsRequest.
|
|
146
|
+
const request = BlockTxsRequest.fromTxsSourceAndMissingTxs(this.blockTxsSource, txs);
|
|
168
147
|
if (!request) {
|
|
169
148
|
return;
|
|
170
149
|
}
|
|
@@ -181,7 +160,6 @@ import { BatchRequestTxValidator } from './tx_validator.js';
|
|
|
181
160
|
/*
|
|
182
161
|
* Starts dumb worker loops
|
|
183
162
|
* */ async dumbRequester() {
|
|
184
|
-
const nextPeerIndex = this.makeRoundRobinIndexer();
|
|
185
163
|
const nextBatchIndex = this.makeRoundRobinIndexer();
|
|
186
164
|
// Chunk missing tx hashes into batches of txBatchSize, wrapping around to ensure no peer gets less than txBatchSize
|
|
187
165
|
const txChunks = ()=>{
|
|
@@ -199,7 +177,7 @@ import { BatchRequestTxValidator } from './tx_validator.js';
|
|
|
199
177
|
// If peer is dumb peer, we don't know yet if they received full blockProposal
|
|
200
178
|
// there is solid chance that peer didn't receive proposal yet, thus we must send full hashes
|
|
201
179
|
const includeFullHashesInRequestNotJustIndices = true;
|
|
202
|
-
const blockRequest = BlockTxsRequest.
|
|
180
|
+
const blockRequest = BlockTxsRequest.fromTxsSourceAndMissingTxs(this.blockTxsSource, txs, includeFullHashesInRequestNotJustIndices);
|
|
203
181
|
const blockRequestHasNoMissingTxsFromTheProposal = !blockRequest;
|
|
204
182
|
if (blockRequestHasNoMissingTxsFromTheProposal) {
|
|
205
183
|
return undefined;
|
|
@@ -209,15 +187,10 @@ import { BatchRequestTxValidator } from './tx_validator.js';
|
|
|
209
187
|
txs
|
|
210
188
|
};
|
|
211
189
|
};
|
|
212
|
-
const
|
|
213
|
-
const peers = this.peers.getDumbPeersToQuery();
|
|
214
|
-
const idx = nextPeerIndex(()=>peers.length);
|
|
215
|
-
return idx === undefined ? undefined : peerIdFromString(peers[idx]);
|
|
216
|
-
};
|
|
217
|
-
const workerCount = Math.min(this.dumbParallelWorkerCount, this.peers.getAllPeers().size);
|
|
190
|
+
const workerCount = this.dumbParallelWorkerCount;
|
|
218
191
|
const workers = Array.from({
|
|
219
192
|
length: workerCount
|
|
220
|
-
}, (_, index)=>this.dumbWorkerLoop(
|
|
193
|
+
}, (_, index)=>this.dumbWorkerLoop(this.peers.nextDumbPeerToQuery.bind(this.peers), makeRequest, index + 1));
|
|
221
194
|
await Promise.allSettled(workers);
|
|
222
195
|
}
|
|
223
196
|
/*
|
|
@@ -261,15 +234,9 @@ import { BatchRequestTxValidator } from './tx_validator.js';
|
|
|
261
234
|
/*
|
|
262
235
|
* Starts smart worker loops
|
|
263
236
|
* */ async smartRequester() {
|
|
264
|
-
const nextPeerIndex = this.makeRoundRobinIndexer();
|
|
265
|
-
const nextPeer = ()=>{
|
|
266
|
-
const peers = this.peers.getSmartPeersToQuery();
|
|
267
|
-
const idx = nextPeerIndex(()=>peers.length);
|
|
268
|
-
return idx === undefined ? undefined : peerIdFromString(peers[idx]);
|
|
269
|
-
};
|
|
270
237
|
const makeRequest = (pid)=>{
|
|
271
238
|
const txs = this.txsMetadata.getTxsToRequestFromThePeer(pid);
|
|
272
|
-
const blockRequest = BlockTxsRequest.
|
|
239
|
+
const blockRequest = BlockTxsRequest.fromTxsSourceAndMissingTxs(this.blockTxsSource, txs);
|
|
273
240
|
if (!blockRequest) {
|
|
274
241
|
return undefined;
|
|
275
242
|
}
|
|
@@ -279,8 +246,8 @@ import { BatchRequestTxValidator } from './tx_validator.js';
|
|
|
279
246
|
};
|
|
280
247
|
};
|
|
281
248
|
const workers = Array.from({
|
|
282
|
-
length:
|
|
283
|
-
}, (_, index)=>this.smartWorkerLoop(
|
|
249
|
+
length: this.smartParallelWorkerCount
|
|
250
|
+
}, (_, index)=>this.smartWorkerLoop(this.peers.nextSmartPeerToQuery.bind(this.peers), makeRequest, index + 1));
|
|
284
251
|
await Promise.allSettled(workers);
|
|
285
252
|
}
|
|
286
253
|
/*
|
|
@@ -298,35 +265,40 @@ import { BatchRequestTxValidator } from './tx_validator.js';
|
|
|
298
265
|
* */ async smartWorkerLoop(pickNextPeer, request, workerIndex) {
|
|
299
266
|
try {
|
|
300
267
|
this.logger.trace(`Smart worker ${workerIndex} started`);
|
|
301
|
-
await
|
|
268
|
+
await Promise.race([
|
|
269
|
+
this.smartRequesterSemaphore.acquire(),
|
|
270
|
+
this.requestTracker.cancellationToken
|
|
271
|
+
]);
|
|
272
|
+
if (this.requestTracker.checkCancelled()) {
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
302
275
|
this.logger.trace(`Smart worker ${workerIndex} acquired semaphore`);
|
|
303
276
|
while(!this.shouldStop()){
|
|
304
277
|
const peerId = pickNextPeer();
|
|
305
278
|
const weRanOutOfPeersToQuery = peerId === undefined;
|
|
306
279
|
if (weRanOutOfPeersToQuery) {
|
|
307
280
|
this.logger.debug(`Worker loop smart: No more peers to query`);
|
|
308
|
-
// If
|
|
309
|
-
|
|
310
|
-
const
|
|
311
|
-
if (
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
const thereAreSomeRateLimitedSmartPeers = nextSmartPeerDelay !== undefined;
|
|
315
|
-
if (thereAreSomeRateLimitedSmartPeers) {
|
|
316
|
-
await this.sleepClampedToDeadline(nextSmartPeerDelay);
|
|
317
|
-
continue;
|
|
318
|
-
}
|
|
319
|
-
this.logger.debug(`Worker loop smart: No more smart peers to query killing ${workerIndex}`);
|
|
320
|
-
break;
|
|
281
|
+
// If we have rate limited peers wait for them.
|
|
282
|
+
const nextSmartPeerDelay = this.peers.getNextSmartPeerAvailabilityDelayMs();
|
|
283
|
+
const thereAreSomeRateLimitedSmartPeers = nextSmartPeerDelay !== undefined;
|
|
284
|
+
if (thereAreSomeRateLimitedSmartPeers) {
|
|
285
|
+
await this.sleepClampedToDeadline(nextSmartPeerDelay);
|
|
286
|
+
continue;
|
|
321
287
|
}
|
|
322
|
-
// Otherwise there are still some dumb peers that could become smart.
|
|
323
288
|
// We end up here when all known smart peers became temporarily unavailable via combination of
|
|
324
289
|
// (bad, in-flight, or rate-limited) or in some weird scenario all current smart peers turn bad which is permanent
|
|
325
|
-
// but dumb peers
|
|
290
|
+
// but there are dumb peers that could be promoted
|
|
291
|
+
// or new peer can join as dumb and be promoted later
|
|
326
292
|
//
|
|
327
293
|
// When a dumb peer responds with valid txIndices, it gets
|
|
328
294
|
// promoted to smart and releases the semaphore, waking this worker.
|
|
329
|
-
await
|
|
295
|
+
await Promise.race([
|
|
296
|
+
this.smartRequesterSemaphore.acquire(),
|
|
297
|
+
this.requestTracker.cancellationToken
|
|
298
|
+
]);
|
|
299
|
+
if (this.requestTracker.checkCancelled()) {
|
|
300
|
+
break;
|
|
301
|
+
}
|
|
330
302
|
this.logger.debug(`Worker loop smart: acquired next smart peer`);
|
|
331
303
|
continue;
|
|
332
304
|
}
|
|
@@ -349,11 +321,7 @@ import { BatchRequestTxValidator } from './tx_validator.js';
|
|
|
349
321
|
});
|
|
350
322
|
}
|
|
351
323
|
} catch (err) {
|
|
352
|
-
|
|
353
|
-
this.logger.debug(`Smart worker ${workerIndex} timed out waiting for semaphore`);
|
|
354
|
-
} else {
|
|
355
|
-
this.logger.error(`Smart worker ${workerIndex} encountered an error: ${err}`);
|
|
356
|
-
}
|
|
324
|
+
this.logger.error(`Smart worker ${workerIndex} encountered an error: ${err}`);
|
|
357
325
|
} finally{
|
|
358
326
|
this.logger.debug(`Smart worker ${workerIndex} finished`);
|
|
359
327
|
}
|
|
@@ -391,9 +359,17 @@ import { BatchRequestTxValidator } from './tx_validator.js';
|
|
|
391
359
|
* - FAILURE and UNKNOWN: We penalise this, if peer has been penalised this way N times they are not queried again
|
|
392
360
|
* this implies we will query these peers couple of more times and give them a chance to "redeem" themselves before completely ignoring them
|
|
393
361
|
*/ handleFailResponseFromPeer(peerId, responseStatus) {
|
|
394
|
-
//TODO: Should we ban these peers?
|
|
395
362
|
if (responseStatus === ReqRespStatus.FAILURE || responseStatus === ReqRespStatus.UNKNOWN) {
|
|
396
363
|
this.peers.penalisePeer(peerId, PeerErrorSeverity.HighToleranceError);
|
|
364
|
+
this.peers.markPeerDumb(peerId);
|
|
365
|
+
this.txsMetadata.clearPeerData(peerId);
|
|
366
|
+
return;
|
|
367
|
+
}
|
|
368
|
+
// NOT_FOUND means the peer pruned its block proposal — it can no longer serve
|
|
369
|
+
// index-based requests, but this is a legitimate state so we don't penalize.
|
|
370
|
+
if (responseStatus === ReqRespStatus.NOT_FOUND) {
|
|
371
|
+
this.peers.markPeerDumb(peerId);
|
|
372
|
+
this.txsMetadata.clearPeerData(peerId);
|
|
397
373
|
return;
|
|
398
374
|
}
|
|
399
375
|
if (responseStatus === ReqRespStatus.RATE_LIMIT_EXCEEDED) {
|
|
@@ -435,6 +411,9 @@ import { BatchRequestTxValidator } from './tx_validator.js';
|
|
|
435
411
|
}
|
|
436
412
|
});
|
|
437
413
|
if (hasInvalidTx) {
|
|
414
|
+
this.logger.warn(`Penalizing peer ${peerId.toString()} for sending invalid transactions in batch response`, {
|
|
415
|
+
peerId
|
|
416
|
+
});
|
|
438
417
|
this.peers.penalisePeer(peerId, PeerErrorSeverity.LowToleranceError);
|
|
439
418
|
} else {
|
|
440
419
|
// If we have received successful response from the peer, they have "redeemed" themselves and not considered bad anymore
|
|
@@ -462,10 +441,9 @@ import { BatchRequestTxValidator } from './tx_validator.js';
|
|
|
462
441
|
if (smartPeersAreDisabled) {
|
|
463
442
|
return;
|
|
464
443
|
}
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
if (!this.isBlockResponseValid(response)) {
|
|
444
|
+
const hasArchiveRootMismatch = this.blockTxsSource.archive.toString() !== response.archiveRoot.toString();
|
|
445
|
+
if (hasArchiveRootMismatch) {
|
|
446
|
+
this.handleArchiveRootMismatch(peerId, response);
|
|
469
447
|
return;
|
|
470
448
|
}
|
|
471
449
|
// We mark peer as "smart" only if they have some txs we are missing
|
|
@@ -477,16 +455,24 @@ import { BatchRequestTxValidator } from './tx_validator.js';
|
|
|
477
455
|
this.peers.markPeerSmart(peerId);
|
|
478
456
|
this.markTxsPeerHas(peerId, response);
|
|
479
457
|
// Unblock smart workers
|
|
480
|
-
|
|
481
|
-
this.smartRequesterSemaphore.release();
|
|
482
|
-
}
|
|
458
|
+
this.smartRequesterSemaphore.release();
|
|
483
459
|
}
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
460
|
+
/**
|
|
461
|
+
* Handles an archive root mismatch between local state and peer response.
|
|
462
|
+
*
|
|
463
|
+
* - Response archive is Fr.ZERO (peer pruned proposal, legitimate): marks peer dumb.
|
|
464
|
+
* - Non-zero archive mismatch (malicious response): penalises + marks dumb.
|
|
465
|
+
*/ handleArchiveRootMismatch(peerId, response) {
|
|
466
|
+
if (!response.archiveRoot.isZero()) {
|
|
467
|
+
this.peers.penalisePeer(peerId, PeerErrorSeverity.LowToleranceError);
|
|
468
|
+
}
|
|
469
|
+
this.peers.markPeerDumb(peerId);
|
|
470
|
+
this.txsMetadata.clearPeerData(peerId);
|
|
488
471
|
}
|
|
489
472
|
peerHasSomeTxsWeAreMissing(_peerId, response) {
|
|
473
|
+
if (response.txIndices.isEmpty()) {
|
|
474
|
+
return false;
|
|
475
|
+
}
|
|
490
476
|
const txsPeerHas = new Set(this.extractHashesPeerHasFromResponse(response).map((h)=>h.toString()));
|
|
491
477
|
return this.txsMetadata.getMissingTxHashes().intersection(txsPeerHas).size > 0;
|
|
492
478
|
}
|
|
@@ -498,7 +484,7 @@ import { BatchRequestTxValidator } from './tx_validator.js';
|
|
|
498
484
|
extractHashesPeerHasFromResponse(response) {
|
|
499
485
|
const hashes = [];
|
|
500
486
|
const indicesOfHashesPeerHas = new Set(response.txIndices.getTrueIndices());
|
|
501
|
-
this.
|
|
487
|
+
this.blockTxsSource.txHashes.forEach((hash, idx)=>{
|
|
502
488
|
if (indicesOfHashesPeerHas.has(idx)) {
|
|
503
489
|
hashes.push(hash);
|
|
504
490
|
}
|
|
@@ -527,23 +513,12 @@ import { BatchRequestTxValidator } from './tx_validator.js';
|
|
|
527
513
|
};
|
|
528
514
|
}
|
|
529
515
|
/*
|
|
530
|
-
*
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
/*
|
|
534
|
-
* Checks if the BatchTxRequester should stop fetching missing txs
|
|
535
|
-
* Conditions for stopping are:
|
|
536
|
-
* - There have been no missing transactions to start with
|
|
537
|
-
* - All transactions have been fetched
|
|
538
|
-
* - The deadline has been hit (no more time to fetch)
|
|
539
|
-
* - This process has been cancelled via abortSignal
|
|
540
|
-
*
|
|
541
|
-
* @returns true if BatchTxRequester should stop, otherwise false*/ shouldStop() {
|
|
542
|
-
const aborted = this.opts.abortSignal?.aborted ?? false;
|
|
543
|
-
if (aborted) {
|
|
516
|
+
* Checks if the BatchTxRequester should stop fetching missing txs.
|
|
517
|
+
* Delegates to requestTracker which covers: deadline hit, all txs fetched, or external cancellation. */ shouldStop() {
|
|
518
|
+
if (this.requestTracker.checkCancelled()) {
|
|
544
519
|
this.unlockSmartRequesterSemaphores();
|
|
545
520
|
}
|
|
546
|
-
return
|
|
521
|
+
return this.requestTracker.checkCancelled();
|
|
547
522
|
}
|
|
548
523
|
/*
|
|
549
524
|
* Helper function which unlocks all smart requester semaphores
|
|
@@ -557,10 +532,12 @@ import { BatchRequestTxValidator } from './tx_validator.js';
|
|
|
557
532
|
* Sleeps for the given duration, but clamped to the deadline.
|
|
558
533
|
* This ensures we don't sleep past the deadline.
|
|
559
534
|
* */ async sleepClampedToDeadline(durationMs) {
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
if (thereIsTimeRemaining) {
|
|
563
|
-
await sleep(Math.min(durationMs, remaining));
|
|
535
|
+
if (this.requestTracker.checkCancelled()) {
|
|
536
|
+
return;
|
|
564
537
|
}
|
|
538
|
+
await Promise.race([
|
|
539
|
+
sleep(durationMs),
|
|
540
|
+
this.requestTracker.cancellationToken
|
|
541
|
+
]);
|
|
565
542
|
}
|
|
566
543
|
}
|
|
@@ -4,24 +4,22 @@ import type { Tx, TxHash } from '@aztec/stdlib/tx';
|
|
|
4
4
|
import type { PeerId } from '@libp2p/interface';
|
|
5
5
|
import type { ConnectionSampler } from '../connection-sampler/connection_sampler.js';
|
|
6
6
|
import type { ReqRespInterface } from '../interface.js';
|
|
7
|
-
import type { MissingTxMetadata } from './missing_txs.js';
|
|
8
7
|
import type { IPeerCollection } from './peer_collection.js';
|
|
9
8
|
import type { BatchRequestTxValidatorConfig, IBatchRequestTxValidator } from './tx_validator.js';
|
|
10
9
|
export interface IPeerPenalizer {
|
|
11
10
|
penalizePeer(peerId: PeerId, penalty: PeerErrorSeverity): void;
|
|
12
11
|
}
|
|
13
12
|
export interface ITxMetadataCollection {
|
|
14
|
-
size: number;
|
|
15
|
-
values(): IterableIterator<MissingTxMetadata>;
|
|
16
13
|
getMissingTxHashes(): Set<string>;
|
|
14
|
+
markFetched(peerId: PeerId, tx: Tx): boolean;
|
|
17
15
|
getTxsToRequestFromThePeer(peer: PeerId): TxHash[];
|
|
18
16
|
markRequested(txHash: TxHash): void;
|
|
19
17
|
markInFlightBySmartPeer(txHash: TxHash): void;
|
|
20
18
|
markNotInFlightBySmartPeer(txHash: TxHash): void;
|
|
21
19
|
alreadyFetched(txHash: TxHash): boolean;
|
|
22
|
-
markFetched(peerId: PeerId, tx: Tx): boolean;
|
|
23
20
|
markPeerHas(peerId: PeerId, txHashes: TxHash[]): void;
|
|
24
|
-
|
|
21
|
+
/** Remove all tx metadata associations for a peer (e.g. on demotion from smart to dumb). */
|
|
22
|
+
clearPeerData(peerId: PeerId): void;
|
|
25
23
|
}
|
|
26
24
|
/**
|
|
27
25
|
* Interface for BatchTxRequester dependencies that can be injected from upstream
|
|
@@ -43,8 +41,7 @@ export interface BatchTxRequesterOptions {
|
|
|
43
41
|
badPeerThreshold?: number;
|
|
44
42
|
semaphore?: ISemaphore;
|
|
45
43
|
peerCollection?: IPeerCollection;
|
|
46
|
-
abortSignal?: AbortSignal;
|
|
47
44
|
/** Optional tx validator for testing - if not provided, one is created from p2pService.txValidatorConfig */
|
|
48
45
|
txValidator?: IBatchRequestTxValidator;
|
|
49
46
|
}
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvcmVxcmVzcC9iYXRjaC10eC1yZXF1ZXN0ZXIvaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0QsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRW5ELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWhELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDckYsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RCxPQUFPLEtBQUssRUFBRSw2QkFBNkIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWpHLE1BQU0sV0FBVyxjQUFjO0lBQzdCLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsR0FBRyxJQUFJLENBQUM7Q0FDaEU7QUFFRCxNQUFNLFdBQVcscUJBQXFCO0lBQ3BDLGtCQUFrQixJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUM3QywwQkFBMEIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBQ25ELGFBQWEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNwQyx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQztJQUM5QywwQkFBMEIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNqRCxjQUFjLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUM7SUFFeEMsV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztJQUN0RCw0RkFBNEY7SUFDNUYsYUFBYSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDO0NBQ3JDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFdBQVcsNkJBQTZCO0lBQzVDLHNEQUFzRDtJQUN0RCxPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLGtCQUFrQixHQUFHLG1CQUFtQixDQUFDLENBQUM7SUFDMUUsZ0RBQWdEO0lBQ2hELGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSx1Q0FBdUMsQ0FBQyxDQUFDO0lBQ3BGLHNEQUFzRDtJQUN0RCxpQkFBaUIsRUFBRSw2QkFBNkIsQ0FBQztJQUNqRCx3Q0FBd0M7SUFDeEMsV0FBVyxFQUFFLGNBQWMsQ0FBQztDQUM3QjtBQUVELE1BQU0sV0FBVyx1QkFBdUI7SUFDdEMsd0JBQXdCLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDbEMsdUJBQXVCLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDakMsV0FBVyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3JCLGdCQUFnQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBRTFCLFNBQVMsQ0FBQyxFQUFFLFVBQVUsQ0FBQztJQUN2QixjQUFjLENBQUMsRUFBRSxlQUFlLENBQUM7SUFDakMsNEdBQTRHO0lBQzVHLFdBQVcsQ0FBQyxFQUFFLHdCQUF3QixDQUFDO0NBQ3hDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/batch-tx-requester/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/batch-tx-requester/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,6BAA6B,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAEjG,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAChE;AAED,MAAM,WAAW,qBAAqB;IACpC,kBAAkB,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;IAC7C,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACnD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACjD,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAExC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACtD,4FAA4F;IAC5F,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,sDAAsD;IACtD,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,GAAG,mBAAmB,CAAC,CAAC;IAC1E,gDAAgD;IAChD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,uCAAuC,CAAC,CAAC;IACpF,sDAAsD;IACtD,iBAAiB,EAAE,6BAA6B,CAAC;IACjD,wCAAwC;IACxC,WAAW,EAAE,cAAc,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,4GAA4G;IAC5G,WAAW,CAAC,EAAE,wBAAwB,CAAC;CACxC"}
|
|
@@ -1,30 +1,26 @@
|
|
|
1
1
|
import { type Tx, TxHash } from '@aztec/stdlib/tx';
|
|
2
2
|
import type { PeerId } from '@libp2p/interface';
|
|
3
|
+
import type { IRequestTracker } from '../../tx_collection/request_tracker.js';
|
|
3
4
|
import type { ITxMetadataCollection } from './interface.js';
|
|
4
|
-
|
|
5
|
-
readonly txHash:
|
|
6
|
-
fetched: boolean;
|
|
5
|
+
declare class MissingTxMetadata {
|
|
6
|
+
readonly txHash: string;
|
|
7
7
|
requestedCount: number;
|
|
8
8
|
inFlightCount: number;
|
|
9
9
|
tx: Tx | undefined;
|
|
10
10
|
readonly peers: Set<string>;
|
|
11
|
-
constructor(txHash:
|
|
11
|
+
constructor(txHash: string, requestedCount?: number, inFlightCount?: number, tx?: Tx | undefined, peers?: Set<string>);
|
|
12
12
|
markAsRequested(): void;
|
|
13
13
|
markInFlight(): void;
|
|
14
14
|
markNotInFlight(): void;
|
|
15
15
|
isInFlight(): boolean;
|
|
16
|
-
markAsFetched(peerId: PeerId, tx: Tx): boolean;
|
|
17
|
-
toString(): `0x${string}`;
|
|
18
16
|
}
|
|
19
|
-
export declare class MissingTxMetadataCollection
|
|
17
|
+
export declare class MissingTxMetadataCollection implements ITxMetadataCollection {
|
|
18
|
+
private requestTracker;
|
|
20
19
|
private readonly txBatchSize;
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
private txMetadata;
|
|
21
|
+
constructor(requestTracker: IRequestTracker, txBatchSize?: number);
|
|
23
22
|
getPrioritizingNotInFlightAndLowerRequestCount(txs: string[]): MissingTxMetadata[];
|
|
24
|
-
getFetchedTxHashes(): Set<string>;
|
|
25
23
|
getMissingTxHashes(): Set<string>;
|
|
26
|
-
getInFlightTxHashes(): Set<string>;
|
|
27
|
-
getFetchedTxs(): Tx[];
|
|
28
24
|
getTxsPeerHas(peer: PeerId): Set<string>;
|
|
29
25
|
getTxsToRequestFromThePeer(peer: PeerId): TxHash[];
|
|
30
26
|
markRequested(txHash: TxHash): void;
|
|
@@ -33,5 +29,7 @@ export declare class MissingTxMetadataCollection extends Map<string, MissingTxMe
|
|
|
33
29
|
alreadyFetched(txHash: TxHash): boolean;
|
|
34
30
|
markFetched(peerId: PeerId, tx: Tx): boolean;
|
|
35
31
|
markPeerHas(peerId: PeerId, txHash: TxHash[]): void;
|
|
32
|
+
clearPeerData(peerId: PeerId): void;
|
|
36
33
|
}
|
|
37
|
-
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzc2luZ190eHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL2JhdGNoLXR4LXJlcXVlc3Rlci9taXNzaW5nX3R4cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFaEQsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFOUUsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RCxjQUFNLGlCQUFpQjthQUVILE1BQU0sRUFBRSxNQUFNO0lBQ3ZCLGNBQWM7SUFDZCxhQUFhO0lBQ2IsRUFBRSxFQUFFLEVBQUUsR0FBRyxTQUFTO2FBQ1QsS0FBSztJQUx2QixZQUNrQixNQUFNLEVBQUUsTUFBTSxFQUN2QixjQUFjLFNBQUksRUFDbEIsYUFBYSxTQUFJLEVBQ2pCLEVBQUUsR0FBRSxFQUFFLEdBQUcsU0FBcUIsRUFDckIsS0FBSyxjQUFvQixFQUN2QztJQUVHLGVBQWUsU0FFckI7SUFFTSxZQUFZLFNBRWxCO0lBRU0sZUFBZSxTQUVyQjtJQUVNLFVBQVUsSUFBSSxPQUFPLENBRTNCO0NBQ0Y7QUFPRCxxQkFBYSwyQkFBNEIsWUFBVyxxQkFBcUI7SUFJckUsT0FBTyxDQUFDLGNBQWM7SUFDdEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXO0lBSjlCLE9BQU8sQ0FBQyxVQUFVLENBQXdDO0lBRTFELFlBQ1UsY0FBYyxFQUFFLGVBQWUsRUFDdEIsV0FBVyxHQUFFLE1BQWlELEVBR2hGO0lBRU0sOENBQThDLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLGlCQUFpQixFQUFFLENBZXhGO0lBRU0sa0JBQWtCLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUV2QztJQUVNLGFBQWEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FXOUM7SUFFTSwwQkFBMEIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQXVCeEQ7SUFFTSxhQUFhLENBQUMsTUFBTSxFQUFFLE1BQU0sUUFFbEM7SUFPTSx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxRQUU1QztJQU1NLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxNQUFNLFFBRS9DO0lBRU0sY0FBYyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUU3QztJQUVNLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQWNsRDtJQUVNLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFVbEQ7SUFFTSxhQUFhLENBQUMsTUFBTSxFQUFFLE1BQU0sUUFLbEM7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"missing_txs.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/batch-tx-requester/missing_txs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"missing_txs.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/batch-tx-requester/missing_txs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAE9E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,cAAM,iBAAiB;aAEH,MAAM,EAAE,MAAM;IACvB,cAAc;IACd,aAAa;IACb,EAAE,EAAE,EAAE,GAAG,SAAS;aACT,KAAK;IALvB,YACkB,MAAM,EAAE,MAAM,EACvB,cAAc,SAAI,EAClB,aAAa,SAAI,EACjB,EAAE,GAAE,EAAE,GAAG,SAAqB,EACrB,KAAK,cAAoB,EACvC;IAEG,eAAe,SAErB;IAEM,YAAY,SAElB;IAEM,eAAe,SAErB;IAEM,UAAU,IAAI,OAAO,CAE3B;CACF;AAOD,qBAAa,2BAA4B,YAAW,qBAAqB;IAIrE,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAJ9B,OAAO,CAAC,UAAU,CAAwC;IAE1D,YACU,cAAc,EAAE,eAAe,EACtB,WAAW,GAAE,MAAiD,EAGhF;IAEM,8CAA8C,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAexF;IAEM,kBAAkB,IAAI,GAAG,CAAC,MAAM,CAAC,CAEvC;IAEM,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAW9C;IAEM,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAuBxD;IAEM,aAAa,CAAC,MAAM,EAAE,MAAM,QAElC;IAOM,uBAAuB,CAAC,MAAM,EAAE,MAAM,QAE5C;IAMM,0BAA0B,CAAC,MAAM,EAAE,MAAM,QAE/C;IAEM,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7C;IAEM,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,CAclD;IAEM,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAUlD;IAEM,aAAa,CAAC,MAAM,EAAE,MAAM,QAKlC;CACF"}
|