@aztec/p2p 0.0.1-commit.d6f2b3f94 → 0.0.1-commit.d939eb5aa
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 +7 -7
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +37 -30
- package/dest/client/interface.d.ts +22 -20
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +11 -19
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +92 -104
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +20 -10
- package/dest/config.d.ts +128 -96
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +97 -38
- 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 +1 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +0 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +10 -6
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.js +21 -9
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +6 -6
- 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 +1 -2
- package/dest/mem_pools/index.d.ts.map +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/tx_pool_v2/deleted_pool.d.ts +30 -13
- package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/deleted_pool.js +91 -20
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +3 -3
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +18 -9
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +7 -3
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +3 -3
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +12 -4
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +2 -2
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/index.js +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +54 -5
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +8 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +7 -5
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +9 -7
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +2 -2
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +14 -6
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +4 -4
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +16 -4
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +3 -3
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +3 -3
- package/dest/mem_pools/tx_pool_v2/index.d.ts +2 -2
- package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/index.js +1 -1
- 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 +28 -10
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/interfaces.js +5 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +56 -15
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.js +113 -20
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +12 -3
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +50 -45
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +12 -5
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +17 -6
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +14 -5
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +319 -147
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +5 -2
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +20 -11
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +4 -2
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +2 -2
- package/dest/msg_validators/clock_tolerance.d.ts +12 -1
- package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
- package/dest/msg_validators/clock_tolerance.js +54 -3
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +7 -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 +7 -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 +15 -8
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator.js +67 -47
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +2 -2
- 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/archive_cache.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/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 +112 -43
- 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 +2 -2
- 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/data_store.d.ts +1 -1
- package/dest/services/data_store.d.ts.map +1 -1
- package/dest/services/data_store.js +5 -5
- package/dest/services/dummy_service.d.ts +8 -5
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +10 -5
- package/dest/services/encoding.d.ts +6 -2
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +16 -9
- package/dest/services/gossipsub/topic_score_params.d.ts +30 -7
- package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
- package/dest/services/gossipsub/topic_score_params.js +53 -14
- package/dest/services/libp2p/libp2p_service.d.ts +29 -36
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +224 -197
- 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 +39 -11
- package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
- package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_scoring.js +32 -10
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +12 -8
- 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 +83 -106
- 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/config.d.ts +3 -3
- package/dest/services/reqresp/config.d.ts.map +1 -1
- package/dest/services/reqresp/interface.d.ts +14 -9
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +10 -11
- package/dest/services/reqresp/metrics.d.ts +1 -1
- package/dest/services/reqresp/metrics.d.ts.map +1 -1
- package/dest/services/reqresp/metrics.js +0 -1
- package/dest/services/reqresp/protocols/index.d.ts +1 -2
- package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/index.js +0 -1
- package/dest/services/reqresp/protocols/tx.d.ts +1 -1
- package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/tx.js +1 -3
- 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/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 +0 -10
- package/dest/services/reqresp/reqresp.d.ts +4 -2
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +30 -12
- package/dest/services/service.d.ts +9 -4
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +13 -1
- package/dest/services/tx_collection/config.d.ts.map +1 -1
- package/dest/services/tx_collection/config.js +30 -0
- package/dest/services/tx_collection/fast_tx_collection.d.ts +1 -4
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/fast_tx_collection.js +65 -75
- package/dest/services/tx_collection/file_store_tx_collection.d.ts +38 -29
- package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/file_store_tx_collection.js +126 -77
- package/dest/services/tx_collection/file_store_tx_source.d.ts +17 -6
- package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
- package/dest/services/tx_collection/file_store_tx_source.js +53 -10
- 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 +7 -7
- package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
- package/dest/services/tx_collection/proposal_tx_collector.js +5 -4
- 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 +5 -3
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/slow_tx_collection.js +17 -12
- package/dest/services/tx_collection/tx_collection.d.ts +9 -9
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection.js +26 -10
- package/dest/services/tx_collection/tx_collection_sink.d.ts +6 -5
- package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection_sink.js +13 -22
- 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/tx_file_store.d.ts +3 -2
- package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
- package/dest/services/tx_file_store/tx_file_store.js +9 -6
- package/dest/services/tx_provider.d.ts +3 -3
- package/dest/services/tx_provider.d.ts.map +1 -1
- package/dest/services/tx_provider.js +4 -4
- package/dest/test-helpers/make-test-p2p-clients.d.ts +5 -6
- 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 +14 -6
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.js +43 -12
- 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 +3 -4
- package/dest/test-helpers/testbench-utils.d.ts +8 -3
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
- package/dest/test-helpers/testbench-utils.js +30 -4
- 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 +78 -26
- package/dest/testbench/worker_client_manager.d.ts +10 -1
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +55 -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 +68 -48
- package/src/client/interface.ts +26 -21
- package/src/client/p2p_client.ts +102 -135
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +33 -14
- package/src/config.ts +146 -44
- package/src/errors/p2p-service.error.ts +11 -0
- package/src/errors/tx-pool.error.ts +12 -0
- package/src/index.ts +0 -1
- package/src/mem_pools/attestation_pool/attestation_pool.ts +25 -12
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +6 -6
- package/src/mem_pools/attestation_pool/mocks.ts +2 -1
- package/src/mem_pools/index.ts +0 -3
- package/src/mem_pools/instrumentation.ts +17 -13
- package/src/mem_pools/tx_pool_v2/README.md +52 -28
- package/src/mem_pools/tx_pool_v2/deleted_pool.ts +109 -22
- package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +21 -8
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +7 -3
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +18 -4
- package/src/mem_pools/tx_pool_v2/eviction/index.ts +4 -0
- package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +59 -4
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +5 -5
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +8 -8
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +14 -9
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +33 -6
- package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +4 -3
- package/src/mem_pools/tx_pool_v2/index.ts +1 -1
- package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
- package/src/mem_pools/tx_pool_v2/interfaces.ts +30 -10
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +164 -28
- package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +58 -45
- package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +34 -8
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +353 -143
- package/src/msg_validators/attestation_validator/README.md +49 -0
- package/src/msg_validators/attestation_validator/attestation_validator.ts +21 -9
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +4 -1
- package/src/msg_validators/clock_tolerance.ts +72 -3
- package/src/msg_validators/proposal_validator/README.md +123 -0
- package/src/msg_validators/proposal_validator/block_proposal_validator.ts +17 -4
- package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +23 -7
- package/src/msg_validators/proposal_validator/proposal_validator.ts +79 -49
- package/src/msg_validators/tx_validator/README.md +119 -0
- package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +3 -3
- 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/archive_cache.ts +1 -1
- 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/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 +145 -33
- 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 +7 -7
- package/src/services/data_store.ts +5 -13
- package/src/services/dummy_service.ts +13 -7
- package/src/services/encoding.ts +16 -8
- package/src/services/gossipsub/README.md +29 -14
- package/src/services/gossipsub/topic_score_params.ts +85 -17
- package/src/services/libp2p/libp2p_service.ts +240 -225
- package/src/services/peer-manager/metrics.ts +7 -0
- package/src/services/peer-manager/peer_manager.ts +45 -11
- package/src/services/peer-manager/peer_scoring.ts +27 -5
- package/src/services/reqresp/README.md +229 -0
- package/src/services/reqresp/batch-tx-requester/README.md +46 -7
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +79 -112
- 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/config.ts +2 -2
- package/src/services/reqresp/interface.ts +21 -11
- package/src/services/reqresp/metrics.ts +0 -1
- package/src/services/reqresp/protocols/index.ts +0 -1
- package/src/services/reqresp/protocols/tx.ts +1 -3
- package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
- package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
- package/src/services/reqresp/reqresp.ts +40 -13
- package/src/services/service.ts +17 -3
- package/src/services/tx_collection/config.ts +42 -0
- package/src/services/tx_collection/fast_tx_collection.ts +71 -76
- package/src/services/tx_collection/file_store_tx_collection.ts +143 -93
- package/src/services/tx_collection/file_store_tx_source.ts +69 -10
- package/src/services/tx_collection/instrumentation.ts +7 -1
- package/src/services/tx_collection/proposal_tx_collector.ts +9 -13
- package/src/services/tx_collection/request_tracker.ts +127 -0
- package/src/services/tx_collection/slow_tx_collection.ts +17 -13
- package/src/services/tx_collection/tx_collection.ts +46 -17
- package/src/services/tx_collection/tx_collection_sink.ts +15 -29
- package/src/services/tx_collection/tx_source.ts +28 -8
- package/src/services/tx_file_store/tx_file_store.ts +6 -4
- package/src/services/tx_provider.ts +2 -2
- package/src/test-helpers/make-test-p2p-clients.ts +1 -3
- package/src/test-helpers/mock-pubsub.ts +44 -11
- package/src/test-helpers/reqresp-nodes.ts +5 -8
- package/src/test-helpers/testbench-utils.ts +41 -6
- package/src/testbench/p2p_client_testbench_worker.ts +89 -29
- package/src/testbench/worker_client_manager.ts +68 -6
- package/src/util.ts +8 -2
- 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_mining_rule.js +0 -84
- 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/invalid_txs_after_reorg_rule.js +0 -78
- 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/dest/services/reqresp/protocols/block.d.ts +0 -9
- package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
- package/dest/services/reqresp/protocols/block.js +0 -32
- 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
- package/src/services/reqresp/protocols/block.ts +0 -37
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { times } from '@aztec/foundation/collection';
|
|
2
|
-
import { AbortError, TimeoutError } from '@aztec/foundation/error';
|
|
3
2
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
|
-
import { promiseWithResolvers } from '@aztec/foundation/promise';
|
|
5
3
|
import { sleep } from '@aztec/foundation/sleep';
|
|
6
4
|
import { DateProvider, elapsed } from '@aztec/foundation/timer';
|
|
7
5
|
import { TxHash } from '@aztec/stdlib/tx';
|
|
8
6
|
import { BatchTxRequesterCollector, SendBatchRequestCollector } from './proposal_tx_collector.js';
|
|
7
|
+
import { RequestTracker } from './request_tracker.js';
|
|
9
8
|
export class FastTxCollection {
|
|
10
9
|
nodes;
|
|
11
10
|
txCollectionSink;
|
|
@@ -27,7 +26,9 @@ export class FastTxCollection {
|
|
|
27
26
|
this.missingTxsCollector = missingTxsCollector ?? (missingTxsCollectorType === 'old' ? new SendBatchRequestCollector(p2pService) : new BatchTxRequesterCollector(p2pService, log, dateProvider, undefined, batchTxRequesterConfig));
|
|
28
27
|
}
|
|
29
28
|
async stop() {
|
|
30
|
-
this.requests.forEach((request)=>
|
|
29
|
+
this.requests.forEach((request)=>{
|
|
30
|
+
request.requestTracker.cancel();
|
|
31
|
+
});
|
|
31
32
|
await Promise.resolve();
|
|
32
33
|
}
|
|
33
34
|
getFastCollectionRequests() {
|
|
@@ -48,86 +49,66 @@ export class FastTxCollection {
|
|
|
48
49
|
} : {
|
|
49
50
|
...input.block.toBlockInfo()
|
|
50
51
|
};
|
|
51
|
-
// This promise is used to await for the collection to finish during the main collectFast method.
|
|
52
|
-
// It gets resolved in `foundTxs` when all txs have been collected, or rejected if the request is aborted or hits the deadline.
|
|
53
|
-
const promise = promiseWithResolvers();
|
|
54
|
-
const timeoutTimer = setTimeout(()=>promise.reject(new TimeoutError(`Timed out while collecting txs`)), timeout);
|
|
55
52
|
const request = {
|
|
56
53
|
...input,
|
|
57
54
|
blockInfo,
|
|
58
|
-
|
|
59
|
-
foundTxs: new Map(),
|
|
60
|
-
missingTxHashes: new Set(txHashes.map((t)=>t.toString())),
|
|
61
|
-
deadline: opts.deadline
|
|
55
|
+
requestTracker: RequestTracker.create(txHashes, opts.deadline, this.dateProvider)
|
|
62
56
|
};
|
|
63
57
|
const [duration] = await elapsed(()=>this.collectFast(request, {
|
|
64
58
|
...opts
|
|
65
59
|
}));
|
|
66
|
-
|
|
67
|
-
this.log.verbose(`Collected ${request.foundTxs.size} txs out of ${txHashes.length} for ${input.type} at slot ${blockInfo.slotNumber}`, {
|
|
60
|
+
this.log.verbose(`Collected ${request.requestTracker.collectedTxs.length} txs out of ${txHashes.length} for ${input.type} at slot ${blockInfo.slotNumber}`, {
|
|
68
61
|
...blockInfo,
|
|
69
62
|
duration,
|
|
70
63
|
requestType: input.type,
|
|
71
64
|
missingTxs: [
|
|
72
|
-
...request.missingTxHashes
|
|
65
|
+
...request.requestTracker.missingTxHashes
|
|
73
66
|
]
|
|
74
67
|
});
|
|
75
|
-
return
|
|
76
|
-
...request.foundTxs.values()
|
|
77
|
-
];
|
|
68
|
+
return request.requestTracker.collectedTxs;
|
|
78
69
|
}
|
|
79
70
|
async collectFast(request, opts) {
|
|
80
71
|
this.requests.add(request);
|
|
81
72
|
const { blockInfo } = request;
|
|
82
|
-
this.log.debug(`Starting fast collection of ${request.
|
|
73
|
+
this.log.debug(`Starting fast collection of ${request.requestTracker.numberOfMissingTxs} txs for ${request.type} at slot ${blockInfo.slotNumber}`, {
|
|
83
74
|
...blockInfo,
|
|
84
75
|
requestType: request.type,
|
|
85
|
-
deadline:
|
|
76
|
+
deadline: request.requestTracker.deadline
|
|
86
77
|
});
|
|
87
78
|
try {
|
|
88
79
|
// Start blasting all nodes for the txs. We give them a little time to respond before we start reqresp.
|
|
89
|
-
//
|
|
90
|
-
//
|
|
91
|
-
const nodeCollectionPromise = this.collectFastFromNodes(request
|
|
80
|
+
// We race against the cancellation token to exit as soon as all txs are collected, the deadline expires,
|
|
81
|
+
// or the request is externally cancelled.
|
|
82
|
+
const nodeCollectionPromise = this.collectFastFromNodes(request);
|
|
92
83
|
const waitBeforeReqResp = sleep(this.config.txCollectionFastNodesTimeoutBeforeReqRespMs);
|
|
93
84
|
await Promise.race([
|
|
94
|
-
request.
|
|
85
|
+
request.requestTracker.cancellationToken,
|
|
95
86
|
waitBeforeReqResp
|
|
96
87
|
]);
|
|
97
|
-
// If we have collected all txs, we can stop here
|
|
98
|
-
|
|
99
|
-
|
|
88
|
+
// If we have collected all txs or the request was cancelled, we can stop here.
|
|
89
|
+
// Wait for node collection to settle so inner tasks finish before we return.
|
|
90
|
+
if (request.requestTracker.checkCancelled()) {
|
|
91
|
+
if (request.requestTracker.allFetched()) {
|
|
92
|
+
this.log.debug(`All txs collected for slot ${blockInfo.slotNumber} without reqresp`, blockInfo);
|
|
93
|
+
}
|
|
94
|
+
await nodeCollectionPromise;
|
|
100
95
|
return;
|
|
101
96
|
}
|
|
102
97
|
// Start blasting reqresp for the remaining txs. Note that node collection keeps running in parallel.
|
|
103
98
|
// We stop when we have collected all txs, timed out, or both node collection and reqresp have given up.
|
|
104
|
-
|
|
99
|
+
// Inner tasks observe requestTracker.checkCancelled() and stop themselves, so this settles shortly after cancellation.
|
|
100
|
+
await Promise.allSettled([
|
|
105
101
|
this.collectFastViaReqResp(request, opts),
|
|
106
102
|
nodeCollectionPromise
|
|
107
103
|
]);
|
|
108
|
-
await Promise.race([
|
|
109
|
-
collectionPromise,
|
|
110
|
-
request.promise.promise
|
|
111
|
-
]);
|
|
112
104
|
} catch (err) {
|
|
113
|
-
|
|
114
|
-
const logCtx = {
|
|
105
|
+
this.log.error(`Error collecting txs for ${request.type} for slot ${blockInfo.slotNumber}`, err, {
|
|
115
106
|
...blockInfo,
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
...request.missingTxHashes
|
|
119
|
-
].map((txHash)=>txHash.toString())
|
|
120
|
-
};
|
|
121
|
-
if (err instanceof Error && err.name === 'TimeoutError') {
|
|
122
|
-
this.log.warn(`Timed out collecting txs for ${request.type} at slot ${blockInfo.slotNumber}`, logCtx);
|
|
123
|
-
} else if (err instanceof Error && err.name === 'AbortError') {
|
|
124
|
-
this.log.warn(`Aborted collecting txs for ${request.type} at slot ${blockInfo.slotNumber}`, logCtx);
|
|
125
|
-
} else {
|
|
126
|
-
this.log.error(`Error collecting txs for ${request.type} for slot ${blockInfo.slotNumber}`, err, logCtx);
|
|
127
|
-
}
|
|
107
|
+
missingTxs: request.requestTracker.missingTxHashes.values().map((txHash)=>txHash.toString())
|
|
108
|
+
});
|
|
128
109
|
} finally{
|
|
129
110
|
// Ensure no unresolved promises and remove the request from the set
|
|
130
|
-
request.
|
|
111
|
+
request.requestTracker.cancel();
|
|
131
112
|
this.requests.delete(request);
|
|
132
113
|
}
|
|
133
114
|
}
|
|
@@ -136,23 +117,23 @@ export class FastTxCollection {
|
|
|
136
117
|
* in parallel to each node. We keep track of the number of attempts made to collect each tx, so we can prioritize
|
|
137
118
|
* the txs that have been requested less often whenever we need to send a new batch of requests. We ensure that no
|
|
138
119
|
* tx is requested more than once at the same time to the same node.
|
|
139
|
-
*/ async collectFastFromNodes(request
|
|
120
|
+
*/ async collectFastFromNodes(request) {
|
|
140
121
|
if (this.nodes.length === 0) {
|
|
141
122
|
return;
|
|
142
123
|
}
|
|
143
124
|
// Keep a shared priority queue of all txs pending to be requested, sorted by the number of attempts made to collect them.
|
|
144
125
|
const attemptsPerTx = [
|
|
145
|
-
...request.missingTxHashes
|
|
126
|
+
...request.requestTracker.missingTxHashes
|
|
146
127
|
].map((txHash)=>({
|
|
147
128
|
txHash,
|
|
148
129
|
attempts: 0,
|
|
149
130
|
found: false
|
|
150
131
|
}));
|
|
151
132
|
// Returns once we have finished all node loops. Each loop finishes when the deadline is hit, or all txs have been collected.
|
|
152
|
-
await Promise.allSettled(this.nodes.map((node)=>this.collectFastFromNode(request, node, attemptsPerTx
|
|
133
|
+
await Promise.allSettled(this.nodes.map((node)=>this.collectFastFromNode(request, node, attemptsPerTx)));
|
|
153
134
|
}
|
|
154
|
-
async collectFastFromNode(request, node, attemptsPerTx
|
|
155
|
-
const notFinished = ()
|
|
135
|
+
async collectFastFromNode(request, node, attemptsPerTx) {
|
|
136
|
+
const notFinished = ()=>!request.requestTracker.checkCancelled();
|
|
156
137
|
const maxParallelRequests = this.config.txCollectionFastMaxParallelRequestsPerNode;
|
|
157
138
|
const maxBatchSize = this.config.txCollectionNodeRpcMaxBatchSize;
|
|
158
139
|
const activeRequestsToThisNode = new Set(); // Track the txs being actively requested to this node
|
|
@@ -166,7 +147,7 @@ export class FastTxCollection {
|
|
|
166
147
|
const txToRequest = attemptsPerTx[index++];
|
|
167
148
|
if (!txToRequest) {
|
|
168
149
|
break;
|
|
169
|
-
} else if (!request.
|
|
150
|
+
} else if (!request.requestTracker.isMissing(txToRequest.txHash)) {
|
|
170
151
|
// Mark as found if it was found somewhere else, we'll then remove it from the array.
|
|
171
152
|
// We don't delete it now since 'array.splice' is pretty expensive, so we do it after sorting.
|
|
172
153
|
txToRequest.found = true;
|
|
@@ -190,8 +171,15 @@ export class FastTxCollection {
|
|
|
190
171
|
if (batch.length === 0) {
|
|
191
172
|
return;
|
|
192
173
|
}
|
|
174
|
+
const txHashes = batch.map(({ txHash })=>txHash);
|
|
193
175
|
// Collect this batch from the node
|
|
194
|
-
await this.txCollectionSink.collect(
|
|
176
|
+
await this.txCollectionSink.collect(async ()=>{
|
|
177
|
+
const result = await node.getTxsByHash(txHashes.map(TxHash.fromString));
|
|
178
|
+
for (const tx of result.validTxs){
|
|
179
|
+
request.requestTracker.markFetched(tx);
|
|
180
|
+
}
|
|
181
|
+
return result;
|
|
182
|
+
}, txHashes, {
|
|
195
183
|
description: `fast ${node.getInfo()}`,
|
|
196
184
|
node: node.getInfo(),
|
|
197
185
|
method: 'fast-node-rpc',
|
|
@@ -201,9 +189,12 @@ export class FastTxCollection {
|
|
|
201
189
|
for (const requestedTx of batch){
|
|
202
190
|
activeRequestsToThisNode.delete(requestedTx.txHash);
|
|
203
191
|
}
|
|
204
|
-
// Sleep a bit until hitting the node again
|
|
192
|
+
// Sleep a bit until hitting the node again, but wake up immediately on cancellation
|
|
205
193
|
if (notFinished()) {
|
|
206
|
-
await
|
|
194
|
+
await Promise.race([
|
|
195
|
+
sleep(this.config.txCollectionFastNodeIntervalMs),
|
|
196
|
+
request.requestTracker.cancellationToken
|
|
197
|
+
]);
|
|
207
198
|
}
|
|
208
199
|
}
|
|
209
200
|
};
|
|
@@ -211,36 +202,40 @@ export class FastTxCollection {
|
|
|
211
202
|
await Promise.all(times(maxParallelRequests, processBatch));
|
|
212
203
|
}
|
|
213
204
|
async collectFastViaReqResp(request, opts) {
|
|
214
|
-
const timeoutMs = +request.deadline - this.dateProvider.now();
|
|
215
205
|
const pinnedPeer = opts.pinnedPeer;
|
|
216
206
|
const blockInfo = request.blockInfo;
|
|
217
207
|
const slotNumber = blockInfo.slotNumber;
|
|
218
|
-
if (timeoutMs < 100) {
|
|
208
|
+
if (request.requestTracker.timeoutMs < 100) {
|
|
219
209
|
this.log.warn(`Not initiating fast reqresp for txs for ${request.type} at slot ${blockInfo.slotNumber} due to timeout`, {
|
|
220
|
-
timeoutMs,
|
|
210
|
+
timeoutMs: request.requestTracker.timeoutMs,
|
|
221
211
|
...blockInfo
|
|
222
212
|
});
|
|
223
213
|
return;
|
|
224
214
|
}
|
|
225
|
-
this.log.debug(`Starting fast reqresp for ${request.
|
|
215
|
+
this.log.debug(`Starting fast reqresp for ${request.requestTracker.numberOfMissingTxs} txs for ${request.type} at slot ${blockInfo.slotNumber}`, {
|
|
226
216
|
...blockInfo,
|
|
227
|
-
timeoutMs,
|
|
217
|
+
timeoutMs: request.requestTracker.timeoutMs,
|
|
228
218
|
pinnedPeer
|
|
229
219
|
});
|
|
230
220
|
try {
|
|
231
|
-
await this.txCollectionSink.collect(async (
|
|
221
|
+
await this.txCollectionSink.collect(async ()=>{
|
|
222
|
+
let result;
|
|
232
223
|
if (request.type === 'proposal') {
|
|
233
|
-
|
|
224
|
+
result = await this.missingTxsCollector.collectTxs(request.requestTracker, request.blockProposal, pinnedPeer);
|
|
234
225
|
} else if (request.type === 'block') {
|
|
235
226
|
const blockTxsSource = {
|
|
236
227
|
txHashes: request.block.body.txEffects.map((e)=>e.txHash),
|
|
237
228
|
archive: request.block.archive.root
|
|
238
229
|
};
|
|
239
|
-
|
|
230
|
+
result = await this.missingTxsCollector.collectTxs(request.requestTracker, blockTxsSource, pinnedPeer);
|
|
240
231
|
} else {
|
|
241
232
|
throw new Error(`Unknown request type: ${request.type}`);
|
|
242
233
|
}
|
|
243
|
-
|
|
234
|
+
return {
|
|
235
|
+
validTxs: result,
|
|
236
|
+
invalidTxHashes: []
|
|
237
|
+
};
|
|
238
|
+
}, Array.from(request.requestTracker.missingTxHashes), {
|
|
244
239
|
description: `reqresp for slot ${slotNumber}`,
|
|
245
240
|
method: 'fast-req-resp',
|
|
246
241
|
...opts,
|
|
@@ -249,7 +244,7 @@ export class FastTxCollection {
|
|
|
249
244
|
} catch (err) {
|
|
250
245
|
this.log.error(`Error sending fast reqresp request for txs`, err, {
|
|
251
246
|
txs: [
|
|
252
|
-
...request.missingTxHashes
|
|
247
|
+
...request.requestTracker.missingTxHashes
|
|
253
248
|
],
|
|
254
249
|
...blockInfo
|
|
255
250
|
});
|
|
@@ -276,21 +271,18 @@ export class FastTxCollection {
|
|
|
276
271
|
for (const tx of txs){
|
|
277
272
|
const txHash = tx.txHash.toString();
|
|
278
273
|
// Remove the tx hash from the missing set, and add it to the found set.
|
|
279
|
-
if (request.
|
|
280
|
-
request.missingTxHashes.delete(txHash);
|
|
281
|
-
request.foundTxs.set(txHash, tx);
|
|
274
|
+
if (request.requestTracker.markFetched(tx)) {
|
|
282
275
|
this.log.trace(`Found tx ${txHash} for fast collection request`, {
|
|
283
276
|
...request.blockInfo,
|
|
284
277
|
txHash: tx.txHash.toString(),
|
|
285
278
|
type: request.type
|
|
286
279
|
});
|
|
287
|
-
|
|
288
|
-
if (request.missingTxHashes.size === 0) {
|
|
280
|
+
if (request.requestTracker.allFetched()) {
|
|
289
281
|
this.log.trace(`All txs found for fast collection request`, {
|
|
290
282
|
...request.blockInfo,
|
|
291
283
|
type: request.type
|
|
292
284
|
});
|
|
293
|
-
|
|
285
|
+
break;
|
|
294
286
|
}
|
|
295
287
|
}
|
|
296
288
|
}
|
|
@@ -302,8 +294,7 @@ export class FastTxCollection {
|
|
|
302
294
|
*/ stopCollectingForBlocksUpTo(blockNumber) {
|
|
303
295
|
for (const request of this.requests){
|
|
304
296
|
if (request.blockInfo.blockNumber <= blockNumber) {
|
|
305
|
-
request.
|
|
306
|
-
this.requests.delete(request);
|
|
297
|
+
request.requestTracker.cancel();
|
|
307
298
|
}
|
|
308
299
|
}
|
|
309
300
|
}
|
|
@@ -313,8 +304,7 @@ export class FastTxCollection {
|
|
|
313
304
|
*/ stopCollectingForBlocksAfter(blockNumber) {
|
|
314
305
|
for (const request of this.requests){
|
|
315
306
|
if (request.blockInfo.blockNumber > blockNumber) {
|
|
316
|
-
request.
|
|
317
|
-
this.requests.delete(request);
|
|
307
|
+
request.requestTracker.cancel();
|
|
318
308
|
}
|
|
319
309
|
}
|
|
320
310
|
}
|
|
@@ -1,44 +1,53 @@
|
|
|
1
1
|
import { type Logger } from '@aztec/foundation/log';
|
|
2
|
+
import { DateProvider } from '@aztec/foundation/timer';
|
|
2
3
|
import { Tx, TxHash } from '@aztec/stdlib/tx';
|
|
3
4
|
import type { FileStoreTxSource } from './file_store_tx_source.js';
|
|
4
5
|
import type { TxAddContext, TxCollectionSink } from './tx_collection_sink.js';
|
|
6
|
+
/** Configuration for a FileStoreTxCollection instance. */
|
|
7
|
+
export type FileStoreCollectionConfig = {
|
|
8
|
+
workerCount: number;
|
|
9
|
+
backoffBaseMs: number;
|
|
10
|
+
backoffMaxMs: number;
|
|
11
|
+
};
|
|
5
12
|
/**
|
|
6
13
|
* Collects txs from file stores as a fallback after P2P methods have been tried.
|
|
7
|
-
*
|
|
8
|
-
*
|
|
14
|
+
* Uses a shared worker pool that pulls entries with priority (fewest attempts first),
|
|
15
|
+
* retries with round-robin across sources, and applies exponential backoff between
|
|
16
|
+
* full cycles through all sources.
|
|
9
17
|
*/
|
|
10
18
|
export declare class FileStoreTxCollection {
|
|
11
|
-
private readonly
|
|
19
|
+
private readonly sources;
|
|
12
20
|
private readonly txCollectionSink;
|
|
21
|
+
private readonly config;
|
|
22
|
+
private readonly dateProvider;
|
|
13
23
|
private readonly log;
|
|
14
|
-
/** Map from tx hash to
|
|
15
|
-
private
|
|
16
|
-
/**
|
|
17
|
-
* Tracks tx hashes found elsewhere, even before startCollecting is called.
|
|
18
|
-
* Needed because the orchestrator delays startCollecting via a real sleep, but foundTxs
|
|
19
|
-
* may arrive during that delay — before the hashes are added to pendingTxs.
|
|
20
|
-
*/
|
|
21
|
-
private foundTxHashes;
|
|
22
|
-
/** Queue of tx hashes to be downloaded. */
|
|
23
|
-
private downloadQueue;
|
|
24
|
-
/** Worker promises for concurrent downloads. */
|
|
24
|
+
/** Map from tx hash string to entry for all pending downloads. */
|
|
25
|
+
private entries;
|
|
26
|
+
/** Worker promises for the shared worker pool. */
|
|
25
27
|
private workers;
|
|
26
|
-
/** Whether the
|
|
27
|
-
private
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
/** Whether the worker pool is running. */
|
|
29
|
+
private running;
|
|
30
|
+
/** Signal used to wake sleeping workers when new entries arrive or stop is called. */
|
|
31
|
+
private wakeSignal;
|
|
32
|
+
constructor(sources: FileStoreTxSource[], txCollectionSink: TxCollectionSink, config: FileStoreCollectionConfig, dateProvider?: DateProvider, log?: Logger);
|
|
33
|
+
/** Starts the shared worker pool. */
|
|
30
34
|
start(): void;
|
|
31
|
-
/** Stops all
|
|
35
|
+
/** Stops all workers and clears state. */
|
|
32
36
|
stop(): Promise<void>;
|
|
33
|
-
/**
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
clearPending(): void;
|
|
37
|
-
/** Queue the given tx hashes for file store collection. */
|
|
38
|
-
startCollecting(txHashes: TxHash[], context: TxAddContext): void;
|
|
39
|
-
/** Stop tracking txs that were found elsewhere. */
|
|
37
|
+
/** Adds entries to the shared map and wakes workers. */
|
|
38
|
+
startCollecting(txHashes: TxHash[], context: TxAddContext, deadline: Date): void;
|
|
39
|
+
/** Removes entries for txs that have been found elsewhere. */
|
|
40
40
|
foundTxs(txs: Tx[]): void;
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
/** Clears all pending entries. */
|
|
42
|
+
clearPending(): void;
|
|
43
|
+
private workerLoop;
|
|
44
|
+
/** Single-pass scan: removes expired entries, finds the best ready entry, or computes sleep time. */
|
|
45
|
+
private getNextAction;
|
|
46
|
+
/** Computes backoff for an entry. Backoff applies after a full cycle through all sources. */
|
|
47
|
+
private getBackoffMs;
|
|
48
|
+
/** Resolves the current wake signal and creates a new one. */
|
|
49
|
+
private wake;
|
|
50
|
+
private waitForWake;
|
|
51
|
+
private sleepOrWake;
|
|
43
52
|
}
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZV9zdG9yZV90eF9jb2xsZWN0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfY29sbGVjdGlvbi9maWxlX3N0b3JlX3R4X2NvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBR2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTlDLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUUsMERBQTBEO0FBQzFELE1BQU0sTUFBTSx5QkFBeUIsR0FBRztJQUN0QyxXQUFXLEVBQUUsTUFBTSxDQUFDO0lBQ3BCLGFBQWEsRUFBRSxNQUFNLENBQUM7SUFDdEIsWUFBWSxFQUFFLE1BQU0sQ0FBQztDQUN0QixDQUFDO0FBV0Y7Ozs7O0dBS0c7QUFDSCxxQkFBYSxxQkFBcUI7SUFjOUIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPO0lBQ3hCLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCO0lBQ2pDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTTtJQUN2QixPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVk7SUFDN0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHO0lBakJ0QixrRUFBa0U7SUFDbEUsT0FBTyxDQUFDLE9BQU8sQ0FBdUM7SUFFdEQsa0RBQWtEO0lBQ2xELE9BQU8sQ0FBQyxPQUFPLENBQXVCO0lBRXRDLDBDQUEwQztJQUMxQyxPQUFPLENBQUMsT0FBTyxDQUFTO0lBRXhCLHNGQUFzRjtJQUN0RixPQUFPLENBQUMsVUFBVSxDQUE2QjtJQUUvQyxZQUNtQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsRUFDNUIsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLE1BQU0sRUFBRSx5QkFBeUIsRUFDakMsWUFBWSxHQUFFLFlBQWlDLEVBQy9DLEdBQUcsR0FBRSxNQUFxRCxFQUc1RTtJQUVELHFDQUFxQztJQUM5QixLQUFLLElBQUksSUFBSSxDQVNuQjtJQUVELDBDQUEwQztJQUM3QixJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQU1qQztJQUVELHdEQUF3RDtJQUNqRCxlQUFlLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLElBQUksR0FBRyxJQUFJLENBc0J0RjtJQUVELDhEQUE4RDtJQUN2RCxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FJL0I7SUFFRCxrQ0FBa0M7SUFDM0IsWUFBWSxJQUFJLElBQUksQ0FFMUI7WUFFYSxVQUFVO0lBa0N4QixxR0FBcUc7SUFDckcsT0FBTyxDQUFDLGFBQWE7SUE4QnJCLDZGQUE2RjtJQUM3RixPQUFPLENBQUMsWUFBWTtJQVFwQiw4REFBOEQ7SUFDOUQsT0FBTyxDQUFDLElBQUk7WUFNRSxXQUFXO1lBS1gsV0FBVztDQUcxQiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file_store_tx_collection.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/file_store_tx_collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"file_store_tx_collection.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/file_store_tx_collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE9E,0DAA0D;AAC1D,MAAM,MAAM,yBAAyB,GAAG;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAWF;;;;;GAKG;AACH,qBAAa,qBAAqB;IAc9B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG;IAjBtB,kEAAkE;IAClE,OAAO,CAAC,OAAO,CAAuC;IAEtD,kDAAkD;IAClD,OAAO,CAAC,OAAO,CAAuB;IAEtC,0CAA0C;IAC1C,OAAO,CAAC,OAAO,CAAS;IAExB,sFAAsF;IACtF,OAAO,CAAC,UAAU,CAA6B;IAE/C,YACmB,OAAO,EAAE,iBAAiB,EAAE,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,yBAAyB,EACjC,YAAY,GAAE,YAAiC,EAC/C,GAAG,GAAE,MAAqD,EAG5E;IAED,qCAAqC;IAC9B,KAAK,IAAI,IAAI,CASnB;IAED,0CAA0C;IAC7B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAMjC;IAED,wDAAwD;IACjD,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,GAAG,IAAI,CAsBtF;IAED,8DAA8D;IACvD,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,CAI/B;IAED,kCAAkC;IAC3B,YAAY,IAAI,IAAI,CAE1B;YAEa,UAAU;IAkCxB,qGAAqG;IACrG,OAAO,CAAC,aAAa;IA8BrB,6FAA6F;IAC7F,OAAO,CAAC,YAAY;IAQpB,8DAA8D;IAC9D,OAAO,CAAC,IAAI;YAME,WAAW;YAKX,WAAW;CAG1B"}
|