@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
package/dest/versioning.js
CHANGED
|
@@ -1,19 +1,13 @@
|
|
|
1
|
-
import { toBufferBE } from '@aztec/foundation/bigint-buffer';
|
|
2
1
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
3
2
|
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
4
|
-
import {
|
|
5
|
-
import xxhashFactory from 'xxhash-wasm';
|
|
3
|
+
import { compressComponentVersions, getComponentsVersionsFromConfig } from '@aztec/stdlib/versioning';
|
|
6
4
|
import { AZTEC_ENR_CLIENT_VERSION_KEY, AZTEC_ENR_KEY } from './types/index.js';
|
|
7
|
-
const USE_XX_HASH = false; // Enable to reduce the size of the ENR record for production
|
|
8
|
-
const XX_HASH_LEN = 8;
|
|
9
|
-
const xxhash = await xxhashFactory();
|
|
10
5
|
/** Returns the component versions based on config and this build. */ export function getVersions(config) {
|
|
11
6
|
return getComponentsVersionsFromConfig(config, protocolContractsHash, getVKTreeRoot());
|
|
12
7
|
}
|
|
13
|
-
/** Sets the aztec key on the ENR record with versioning info. */ export function setAztecEnrKey(enr, config
|
|
8
|
+
/** Sets the aztec key on the ENR record with versioning info. */ export function setAztecEnrKey(enr, config) {
|
|
14
9
|
const versions = getVersions(config);
|
|
15
|
-
|
|
16
|
-
enr.set(AZTEC_ENR_KEY, value);
|
|
10
|
+
enr.set(AZTEC_ENR_KEY, Buffer.from(compressComponentVersions(versions)));
|
|
17
11
|
return versions;
|
|
18
12
|
}
|
|
19
13
|
/** Sets the Aztec client version on ENR record **/ export function setAztecClientVersionEnrKey(enr, clientVersion) {
|
|
@@ -21,18 +15,3 @@ const xxhash = await xxhashFactory();
|
|
|
21
15
|
enr.set(AZTEC_ENR_CLIENT_VERSION_KEY, Buffer.from(clientVersion));
|
|
22
16
|
}
|
|
23
17
|
}
|
|
24
|
-
/** Checks the given value from an ENR record against the expected versions. */ export function checkAztecEnrVersion(enrValue, expectedVersions) {
|
|
25
|
-
if (enrValue.length === XX_HASH_LEN) {
|
|
26
|
-
const expected = versionsToEnrValue(expectedVersions, true);
|
|
27
|
-
if (!Buffer.from(enrValue).equals(expected)) {
|
|
28
|
-
throw new Error(`Expected ENR version ${expected.toString('hex')} but received ${enrValue.toString('hex')}`);
|
|
29
|
-
}
|
|
30
|
-
} else {
|
|
31
|
-
const actual = Buffer.from(enrValue).toString();
|
|
32
|
-
checkCompressedComponentVersion(actual, expectedVersions);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
function versionsToEnrValue(versions, useXxHash) {
|
|
36
|
-
const compressed = compressComponentVersions(versions);
|
|
37
|
-
return useXxHash ? toBufferBE(xxhash.h64(compressed), XX_HASH_LEN) : Buffer.from(compressed);
|
|
38
|
-
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/p2p",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.993d240",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"clean": "rm -rf ./dest .tsbuildinfo",
|
|
25
25
|
"test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}",
|
|
26
26
|
"start": "node ./dest",
|
|
27
|
-
"start:dev": "concurrently -k \"
|
|
27
|
+
"start:dev": "concurrently -k \"../scripts/tsc.sh --watch\" \"nodemon --watch dest --exec yarn start\""
|
|
28
28
|
},
|
|
29
29
|
"inherits": [
|
|
30
30
|
"../package.common.json"
|
|
@@ -67,17 +67,18 @@
|
|
|
67
67
|
]
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"@aztec/constants": "0.0.1-commit.
|
|
71
|
-
"@aztec/epoch-cache": "0.0.1-commit.
|
|
72
|
-
"@aztec/ethereum": "0.0.1-commit.
|
|
73
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
74
|
-
"@aztec/kv-store": "0.0.1-commit.
|
|
75
|
-
"@aztec/noir-contracts.js": "0.0.1-commit.
|
|
76
|
-
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.
|
|
77
|
-
"@aztec/protocol-contracts": "0.0.1-commit.
|
|
78
|
-
"@aztec/simulator": "0.0.1-commit.
|
|
79
|
-
"@aztec/
|
|
80
|
-
"@aztec/
|
|
70
|
+
"@aztec/constants": "0.0.1-commit.993d240",
|
|
71
|
+
"@aztec/epoch-cache": "0.0.1-commit.993d240",
|
|
72
|
+
"@aztec/ethereum": "0.0.1-commit.993d240",
|
|
73
|
+
"@aztec/foundation": "0.0.1-commit.993d240",
|
|
74
|
+
"@aztec/kv-store": "0.0.1-commit.993d240",
|
|
75
|
+
"@aztec/noir-contracts.js": "0.0.1-commit.993d240",
|
|
76
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.993d240",
|
|
77
|
+
"@aztec/protocol-contracts": "0.0.1-commit.993d240",
|
|
78
|
+
"@aztec/simulator": "0.0.1-commit.993d240",
|
|
79
|
+
"@aztec/standard-contracts": "0.0.1-commit.993d240",
|
|
80
|
+
"@aztec/stdlib": "0.0.1-commit.993d240",
|
|
81
|
+
"@aztec/telemetry-client": "0.0.1-commit.993d240",
|
|
81
82
|
"@chainsafe/libp2p-gossipsub": "13.0.0",
|
|
82
83
|
"@chainsafe/libp2p-noise": "^15.0.0",
|
|
83
84
|
"@chainsafe/libp2p-yamux": "^6.0.2",
|
|
@@ -104,12 +105,12 @@
|
|
|
104
105
|
"xxhash-wasm": "^1.1.0"
|
|
105
106
|
},
|
|
106
107
|
"devDependencies": {
|
|
107
|
-
"@aztec/archiver": "0.0.1-commit.
|
|
108
|
-
"@aztec/world-state": "0.0.1-commit.
|
|
108
|
+
"@aztec/archiver": "0.0.1-commit.993d240",
|
|
109
|
+
"@aztec/world-state": "0.0.1-commit.993d240",
|
|
109
110
|
"@jest/globals": "^30.0.0",
|
|
110
111
|
"@types/jest": "^30.0.0",
|
|
111
112
|
"@types/node": "^22.15.17",
|
|
112
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
113
|
+
"@typescript/native-preview": "7.0.0-dev.20260113.1",
|
|
113
114
|
"get-port": "^7.1.0",
|
|
114
115
|
"it-drain": "^3.0.5",
|
|
115
116
|
"it-length": "^3.0.6",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createLogger } from '@aztec/foundation/log';
|
|
1
|
+
import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
|
|
2
2
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
3
3
|
import type { P2PBootstrapApi } from '@aztec/stdlib/interfaces/server';
|
|
4
4
|
import { OtelMetricsAdapter, type TelemetryClient } from '@aztec/telemetry-client';
|
|
@@ -18,12 +18,15 @@ import { convertToMultiaddr, getPeerIdPrivateKey, getPublicIp } from '../util.js
|
|
|
18
18
|
export class BootstrapNode implements P2PBootstrapApi {
|
|
19
19
|
private node?: Discv5EventEmitter = undefined;
|
|
20
20
|
private peerId?: PeerId;
|
|
21
|
+
private logger: Logger;
|
|
21
22
|
|
|
22
23
|
constructor(
|
|
23
24
|
private store: AztecAsyncKVStore,
|
|
24
25
|
private telemetry: TelemetryClient,
|
|
25
|
-
|
|
26
|
-
) {
|
|
26
|
+
bindings?: LoggerBindings,
|
|
27
|
+
) {
|
|
28
|
+
this.logger = createLogger('p2p:bootstrap', bindings);
|
|
29
|
+
}
|
|
27
30
|
|
|
28
31
|
/**
|
|
29
32
|
* Starts the bootstrap node.
|
|
@@ -37,7 +40,7 @@ export class BootstrapNode implements P2PBootstrapApi {
|
|
|
37
40
|
if (!p2pIp) {
|
|
38
41
|
if (queryForIp) {
|
|
39
42
|
this.logger.info('Querying for public IP address...');
|
|
40
|
-
const publicIp = await getPublicIp();
|
|
43
|
+
const publicIp = await getPublicIp(config.publicIpServices);
|
|
41
44
|
p2pIp = publicIp;
|
|
42
45
|
this.logger.info(`Found public IP address: ${publicIp}`);
|
|
43
46
|
}
|
|
@@ -65,7 +68,7 @@ export class BootstrapNode implements P2PBootstrapApi {
|
|
|
65
68
|
|
|
66
69
|
this.logger.debug(`Starting bootstrap node ${peerId} listening on ${listenAddrUdp.toString()}`);
|
|
67
70
|
|
|
68
|
-
const metricsRegistry = new OtelMetricsAdapter(this.telemetry);
|
|
71
|
+
const metricsRegistry = new OtelMetricsAdapter(this.telemetry, this.logger.getBindings());
|
|
69
72
|
this.node = Discv5.create({
|
|
70
73
|
enr: ourEnr,
|
|
71
74
|
peerId,
|
|
@@ -83,6 +86,14 @@ export class BootstrapNode implements P2PBootstrapApi {
|
|
|
83
86
|
this.node.on('discovered', async (enr: SignableENR) => {
|
|
84
87
|
const addr = await enr.getFullMultiaddr('udp');
|
|
85
88
|
this.logger.verbose(`Discovered new peer`, { enr: enr.encodeTxt(), addr: addr?.toString() });
|
|
89
|
+
// discv5's discovered() only updates routing table entries that already exist. Nodes that
|
|
90
|
+
// established a session with an empty-IP ENR are never inserted, so even after their ENR
|
|
91
|
+
// gains a valid socket address the routing table stays empty and FINDNODE always returns 0
|
|
92
|
+
// peers. Calling addEnr() here does an insertOrUpdate regardless of prior state, fixing
|
|
93
|
+
// the routing table so these nodes become discoverable to other peers.
|
|
94
|
+
if (addr) {
|
|
95
|
+
this.node.addEnr(enr);
|
|
96
|
+
}
|
|
86
97
|
});
|
|
87
98
|
|
|
88
99
|
try {
|
package/src/client/factory.ts
CHANGED
|
@@ -1,35 +1,46 @@
|
|
|
1
1
|
import type { EpochCacheInterface } from '@aztec/epoch-cache';
|
|
2
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
3
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
3
4
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
4
5
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
5
|
-
import type { DataStoreConfig } from '@aztec/kv-store/config';
|
|
6
6
|
import { AztecLMDBStoreV2, createStore } from '@aztec/kv-store/lmdb-v2';
|
|
7
|
-
import type { L2BlockSource } from '@aztec/stdlib/block';
|
|
7
|
+
import type { BlockHash, L2BlockSource } from '@aztec/stdlib/block';
|
|
8
8
|
import type { ChainConfig } from '@aztec/stdlib/config';
|
|
9
9
|
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
10
|
-
import type {
|
|
11
|
-
import {
|
|
10
|
+
import type { BlockMinFeesProvider } from '@aztec/stdlib/gas';
|
|
11
|
+
import type { AztecNode, ClientProtocolCircuitVerifier, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
12
|
+
import type { DataStoreConfig } from '@aztec/stdlib/kv-store';
|
|
12
13
|
import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
|
|
13
14
|
|
|
14
15
|
import { P2PClient } from '../client/p2p_client.js';
|
|
15
16
|
import type { P2PConfig } from '../config.js';
|
|
16
|
-
import
|
|
17
|
-
import { KvAttestationPool } from '../mem_pools/attestation_pool/kv_attestation_pool.js';
|
|
17
|
+
import { AttestationPool, type AttestationPoolApi } from '../mem_pools/attestation_pool/attestation_pool.js';
|
|
18
18
|
import type { MemPools } from '../mem_pools/interface.js';
|
|
19
|
-
import {
|
|
19
|
+
import type { TxPoolV2 } from '../mem_pools/tx_pool_v2/interfaces.js';
|
|
20
|
+
import { AztecKVTxPoolV2 } from '../mem_pools/tx_pool_v2/tx_pool_v2.js';
|
|
21
|
+
import {
|
|
22
|
+
createCheckAllowedSetupCalls,
|
|
23
|
+
createTxValidatorForOnDemandReceivedTxs,
|
|
24
|
+
createTxValidatorForTransactionsEnteringPendingTxPool,
|
|
25
|
+
getDefaultAllowedSetupFunctions,
|
|
26
|
+
} from '../msg_validators/index.js';
|
|
27
|
+
import { TxValidationCache } from '../msg_validators/tx_validator/tx_validation_cache.js';
|
|
20
28
|
import { DummyP2PService } from '../services/dummy_service.js';
|
|
21
29
|
import { LibP2PService } from '../services/index.js';
|
|
30
|
+
import { createFileStoreTxSources } from '../services/tx_collection/file_store_tx_source.js';
|
|
22
31
|
import { TxCollection } from '../services/tx_collection/tx_collection.js';
|
|
23
|
-
import { type TxSource, createNodeRpcTxSources } from '../services/tx_collection/tx_source.js';
|
|
32
|
+
import { NodeRpcTxSource, type TxSource, createNodeRpcTxSources } from '../services/tx_collection/tx_source.js';
|
|
33
|
+
import { TxFileStore } from '../services/tx_file_store/tx_file_store.js';
|
|
24
34
|
import { configureP2PClientAddresses, createLibP2PPeerIdFromPrivateKey, getPeerIdPrivateKey } from '../util.js';
|
|
25
35
|
|
|
26
|
-
export type P2PClientDeps
|
|
27
|
-
txPool?:
|
|
36
|
+
export type P2PClientDeps = {
|
|
37
|
+
txPool?: TxPoolV2;
|
|
28
38
|
store?: AztecAsyncKVStore;
|
|
29
|
-
attestationPool?:
|
|
39
|
+
attestationPool?: AttestationPoolApi;
|
|
30
40
|
logger?: Logger;
|
|
31
41
|
txCollectionNodeSources?: TxSource[];
|
|
32
|
-
|
|
42
|
+
rpcTxProviders?: AztecNode[];
|
|
43
|
+
p2pServiceFactory?: (...args: Parameters<(typeof LibP2PService)['new']>) => Promise<LibP2PService>;
|
|
33
44
|
};
|
|
34
45
|
|
|
35
46
|
export const P2P_STORE_NAME = 'p2p';
|
|
@@ -37,17 +48,18 @@ export const P2P_ARCHIVE_STORE_NAME = 'p2p-archive';
|
|
|
37
48
|
export const P2P_PEER_STORE_NAME = 'p2p-peers';
|
|
38
49
|
export const P2P_ATTESTATION_STORE_NAME = 'p2p-attestation';
|
|
39
50
|
|
|
40
|
-
export async function createP2PClient
|
|
41
|
-
clientType: T,
|
|
51
|
+
export async function createP2PClient(
|
|
42
52
|
inputConfig: P2PConfig & DataStoreConfig & ChainConfig,
|
|
43
53
|
archiver: L2BlockSource & ContractDataSource,
|
|
44
54
|
proofVerifier: ClientProtocolCircuitVerifier,
|
|
45
55
|
worldStateSynchronizer: WorldStateSynchronizer,
|
|
46
56
|
epochCache: EpochCacheInterface,
|
|
57
|
+
blockMinFeesProvider: BlockMinFeesProvider,
|
|
47
58
|
packageVersion: string,
|
|
48
59
|
dateProvider: DateProvider = new DateProvider(),
|
|
49
60
|
telemetry: TelemetryClient = getTelemetryClient(),
|
|
50
|
-
deps: P2PClientDeps
|
|
61
|
+
deps: P2PClientDeps = {},
|
|
62
|
+
initialBlockHash: BlockHash,
|
|
51
63
|
) {
|
|
52
64
|
const config = await configureP2PClientAddresses({
|
|
53
65
|
...inputConfig,
|
|
@@ -62,34 +74,80 @@ export async function createP2PClient<T extends P2PClientType>(
|
|
|
62
74
|
);
|
|
63
75
|
}
|
|
64
76
|
|
|
65
|
-
const
|
|
66
|
-
const
|
|
67
|
-
const
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
1,
|
|
71
|
-
config,
|
|
72
|
-
createLogger('p2p-attestation:lmdb-v2'),
|
|
73
|
-
);
|
|
77
|
+
const bindings = logger.getBindings();
|
|
78
|
+
const store = deps.store ?? (await createStore(P2P_STORE_NAME, 2, config, bindings));
|
|
79
|
+
const archive = await createStore(P2P_ARCHIVE_STORE_NAME, 1, config, bindings);
|
|
80
|
+
const peerStore = await createStore(P2P_PEER_STORE_NAME, 1, config, bindings);
|
|
81
|
+
const attestationStore = await createStore(P2P_ATTESTATION_STORE_NAME, 2, config, bindings);
|
|
74
82
|
const l1Constants = await archiver.getL1Constants();
|
|
75
83
|
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
84
|
+
const rollupAddress = inputConfig.rollupAddress.toString().toLowerCase().replace(/^0x/, '');
|
|
85
|
+
const txFileStoreBasePath = `aztec-${inputConfig.l1ChainId}-${inputConfig.rollupVersion}-0x${rollupAddress}`;
|
|
86
|
+
|
|
87
|
+
const allowedInSetup = [
|
|
88
|
+
...(await getDefaultAllowedSetupFunctions()),
|
|
89
|
+
...(inputConfig.txPublicSetupAllowListExtend ?? []),
|
|
90
|
+
];
|
|
91
|
+
const checkAllowedSetupCalls = createCheckAllowedSetupCalls(
|
|
92
|
+
archiver,
|
|
93
|
+
allowedInSetup,
|
|
94
|
+
() => epochCache.getEpochAndSlotInNextL1Slot().ts,
|
|
95
|
+
);
|
|
96
|
+
|
|
97
|
+
const txPool =
|
|
98
|
+
deps.txPool ??
|
|
99
|
+
new AztecKVTxPoolV2(
|
|
100
|
+
store,
|
|
101
|
+
archive,
|
|
102
|
+
{
|
|
103
|
+
l2BlockSource: archiver,
|
|
104
|
+
worldStateSynchronizer,
|
|
105
|
+
checkAllowedSetupCalls,
|
|
106
|
+
createTxValidator: async () => {
|
|
107
|
+
const currentBlockNumber = await archiver.getBlockNumber();
|
|
108
|
+
const { ts: nextSlotTimestamp } = epochCache.getEpochAndSlotInNextL1Slot();
|
|
109
|
+
const l1Constants = await archiver.getL1Constants();
|
|
110
|
+
const gasFees = await blockMinFeesProvider.getCurrentMinFees();
|
|
111
|
+
return createTxValidatorForTransactionsEnteringPendingTxPool(
|
|
112
|
+
worldStateSynchronizer,
|
|
113
|
+
nextSlotTimestamp,
|
|
114
|
+
BlockNumber(currentBlockNumber + 1),
|
|
115
|
+
{
|
|
116
|
+
rollupManaLimit: l1Constants.rollupManaLimit,
|
|
117
|
+
maxBlockL2Gas: config.validateMaxL2BlockGas,
|
|
118
|
+
maxBlockDAGas: config.validateMaxDABlockGas,
|
|
119
|
+
},
|
|
120
|
+
gasFees,
|
|
121
|
+
);
|
|
122
|
+
},
|
|
123
|
+
blockMinFeesProvider,
|
|
124
|
+
},
|
|
125
|
+
telemetry,
|
|
126
|
+
{
|
|
80
127
|
maxPendingTxCount: config.maxPendingTxCount,
|
|
81
128
|
archivedTxLimit: config.archivedTxLimit,
|
|
82
|
-
|
|
83
|
-
|
|
129
|
+
minTxPoolAgeMs: config.minTxPoolAgeMs,
|
|
130
|
+
dropTransactionsProbability: config.dropTransactionsProbability,
|
|
131
|
+
priceBumpPercentage: config.priceBumpPercentage,
|
|
132
|
+
},
|
|
133
|
+
dateProvider,
|
|
134
|
+
);
|
|
135
|
+
|
|
136
|
+
const mempools: MemPools = {
|
|
137
|
+
txPool,
|
|
138
|
+
attestationPool: deps.attestationPool ?? new AttestationPool(attestationStore, telemetry),
|
|
84
139
|
};
|
|
85
140
|
|
|
86
|
-
const
|
|
141
|
+
const txValidationCache =
|
|
142
|
+
config.txValidationCacheSize > 0 ? new TxValidationCache(config.txValidationCacheSize) : undefined;
|
|
143
|
+
|
|
144
|
+
const p2pService = await createP2PService(
|
|
87
145
|
config,
|
|
88
|
-
clientType,
|
|
89
146
|
archiver,
|
|
90
147
|
proofVerifier,
|
|
91
148
|
worldStateSynchronizer,
|
|
92
149
|
epochCache,
|
|
150
|
+
blockMinFeesProvider,
|
|
93
151
|
store,
|
|
94
152
|
peerStore,
|
|
95
153
|
mempools,
|
|
@@ -97,10 +155,20 @@ export async function createP2PClient<T extends P2PClientType>(
|
|
|
97
155
|
packageVersion,
|
|
98
156
|
logger.createChild('libp2p_service'),
|
|
99
157
|
telemetry,
|
|
158
|
+
txValidationCache,
|
|
100
159
|
);
|
|
101
160
|
|
|
161
|
+
const txValidatorForTxCollection = createTxValidatorForOnDemandReceivedTxs(
|
|
162
|
+
proofVerifier,
|
|
163
|
+
config,
|
|
164
|
+
/*bindings=*/ undefined,
|
|
165
|
+
txValidationCache,
|
|
166
|
+
);
|
|
102
167
|
const nodeSources = [
|
|
103
|
-
...createNodeRpcTxSources(config.txCollectionNodeRpcUrls, config),
|
|
168
|
+
...createNodeRpcTxSources(config.txCollectionNodeRpcUrls, txValidatorForTxCollection, config),
|
|
169
|
+
...(deps.rpcTxProviders ?? []).map(
|
|
170
|
+
(node, i) => new NodeRpcTxSource(node, txValidatorForTxCollection, `node-rpc-provider-${i}`),
|
|
171
|
+
),
|
|
104
172
|
...(deps.txCollectionNodeSources ?? []),
|
|
105
173
|
];
|
|
106
174
|
if (nodeSources.length > 0) {
|
|
@@ -109,44 +177,70 @@ export async function createP2PClient<T extends P2PClientType>(
|
|
|
109
177
|
});
|
|
110
178
|
}
|
|
111
179
|
|
|
180
|
+
const fileStoreSources = await createFileStoreTxSources(
|
|
181
|
+
config.txCollectionFileStoreUrls,
|
|
182
|
+
txFileStoreBasePath,
|
|
183
|
+
txValidatorForTxCollection,
|
|
184
|
+
logger.createChild('file-store-tx-source'),
|
|
185
|
+
telemetry,
|
|
186
|
+
);
|
|
187
|
+
if (fileStoreSources.length > 0) {
|
|
188
|
+
logger.info(`Using ${fileStoreSources.length} file store sources for tx collection.`, {
|
|
189
|
+
stores: fileStoreSources.map(s => s.getInfo()),
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
|
|
112
193
|
const txCollection = new TxCollection(
|
|
113
|
-
p2pService,
|
|
194
|
+
p2pService.getBatchTxRequesterService(),
|
|
114
195
|
nodeSources,
|
|
115
196
|
l1Constants,
|
|
116
197
|
mempools.txPool,
|
|
117
198
|
config,
|
|
199
|
+
fileStoreSources,
|
|
118
200
|
dateProvider,
|
|
119
201
|
telemetry,
|
|
120
202
|
logger.createChild('tx-collection'),
|
|
121
203
|
);
|
|
122
204
|
|
|
205
|
+
const txFileStore = await TxFileStore.create(
|
|
206
|
+
mempools.txPool,
|
|
207
|
+
config,
|
|
208
|
+
txFileStoreBasePath,
|
|
209
|
+
logger.createChild('tx-file-store'),
|
|
210
|
+
telemetry,
|
|
211
|
+
);
|
|
212
|
+
|
|
123
213
|
return new P2PClient(
|
|
124
|
-
clientType,
|
|
125
214
|
store,
|
|
126
215
|
archiver,
|
|
127
216
|
mempools,
|
|
128
217
|
p2pService,
|
|
129
218
|
txCollection,
|
|
219
|
+
txFileStore,
|
|
220
|
+
epochCache,
|
|
130
221
|
config,
|
|
131
222
|
dateProvider,
|
|
132
223
|
telemetry,
|
|
224
|
+
undefined,
|
|
225
|
+
initialBlockHash,
|
|
133
226
|
);
|
|
134
227
|
}
|
|
135
228
|
|
|
136
|
-
async function createP2PService
|
|
229
|
+
async function createP2PService(
|
|
137
230
|
config: P2PConfig & DataStoreConfig,
|
|
138
|
-
clientType: T,
|
|
139
231
|
archiver: L2BlockSource & ContractDataSource,
|
|
140
232
|
proofVerifier: ClientProtocolCircuitVerifier,
|
|
141
233
|
worldStateSynchronizer: WorldStateSynchronizer,
|
|
142
234
|
epochCache: EpochCacheInterface,
|
|
235
|
+
blockMinFeesProvider: BlockMinFeesProvider,
|
|
143
236
|
store: AztecAsyncKVStore,
|
|
144
237
|
peerStore: AztecLMDBStoreV2,
|
|
145
238
|
mempools: MemPools,
|
|
146
|
-
p2pServiceFactory: P2PClientDeps
|
|
239
|
+
p2pServiceFactory: P2PClientDeps['p2pServiceFactory'],
|
|
147
240
|
packageVersion: string,
|
|
148
241
|
logger: Logger,
|
|
149
242
|
telemetry: TelemetryClient,
|
|
243
|
+
txValidationCache?: TxValidationCache,
|
|
150
244
|
) {
|
|
151
245
|
if (!config.p2pEnabled) {
|
|
152
246
|
logger.verbose('P2P is disabled. Using dummy P2P service.');
|
|
@@ -159,7 +253,7 @@ async function createP2PService<T extends P2PClientType>(
|
|
|
159
253
|
const peerIdPrivateKey = await getPeerIdPrivateKey(config, store, logger);
|
|
160
254
|
const peerId = await createLibP2PPeerIdFromPrivateKey(peerIdPrivateKey.getValue());
|
|
161
255
|
|
|
162
|
-
const p2pService = await (p2pServiceFactory ?? LibP2PService.new
|
|
256
|
+
const p2pService = await (p2pServiceFactory ?? LibP2PService.new)(config, peerId, {
|
|
163
257
|
packageVersion,
|
|
164
258
|
mempools,
|
|
165
259
|
l2BlockSource: archiver,
|
|
@@ -167,8 +261,10 @@ async function createP2PService<T extends P2PClientType>(
|
|
|
167
261
|
proofVerifier,
|
|
168
262
|
worldStateSynchronizer,
|
|
169
263
|
peerStore,
|
|
264
|
+
blockMinFeesProvider,
|
|
170
265
|
telemetry,
|
|
171
266
|
logger: logger.createChild(`libp2p_service`),
|
|
267
|
+
txValidationCache,
|
|
172
268
|
});
|
|
173
269
|
|
|
174
270
|
return p2pService;
|
package/src/client/interface.ts
CHANGED
|
@@ -1,19 +1,22 @@
|
|
|
1
|
+
import type { SlotNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import type { EthAddress, L2BlockId } from '@aztec/stdlib/block';
|
|
2
|
-
import type {
|
|
3
|
-
import type { BlockProposal, CheckpointAttestation, CheckpointProposal,
|
|
4
|
-
import type { Tx, TxHash } from '@aztec/stdlib/tx';
|
|
3
|
+
import type { ITxProvider, P2PClient } from '@aztec/stdlib/interfaces/server';
|
|
4
|
+
import type { BlockProposal, CheckpointAttestation, CheckpointProposal, TopicType } from '@aztec/stdlib/p2p';
|
|
5
|
+
import type { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
|
|
5
6
|
|
|
6
7
|
import type { PeerId } from '@libp2p/interface';
|
|
7
8
|
import type { ENR } from '@nethermindeth/enr';
|
|
8
9
|
|
|
9
10
|
import type { P2PConfig } from '../config.js';
|
|
10
11
|
import type { AuthRequest, StatusMessage } from '../services/index.js';
|
|
12
|
+
import type { ReqRespSubProtocol, ReqRespSubProtocolHandler } from '../services/reqresp/interface.js';
|
|
11
13
|
import type {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
DuplicateAttestationInfo,
|
|
15
|
+
DuplicateProposalInfo,
|
|
16
|
+
P2PBlockReceivedCallback,
|
|
17
|
+
P2PCheckpointAttestationCallback,
|
|
18
|
+
P2PCheckpointReceivedCallback,
|
|
19
|
+
} from '../services/service.js';
|
|
17
20
|
|
|
18
21
|
/**
|
|
19
22
|
* Enum defining the possible states of the p2p client.
|
|
@@ -42,7 +45,7 @@ export interface P2PSyncState {
|
|
|
42
45
|
/**
|
|
43
46
|
* Interface of a P2P client.
|
|
44
47
|
**/
|
|
45
|
-
export type P2P
|
|
48
|
+
export type P2P = P2PClient & {
|
|
46
49
|
/**
|
|
47
50
|
* Broadcasts a block proposal to other peers.
|
|
48
51
|
*
|
|
@@ -76,15 +79,35 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
|
|
|
76
79
|
*
|
|
77
80
|
* @param handler - A function taking a received checkpoint proposal and producing attestations
|
|
78
81
|
*/
|
|
79
|
-
|
|
82
|
+
registerValidatorCheckpointProposalHandler(callback: P2PCheckpointReceivedCallback): void;
|
|
80
83
|
|
|
81
84
|
/**
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
* @
|
|
85
|
+
* Registers a callback that runs for ALL nodes (not just validators) when a checkpoint proposal is received.
|
|
86
|
+
* Used to set the proposed checkpoint number on the archiver so the sequencer can build on top of it.
|
|
87
|
+
*
|
|
88
|
+
* @param handler - A function taking a received checkpoint proposal
|
|
89
|
+
*/
|
|
90
|
+
registerAllNodesCheckpointProposalHandler(callback: P2PCheckpointReceivedCallback): void;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Registers a callback invoked when a duplicate proposal is detected (equivocation).
|
|
94
|
+
* The callback is triggered on the first duplicate (when count goes from 1 to 2).
|
|
95
|
+
*
|
|
96
|
+
* @param callback - Function called with info about the duplicate proposal
|
|
97
|
+
*/
|
|
98
|
+
registerDuplicateProposalCallback(callback: (info: DuplicateProposalInfo) => void): void;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Registers a callback invoked when a duplicate attestation is detected (equivocation).
|
|
102
|
+
* A validator signing attestations for different proposals at the same slot.
|
|
103
|
+
* The callback is triggered on the first duplicate (when count goes from 1 to 2).
|
|
104
|
+
*
|
|
105
|
+
* @param callback - Function called with info about the duplicate attestation
|
|
86
106
|
*/
|
|
87
|
-
|
|
107
|
+
registerDuplicateAttestationCallback(callback: (info: DuplicateAttestationInfo) => void): void;
|
|
108
|
+
|
|
109
|
+
/** Registers a callback invoked when a valid checkpoint attestation is accepted into the pool. */
|
|
110
|
+
registerCheckpointAttestationCallback(callback: P2PCheckpointAttestationCallback): void;
|
|
88
111
|
|
|
89
112
|
/**
|
|
90
113
|
* Verifies the 'tx' and, if valid, adds it to local tx pool and forwards it to other peers.
|
|
@@ -93,18 +116,10 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
|
|
|
93
116
|
sendTx(tx: Tx): Promise<void>;
|
|
94
117
|
|
|
95
118
|
/**
|
|
96
|
-
*
|
|
97
|
-
* @param
|
|
98
|
-
* @returns The number of txs added to the pool. Note if the transaction already exists, it will not be added again.
|
|
119
|
+
* Handles failed transaction execution by removing txs from the pool.
|
|
120
|
+
* @param txHashes - Hashes of the transactions that failed execution.
|
|
99
121
|
**/
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* Deletes 'txs' from the pool, given hashes.
|
|
104
|
-
* NOT used if we use sendTx as reconcileTxPool will handle this.
|
|
105
|
-
* @param txHashes - Hashes to check.
|
|
106
|
-
**/
|
|
107
|
-
deleteTxs(txHashes: TxHash[]): Promise<void>;
|
|
122
|
+
handleFailedExecution(txHashes: TxHash[]): Promise<void>;
|
|
108
123
|
|
|
109
124
|
/**
|
|
110
125
|
* Returns a transaction in the transaction pool by its hash.
|
|
@@ -127,14 +142,6 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
|
|
|
127
142
|
*/
|
|
128
143
|
hasTxsInPool(txHashes: TxHash[]): Promise<boolean[]>;
|
|
129
144
|
|
|
130
|
-
/**
|
|
131
|
-
* Returns transactions in the transaction pool by hash, requesting from the network if not found.
|
|
132
|
-
* @param txHashes - Hashes of tx to return.
|
|
133
|
-
* @param pinnedPeerId - An optional peer id that will be used to request the tx from (in addition to other random peers).
|
|
134
|
-
* @returns An array of tx or undefined.
|
|
135
|
-
*/
|
|
136
|
-
getTxsByHash(txHashes: TxHash[], pinnedPeerId: PeerId | undefined): Promise<(Tx | undefined)[]>;
|
|
137
|
-
|
|
138
145
|
/**
|
|
139
146
|
* Returns an archived transaction from the transaction pool by its hash.
|
|
140
147
|
* @param txHash - Hash of tx to return.
|
|
@@ -152,14 +159,28 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
|
|
|
152
159
|
/** Returns an iterator over pending txs on the mempool. */
|
|
153
160
|
iteratePendingTxs(): AsyncIterableIterator<Tx>;
|
|
154
161
|
|
|
162
|
+
/** Returns an iterator over pending txs that have been in the pool long enough to be eligible for block building. */
|
|
163
|
+
iterateEligiblePendingTxs(): AsyncIterableIterator<Tx>;
|
|
164
|
+
|
|
155
165
|
/** Returns the number of pending txs in the mempool. */
|
|
156
166
|
getPendingTxCount(): Promise<number>;
|
|
157
167
|
|
|
158
168
|
/**
|
|
159
|
-
*
|
|
160
|
-
*
|
|
169
|
+
* Protects existing transactions by hash for a given slot.
|
|
170
|
+
* Returns hashes of transactions that weren't found in the pool.
|
|
171
|
+
* @param txHashes - Hashes of the transactions to protect.
|
|
172
|
+
* @param blockHeader - The block header providing slot context.
|
|
173
|
+
* @returns Hashes of transactions not found in the pool.
|
|
161
174
|
*/
|
|
162
|
-
|
|
175
|
+
protectTxs(txHashes: TxHash[], blockHeader: BlockHeader): Promise<TxHash[]>;
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Prepares the pool for a new slot.
|
|
179
|
+
* Unprotects transactions from earlier slots and validates them before
|
|
180
|
+
* returning to pending state.
|
|
181
|
+
* @param slotNumber - The slot number to prepare for
|
|
182
|
+
*/
|
|
183
|
+
prepareForSlot(slotNumber: SlotNumber): Promise<void>;
|
|
163
184
|
|
|
164
185
|
/**
|
|
165
186
|
* Starts the p2p client.
|
|
@@ -192,22 +213,27 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
|
|
|
192
213
|
/** Identifies a p2p client. */
|
|
193
214
|
isP2PClient(): true;
|
|
194
215
|
|
|
216
|
+
/** Returns the tx provider used for fetching transactions. */
|
|
217
|
+
getTxProvider(): ITxProvider;
|
|
218
|
+
|
|
195
219
|
updateP2PConfig(config: Partial<P2PConfig>): Promise<void>;
|
|
196
220
|
|
|
197
|
-
/** Validates a set of txs. */
|
|
198
|
-
|
|
221
|
+
/** Validates a set of txs received in a block proposal. */
|
|
222
|
+
validateTxsReceivedInBlockProposal(txs: Tx[]): Promise<void>;
|
|
199
223
|
|
|
200
224
|
/** Clears the db. */
|
|
201
225
|
clear(): Promise<void>;
|
|
202
226
|
|
|
203
|
-
addReqRespSubProtocol(
|
|
204
|
-
subProtocol: ReqRespSubProtocol,
|
|
205
|
-
handler: ReqRespSubProtocolHandler,
|
|
206
|
-
validator?: ReqRespSubProtocolValidators[ReqRespSubProtocol],
|
|
207
|
-
): Promise<void>;
|
|
227
|
+
addReqRespSubProtocol(subProtocol: ReqRespSubProtocol, handler: ReqRespSubProtocolHandler): Promise<void>;
|
|
208
228
|
|
|
209
229
|
handleAuthRequestFromPeer(authRequest: AuthRequest, peerId: PeerId): Promise<StatusMessage>;
|
|
210
230
|
|
|
231
|
+
/** Checks if any block proposals exist for the given slot. */
|
|
232
|
+
hasBlockProposalsForSlot(slot: SlotNumber): Promise<boolean>;
|
|
233
|
+
|
|
211
234
|
/** If node running this P2P stack is validator, passes in validator address to P2P layer */
|
|
212
235
|
registerThisValidatorAddresses(address: EthAddress[]): void;
|
|
236
|
+
|
|
237
|
+
/** Returns the number of peers in the GossipSub mesh for a given topic type. */
|
|
238
|
+
getGossipMeshPeerCount(topicType: TopicType): Promise<number>;
|
|
213
239
|
};
|