@aztec/p2p 0.0.1-commit.96bb3f7 → 0.0.1-commit.993d240
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +129 -3
- package/dest/bootstrap/bootstrap.d.ts +4 -3
- package/dest/bootstrap/bootstrap.d.ts.map +1 -1
- package/dest/bootstrap/bootstrap.js +13 -5
- package/dest/client/factory.d.ts +13 -12
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +65 -20
- package/dest/client/interface.d.ts +58 -36
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +52 -58
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +236 -236
- package/dest/config.d.ts +163 -84
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +156 -43
- package/dest/errors/p2p-service.error.d.ts +9 -0
- package/dest/errors/p2p-service.error.d.ts.map +1 -0
- package/dest/errors/p2p-service.error.js +10 -0
- package/dest/errors/reqresp.error.d.ts +1 -20
- package/dest/errors/reqresp.error.d.ts.map +1 -1
- package/dest/errors/reqresp.error.js +0 -21
- package/dest/errors/tx-pool.error.d.ts +8 -0
- package/dest/errors/tx-pool.error.d.ts.map +1 -0
- package/dest/errors/tx-pool.error.js +9 -0
- package/dest/index.d.ts +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 +162 -106
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.js +511 -3
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +525 -132
- 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 +4 -2
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +13 -8
- 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 +35 -17
- 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 +11 -0
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/index.js +12 -0
- package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
- package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +62 -0
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +180 -0
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
- package/dest/mem_pools/{tx_pool → 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_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +75 -0
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
- package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
- package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/index.js +5 -0
- package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
- package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +218 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.js +10 -0
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +137 -0
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_metadata.js +223 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +337 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +62 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +167 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +78 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +914 -0
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +10 -4
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +69 -13
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +9 -5
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +22 -11
- package/dest/msg_validators/clock_tolerance.d.ts +32 -0
- package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
- package/dest/msg_validators/clock_tolerance.js +95 -0
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +10 -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 +10 -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 +21 -8
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator.js +123 -53
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +11 -18
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +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 +25 -21
- package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
- package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
- package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
- package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts +20 -6
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.js +4 -3
- package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts +15 -0
- package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/cached_tx_validator.js +19 -0
- package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
- package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
- package/dest/msg_validators/tx_validator/data_validator.d.ts +4 -1
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +40 -3
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -4
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.js +7 -6
- package/dest/msg_validators/tx_validator/factory.d.ts +138 -5
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/factory.js +259 -58
- package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
- package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/fee_payer_balance.js +24 -0
- package/dest/msg_validators/tx_validator/gas_validator.d.ts +100 -3
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/gas_validator.js +146 -67
- package/dest/msg_validators/tx_validator/index.d.ts +6 -1
- package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/index.js +5 -0
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.js +6 -6
- 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 +24 -3
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/phases_validator.js +75 -27
- package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
- package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/size_validator.js +23 -0
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +22 -5
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/timestamp_validator.js +8 -8
- package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +4 -2
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/tx_proof_validator.js +4 -2
- package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts +48 -0
- package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/tx_validation_cache.js +69 -0
- package/dest/services/data_store.d.ts +1 -1
- package/dest/services/data_store.d.ts.map +1 -1
- package/dest/services/data_store.js +14 -10
- package/dest/services/discv5/discV5_service.d.ts +2 -1
- package/dest/services/discv5/discV5_service.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.js +36 -9
- package/dest/services/dummy_service.d.ts +33 -17
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +56 -15
- package/dest/services/encoding.d.ts +7 -3
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +20 -14
- package/dest/services/gossipsub/index.d.ts +3 -0
- package/dest/services/gossipsub/index.d.ts.map +1 -0
- package/dest/services/gossipsub/index.js +2 -0
- package/dest/services/gossipsub/scoring.d.ts +21 -3
- package/dest/services/gossipsub/scoring.d.ts.map +1 -1
- package/dest/services/gossipsub/scoring.js +24 -7
- package/dest/services/gossipsub/topic_score_params.d.ts +184 -0
- package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
- package/dest/services/gossipsub/topic_score_params.js +363 -0
- package/dest/services/index.d.ts +2 -1
- package/dest/services/index.d.ts.map +1 -1
- package/dest/services/index.js +1 -0
- package/dest/services/libp2p/instrumentation.d.ts +3 -1
- package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
- package/dest/services/libp2p/instrumentation.js +33 -8
- package/dest/services/libp2p/libp2p_service.d.ts +107 -59
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +683 -539
- package/dest/services/peer-manager/metrics.d.ts +4 -2
- package/dest/services/peer-manager/metrics.d.ts.map +1 -1
- package/dest/services/peer-manager/metrics.js +26 -5
- 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 +40 -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 +65 -14
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +51 -0
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +552 -0
- package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
- package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts +50 -0
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +35 -0
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/missing_txs.js +136 -0
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +62 -0
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/peer_collection.js +176 -0
- package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +11 -0
- package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/tx_validator.js +7 -0
- package/dest/services/reqresp/config.d.ts +3 -3
- package/dest/services/reqresp/config.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
- package/dest/services/reqresp/constants.d.ts +12 -0
- package/dest/services/reqresp/constants.d.ts.map +1 -0
- package/dest/services/reqresp/constants.js +7 -0
- package/dest/services/reqresp/interface.d.ts +27 -18
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +23 -19
- package/dest/services/reqresp/metrics.d.ts +6 -5
- package/dest/services/reqresp/metrics.d.ts.map +1 -1
- package/dest/services/reqresp/metrics.js +16 -5
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/bitvector.js +12 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +29 -9
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +29 -6
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +59 -13
- package/dest/services/reqresp/protocols/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/status.d.ts +1 -1
- package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/status.js +2 -1
- package/dest/services/reqresp/protocols/tx.d.ts +7 -1
- package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/tx.js +21 -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 +12 -29
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +58 -187
- package/dest/services/service.d.ts +49 -13
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +11 -11
- package/dest/services/tx_collection/config.d.ts.map +1 -1
- package/dest/services/tx_collection/config.js +27 -26
- package/dest/services/tx_collection/file_store_tx_collection.d.ts +37 -0
- package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/file_store_tx_collection.js +127 -0
- package/dest/services/tx_collection/file_store_tx_source.d.ts +38 -0
- package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
- package/dest/services/tx_collection/file_store_tx_source.js +100 -0
- package/dest/services/tx_collection/index.d.ts +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 +8 -2
- package/dest/services/tx_collection/request_tracker.d.ts +53 -0
- package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
- package/dest/services/tx_collection/request_tracker.js +84 -0
- package/dest/services/tx_collection/tx_collection.d.ts +50 -56
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection.js +298 -70
- package/dest/services/tx_collection/tx_collection_sink.d.ts +19 -9
- package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection_sink.js +28 -31
- 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 +46 -0
- package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
- package/dest/services/tx_file_store/tx_file_store.js +142 -0
- package/dest/services/tx_provider.d.ts +8 -6
- package/dest/services/tx_provider.d.ts.map +1 -1
- package/dest/services/tx_provider.js +12 -8
- package/dest/services/tx_provider_instrumentation.d.ts +1 -1
- package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
- package/dest/services/tx_provider_instrumentation.js +5 -5
- package/dest/test-helpers/index.d.ts +3 -1
- package/dest/test-helpers/index.d.ts.map +1 -1
- package/dest/test-helpers/index.js +2 -0
- package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.js +5 -3
- package/dest/test-helpers/mock-pubsub.d.ts +46 -6
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.js +115 -14
- package/dest/test-helpers/reqresp-nodes.d.ts +5 -7
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +19 -20
- package/dest/test-helpers/test_tx_provider.d.ts +42 -0
- package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
- package/dest/test-helpers/test_tx_provider.js +44 -0
- package/dest/test-helpers/testbench-utils.d.ts +161 -0
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
- package/dest/test-helpers/testbench-utils.js +393 -0
- package/dest/testbench/p2p_client_testbench_worker.d.ts +26 -2
- package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +270 -144
- package/dest/testbench/worker_client_manager.d.ts +57 -6
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +277 -49
- package/dest/util.d.ts +13 -8
- package/dest/util.d.ts.map +1 -1
- package/dest/util.js +35 -14
- package/dest/versioning.d.ts +3 -6
- package/dest/versioning.d.ts.map +1 -1
- package/dest/versioning.js +3 -24
- package/package.json +17 -16
- package/src/bootstrap/bootstrap.ts +16 -5
- package/src/client/factory.ts +135 -39
- package/src/client/interface.ts +70 -44
- package/src/client/p2p_client.ts +283 -302
- package/src/client/test/p2p_client.batch_tx_requester.bench.README.md +197 -0
- package/src/config.ts +274 -48
- package/src/errors/p2p-service.error.ts +11 -0
- package/src/errors/reqresp.error.ts +0 -25
- package/src/errors/tx-pool.error.ts +12 -0
- package/src/index.ts +1 -1
- package/src/mem_pools/attestation_pool/attestation_pool.ts +575 -94
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +633 -149
- package/src/mem_pools/attestation_pool/index.ts +9 -2
- package/src/mem_pools/attestation_pool/mocks.ts +19 -11
- package/src/mem_pools/index.ts +2 -2
- package/src/mem_pools/instrumentation.ts +24 -15
- 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 +28 -0
- package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +65 -0
- package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +219 -0
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +99 -0
- package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +32 -0
- package/src/mem_pools/tx_pool_v2/index.ts +12 -0
- package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
- package/src/mem_pools/tx_pool_v2/interfaces.ts +250 -0
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +349 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +430 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +238 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1090 -0
- package/src/msg_validators/attestation_validator/README.md +49 -0
- package/src/msg_validators/attestation_validator/attestation_validator.ts +60 -16
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +29 -16
- package/src/msg_validators/clock_tolerance.ts +127 -0
- package/src/msg_validators/proposal_validator/README.md +123 -0
- package/src/msg_validators/proposal_validator/block_proposal_validator.ts +24 -4
- package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +35 -7
- package/src/msg_validators/proposal_validator/proposal_validator.ts +129 -62
- package/src/msg_validators/tx_validator/README.md +127 -0
- package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +8 -17
- package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
- package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
- package/src/msg_validators/tx_validator/archive_cache.ts +2 -2
- package/src/msg_validators/tx_validator/block_header_validator.ts +21 -8
- package/src/msg_validators/tx_validator/cached_tx_validator.ts +31 -0
- package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
- package/src/msg_validators/tx_validator/data_validator.ts +50 -3
- package/src/msg_validators/tx_validator/double_spend_validator.ts +15 -9
- package/src/msg_validators/tx_validator/factory.ts +424 -56
- package/src/msg_validators/tx_validator/fee_payer_balance.ts +44 -0
- package/src/msg_validators/tx_validator/gas_validator.ts +211 -77
- package/src/msg_validators/tx_validator/index.ts +5 -0
- package/src/msg_validators/tx_validator/metadata_validator.ts +18 -7
- package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
- package/src/msg_validators/tx_validator/phases_validator.ts +87 -30
- package/src/msg_validators/tx_validator/size_validator.ts +22 -0
- package/src/msg_validators/tx_validator/timestamp_validator.ts +29 -21
- package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
- package/src/msg_validators/tx_validator/tx_proof_validator.ts +10 -3
- package/src/msg_validators/tx_validator/tx_validation_cache.ts +102 -0
- package/src/services/data_store.ts +14 -19
- package/src/services/discv5/discV5_service.ts +39 -6
- package/src/services/dummy_service.ts +71 -39
- package/src/services/encoding.ts +20 -13
- package/src/services/gossipsub/README.md +641 -0
- package/src/services/gossipsub/index.ts +2 -0
- package/src/services/gossipsub/scoring.ts +29 -5
- package/src/services/gossipsub/topic_score_params.ts +519 -0
- package/src/services/index.ts +1 -0
- package/src/services/libp2p/instrumentation.ts +34 -7
- package/src/services/libp2p/libp2p_service.ts +753 -597
- package/src/services/peer-manager/metrics.ts +28 -4
- package/src/services/peer-manager/peer_manager.ts +46 -11
- package/src/services/peer-manager/peer_scoring.ts +56 -6
- package/src/services/reqresp/README.md +215 -0
- package/src/services/reqresp/batch-tx-requester/README.md +344 -0
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +684 -0
- package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
- package/src/services/reqresp/batch-tx-requester/interface.ts +61 -0
- package/src/services/reqresp/batch-tx-requester/missing_txs.ts +168 -0
- package/src/services/reqresp/batch-tx-requester/peer_collection.ts +249 -0
- package/src/services/reqresp/batch-tx-requester/tx_validator.ts +24 -0
- package/src/services/reqresp/config.ts +2 -2
- package/src/services/reqresp/connection-sampler/connection_sampler.ts +16 -0
- package/src/services/reqresp/constants.ts +14 -0
- package/src/services/reqresp/interface.ts +48 -46
- package/src/services/reqresp/metrics.ts +33 -9
- package/src/services/reqresp/protocols/block_txs/bitvector.ts +16 -0
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +37 -12
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +74 -9
- package/src/services/reqresp/protocols/index.ts +0 -1
- package/src/services/reqresp/protocols/status.ts +5 -3
- package/src/services/reqresp/protocols/tx.ts +23 -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 +68 -224
- package/src/services/service.ts +66 -29
- package/src/services/tx_collection/config.ts +41 -36
- package/src/services/tx_collection/file_store_tx_collection.ts +153 -0
- package/src/services/tx_collection/file_store_tx_source.ts +129 -0
- package/src/services/tx_collection/index.ts +2 -1
- package/src/services/tx_collection/instrumentation.ts +11 -2
- package/src/services/tx_collection/request_tracker.ts +127 -0
- package/src/services/tx_collection/tx_collection.ts +367 -115
- package/src/services/tx_collection/tx_collection_sink.ts +32 -36
- 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 +163 -0
- package/src/services/tx_provider.ts +17 -11
- package/src/services/tx_provider_instrumentation.ts +11 -5
- package/src/test-helpers/index.ts +2 -0
- package/src/test-helpers/make-test-p2p-clients.ts +7 -6
- package/src/test-helpers/mock-pubsub.ts +137 -14
- package/src/test-helpers/reqresp-nodes.ts +17 -29
- package/src/test-helpers/test_tx_provider.ts +69 -0
- package/src/test-helpers/testbench-utils.ts +455 -0
- package/src/testbench/p2p_client_testbench_worker.ts +370 -138
- package/src/testbench/worker_client_manager.ts +355 -51
- package/src/util.ts +40 -19
- package/src/versioning.ts +3 -33
- 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 -120
- 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 -555
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -18
- 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 -56
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -83
- 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 -5
- package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts +0 -15
- package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.js +0 -88
- package/dest/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/invalid_txs_after_reorg_rule.js +0 -76
- 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/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 -183
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +0 -45
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +0 -1
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +0 -92
- 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/dest/services/tx_collection/fast_tx_collection.d.ts +0 -51
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +0 -1
- package/dest/services/tx_collection/fast_tx_collection.js +0 -300
- package/dest/services/tx_collection/slow_tx_collection.d.ts +0 -53
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +0 -1
- package/dest/services/tx_collection/slow_tx_collection.js +0 -177
- 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 -255
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -691
- package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -71
- package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -93
- package/src/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.ts +0 -108
- 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 -91
- package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
- 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 -206
- package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +0 -100
- package/src/services/reqresp/protocols/block.ts +0 -37
- package/src/services/tx_collection/fast_tx_collection.ts +0 -341
- package/src/services/tx_collection/slow_tx_collection.ts +0 -233
|
@@ -371,30 +371,25 @@ function applyDecs2203RFactory() {
|
|
|
371
371
|
function _apply_decs_2203_r(targetClass, memberDecs, classDecs, parentClass) {
|
|
372
372
|
return (_apply_decs_2203_r = applyDecs2203RFactory())(targetClass, memberDecs, classDecs, parentClass);
|
|
373
373
|
}
|
|
374
|
-
var _dec, _dec1,
|
|
375
|
-
import { compactArray } from '@aztec/foundation/collection';
|
|
374
|
+
var _dec, _dec1, _initProto;
|
|
376
375
|
import { AbortError, TimeoutError } from '@aztec/foundation/error';
|
|
377
376
|
import { createLogger } from '@aztec/foundation/log';
|
|
378
377
|
import { executeTimeout } from '@aztec/foundation/timer';
|
|
379
378
|
import { PeerErrorSeverity } from '@aztec/stdlib/p2p';
|
|
380
379
|
import { Attributes, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
381
380
|
import { pipeline } from 'node:stream/promises';
|
|
382
|
-
import {
|
|
383
|
-
import { SnappyTransform } from '../encoding.js';
|
|
381
|
+
import { IndividualReqRespTimeoutError } from '../../errors/reqresp.error.js';
|
|
382
|
+
import { OversizedSnappyResponseError, SnappyTransform } from '../encoding.js';
|
|
384
383
|
import { DEFAULT_INDIVIDUAL_REQUEST_TIMEOUT_MS, DEFAULT_REQRESP_DIAL_TIMEOUT_MS } from './config.js';
|
|
385
|
-
import { BatchConnectionSampler } from './connection-sampler/batch_connection_sampler.js';
|
|
386
384
|
import { ConnectionSampler, RandomSampler } from './connection-sampler/connection_sampler.js';
|
|
387
|
-
import {
|
|
385
|
+
import { ReqRespSubProtocol, UNAUTHENTICATED_ALLOWED_PROTOCOLS, subProtocolSizeCalculators } from './interface.js';
|
|
388
386
|
import { ReqRespMetrics } from './metrics.js';
|
|
389
387
|
import { RateLimitStatus, RequestResponseRateLimiter, prettyPrintRateLimitStatus } from './rate-limiter/rate_limiter.js';
|
|
390
|
-
import { ReqRespStatus, ReqRespStatusError, parseStatusChunk
|
|
391
|
-
_dec = trackSpan('ReqResp.
|
|
392
|
-
[Attributes.P2P_REQ_RESP_PROTOCOL]: subProtocol,
|
|
393
|
-
[Attributes.P2P_REQ_RESP_BATCH_REQUESTS_COUNT]: requests.length
|
|
394
|
-
})), _dec1 = trackSpan('ReqResp.sendRequestToPeer', (peerId, subProtocol, _)=>({
|
|
388
|
+
import { ReqRespStatus, ReqRespStatusError, parseStatusChunk } from './status.js';
|
|
389
|
+
_dec = trackSpan('ReqResp.sendRequestToPeer', (peerId, subProtocol, _)=>({
|
|
395
390
|
[Attributes.P2P_ID]: peerId.toString(),
|
|
396
391
|
[Attributes.P2P_REQ_RESP_PROTOCOL]: subProtocol
|
|
397
|
-
})),
|
|
392
|
+
})), _dec1 = trackSpan('ReqResp.streamHandler', (protocol, { connection })=>({
|
|
398
393
|
[Attributes.P2P_REQ_RESP_PROTOCOL]: protocol,
|
|
399
394
|
[Attributes.P2P_ID]: connection.remotePeer.toString()
|
|
400
395
|
}));
|
|
@@ -402,7 +397,7 @@ _dec = trackSpan('ReqResp.sendBatchRequest', (subProtocol, requests)=>({
|
|
|
402
397
|
* The Request Response Service
|
|
403
398
|
*
|
|
404
399
|
* It allows nodes to request specific information from their peers, its use case covers recovering
|
|
405
|
-
* information that was missed during a
|
|
400
|
+
* information that was missed during a synchronisation or a gossip event.
|
|
406
401
|
*
|
|
407
402
|
* This service implements the request response sub protocol, it is heavily inspired from
|
|
408
403
|
* ethereum implementations of the same name.
|
|
@@ -420,15 +415,10 @@ _dec = trackSpan('ReqResp.sendBatchRequest', (subProtocol, requests)=>({
|
|
|
420
415
|
[
|
|
421
416
|
_dec,
|
|
422
417
|
2,
|
|
423
|
-
"sendBatchRequest"
|
|
424
|
-
],
|
|
425
|
-
[
|
|
426
|
-
_dec1,
|
|
427
|
-
2,
|
|
428
418
|
"sendRequestToPeer"
|
|
429
419
|
],
|
|
430
420
|
[
|
|
431
|
-
|
|
421
|
+
_dec1,
|
|
432
422
|
2,
|
|
433
423
|
"streamHandler"
|
|
434
424
|
]
|
|
@@ -437,10 +427,10 @@ _dec = trackSpan('ReqResp.sendBatchRequest', (subProtocol, requests)=>({
|
|
|
437
427
|
individualRequestTimeoutMs;
|
|
438
428
|
dialTimeoutMs;
|
|
439
429
|
subProtocolHandlers;
|
|
440
|
-
subProtocolValidators;
|
|
441
430
|
connectionSampler;
|
|
442
431
|
rateLimiter;
|
|
443
432
|
snappyTransform;
|
|
433
|
+
shouldRejectPeer;
|
|
444
434
|
metrics;
|
|
445
435
|
constructor(config, libp2p, peerScoring, logger = createLogger('p2p:reqresp'), rateLimits = {}, telemetryClient = getTelemetryClient()){
|
|
446
436
|
this.libp2p = libp2p;
|
|
@@ -449,7 +439,6 @@ _dec = trackSpan('ReqResp.sendBatchRequest', (subProtocol, requests)=>({
|
|
|
449
439
|
this.individualRequestTimeoutMs = (_initProto(this), DEFAULT_INDIVIDUAL_REQUEST_TIMEOUT_MS);
|
|
450
440
|
this.dialTimeoutMs = DEFAULT_REQRESP_DIAL_TIMEOUT_MS;
|
|
451
441
|
this.subProtocolHandlers = {};
|
|
452
|
-
this.subProtocolValidators = {};
|
|
453
442
|
this.updateConfig(config);
|
|
454
443
|
this.rateLimiter = new RequestResponseRateLimiter(peerScoring, rateLimits);
|
|
455
444
|
// Connection sampler is used to sample our connected peers
|
|
@@ -465,24 +454,31 @@ _dec = trackSpan('ReqResp.sendBatchRequest', (subProtocol, requests)=>({
|
|
|
465
454
|
this.dialTimeoutMs = config.dialTimeoutMs;
|
|
466
455
|
}
|
|
467
456
|
}
|
|
457
|
+
setShouldRejectPeer(checker) {
|
|
458
|
+
this.shouldRejectPeer = checker;
|
|
459
|
+
}
|
|
468
460
|
get tracer() {
|
|
469
461
|
return this.metrics.tracer;
|
|
470
462
|
}
|
|
471
463
|
/**
|
|
464
|
+
* Get the connection sampler instance
|
|
465
|
+
*/ getConnectionSampler() {
|
|
466
|
+
return this.connectionSampler;
|
|
467
|
+
}
|
|
468
|
+
/**
|
|
472
469
|
* Start the reqresp service
|
|
473
|
-
*/ async start(subProtocolHandlers
|
|
470
|
+
*/ async start(subProtocolHandlers) {
|
|
474
471
|
Object.assign(this.subProtocolHandlers, subProtocolHandlers);
|
|
475
|
-
|
|
476
|
-
//
|
|
472
|
+
// Register streamHandler with libp2p.
|
|
473
|
+
// The streamHandler is responsible for reading the incoming stream, determining the protocol, then triggering the appropriate handler.
|
|
477
474
|
for (const subProtocol of Object.keys(subProtocolHandlers)){
|
|
478
475
|
this.logger.debug(`Registering handler for sub protocol ${subProtocol}`);
|
|
479
476
|
await this.libp2p.handle(subProtocol, (data)=>void this.streamHandler(subProtocol, data).catch((err)=>this.logger.error(`Error on libp2p subprotocol ${subProtocol} handler`, err)));
|
|
480
477
|
}
|
|
481
478
|
this.rateLimiter.start();
|
|
482
479
|
}
|
|
483
|
-
async addSubProtocol(subProtocol, handler
|
|
480
|
+
async addSubProtocol(subProtocol, handler) {
|
|
484
481
|
this.subProtocolHandlers[subProtocol] = handler;
|
|
485
|
-
this.subProtocolValidators[subProtocol] = validator;
|
|
486
482
|
this.logger.debug(`Registering handler for sub protocol ${subProtocol}`);
|
|
487
483
|
await this.libp2p.handle(subProtocol, (data)=>void this.streamHandler(subProtocol, data).catch((err)=>this.logger.error(`Error on libp2p subprotocol ${subProtocol} handler`, err)));
|
|
488
484
|
}
|
|
@@ -504,149 +500,6 @@ _dec = trackSpan('ReqResp.sendBatchRequest', (subProtocol, requests)=>({
|
|
|
504
500
|
// NOTE: We assume libp2p instance is managed by the caller
|
|
505
501
|
}
|
|
506
502
|
/**
|
|
507
|
-
* Request multiple messages over the same sub protocol, balancing the requests across peers.
|
|
508
|
-
*
|
|
509
|
-
* @devnote
|
|
510
|
-
* - The function prioritizes sending requests to free peers using a batch sampling strategy.
|
|
511
|
-
* - If a peer fails to respond or returns an invalid response, it is removed from the sampling pool and replaced.
|
|
512
|
-
* - The function stops retrying once all requests are processed, no active peers remain, or the maximum retry attempts are reached.
|
|
513
|
-
* - Responses are validated using a custom validator for the sub-protocol.*
|
|
514
|
-
*
|
|
515
|
-
* Requests are sent in parallel to each peer, but multiple requests are sent to the same peer in series
|
|
516
|
-
* - If a peer fails to respond or returns an invalid response, it is removed from the sampling pool and replaced.
|
|
517
|
-
* - The function stops retrying once all requests are processed, no active peers remain, or the maximum retry attempts are reached.
|
|
518
|
-
* - Responses are validated using a custom validator for the sub-protocol.*
|
|
519
|
-
*
|
|
520
|
-
* @param subProtocol
|
|
521
|
-
* @param requests
|
|
522
|
-
* @param timeoutMs
|
|
523
|
-
* @param maxPeers
|
|
524
|
-
* @returns
|
|
525
|
-
*
|
|
526
|
-
* @throws {CollectiveReqRespTimeoutError} - If the request batch exceeds the specified timeout (`timeoutMs`).
|
|
527
|
-
*/ async sendBatchRequest(subProtocol, requests, pinnedPeer, timeoutMs = 10000, maxPeers = Math.max(10, Math.ceil(requests.length / 3)), maxRetryAttempts = 3) {
|
|
528
|
-
const responseValidator = this.subProtocolValidators[subProtocol] ?? DEFAULT_SUB_PROTOCOL_VALIDATORS[subProtocol];
|
|
529
|
-
const responses = new Array(requests.length);
|
|
530
|
-
const requestBuffers = requests.map((req)=>req.toBuffer());
|
|
531
|
-
const requestFunction = async (signal)=>{
|
|
532
|
-
// Track which requests still need to be processed
|
|
533
|
-
const pendingRequestIndices = new Set(requestBuffers.map((_, i)=>i));
|
|
534
|
-
// Create batch sampler with the total number of requests and max peers
|
|
535
|
-
const batchSampler = new BatchConnectionSampler(this.connectionSampler, requests.length, maxPeers, compactArray([
|
|
536
|
-
pinnedPeer
|
|
537
|
-
]), createLogger(`${this.logger.module}:batch-connection-sampler`));
|
|
538
|
-
if (batchSampler.activePeerCount === 0 && !pinnedPeer) {
|
|
539
|
-
this.logger.warn('No active peers to send requests to');
|
|
540
|
-
return [];
|
|
541
|
-
}
|
|
542
|
-
// This is where it gets fun
|
|
543
|
-
// The outer loop is the retry loop, we will continue to retry until we process all indices we have
|
|
544
|
-
// not received a response for, or we have reached the max retry attempts
|
|
545
|
-
// The inner loop is the batch loop, we will process all requests for each peer in parallel
|
|
546
|
-
// We will then process the results of the requests, and resample any peers that failed to respond
|
|
547
|
-
// We will continue to retry until we have processed all indices, or we have reached the max retry attempts
|
|
548
|
-
let retryAttempts = 0;
|
|
549
|
-
while(pendingRequestIndices.size > 0 && batchSampler.activePeerCount > 0 && retryAttempts < maxRetryAttempts){
|
|
550
|
-
if (signal.aborted) {
|
|
551
|
-
throw new AbortError('Batch request aborted');
|
|
552
|
-
}
|
|
553
|
-
const requestBatches = new Map();
|
|
554
|
-
// Group requests by peer
|
|
555
|
-
for (const requestIndex of pendingRequestIndices){
|
|
556
|
-
const peer = batchSampler.getPeerForRequest(requestIndex);
|
|
557
|
-
if (!peer) {
|
|
558
|
-
break;
|
|
559
|
-
}
|
|
560
|
-
const peerAsString = peer.toString();
|
|
561
|
-
if (!requestBatches.has(peerAsString)) {
|
|
562
|
-
requestBatches.set(peerAsString, {
|
|
563
|
-
peerId: peer,
|
|
564
|
-
indices: []
|
|
565
|
-
});
|
|
566
|
-
}
|
|
567
|
-
requestBatches.get(peerAsString).indices.push(requestIndex);
|
|
568
|
-
}
|
|
569
|
-
// If there is a pinned peer, we will always send every request to that peer
|
|
570
|
-
// We use the default limits for the subprotocol to avoid hitting the rate limiter
|
|
571
|
-
if (pinnedPeer) {
|
|
572
|
-
const limit = this.rateLimiter.getRateLimits(subProtocol).peerLimit.quotaCount;
|
|
573
|
-
requestBatches.set(pinnedPeer.toString(), {
|
|
574
|
-
peerId: pinnedPeer,
|
|
575
|
-
indices: Array.from(pendingRequestIndices.values()).slice(0, limit)
|
|
576
|
-
});
|
|
577
|
-
}
|
|
578
|
-
// Make parallel requests for each peer's batch
|
|
579
|
-
// A batch entry will look something like this:
|
|
580
|
-
// PeerId0: [0, 1, 2, 3]
|
|
581
|
-
// PeerId1: [4, 5, 6, 7]
|
|
582
|
-
// Peer Id 0 will send requests 0, 1, 2, 3 in serial
|
|
583
|
-
// while simultaneously Peer Id 1 will send requests 4, 5, 6, 7 in serial
|
|
584
|
-
const batchResults = await Promise.all(Array.from(requestBatches.entries()).map(async ([peerAsString, { peerId: peer, indices }])=>{
|
|
585
|
-
try {
|
|
586
|
-
// Requests all going to the same peer are sent synchronously
|
|
587
|
-
const peerResults = [];
|
|
588
|
-
for (const index of indices){
|
|
589
|
-
this.logger.trace(`Sending request ${index} to peer ${peerAsString}`);
|
|
590
|
-
const response = await this.sendRequestToPeer(peer, subProtocol, requestBuffers[index]);
|
|
591
|
-
// Check the status of the response buffer
|
|
592
|
-
if (response.status !== ReqRespStatus.SUCCESS) {
|
|
593
|
-
this.logger.debug(`Request to peer ${peerAsString} failed with status ${prettyPrintReqRespStatus(response.status)}`);
|
|
594
|
-
// If we hit a rate limit or some failure, we remove the peer and return the results,
|
|
595
|
-
// they will be split among remaining peers and the new sampled peer
|
|
596
|
-
batchSampler.removePeerAndReplace(peer);
|
|
597
|
-
return {
|
|
598
|
-
peer,
|
|
599
|
-
results: peerResults
|
|
600
|
-
};
|
|
601
|
-
}
|
|
602
|
-
if (response && response.data.length > 0) {
|
|
603
|
-
const object = responseFromBuffer(subProtocol, response.data);
|
|
604
|
-
const isValid = await responseValidator(requests[index], object, peer);
|
|
605
|
-
if (isValid) {
|
|
606
|
-
peerResults.push({
|
|
607
|
-
index,
|
|
608
|
-
response: object
|
|
609
|
-
});
|
|
610
|
-
}
|
|
611
|
-
}
|
|
612
|
-
}
|
|
613
|
-
return {
|
|
614
|
-
peer,
|
|
615
|
-
results: peerResults
|
|
616
|
-
};
|
|
617
|
-
} catch (error) {
|
|
618
|
-
this.logger.debug(`Failed batch request to peer ${peerAsString}:`, error);
|
|
619
|
-
batchSampler.removePeerAndReplace(peer);
|
|
620
|
-
return {
|
|
621
|
-
peer,
|
|
622
|
-
results: []
|
|
623
|
-
};
|
|
624
|
-
}
|
|
625
|
-
}));
|
|
626
|
-
// Process results
|
|
627
|
-
for (const { results } of batchResults){
|
|
628
|
-
for (const { index, response } of results){
|
|
629
|
-
if (response) {
|
|
630
|
-
responses[index] = response;
|
|
631
|
-
pendingRequestIndices.delete(index);
|
|
632
|
-
}
|
|
633
|
-
}
|
|
634
|
-
}
|
|
635
|
-
retryAttempts++;
|
|
636
|
-
}
|
|
637
|
-
if (retryAttempts >= maxRetryAttempts) {
|
|
638
|
-
this.logger.debug(`Max retry attempts ${maxRetryAttempts} reached for batch request`);
|
|
639
|
-
}
|
|
640
|
-
return responses;
|
|
641
|
-
};
|
|
642
|
-
try {
|
|
643
|
-
return await executeTimeout(requestFunction, timeoutMs, ()=>new CollectiveReqRespTimeoutError());
|
|
644
|
-
} catch (e) {
|
|
645
|
-
this.logger.debug(`${e.message} | subProtocol: ${subProtocol}`);
|
|
646
|
-
return [];
|
|
647
|
-
}
|
|
648
|
-
}
|
|
649
|
-
/**
|
|
650
503
|
* Sends a request to a specific peer
|
|
651
504
|
*
|
|
652
505
|
* We first dial a particular protocol for the peer, this ensures that the peer knows
|
|
@@ -674,22 +527,27 @@ _dec = trackSpan('ReqResp.sendBatchRequest', (subProtocol, requests)=>({
|
|
|
674
527
|
let stream;
|
|
675
528
|
try {
|
|
676
529
|
this.metrics.recordRequestSent(subProtocol);
|
|
530
|
+
// Calculate expected response size based on the request payload
|
|
531
|
+
const expectedSizeKb = subProtocolSizeCalculators[subProtocol](payload);
|
|
677
532
|
this.logger.trace(`Sending request to peer ${peerId.toString()} on sub protocol ${subProtocol}`);
|
|
678
533
|
stream = await this.connectionSampler.dialProtocol(peerId, subProtocol, dialTimeout);
|
|
679
534
|
this.logger.trace(`Opened stream ${stream.id} for sending request to peer ${peerId.toString()} on sub protocol ${subProtocol}`);
|
|
680
535
|
const timeoutErr = new IndividualReqRespTimeoutError();
|
|
536
|
+
// Create a wrapper to pass the expected size to readMessage
|
|
537
|
+
const readMessageWithSizeLimit = (source)=>this.readMessage(source, expectedSizeKb);
|
|
681
538
|
const [_, resp] = await executeTimeout((signal)=>Promise.all([
|
|
682
539
|
pipeline([
|
|
683
540
|
payload
|
|
684
541
|
], stream.sink, {
|
|
685
542
|
signal
|
|
686
543
|
}),
|
|
687
|
-
pipeline(stream.source,
|
|
544
|
+
pipeline(stream.source, readMessageWithSizeLimit, {
|
|
688
545
|
signal
|
|
689
546
|
})
|
|
690
547
|
]), this.individualRequestTimeoutMs, ()=>timeoutErr);
|
|
691
548
|
return resp;
|
|
692
549
|
} catch (e) {
|
|
550
|
+
this.logger.debug(`SUBPROTOCOL: ${subProtocol}\n`, e);
|
|
693
551
|
// On error we immediately abort the stream, this is preferred way,
|
|
694
552
|
// because it signals to the sender that error happened, whereas
|
|
695
553
|
// closing the stream only closes our side and is much slower
|
|
@@ -737,7 +595,10 @@ _dec = trackSpan('ReqResp.sendBatchRequest', (subProtocol, requests)=>({
|
|
|
737
595
|
* The message is split into two components
|
|
738
596
|
* - The first chunk should contain a control byte, indicating the status of the response see `ReqRespStatus`
|
|
739
597
|
* - The second chunk should contain the response data
|
|
740
|
-
|
|
598
|
+
*
|
|
599
|
+
* @param source - The async iterable source of data chunks
|
|
600
|
+
* @param maxSizeKb - Optional maximum expected size in KB for the decompressed response
|
|
601
|
+
*/ async readMessage(source, maxSizeKb) {
|
|
741
602
|
let status;
|
|
742
603
|
const chunks = [];
|
|
743
604
|
try {
|
|
@@ -758,20 +619,16 @@ _dec = trackSpan('ReqResp.sendBatchRequest', (subProtocol, requests)=>({
|
|
|
758
619
|
}
|
|
759
620
|
}
|
|
760
621
|
const messageData = Buffer.concat(chunks);
|
|
761
|
-
const message = this.snappyTransform.inboundTransformData(messageData);
|
|
622
|
+
const message = this.snappyTransform.inboundTransformData(messageData, undefined, maxSizeKb);
|
|
762
623
|
return {
|
|
763
624
|
status: status ?? ReqRespStatus.UNKNOWN,
|
|
764
625
|
data: message
|
|
765
626
|
};
|
|
766
627
|
} catch (e) {
|
|
628
|
+
// All errors (invalid status bytes, oversized snappy responses, corrupt data, etc.)
|
|
629
|
+
// are re-thrown so the caller can penalize the peer via handleResponseError.
|
|
767
630
|
this.logger.debug(`Reading message failed: ${e.message}`);
|
|
768
|
-
|
|
769
|
-
if (e instanceof ReqRespStatusError) {
|
|
770
|
-
status = e.status;
|
|
771
|
-
}
|
|
772
|
-
return {
|
|
773
|
-
status
|
|
774
|
-
};
|
|
631
|
+
throw e;
|
|
775
632
|
}
|
|
776
633
|
}
|
|
777
634
|
/**
|
|
@@ -799,6 +656,11 @@ _dec = trackSpan('ReqResp.sendBatchRequest', (subProtocol, requests)=>({
|
|
|
799
656
|
this.logger.verbose(`Rate limit exceeded ${prettyPrintRateLimitStatus(rateLimitStatus)} for ${protocol} from ${connection.remotePeer}`);
|
|
800
657
|
throw new ReqRespStatusError(ReqRespStatus.RATE_LIMIT_EXCEEDED);
|
|
801
658
|
}
|
|
659
|
+
// When p2pAllowOnlyValidators is enabled, reject unauthenticated peers on data protocols
|
|
660
|
+
if (!UNAUTHENTICATED_ALLOWED_PROTOCOLS.has(protocol) && (this.shouldRejectPeer?.(connection.remotePeer.toString()) ?? false)) {
|
|
661
|
+
this.logger.debug(`Rejecting unauthenticated peer ${connection.remotePeer} on gated protocol ${protocol}`);
|
|
662
|
+
throw new ReqRespStatusError(ReqRespStatus.FAILURE);
|
|
663
|
+
}
|
|
802
664
|
await this.processStream(protocol, incomingStream);
|
|
803
665
|
} catch (err) {
|
|
804
666
|
this.metrics.recordResponseError(protocol);
|
|
@@ -819,7 +681,8 @@ _dec = trackSpan('ReqResp.sendBatchRequest', (subProtocol, requests)=>({
|
|
|
819
681
|
// and that this stream should be dropped
|
|
820
682
|
const isMessageToNotWarn = err instanceof Error && [
|
|
821
683
|
'stream reset',
|
|
822
|
-
'Cannot push value onto an ended pushable'
|
|
684
|
+
'Cannot push value onto an ended pushable',
|
|
685
|
+
'read ECONNRESET'
|
|
823
686
|
].some((msg)=>err.message.includes(msg));
|
|
824
687
|
const level = isMessageToNotWarn ? 'debug' : 'warn';
|
|
825
688
|
this.logger[level]('Unknown stream error while handling the stream, aborting', {
|
|
@@ -907,12 +770,12 @@ _dec = trackSpan('ReqResp.sendBatchRequest', (subProtocol, requests)=>({
|
|
|
907
770
|
peerId: peerId.toString(),
|
|
908
771
|
subProtocol
|
|
909
772
|
};
|
|
910
|
-
//Punishable error - peer should never send badly formed request
|
|
773
|
+
// Punishable error - peer should never send badly formed request
|
|
911
774
|
if (e instanceof ReqRespStatusError && e.status === ReqRespStatus.BADLY_FORMED_REQUEST) {
|
|
912
775
|
this.logger.debug(`Punishable error in ${subProtocol}: ${e.cause}`, logTags);
|
|
913
776
|
return PeerErrorSeverity.LowToleranceError;
|
|
914
777
|
}
|
|
915
|
-
//TODO: (mralj): think if we should penalize peer here based on connection errors
|
|
778
|
+
// TODO: (mralj): think if we should penalize peer here based on connection errors
|
|
916
779
|
return undefined;
|
|
917
780
|
}
|
|
918
781
|
/**
|
|
@@ -929,16 +792,24 @@ _dec = trackSpan('ReqResp.sendBatchRequest', (subProtocol, requests)=>({
|
|
|
929
792
|
this.logger.debug('Error encountered on goodbye sub protocol, no penalty', logTags);
|
|
930
793
|
return undefined;
|
|
931
794
|
}
|
|
932
|
-
//
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
795
|
+
// Invalid status byte: the peer sent a status byte that doesn't match any known status code.
|
|
796
|
+
// This is a protocol violation, penalize harshly.
|
|
797
|
+
if (e instanceof ReqRespStatusError) {
|
|
798
|
+
this.logger.warn(`Invalid status byte from peer ${peerId.toString()} in ${subProtocol}: ${e.message}`, logTags);
|
|
799
|
+
return PeerErrorSeverity.LowToleranceError;
|
|
800
|
+
}
|
|
801
|
+
// Oversized snappy response: the peer is sending data that exceeds the allowed size.
|
|
802
|
+
// This is a protocol violation that wastes bandwidth, so penalize harshly.
|
|
803
|
+
if (e instanceof OversizedSnappyResponseError) {
|
|
804
|
+
this.logger.warn(`Oversized response from peer ${peerId.toString()} in ${subProtocol}: ${e.message}`, logTags);
|
|
805
|
+
return PeerErrorSeverity.LowToleranceError;
|
|
936
806
|
}
|
|
937
807
|
return this.categorizeConnectionErrors(e, peerId, subProtocol);
|
|
938
808
|
}
|
|
939
809
|
/*
|
|
940
810
|
* Errors specific to connection handling
|
|
941
|
-
* These can happen both when sending request and response
|
|
811
|
+
* These can happen both when sending request and response.
|
|
812
|
+
*/ categorizeConnectionErrors(e, peerId, subProtocol) {
|
|
942
813
|
const logTags = {
|
|
943
814
|
peerId: peerId.toString(),
|
|
944
815
|
subProtocol
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
+
import type { SlotNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
3
|
import type { PeerInfo } from '@aztec/stdlib/interfaces/server';
|
|
3
|
-
import type { BlockProposal, CheckpointAttestation, CheckpointProposalCore, Gossipable } from '@aztec/stdlib/p2p';
|
|
4
|
+
import type { BlockProposal, CheckpointAttestation, CheckpointProposalCore, Gossipable, TopicType } from '@aztec/stdlib/p2p';
|
|
4
5
|
import type { Tx } from '@aztec/stdlib/tx';
|
|
5
6
|
import type { PeerId } from '@libp2p/interface';
|
|
6
7
|
import type { ENR } from '@nethermindeth/enr';
|
|
7
8
|
import type EventEmitter from 'events';
|
|
9
|
+
import type { BatchTxRequesterLibP2PService } from './reqresp/batch-tx-requester/interface.js';
|
|
8
10
|
import type { P2PReqRespConfig } from './reqresp/config.js';
|
|
9
11
|
import type { StatusMessage } from './reqresp/index.js';
|
|
10
|
-
import type { ReqRespSubProtocol, ReqRespSubProtocolHandler
|
|
12
|
+
import type { ReqRespSubProtocol, ReqRespSubProtocolHandler } from './reqresp/interface.js';
|
|
11
13
|
import type { AuthRequest, AuthResponse } from './reqresp/protocols/auth.js';
|
|
12
14
|
export declare enum PeerDiscoveryState {
|
|
13
15
|
RUNNING = "running",
|
|
@@ -27,6 +29,29 @@ export type P2PBlockReceivedCallback = (block: BlockProposal, sender: PeerId) =>
|
|
|
27
29
|
*/
|
|
28
30
|
export type P2PCheckpointReceivedCallback = (checkpoint: CheckpointProposalCore, sender: PeerId) => Promise<CheckpointAttestation[] | undefined>;
|
|
29
31
|
export type AuthReceivedCallback = (peerId: PeerId, authRequest: AuthRequest) => Promise<AuthResponse | undefined>;
|
|
32
|
+
/** Minimal info passed to the duplicate proposal callback. */
|
|
33
|
+
export type DuplicateProposalInfo = {
|
|
34
|
+
slot: SlotNumber;
|
|
35
|
+
proposer: EthAddress;
|
|
36
|
+
type: 'checkpoint' | 'block';
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Callback for when a duplicate proposal is detected (equivocation).
|
|
40
|
+
* Invoked on the first duplicate (when count goes from 1 to 2).
|
|
41
|
+
*/
|
|
42
|
+
export type P2PDuplicateProposalCallback = (info: DuplicateProposalInfo) => void;
|
|
43
|
+
/** Minimal info passed to the duplicate attestation callback. */
|
|
44
|
+
export type DuplicateAttestationInfo = {
|
|
45
|
+
slot: SlotNumber;
|
|
46
|
+
attester: EthAddress;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Callback for when a duplicate attestation is detected (equivocation).
|
|
50
|
+
* A validator signing attestations for different proposals at the same slot.
|
|
51
|
+
* Invoked on the first duplicate (when count goes from 1 to 2).
|
|
52
|
+
*/
|
|
53
|
+
export type P2PDuplicateAttestationCallback = (info: DuplicateAttestationInfo) => void;
|
|
54
|
+
export type P2PCheckpointAttestationCallback = (attestation: CheckpointAttestation) => void;
|
|
30
55
|
/**
|
|
31
56
|
* The interface for a P2P service implementation.
|
|
32
57
|
*/
|
|
@@ -46,24 +71,33 @@ export interface P2PService {
|
|
|
46
71
|
* @param message - The message to be propagated.
|
|
47
72
|
*/
|
|
48
73
|
propagate<T extends Gossipable>(message: T): Promise<void>;
|
|
74
|
+
registerBlockReceivedCallback(callback: P2PBlockReceivedCallback): void;
|
|
75
|
+
registerValidatorCheckpointReceivedCallback(callback: P2PCheckpointReceivedCallback): void;
|
|
76
|
+
registerAllNodesCheckpointReceivedCallback(callback: P2PCheckpointReceivedCallback): void;
|
|
49
77
|
/**
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
* @param protocol - The request response protocol to use
|
|
53
|
-
* @param requests - The requests to send to the peers
|
|
54
|
-
* @returns The responses to the requests
|
|
78
|
+
* Registers a callback invoked when a duplicate proposal is detected (equivocation).
|
|
79
|
+
* The callback is triggered on the first duplicate (when count goes from 1 to 2).
|
|
55
80
|
*/
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
81
|
+
registerDuplicateProposalCallback(callback: P2PDuplicateProposalCallback): void;
|
|
82
|
+
/**
|
|
83
|
+
* Registers a callback invoked when a duplicate attestation is detected (equivocation).
|
|
84
|
+
* A validator signing attestations for different proposals at the same slot.
|
|
85
|
+
* The callback is triggered on the first duplicate (when count goes from 1 to 2).
|
|
86
|
+
*/
|
|
87
|
+
registerDuplicateAttestationCallback(callback: P2PDuplicateAttestationCallback): void;
|
|
88
|
+
registerCheckpointAttestationCallback(callback: P2PCheckpointAttestationCallback): void;
|
|
59
89
|
getEnr(): ENR | undefined;
|
|
60
90
|
getPeers(includePending?: boolean): PeerInfo[];
|
|
61
|
-
|
|
62
|
-
|
|
91
|
+
/** Returns the number of peers in the GossipSub mesh for a given topic type. */
|
|
92
|
+
getGossipMeshPeerCount(topicType: TopicType): number;
|
|
93
|
+
validateTxsReceivedInBlockProposal(txs: Tx[]): Promise<void>;
|
|
94
|
+
addReqRespSubProtocol(subProtocol: ReqRespSubProtocol, handler: ReqRespSubProtocolHandler): Promise<void>;
|
|
63
95
|
handleAuthRequestFromPeer(authRequest: AuthRequest, peerId: PeerId): Promise<StatusMessage>;
|
|
64
96
|
updateConfig(config: Partial<P2PReqRespConfig>): void;
|
|
65
97
|
/** If node running this P2P stack is validator, passes in validator address to P2P layer */
|
|
66
98
|
registerThisValidatorAddresses(address: EthAddress[]): void;
|
|
99
|
+
/** Get BatchTxRequester service dependencies */
|
|
100
|
+
getBatchTxRequesterService(): BatchTxRequesterLibP2PService;
|
|
67
101
|
}
|
|
68
102
|
/**
|
|
69
103
|
* The interface for a peer discovery service implementation.
|
|
@@ -97,8 +131,10 @@ export interface PeerDiscoveryService extends EventEmitter {
|
|
|
97
131
|
*/
|
|
98
132
|
on(event: 'peer:discovered', listener: (enr: ENR) => void): this;
|
|
99
133
|
emit(event: 'peer:discovered', enr: ENR): boolean;
|
|
134
|
+
on(event: 'ip:changed', listener: (ip: string) => void): this;
|
|
135
|
+
emit(event: 'ip:changed', ip: string): boolean;
|
|
100
136
|
getStatus(): PeerDiscoveryState;
|
|
101
137
|
getEnr(): ENR | undefined;
|
|
102
138
|
bootstrapNodeEnrs: ENR[];
|
|
103
139
|
}
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQ1YsYUFBYSxFQUNiLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsVUFBVSxFQUNWLFNBQVMsRUFDVixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTNDLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxZQUFZLE1BQU0sUUFBUSxDQUFDO0FBRXZDLE9BQU8sS0FBSyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDL0YsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RCxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVGLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU3RSxvQkFBWSxrQkFBa0I7SUFDNUIsT0FBTyxZQUFZO0lBQ25CLE9BQU8sWUFBWTtDQUNwQjtBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLE1BQU0sd0JBQXdCLEdBQUcs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/services/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/services/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,16 +2,6 @@ import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
|
2
2
|
export type TxCollectionConfig = {
|
|
3
3
|
/** How long to wait before starting reqresp for fast collection */
|
|
4
4
|
txCollectionFastNodesTimeoutBeforeReqRespMs: number;
|
|
5
|
-
/** How often to collect from configured nodes */
|
|
6
|
-
txCollectionSlowNodesIntervalMs: number;
|
|
7
|
-
/** How ofter to collect from peers */
|
|
8
|
-
txCollectionSlowReqRespIntervalMs: number;
|
|
9
|
-
/** How long to wait for a reqresp response during slow collection */
|
|
10
|
-
txCollectionSlowReqRespTimeoutMs: number;
|
|
11
|
-
/** How often to reconcile found txs with the tx pool */
|
|
12
|
-
txCollectionReconcileIntervalMs: number;
|
|
13
|
-
/** Whether to disable the slow collection loop if we are dealing with any immediate requests */
|
|
14
|
-
txCollectionDisableSlowDuringFastRequests: boolean;
|
|
15
5
|
/** How many ms to wait between retried request to a node via RPC during fast collection */
|
|
16
6
|
txCollectionFastNodeIntervalMs: number;
|
|
17
7
|
/** A comma-separated list of Aztec node RPC URLs to use for tx collection */
|
|
@@ -20,6 +10,16 @@ export type TxCollectionConfig = {
|
|
|
20
10
|
txCollectionFastMaxParallelRequestsPerNode: number;
|
|
21
11
|
/** Maximum number of transactions to request from a node in a single batch */
|
|
22
12
|
txCollectionNodeRpcMaxBatchSize: number;
|
|
13
|
+
/** A comma-separated list of file store URLs (s3://, gs://, file://, http://) for tx collection */
|
|
14
|
+
txCollectionFileStoreUrls: string[];
|
|
15
|
+
/** Delay in ms from reqresp start before file store collection begins */
|
|
16
|
+
txCollectionFileStoreFastDelayMs: number;
|
|
17
|
+
/** Number of concurrent workers for fast file store collection */
|
|
18
|
+
txCollectionFileStoreFastWorkerCount: number;
|
|
19
|
+
/** Base backoff time in ms for fast file store collection retries */
|
|
20
|
+
txCollectionFileStoreFastBackoffBaseMs: number;
|
|
21
|
+
/** Max backoff time in ms for fast file store collection retries */
|
|
22
|
+
txCollectionFileStoreFastBackoffMaxMs: number;
|
|
23
23
|
};
|
|
24
24
|
export declare const txCollectionConfigMappings: ConfigMappingsType<TxCollectionConfig>;
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfY29sbGVjdGlvbi9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssa0JBQWtCLEVBQXNCLE1BQU0sMEJBQTBCLENBQUM7QUFHdkYsTUFBTSxNQUFNLGtCQUFrQixHQUFHO0lBQy9CLG9FQUFvRTtJQUNwRSwyQ0FBMkMsRUFBRSxNQUFNLENBQUM7SUFDcEQsMkZBQTJGO0lBQzNGLDhCQUE4QixFQUFFLE1BQU0sQ0FBQztJQUN2Qyw2RUFBNkU7SUFDN0UsdUJBQXVCLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDbEMsbUZBQW1GO0lBQ25GLDBDQUEwQyxFQUFFLE1BQU0sQ0FBQztJQUNuRCw4RUFBOEU7SUFDOUUsK0JBQStCLEVBQUUsTUFBTSxDQUFDO0lBQ3hDLG1HQUFtRztJQUNuRyx5QkFBeUIsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNwQyx5RUFBeUU7SUFDekUsZ0NBQWdDLEVBQUUsTUFBTSxDQUFDO0lBQ3pDLGtFQUFrRTtJQUNsRSxvQ0FBb0MsRUFBRSxNQUFNLENBQUM7SUFDN0MscUVBQXFFO0lBQ3JFLHNDQUFzQyxFQUFFLE1BQU0sQ0FBQztJQUMvQyxvRUFBb0U7SUFDcEUscUNBQXFDLEVBQUUsTUFBTSxDQUFDO0NBQy9DLENBQUM7QUFFRixlQUFPLE1BQU0sMEJBQTBCLEVBQUUsa0JBQWtCLENBQUMsa0JBQWtCLENBOEQ3RSxDQUFDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAsB,MAAM,0BAA0B,CAAC;AAGvF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,oEAAoE;IACpE,2CAA2C,EAAE,MAAM,CAAC;IACpD,2FAA2F;IAC3F,8BAA8B,EAAE,MAAM,CAAC;IACvC,6EAA6E;IAC7E,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,mFAAmF;IACnF,0CAA0C,EAAE,MAAM,CAAC;IACnD,8EAA8E;IAC9E,+BAA+B,EAAE,MAAM,CAAC;IACxC,mGAAmG;IACnG,yBAAyB,EAAE,MAAM,EAAE,CAAC;IACpC,yEAAyE;IACzE,gCAAgC,EAAE,MAAM,CAAC;IACzC,kEAAkE;IAClE,oCAAoC,EAAE,MAAM,CAAC;IAC7C,qEAAqE;IACrE,sCAAsC,EAAE,MAAM,CAAC;IAC/C,oEAAoE;IACpE,qCAAqC,EAAE,MAAM,CAAC;CAC/C,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CAAC,kBAAkB,CA8D7E,CAAC"}
|