@aztec/p2p 0.0.0-test.0 → 0.0.1-commit.023c3e5
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/dest/bootstrap/bootstrap.d.ts +4 -3
- package/dest/bootstrap/bootstrap.d.ts.map +1 -1
- package/dest/bootstrap/bootstrap.js +26 -13
- package/dest/client/factory.d.ts +15 -5
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +61 -25
- package/dest/client/index.d.ts +2 -1
- package/dest/client/index.d.ts.map +1 -1
- package/dest/client/index.js +1 -0
- package/dest/client/interface.d.ts +170 -0
- package/dest/client/interface.d.ts.map +1 -0
- package/dest/client/interface.js +9 -0
- package/dest/client/p2p_client.d.ts +75 -193
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +765 -229
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +2 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +1 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +305 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +73 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +1 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +8 -0
- package/dest/config.d.ts +154 -125
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +182 -34
- package/dest/enr/generate-enr.d.ts +11 -3
- package/dest/enr/generate-enr.d.ts.map +1 -1
- package/dest/enr/generate-enr.js +27 -5
- package/dest/enr/index.d.ts +1 -1
- package/dest/errors/attestation-pool.error.d.ts +7 -0
- package/dest/errors/attestation-pool.error.d.ts.map +1 -0
- package/dest/errors/attestation-pool.error.js +12 -0
- package/dest/errors/reqresp.error.d.ts +1 -1
- package/dest/errors/reqresp.error.d.ts.map +1 -1
- package/dest/index.d.ts +4 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +2 -0
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +104 -25
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
- 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 +299 -174
- package/dest/mem_pools/attestation_pool/index.d.ts +1 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +29 -11
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +168 -62
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +24 -10
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +133 -82
- package/dest/mem_pools/attestation_pool/mocks.d.ts +234 -11
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +19 -21
- package/dest/mem_pools/index.d.ts +1 -1
- package/dest/mem_pools/instrumentation.d.ts +16 -12
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +56 -41
- package/dest/mem_pools/interface.d.ts +3 -4
- package/dest/mem_pools/interface.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +75 -16
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +493 -142
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +32 -0
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +112 -0
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +157 -0
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +52 -0
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +16 -0
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +122 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +17 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +84 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +19 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +78 -0
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +26 -0
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +84 -0
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
- package/dest/mem_pools/tx_pool/index.d.ts +1 -2
- package/dest/mem_pools/tx_pool/index.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/index.js +0 -1
- package/dest/mem_pools/tx_pool/priority.d.ts +5 -1
- package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/priority.js +7 -2
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +72 -11
- package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +276 -45
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +7 -5
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +79 -10
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +20 -0
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -0
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +76 -0
- package/dest/msg_validators/attestation_validator/index.d.ts +2 -1
- package/dest/msg_validators/attestation_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/index.js +1 -0
- package/dest/msg_validators/clock_tolerance.d.ts +21 -0
- package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
- package/dest/msg_validators/clock_tolerance.js +37 -0
- package/dest/msg_validators/index.d.ts +2 -2
- package/dest/msg_validators/index.d.ts.map +1 -1
- package/dest/msg_validators/index.js +1 -1
- package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts +10 -0
- package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts.map +1 -0
- package/dest/msg_validators/msg_seen_validator/msg_seen_validator.js +36 -0
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +9 -0
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/block_proposal_validator.js +6 -0
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +9 -0
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +6 -0
- package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
- package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/index.js +3 -0
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -0
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/proposal_validator.js +104 -0
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +23 -0
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +212 -0
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +3 -0
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/allowed_public_setup.js +27 -0
- package/dest/msg_validators/tx_validator/archive_cache.d.ts +14 -0
- package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/archive_cache.js +22 -0
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts +5 -4
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.js +7 -6
- package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +60 -87
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +3 -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 +24 -29
- package/dest/msg_validators/tx_validator/factory.d.ts +21 -0
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/factory.js +84 -0
- package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
- package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/fee_payer_balance.js +20 -0
- package/dest/msg_validators/tx_validator/gas_validator.d.ts +12 -0
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/gas_validator.js +110 -0
- package/dest/msg_validators/tx_validator/index.d.ts +9 -1
- package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/index.js +8 -0
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts +10 -5
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.js +40 -21
- package/dest/msg_validators/tx_validator/phases_validator.d.ts +15 -0
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/phases_validator.js +93 -0
- package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
- package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/size_validator.js +23 -0
- package/dest/msg_validators/tx_validator/test_utils.d.ts +17 -0
- package/dest/msg_validators/tx_validator/test_utils.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/test_utils.js +22 -0
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +14 -0
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/timestamp_validator.js +32 -0
- package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +9 -0
- package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/tx_permitted_validator.js +24 -0
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -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 +8 -7
- 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 +10 -6
- package/dest/services/discv5/discV5_service.d.ts +10 -9
- package/dest/services/discv5/discV5_service.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.js +64 -37
- package/dest/services/dummy_service.d.ts +66 -11
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +130 -5
- package/dest/services/encoding.d.ts +26 -7
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +75 -6
- package/dest/services/gossipsub/scoring.d.ts +1 -1
- package/dest/services/index.d.ts +5 -1
- package/dest/services/index.d.ts.map +1 -1
- package/dest/services/index.js +4 -0
- package/dest/services/libp2p/instrumentation.d.ts +20 -0
- package/dest/services/libp2p/instrumentation.d.ts.map +1 -0
- package/dest/services/libp2p/instrumentation.js +122 -0
- package/dest/services/libp2p/libp2p_service.d.ts +107 -95
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +1328 -313
- package/dest/services/peer-manager/interface.d.ts +23 -0
- package/dest/services/peer-manager/interface.d.ts.map +1 -0
- package/dest/services/peer-manager/interface.js +1 -0
- package/dest/services/peer-manager/metrics.d.ts +12 -3
- package/dest/services/peer-manager/metrics.d.ts.map +1 -1
- package/dest/services/peer-manager/metrics.js +44 -12
- package/dest/services/peer-manager/peer_manager.d.ts +103 -23
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +551 -82
- 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 +43 -2
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +47 -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 +566 -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 +37 -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 +151 -0
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +54 -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 +139 -0
- package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -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 +21 -0
- package/dest/services/reqresp/config.d.ts +11 -9
- package/dest/services/reqresp/config.d.ts.map +1 -1
- package/dest/services/reqresp/config.js +18 -4
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +23 -4
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +73 -10
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +32 -17
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.js +154 -84
- package/dest/services/reqresp/constants.d.ts +12 -0
- package/dest/services/reqresp/constants.d.ts.map +1 -0
- package/dest/services/reqresp/constants.js +7 -0
- package/dest/services/reqresp/index.d.ts +3 -2
- package/dest/services/reqresp/index.d.ts.map +1 -1
- package/dest/services/reqresp/index.js +2 -1
- package/dest/services/reqresp/interface.d.ts +75 -24
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +46 -27
- 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 +17 -21
- package/dest/services/reqresp/protocols/auth.d.ts +43 -0
- package/dest/services/reqresp/protocols/auth.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/auth.js +71 -0
- package/dest/services/reqresp/protocols/block.d.ts +6 -1
- package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block.js +30 -6
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +34 -0
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/bitvector.js +87 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +11 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +52 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +59 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +105 -0
- package/dest/services/reqresp/protocols/block_txs/index.d.ts +4 -0
- package/dest/services/reqresp/protocols/block_txs/index.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/index.js +3 -0
- package/dest/services/reqresp/protocols/goodbye.d.ts +3 -5
- package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/goodbye.js +7 -7
- package/dest/services/reqresp/protocols/index.d.ts +3 -1
- package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/index.js +2 -0
- package/dest/services/reqresp/protocols/ping.d.ts +1 -3
- package/dest/services/reqresp/protocols/ping.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/status.d.ts +40 -7
- package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/status.js +76 -5
- package/dest/services/reqresp/protocols/tx.d.ts +14 -4
- package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/tx.js +34 -6
- package/dest/services/reqresp/rate-limiter/index.d.ts +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +6 -4
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -2
- 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 +21 -1
- package/dest/services/reqresp/reqresp.d.ts +29 -66
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +753 -248
- package/dest/services/reqresp/status.d.ts +10 -4
- package/dest/services/reqresp/status.d.ts.map +1 -1
- package/dest/services/reqresp/status.js +9 -2
- package/dest/services/service.d.ts +40 -20
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +28 -0
- package/dest/services/tx_collection/config.d.ts.map +1 -0
- package/dest/services/tx_collection/config.js +66 -0
- package/dest/services/tx_collection/fast_tx_collection.d.ts +53 -0
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/fast_tx_collection.js +311 -0
- package/dest/services/tx_collection/index.d.ts +4 -0
- package/dest/services/tx_collection/index.d.ts.map +1 -0
- package/dest/services/tx_collection/index.js +3 -0
- package/dest/services/tx_collection/instrumentation.d.ts +10 -0
- package/dest/services/tx_collection/instrumentation.d.ts.map +1 -0
- package/dest/services/tx_collection/instrumentation.js +31 -0
- package/dest/services/tx_collection/proposal_tx_collector.d.ts +48 -0
- package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
- package/dest/services/tx_collection/proposal_tx_collector.js +50 -0
- package/dest/services/tx_collection/slow_tx_collection.d.ts +53 -0
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/slow_tx_collection.js +177 -0
- package/dest/services/tx_collection/tx_collection.d.ts +110 -0
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_collection.js +128 -0
- package/dest/services/tx_collection/tx_collection_sink.d.ts +30 -0
- package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_collection_sink.js +111 -0
- package/dest/services/tx_collection/tx_source.d.ts +18 -0
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_source.js +31 -0
- package/dest/services/tx_provider.d.ts +51 -0
- package/dest/services/tx_provider.d.ts.map +1 -0
- package/dest/services/tx_provider.js +219 -0
- package/dest/services/tx_provider_instrumentation.d.ts +16 -0
- package/dest/services/tx_provider_instrumentation.d.ts.map +1 -0
- package/dest/services/tx_provider_instrumentation.js +34 -0
- package/dest/test-helpers/generate-peer-id-private-keys.d.ts +1 -1
- package/dest/test-helpers/get-ports.d.ts +1 -1
- package/dest/test-helpers/get-ports.d.ts.map +1 -1
- package/dest/test-helpers/index.d.ts +4 -1
- package/dest/test-helpers/index.d.ts.map +1 -1
- package/dest/test-helpers/index.js +3 -0
- package/dest/test-helpers/make-enrs.d.ts +1 -1
- package/dest/test-helpers/make-enrs.d.ts.map +1 -1
- package/dest/test-helpers/make-enrs.js +4 -5
- package/dest/test-helpers/make-test-p2p-clients.d.ts +33 -5
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.js +86 -16
- package/dest/test-helpers/mock-pubsub.d.ts +59 -0
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -0
- package/dest/test-helpers/mock-pubsub.js +130 -0
- package/dest/test-helpers/mock-tx-helpers.d.ts +12 -0
- package/dest/test-helpers/mock-tx-helpers.d.ts.map +1 -0
- package/dest/test-helpers/mock-tx-helpers.js +19 -0
- package/dest/test-helpers/reqresp-nodes.d.ts +15 -11
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +62 -28
- package/dest/test-helpers/test_tx_provider.d.ts +40 -0
- package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
- package/dest/test-helpers/test_tx_provider.js +41 -0
- package/dest/test-helpers/testbench-utils.d.ts +158 -0
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
- package/dest/test-helpers/testbench-utils.js +297 -0
- package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
- package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +259 -90
- package/dest/testbench/parse_log_file.d.ts +1 -1
- package/dest/testbench/parse_log_file.js +4 -4
- package/dest/testbench/testbench.d.ts +1 -1
- package/dest/testbench/testbench.js +4 -4
- package/dest/testbench/worker_client_manager.d.ts +51 -11
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +232 -53
- package/dest/types/index.d.ts +4 -2
- package/dest/types/index.d.ts.map +1 -1
- package/dest/types/index.js +2 -0
- package/dest/util.d.ts +24 -16
- package/dest/util.d.ts.map +1 -1
- package/dest/util.js +75 -69
- package/dest/versioning.d.ts +4 -4
- package/dest/versioning.d.ts.map +1 -1
- package/dest/versioning.js +8 -3
- package/package.json +32 -27
- package/src/bootstrap/bootstrap.ts +34 -15
- package/src/client/factory.ts +135 -53
- package/src/client/index.ts +1 -0
- package/src/client/interface.ts +213 -0
- package/src/client/p2p_client.ts +476 -383
- package/src/client/test/tx_proposal_collector/README.md +227 -0
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +336 -0
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
- package/src/config.ts +304 -134
- package/src/enr/generate-enr.ts +39 -6
- package/src/errors/attestation-pool.error.ts +13 -0
- package/src/index.ts +4 -0
- package/src/mem_pools/attestation_pool/attestation_pool.ts +119 -24
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +352 -201
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +233 -72
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +199 -96
- package/src/mem_pools/attestation_pool/mocks.ts +24 -17
- package/src/mem_pools/instrumentation.ts +72 -48
- package/src/mem_pools/interface.ts +2 -4
- package/src/mem_pools/tx_pool/README.md +270 -0
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +580 -143
- package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +132 -0
- package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +208 -0
- package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +162 -0
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +104 -0
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +93 -0
- package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +106 -0
- package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
- package/src/mem_pools/tx_pool/index.ts +0 -1
- package/src/mem_pools/tx_pool/priority.ts +9 -2
- package/src/mem_pools/tx_pool/tx_pool.ts +75 -10
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +225 -36
- package/src/msg_validators/attestation_validator/attestation_validator.ts +72 -14
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +94 -0
- package/src/msg_validators/attestation_validator/index.ts +1 -0
- package/src/msg_validators/clock_tolerance.ts +51 -0
- package/src/msg_validators/index.ts +1 -1
- package/src/msg_validators/msg_seen_validator/msg_seen_validator.ts +36 -0
- package/src/msg_validators/proposal_validator/block_proposal_validator.ts +10 -0
- package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +13 -0
- package/src/msg_validators/proposal_validator/index.ts +3 -0
- package/src/msg_validators/proposal_validator/proposal_validator.ts +92 -0
- package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +230 -0
- package/src/msg_validators/tx_validator/allowed_public_setup.ts +35 -0
- package/src/msg_validators/tx_validator/archive_cache.ts +28 -0
- package/src/msg_validators/tx_validator/block_header_validator.ts +10 -9
- package/src/msg_validators/tx_validator/data_validator.ts +95 -71
- package/src/msg_validators/tx_validator/double_spend_validator.ts +23 -20
- package/src/msg_validators/tx_validator/factory.ts +151 -0
- package/src/msg_validators/tx_validator/fee_payer_balance.ts +40 -0
- package/src/msg_validators/tx_validator/gas_validator.ts +123 -0
- package/src/msg_validators/tx_validator/index.ts +8 -0
- package/src/msg_validators/tx_validator/metadata_validator.ts +72 -24
- package/src/msg_validators/tx_validator/phases_validator.ts +118 -0
- package/src/msg_validators/tx_validator/size_validator.ts +22 -0
- package/src/msg_validators/tx_validator/test_utils.ts +43 -0
- package/src/msg_validators/tx_validator/timestamp_validator.ts +52 -0
- package/src/msg_validators/tx_validator/tx_permitted_validator.ts +22 -0
- package/src/msg_validators/tx_validator/tx_proof_validator.ts +14 -8
- package/src/services/data_store.ts +10 -7
- package/src/services/discv5/discV5_service.ts +85 -39
- package/src/services/dummy_service.ts +198 -9
- package/src/services/encoding.ts +82 -6
- package/src/services/index.ts +4 -0
- package/src/services/libp2p/instrumentation.ts +126 -0
- package/src/services/libp2p/libp2p_service.ts +1170 -353
- package/src/services/peer-manager/interface.ts +29 -0
- package/src/services/peer-manager/metrics.ts +55 -12
- package/src/services/peer-manager/peer_manager.ts +657 -80
- package/src/services/peer-manager/peer_scoring.ts +45 -3
- package/src/services/reqresp/batch-tx-requester/README.md +305 -0
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +706 -0
- package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
- package/src/services/reqresp/batch-tx-requester/interface.ts +57 -0
- package/src/services/reqresp/batch-tx-requester/missing_txs.ts +209 -0
- package/src/services/reqresp/batch-tx-requester/peer_collection.ts +205 -0
- package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
- package/src/services/reqresp/config.ts +26 -9
- package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +77 -10
- package/src/services/reqresp/connection-sampler/connection_sampler.ts +166 -95
- package/src/services/reqresp/constants.ts +14 -0
- package/src/services/reqresp/index.ts +2 -0
- package/src/services/reqresp/interface.ts +95 -37
- package/src/services/reqresp/metrics.ts +40 -28
- package/src/services/reqresp/protocols/auth.ts +83 -0
- package/src/services/reqresp/protocols/block.ts +26 -4
- package/src/services/reqresp/protocols/block_txs/bitvector.ts +106 -0
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +67 -0
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +121 -0
- package/src/services/reqresp/protocols/block_txs/index.ts +3 -0
- package/src/services/reqresp/protocols/goodbye.ts +9 -7
- package/src/services/reqresp/protocols/index.ts +2 -0
- package/src/services/reqresp/protocols/status.ts +121 -5
- package/src/services/reqresp/protocols/tx.ts +36 -8
- package/src/services/reqresp/rate-limiter/rate_limiter.ts +12 -3
- package/src/services/reqresp/rate-limiter/rate_limits.ts +21 -1
- package/src/services/reqresp/reqresp.ts +449 -271
- package/src/services/reqresp/status.ts +12 -3
- package/src/services/service.ts +65 -22
- package/src/services/tx_collection/config.ts +98 -0
- package/src/services/tx_collection/fast_tx_collection.ts +364 -0
- package/src/services/tx_collection/index.ts +7 -0
- package/src/services/tx_collection/instrumentation.ts +35 -0
- package/src/services/tx_collection/proposal_tx_collector.ts +114 -0
- package/src/services/tx_collection/slow_tx_collection.ts +233 -0
- package/src/services/tx_collection/tx_collection.ts +216 -0
- package/src/services/tx_collection/tx_collection_sink.ts +129 -0
- package/src/services/tx_collection/tx_source.ts +37 -0
- package/src/services/tx_provider.ts +232 -0
- package/src/services/tx_provider_instrumentation.ts +54 -0
- package/src/test-helpers/index.ts +3 -0
- package/src/test-helpers/make-enrs.ts +4 -5
- package/src/test-helpers/make-test-p2p-clients.ts +111 -21
- package/src/test-helpers/mock-pubsub.ts +188 -0
- package/src/test-helpers/mock-tx-helpers.ts +24 -0
- package/src/test-helpers/reqresp-nodes.ts +87 -36
- package/src/test-helpers/test_tx_provider.ts +64 -0
- package/src/test-helpers/testbench-utils.ts +374 -0
- package/src/testbench/p2p_client_testbench_worker.ts +434 -89
- package/src/testbench/parse_log_file.ts +4 -4
- package/src/testbench/testbench.ts +4 -4
- package/src/testbench/worker_client_manager.ts +315 -59
- package/src/types/index.ts +2 -0
- package/src/util.ts +105 -91
- package/src/versioning.ts +11 -4
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +0 -56
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/memory_tx_pool.js +0 -141
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -8
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +0 -21
- package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
- package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
- package/dest/msg_validators/block_proposal_validator/index.js +0 -1
- package/src/mem_pools/tx_pool/memory_tx_pool.ts +0 -174
- package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -29
- package/src/msg_validators/block_proposal_validator/index.ts +0 -1
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import type { EpochCacheInterface } from '@aztec/epoch-cache';
|
|
2
|
+
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
3
|
+
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
4
|
+
import type { L2BlockSource } from '@aztec/stdlib/block';
|
|
5
|
+
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
6
|
+
import type { ClientProtocolCircuitVerifier, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
7
|
+
import { P2PClientType } from '@aztec/stdlib/p2p';
|
|
8
|
+
import type { TelemetryClient } from '@aztec/telemetry-client';
|
|
9
|
+
|
|
10
|
+
import type { GossipsubEvents, GossipsubMessage } from '@chainsafe/libp2p-gossipsub';
|
|
11
|
+
import type { MsgIdStr, PeerIdStr, PublishOpts, TopicStr } from '@chainsafe/libp2p-gossipsub/types';
|
|
12
|
+
import {
|
|
13
|
+
type Libp2pStatus,
|
|
14
|
+
type PeerId,
|
|
15
|
+
type PublishResult,
|
|
16
|
+
type TopicValidatorResult,
|
|
17
|
+
TypedEventEmitter,
|
|
18
|
+
} from '@libp2p/interface';
|
|
19
|
+
|
|
20
|
+
import type { P2PConfig } from '../config.js';
|
|
21
|
+
import type { MemPools } from '../mem_pools/interface.js';
|
|
22
|
+
import { DummyPeerDiscoveryService, DummyPeerManager, DummyReqResp, LibP2PService } from '../services/index.js';
|
|
23
|
+
import type { ReqRespInterface } from '../services/reqresp/interface.js';
|
|
24
|
+
import { GossipSubEvent } from '../types/index.js';
|
|
25
|
+
import type { PubSubLibp2p } from '../util.js';
|
|
26
|
+
|
|
27
|
+
type GossipSubService = PubSubLibp2p['services']['pubsub'];
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Given a mock gossip sub network, returns a factory function that creates an instance LibP2PService connected to it.
|
|
31
|
+
* Designed to be used in tests in P2PClientDeps.p2pServiceFactory.
|
|
32
|
+
*/
|
|
33
|
+
export function getMockPubSubP2PServiceFactory<T extends P2PClientType>(
|
|
34
|
+
network: MockGossipSubNetwork,
|
|
35
|
+
): (...args: Parameters<(typeof LibP2PService<T>)['new']>) => Promise<LibP2PService<T>> {
|
|
36
|
+
return (
|
|
37
|
+
clientType: P2PClientType,
|
|
38
|
+
config: P2PConfig,
|
|
39
|
+
peerId: PeerId,
|
|
40
|
+
deps: {
|
|
41
|
+
packageVersion: string;
|
|
42
|
+
mempools: MemPools;
|
|
43
|
+
l2BlockSource: L2BlockSource & ContractDataSource;
|
|
44
|
+
epochCache: EpochCacheInterface;
|
|
45
|
+
proofVerifier: ClientProtocolCircuitVerifier;
|
|
46
|
+
worldStateSynchronizer: WorldStateSynchronizer;
|
|
47
|
+
peerStore: AztecAsyncKVStore;
|
|
48
|
+
telemetry: TelemetryClient;
|
|
49
|
+
logger: Logger;
|
|
50
|
+
},
|
|
51
|
+
) => {
|
|
52
|
+
deps.logger.verbose('Creating mock PubSub service');
|
|
53
|
+
const libp2p = new MockPubSub(peerId, network);
|
|
54
|
+
const peerManager = new DummyPeerManager(peerId, network);
|
|
55
|
+
const reqresp: ReqRespInterface = new DummyReqResp();
|
|
56
|
+
const peerDiscoveryService = new DummyPeerDiscoveryService();
|
|
57
|
+
const service = new LibP2PService<T>(
|
|
58
|
+
clientType as T,
|
|
59
|
+
config,
|
|
60
|
+
libp2p,
|
|
61
|
+
peerDiscoveryService,
|
|
62
|
+
reqresp,
|
|
63
|
+
peerManager,
|
|
64
|
+
deps.mempools,
|
|
65
|
+
deps.l2BlockSource,
|
|
66
|
+
deps.epochCache,
|
|
67
|
+
deps.proofVerifier,
|
|
68
|
+
deps.worldStateSynchronizer,
|
|
69
|
+
deps.telemetry,
|
|
70
|
+
deps.logger,
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
return Promise.resolve(service);
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Implementation of PubSub services that relies on a mock gossip sub network.
|
|
79
|
+
* This is used in tests to simulate a gossip sub network without needing a real P2P network.
|
|
80
|
+
* All messages are sent to the mock network which then distributes them to subscribed peers.
|
|
81
|
+
*/
|
|
82
|
+
export class MockPubSub implements PubSubLibp2p {
|
|
83
|
+
public status: Libp2pStatus = 'stopped';
|
|
84
|
+
|
|
85
|
+
private gossipSub: GossipSubService;
|
|
86
|
+
|
|
87
|
+
constructor(
|
|
88
|
+
public peerId: PeerId,
|
|
89
|
+
network: MockGossipSubNetwork,
|
|
90
|
+
) {
|
|
91
|
+
this.gossipSub = new MockGossipSubService(peerId, network);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
get services() {
|
|
95
|
+
return {
|
|
96
|
+
pubsub: this.gossipSub,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
start(): void | Promise<void> {
|
|
101
|
+
this.status = 'started';
|
|
102
|
+
return Promise.resolve();
|
|
103
|
+
}
|
|
104
|
+
stop(): void | Promise<void> {
|
|
105
|
+
this.status = 'stopped';
|
|
106
|
+
return Promise.resolve();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
class MockGossipSubService extends TypedEventEmitter<GossipsubEvents> implements GossipSubService {
|
|
111
|
+
private logger = createLogger('p2p:test:mock-gossipsub');
|
|
112
|
+
public subscribedTopics: Set<TopicStr> = new Set();
|
|
113
|
+
public readonly direct = new Set<string>();
|
|
114
|
+
|
|
115
|
+
constructor(
|
|
116
|
+
public peerId: PeerId,
|
|
117
|
+
private network: MockGossipSubNetwork,
|
|
118
|
+
) {
|
|
119
|
+
super();
|
|
120
|
+
network.registerPeer(this);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
score = {
|
|
124
|
+
score: (_peerId: PeerIdStr) => 0,
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
publish(topic: TopicStr, data: Uint8Array, _opts?: PublishOpts): Promise<PublishResult> {
|
|
128
|
+
this.logger.debug(`Publishing message on topic ${topic}`, { topic, sender: this.peerId.toString() });
|
|
129
|
+
this.network.publishToPeers(topic, data, this.peerId);
|
|
130
|
+
return Promise.resolve({ recipients: this.network.getPeers().filter(peer => !this.peerId.equals(peer)) });
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
receive(msg: GossipsubMessage) {
|
|
134
|
+
if (msg.propagationSource.equals(this.peerId)) {
|
|
135
|
+
return; // Ignore messages from self
|
|
136
|
+
}
|
|
137
|
+
this.logger.debug(`Received message on topic ${msg.msg.topic}`, { ...msg });
|
|
138
|
+
this.safeDispatchEvent<GossipsubMessage>(GossipSubEvent.MESSAGE, { detail: msg });
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
subscribe(topic: TopicStr): void {
|
|
142
|
+
this.logger.debug(`Subscribed to topic ${topic}`, { topic });
|
|
143
|
+
this.subscribedTopics.add(topic);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
reportMessageValidationResult(msgId: MsgIdStr, propagationSource: PeerIdStr, acceptance: TopicValidatorResult): void {
|
|
147
|
+
this.logger.debug(
|
|
148
|
+
`Reported message validation result ${acceptance} for msgId ${msgId} from source ${propagationSource}`,
|
|
149
|
+
{ msgId, propagationSource, acceptance },
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Mock gossip sub network used for testing.
|
|
156
|
+
* All instances of MockGossipSubService connected to the same network will instantly receive the same messages.
|
|
157
|
+
*/
|
|
158
|
+
export class MockGossipSubNetwork {
|
|
159
|
+
private peers: MockGossipSubService[] = [];
|
|
160
|
+
private nextMsgId = 0;
|
|
161
|
+
|
|
162
|
+
private logger = createLogger('p2p:test:mock-gossipsub-network');
|
|
163
|
+
|
|
164
|
+
public getPeers(): PeerId[] {
|
|
165
|
+
return this.peers.map(peer => peer.peerId);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
public registerPeer(peer: MockGossipSubService): void {
|
|
169
|
+
this.peers.push(peer);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
public publishToPeers(topic: TopicStr, data: Uint8Array, sender: PeerId): void {
|
|
173
|
+
const msgId = (this.nextMsgId++).toString();
|
|
174
|
+
this.logger.debug(`Network is distributing message on topic ${topic}`, {
|
|
175
|
+
topic,
|
|
176
|
+
size: data.length,
|
|
177
|
+
sender: sender.toString(),
|
|
178
|
+
msgId,
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
const gossipSubMsg: GossipsubMessage = { msgId, msg: { type: 'unsigned', topic, data }, propagationSource: sender };
|
|
182
|
+
for (const peer of this.peers) {
|
|
183
|
+
if (peer.subscribedTopics.has(topic)) {
|
|
184
|
+
peer.receive(gossipSubMsg);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
3
|
+
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
4
|
+
import { mockTx } from '@aztec/stdlib/testing';
|
|
5
|
+
import { Tx } from '@aztec/stdlib/tx';
|
|
6
|
+
|
|
7
|
+
import type { P2PConfig } from '../config.js';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Helper function to create mock transactions with the correct metadata values
|
|
11
|
+
* that will pass validation when sent over the p2p network.
|
|
12
|
+
*
|
|
13
|
+
* @param config - The P2P configuration containing chainId and rollupVersion
|
|
14
|
+
* @param seed - Optional seed for the mock transaction
|
|
15
|
+
* @returns A mock transaction with valid metadata for p2p network transmission
|
|
16
|
+
*/
|
|
17
|
+
export const createMockTxWithMetadata = (config: P2PConfig, seed?: number): Promise<Tx> => {
|
|
18
|
+
return mockTx(seed, {
|
|
19
|
+
chainId: new Fr(config.l1ChainId),
|
|
20
|
+
version: new Fr(config.rollupVersion),
|
|
21
|
+
vkTreeRoot: getVKTreeRoot(),
|
|
22
|
+
protocolContractsHash,
|
|
23
|
+
});
|
|
24
|
+
};
|
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
import type { EpochCache } from '@aztec/epoch-cache';
|
|
2
2
|
import { timesParallel } from '@aztec/foundation/collection';
|
|
3
|
+
import { SecretValue } from '@aztec/foundation/config';
|
|
4
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
3
5
|
import type { DataStoreConfig } from '@aztec/kv-store/config';
|
|
4
6
|
import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
|
|
5
7
|
import type { L2BlockSource } from '@aztec/stdlib/block';
|
|
6
8
|
import { type ChainConfig, emptyChainConfig } from '@aztec/stdlib/config';
|
|
7
|
-
import type {
|
|
9
|
+
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
10
|
+
import type {
|
|
11
|
+
ClientProtocolCircuitVerifier,
|
|
12
|
+
IVCProofVerificationResult,
|
|
13
|
+
WorldStateSynchronizer,
|
|
14
|
+
} from '@aztec/stdlib/interfaces/server';
|
|
8
15
|
import type { P2PClientType } from '@aztec/stdlib/p2p';
|
|
9
16
|
import type { Tx } from '@aztec/stdlib/tx';
|
|
17
|
+
import { compressComponentVersions } from '@aztec/stdlib/versioning';
|
|
10
18
|
import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
|
|
11
19
|
|
|
12
|
-
import { SignableENR } from '@chainsafe/enr';
|
|
13
20
|
import { gossipsub } from '@chainsafe/libp2p-gossipsub';
|
|
14
21
|
import { noise } from '@chainsafe/libp2p-noise';
|
|
15
22
|
import { yamux } from '@chainsafe/libp2p-yamux';
|
|
@@ -19,6 +26,7 @@ import type { PeerId } from '@libp2p/interface';
|
|
|
19
26
|
import { createSecp256k1PeerId } from '@libp2p/peer-id-factory';
|
|
20
27
|
import { tcp } from '@libp2p/tcp';
|
|
21
28
|
import { multiaddr } from '@multiformats/multiaddr';
|
|
29
|
+
import { SignableENR } from '@nethermindeth/enr';
|
|
22
30
|
import getPort from 'get-port';
|
|
23
31
|
import { type Libp2p, type Libp2pOptions, createLibp2p } from 'libp2p';
|
|
24
32
|
|
|
@@ -27,17 +35,20 @@ import type { BootnodeConfig, P2PConfig } from '../config.js';
|
|
|
27
35
|
import type { MemPools } from '../mem_pools/interface.js';
|
|
28
36
|
import { DiscV5Service } from '../services/discv5/discV5_service.js';
|
|
29
37
|
import { LibP2PService } from '../services/libp2p/libp2p_service.js';
|
|
30
|
-
import
|
|
38
|
+
import { PeerManager } from '../services/peer-manager/peer_manager.js';
|
|
39
|
+
import { PeerScoring } from '../services/peer-manager/peer_scoring.js';
|
|
31
40
|
import type { P2PReqRespConfig } from '../services/reqresp/config.js';
|
|
32
41
|
import {
|
|
33
42
|
ReqRespSubProtocol,
|
|
34
43
|
type ReqRespSubProtocolHandlers,
|
|
44
|
+
type ReqRespSubProtocolRateLimits,
|
|
35
45
|
type ReqRespSubProtocolValidators,
|
|
36
46
|
noopValidator,
|
|
37
47
|
} from '../services/reqresp/interface.js';
|
|
38
|
-
import { pingHandler
|
|
48
|
+
import { pingHandler } from '../services/reqresp/protocols/index.js';
|
|
39
49
|
import { ReqResp } from '../services/reqresp/reqresp.js';
|
|
40
|
-
import { type PubSubLibp2p, convertToMultiaddr, createLibP2PPeerIdFromPrivateKey } from '../util.js';
|
|
50
|
+
import { type FullLibp2p, type PubSubLibp2p, convertToMultiaddr, createLibP2PPeerIdFromPrivateKey } from '../util.js';
|
|
51
|
+
import { getVersions } from '../versioning.js';
|
|
41
52
|
|
|
42
53
|
/**
|
|
43
54
|
* Creates a libp2p node, pre configured.
|
|
@@ -50,13 +61,13 @@ export async function createLibp2pNode(
|
|
|
50
61
|
port?: number,
|
|
51
62
|
enableGossipSub: boolean = false,
|
|
52
63
|
start: boolean = true,
|
|
53
|
-
): Promise<
|
|
64
|
+
): Promise<FullLibp2p> {
|
|
54
65
|
port = port ?? (await getPort());
|
|
55
66
|
const options: Libp2pOptions = {
|
|
56
67
|
start,
|
|
57
68
|
addresses: {
|
|
58
|
-
listen: [`/ip4/
|
|
59
|
-
announce: [`/ip4/
|
|
69
|
+
listen: [`/ip4/127.0.0.1/tcp/${port}`],
|
|
70
|
+
announce: [`/ip4/127.0.0.1/tcp/${port}`],
|
|
60
71
|
},
|
|
61
72
|
connectionEncryption: [noise()],
|
|
62
73
|
streamMuxers: [yamux()],
|
|
@@ -86,7 +97,7 @@ export async function createLibp2pNode(
|
|
|
86
97
|
});
|
|
87
98
|
}
|
|
88
99
|
|
|
89
|
-
return await createLibp2p(options);
|
|
100
|
+
return (await createLibp2p(options)) as FullLibp2p;
|
|
90
101
|
}
|
|
91
102
|
|
|
92
103
|
/**
|
|
@@ -98,10 +109,10 @@ export async function createLibp2pNode(
|
|
|
98
109
|
export async function createTestLibP2PService<T extends P2PClientType>(
|
|
99
110
|
clientType: T,
|
|
100
111
|
boostrapAddrs: string[] = [],
|
|
101
|
-
|
|
112
|
+
archiver: L2BlockSource & ContractDataSource,
|
|
102
113
|
worldStateSynchronizer: WorldStateSynchronizer,
|
|
103
114
|
epochCache: EpochCache,
|
|
104
|
-
mempools: MemPools
|
|
115
|
+
mempools: MemPools,
|
|
105
116
|
telemetry: TelemetryClient,
|
|
106
117
|
port: number = 0,
|
|
107
118
|
peerId?: PeerId,
|
|
@@ -109,31 +120,53 @@ export async function createTestLibP2PService<T extends P2PClientType>(
|
|
|
109
120
|
) {
|
|
110
121
|
peerId = peerId ?? (await createSecp256k1PeerId());
|
|
111
122
|
const config = {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
tcpListenAddress: `0.0.0.0:${port}`,
|
|
115
|
-
udpListenAddress: `0.0.0.0:${port}`,
|
|
123
|
+
p2pIp: `127.0.0.1`,
|
|
124
|
+
p2pPort: port,
|
|
116
125
|
bootstrapNodes: boostrapAddrs,
|
|
117
126
|
peerCheckIntervalMS: 1000,
|
|
118
127
|
maxPeerCount: 5,
|
|
119
128
|
p2pEnabled: true,
|
|
120
|
-
peerIdPrivateKey: Buffer.from(peerId.privateKey!).toString('hex'),
|
|
129
|
+
peerIdPrivateKey: new SecretValue(Buffer.from(peerId.privateKey!).toString('hex')),
|
|
121
130
|
bootstrapNodeEnrVersionCheck: false,
|
|
122
131
|
...chainConfig,
|
|
123
132
|
} as P2PConfig & DataStoreConfig;
|
|
124
|
-
const discoveryService = new DiscV5Service(peerId, config, telemetry);
|
|
133
|
+
const discoveryService = new DiscV5Service(peerId, config, 'test-reqresp-node', telemetry);
|
|
125
134
|
const proofVerifier = new AlwaysTrueCircuitVerifier();
|
|
126
135
|
|
|
127
136
|
// No bootstrap nodes provided as the libp2p service will register them in the constructor
|
|
128
137
|
const p2pNode = await createLibp2pNode([], peerId, port, /*enable gossip */ true, /**start */ false);
|
|
129
138
|
|
|
139
|
+
// Duplicated setup code from Libp2pService.new
|
|
140
|
+
const peerScoring = new PeerScoring(config);
|
|
141
|
+
const reqresp = new ReqResp(config, p2pNode, peerScoring);
|
|
142
|
+
const versions = getVersions(config);
|
|
143
|
+
const protocolVersion = compressComponentVersions(versions);
|
|
144
|
+
const peerManager = new PeerManager(
|
|
145
|
+
p2pNode,
|
|
146
|
+
discoveryService,
|
|
147
|
+
config,
|
|
148
|
+
telemetry,
|
|
149
|
+
createLogger(`p2p:peer_manager`),
|
|
150
|
+
peerScoring,
|
|
151
|
+
reqresp,
|
|
152
|
+
worldStateSynchronizer,
|
|
153
|
+
protocolVersion,
|
|
154
|
+
epochCache,
|
|
155
|
+
);
|
|
156
|
+
|
|
157
|
+
p2pNode.services.pubsub.score.params.appSpecificWeight = 10;
|
|
158
|
+
p2pNode.services.pubsub.score.params.appSpecificScore = (peerId: string) =>
|
|
159
|
+
peerManager.shouldDisableP2PGossip(peerId) ? -Infinity : peerManager.getPeerScore(peerId);
|
|
160
|
+
|
|
130
161
|
return new LibP2PService<T>(
|
|
131
162
|
clientType,
|
|
132
163
|
config,
|
|
133
164
|
p2pNode as PubSubLibp2p,
|
|
134
165
|
discoveryService,
|
|
166
|
+
reqresp,
|
|
167
|
+
peerManager,
|
|
135
168
|
mempools,
|
|
136
|
-
|
|
169
|
+
archiver,
|
|
137
170
|
epochCache,
|
|
138
171
|
proofVerifier,
|
|
139
172
|
worldStateSynchronizer,
|
|
@@ -153,10 +186,12 @@ export type ReqRespNode = {
|
|
|
153
186
|
// Mock sub protocol handlers
|
|
154
187
|
export const MOCK_SUB_PROTOCOL_HANDLERS: ReqRespSubProtocolHandlers = {
|
|
155
188
|
[ReqRespSubProtocol.PING]: pingHandler,
|
|
156
|
-
[ReqRespSubProtocol.STATUS]:
|
|
189
|
+
[ReqRespSubProtocol.STATUS]: (_msg: any) => Promise.resolve(Buffer.from('status')),
|
|
157
190
|
[ReqRespSubProtocol.TX]: (_msg: any) => Promise.resolve(Buffer.from('tx')),
|
|
158
191
|
[ReqRespSubProtocol.GOODBYE]: (_msg: any) => Promise.resolve(Buffer.from('goodbye')),
|
|
159
192
|
[ReqRespSubProtocol.BLOCK]: (_msg: any) => Promise.resolve(Buffer.from('block')),
|
|
193
|
+
[ReqRespSubProtocol.AUTH]: (_msg: any) => Promise.resolve(Buffer.from('auth')),
|
|
194
|
+
[ReqRespSubProtocol.BLOCK_TXS]: (_msg: any) => Promise.resolve(Buffer.from('block_txs')),
|
|
160
195
|
};
|
|
161
196
|
|
|
162
197
|
// By default, all requests are valid
|
|
@@ -167,14 +202,20 @@ export const MOCK_SUB_PROTOCOL_VALIDATORS: ReqRespSubProtocolValidators = {
|
|
|
167
202
|
[ReqRespSubProtocol.TX]: noopValidator,
|
|
168
203
|
[ReqRespSubProtocol.GOODBYE]: noopValidator,
|
|
169
204
|
[ReqRespSubProtocol.BLOCK]: noopValidator,
|
|
205
|
+
[ReqRespSubProtocol.AUTH]: noopValidator,
|
|
206
|
+
[ReqRespSubProtocol.BLOCK_TXS]: noopValidator,
|
|
170
207
|
};
|
|
171
208
|
|
|
172
209
|
/**
|
|
173
210
|
* @param numberOfNodes - the number of nodes to create
|
|
174
211
|
* @returns An array of the created nodes
|
|
175
212
|
*/
|
|
176
|
-
export const createNodes = (
|
|
177
|
-
|
|
213
|
+
export const createNodes = (
|
|
214
|
+
peerScoring: PeerScoring,
|
|
215
|
+
numberOfNodes: number,
|
|
216
|
+
rateLimits: Partial<ReqRespSubProtocolRateLimits> = {},
|
|
217
|
+
): Promise<ReqRespNode[]> => {
|
|
218
|
+
return timesParallel(numberOfNodes, () => createReqResp(peerScoring, rateLimits));
|
|
178
219
|
};
|
|
179
220
|
|
|
180
221
|
export const startNodes = async (
|
|
@@ -193,17 +234,19 @@ export const stopNodes = async (nodes: ReqRespNode[]): Promise<void> => {
|
|
|
193
234
|
};
|
|
194
235
|
|
|
195
236
|
// Create a req resp node, exposing the underlying p2p node
|
|
196
|
-
export const createReqResp = async (
|
|
237
|
+
export const createReqResp = async (
|
|
238
|
+
peerScoring: PeerScoring,
|
|
239
|
+
rateLimits: Partial<ReqRespSubProtocolRateLimits> = {},
|
|
240
|
+
): Promise<ReqRespNode> => {
|
|
197
241
|
const p2p = await createLibp2pNode();
|
|
198
242
|
const config: P2PReqRespConfig = {
|
|
199
243
|
overallRequestTimeoutMs: 4000,
|
|
200
244
|
individualRequestTimeoutMs: 2000,
|
|
245
|
+
dialTimeoutMs: 1000,
|
|
246
|
+
p2pOptimisticNegotiation: false,
|
|
201
247
|
};
|
|
202
|
-
const req = new ReqResp(config, p2p, peerScoring);
|
|
203
|
-
return {
|
|
204
|
-
p2p,
|
|
205
|
-
req,
|
|
206
|
-
};
|
|
248
|
+
const req = new ReqResp(config, p2p, peerScoring, undefined, rateLimits);
|
|
249
|
+
return { p2p, req };
|
|
207
250
|
};
|
|
208
251
|
|
|
209
252
|
// Given a node list; hand shake all of the nodes with each other
|
|
@@ -221,13 +264,19 @@ export const connectToPeers = async (nodes: ReqRespNode[]): Promise<void> => {
|
|
|
221
264
|
|
|
222
265
|
// Mock circuit verifier for testing - reimplementation from bb to avoid dependency
|
|
223
266
|
export class AlwaysTrueCircuitVerifier implements ClientProtocolCircuitVerifier {
|
|
224
|
-
|
|
225
|
-
return Promise.resolve(
|
|
267
|
+
stop(): Promise<void> {
|
|
268
|
+
return Promise.resolve();
|
|
269
|
+
}
|
|
270
|
+
verifyProof(_tx: Tx): Promise<IVCProofVerificationResult> {
|
|
271
|
+
return Promise.resolve({ valid: true, durationMs: 0, totalDurationMs: 0 });
|
|
226
272
|
}
|
|
227
273
|
}
|
|
228
274
|
export class AlwaysFalseCircuitVerifier implements ClientProtocolCircuitVerifier {
|
|
229
|
-
|
|
230
|
-
return Promise.resolve(
|
|
275
|
+
stop(): Promise<void> {
|
|
276
|
+
return Promise.resolve();
|
|
277
|
+
}
|
|
278
|
+
verifyProof(_tx: Tx): Promise<IVCProofVerificationResult> {
|
|
279
|
+
return Promise.resolve({ valid: false, durationMs: 0, totalDurationMs: 0 });
|
|
231
280
|
}
|
|
232
281
|
}
|
|
233
282
|
|
|
@@ -235,12 +284,14 @@ export class AlwaysFalseCircuitVerifier implements ClientProtocolCircuitVerifier
|
|
|
235
284
|
export function createBootstrapNodeConfig(privateKey: string, port: number, chainConfig: ChainConfig): BootnodeConfig {
|
|
236
285
|
return {
|
|
237
286
|
l1ChainId: chainConfig.l1ChainId,
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
peerIdPrivateKey: privateKey,
|
|
287
|
+
p2pIp: '127.0.0.1',
|
|
288
|
+
p2pPort: port,
|
|
289
|
+
peerIdPrivateKey: new SecretValue(privateKey),
|
|
241
290
|
dataDirectory: undefined,
|
|
242
|
-
|
|
291
|
+
dataStoreMapSizeKb: 0,
|
|
243
292
|
bootstrapNodes: [],
|
|
293
|
+
listenAddress: '127.0.0.1',
|
|
294
|
+
queryForIp: false,
|
|
244
295
|
};
|
|
245
296
|
}
|
|
246
297
|
|
|
@@ -263,7 +314,7 @@ export function createBootstrapNodeFromPrivateKey(
|
|
|
263
314
|
export async function getBootstrapNodeEnr(privateKey: string, port: number) {
|
|
264
315
|
const peerId = await createLibP2PPeerIdFromPrivateKey(privateKey);
|
|
265
316
|
const enr = SignableENR.createFromPeerId(peerId);
|
|
266
|
-
const listenAddrUdp = multiaddr(convertToMultiaddr(
|
|
317
|
+
const listenAddrUdp = multiaddr(convertToMultiaddr('127.0.0.1', port, 'udp'));
|
|
267
318
|
enr.setLocationMultiaddr(listenAddrUdp);
|
|
268
319
|
|
|
269
320
|
return enr;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import type { L2Block } from '@aztec/stdlib/block';
|
|
3
|
+
import type { ITxProvider } from '@aztec/stdlib/interfaces/server';
|
|
4
|
+
import type { BlockProposal } from '@aztec/stdlib/p2p';
|
|
5
|
+
import { type Tx, TxHash } from '@aztec/stdlib/tx';
|
|
6
|
+
|
|
7
|
+
import type { PeerId } from '@libp2p/interface';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Test transaction provider that can be seeded with transactions.
|
|
11
|
+
* Returns seeded txs when requested by hash, useful for testing block
|
|
12
|
+
* proposal handling without requiring a full P2P network.
|
|
13
|
+
*/
|
|
14
|
+
export class TestTxProvider implements ITxProvider {
|
|
15
|
+
private txs: Map<string, Tx> = new Map();
|
|
16
|
+
|
|
17
|
+
/** Seed transactions that will be returned when requested. */
|
|
18
|
+
seed(txs: Tx[]) {
|
|
19
|
+
for (const tx of txs) {
|
|
20
|
+
this.txs.set(tx.getTxHash().toString(), tx);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/** Clear all seeded transactions. */
|
|
25
|
+
clear() {
|
|
26
|
+
this.txs.clear();
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/** Returns txs from the seeded collection given their hashes. */
|
|
30
|
+
getAvailableTxs(txHashes: TxHash[]): Promise<{ txs: Tx[]; missingTxs: TxHash[] }> {
|
|
31
|
+
return this.getTxsByHashes(txHashes);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** Get txs for a block proposal, returning any seeded txs that match the requested hashes. */
|
|
35
|
+
getTxsForBlockProposal(
|
|
36
|
+
blockProposal: BlockProposal,
|
|
37
|
+
_blockNumber: BlockNumber,
|
|
38
|
+
_opts: { pinnedPeer: PeerId | undefined; deadline: Date },
|
|
39
|
+
): Promise<{ txs: Tx[]; missingTxs: TxHash[] }> {
|
|
40
|
+
return this.getTxsByHashes(blockProposal.txHashes);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** Get txs for a block, returning any seeded txs that match the tx effects in the block. */
|
|
44
|
+
getTxsForBlock(block: L2Block, _opts: { deadline: Date }): Promise<{ txs: Tx[]; missingTxs: TxHash[] }> {
|
|
45
|
+
const txHashes = block.body.txEffects.map(txEffect => txEffect.txHash);
|
|
46
|
+
return this.getTxsByHashes(txHashes);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
private getTxsByHashes(txHashes: TxHash[]): Promise<{ txs: Tx[]; missingTxs: TxHash[] }> {
|
|
50
|
+
const txs: Tx[] = [];
|
|
51
|
+
const missingTxs: TxHash[] = [];
|
|
52
|
+
|
|
53
|
+
for (const txHash of txHashes) {
|
|
54
|
+
const tx = this.txs.get(txHash.toString());
|
|
55
|
+
if (tx) {
|
|
56
|
+
txs.push(tx);
|
|
57
|
+
} else {
|
|
58
|
+
missingTxs.push(txHash);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return Promise.resolve({ txs, missingTxs });
|
|
63
|
+
}
|
|
64
|
+
}
|