@aztec/p2p 0.0.0-test.0 → 0.0.1-commit.24de95ac
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.map +1 -1
- package/dest/bootstrap/bootstrap.js +22 -9
- package/dest/client/factory.d.ts +13 -3
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +60 -24
- package/dest/client/index.d.ts +1 -0
- package/dest/client/index.d.ts.map +1 -1
- package/dest/client/index.js +1 -0
- package/dest/client/interface.d.ts +155 -0
- package/dest/client/interface.d.ts.map +1 -0
- package/dest/client/interface.js +9 -0
- package/dest/client/p2p_client.d.ts +72 -169
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +365 -174
- package/dest/config.d.ts +123 -103
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +173 -34
- package/dest/enr/generate-enr.d.ts +10 -2
- package/dest/enr/generate-enr.d.ts.map +1 -1
- package/dest/enr/generate-enr.js +27 -5
- package/dest/index.d.ts +3 -0
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +2 -0
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +42 -4
- 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.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +204 -54
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +10 -2
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +93 -15
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +10 -2
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +86 -18
- package/dest/mem_pools/attestation_pool/mocks.d.ts +1 -2
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +9 -15
- package/dest/mem_pools/instrumentation.d.ts +7 -11
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +25 -37
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +93 -9
- 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 +469 -97
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +33 -9
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/memory_tx_pool.js +133 -36
- package/dest/mem_pools/tx_pool/priority.js +1 -1
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +64 -8
- 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.map +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +264 -39
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +1 -0
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +45 -9
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +5 -1
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +61 -12
- 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/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.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.js +4 -4
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +56 -86
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +0 -2
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.js +21 -27
- package/dest/msg_validators/tx_validator/factory.d.ts +15 -0
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/factory.js +74 -0
- package/dest/msg_validators/tx_validator/gas_validator.d.ts +11 -0
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/gas_validator.js +115 -0
- package/dest/msg_validators/tx_validator/index.d.ts +7 -0
- package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/index.js +7 -0
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts +7 -3
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.js +39 -20
- package/dest/msg_validators/tx_validator/phases_validator.d.ts +14 -0
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/phases_validator.js +91 -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 +12 -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 +8 -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.map +1 -1
- package/dest/msg_validators/tx_validator/tx_proof_validator.js +6 -5
- package/dest/services/discv5/discV5_service.d.ts +9 -8
- package/dest/services/discv5/discV5_service.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.js +63 -36
- package/dest/services/dummy_service.d.ts +49 -10
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +88 -5
- package/dest/services/encoding.d.ts +25 -6
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +73 -5
- package/dest/services/index.d.ts +4 -0
- package/dest/services/index.d.ts.map +1 -1
- package/dest/services/index.js +4 -0
- package/dest/services/libp2p/instrumentation.d.ts +18 -0
- package/dest/services/libp2p/instrumentation.d.ts.map +1 -0
- package/dest/services/libp2p/instrumentation.js +157 -0
- package/dest/services/libp2p/libp2p_service.d.ts +87 -42
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +500 -218
- 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 +3 -1
- package/dest/services/peer-manager/metrics.d.ts.map +1 -1
- package/dest/services/peer-manager/metrics.js +11 -2
- package/dest/services/peer-manager/peer_manager.d.ts +126 -15
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +547 -72
- package/dest/services/reqresp/config.d.ts +10 -8
- 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 +1 -1
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +10 -6
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +30 -13
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.js +142 -84
- package/dest/services/reqresp/index.d.ts +2 -1
- 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 +72 -23
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +45 -26
- package/dest/services/reqresp/metrics.d.ts.map +1 -1
- 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 +5 -0
- package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block.js +28 -5
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +30 -0
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/bitvector.js +75 -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 +39 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +49 -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 +75 -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 +2 -4
- 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 +2 -0
- 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 +0 -2
- package/dest/services/reqresp/protocols/ping.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/status.d.ts +38 -6
- package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/status.js +72 -5
- package/dest/services/reqresp/protocols/tx.d.ts +12 -1
- 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/rate_limiter.d.ts +4 -2
- 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.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limits.js +21 -1
- package/dest/services/reqresp/reqresp.d.ts +45 -47
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +298 -207
- package/dest/services/reqresp/status.d.ts +9 -3
- package/dest/services/reqresp/status.d.ts.map +1 -1
- package/dest/services/reqresp/status.js +9 -2
- package/dest/services/service.d.ts +22 -18
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +25 -0
- package/dest/services/tx_collection/config.d.ts.map +1 -0
- package/dest/services/tx_collection/config.js +58 -0
- package/dest/services/tx_collection/fast_tx_collection.d.ts +56 -0
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/fast_tx_collection.js +300 -0
- package/dest/services/tx_collection/index.d.ts +3 -0
- package/dest/services/tx_collection/index.d.ts.map +1 -0
- package/dest/services/tx_collection/index.js +2 -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 +34 -0
- package/dest/services/tx_collection/slow_tx_collection.d.ts +54 -0
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/slow_tx_collection.js +176 -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 +49 -0
- package/dest/services/tx_provider.d.ts.map +1 -0
- package/dest/services/tx_provider.js +210 -0
- package/dest/services/tx_provider_instrumentation.d.ts +13 -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/get-ports.d.ts.map +1 -1
- package/dest/test-helpers/index.d.ts +1 -0
- package/dest/test-helpers/index.d.ts.map +1 -1
- package/dest/test-helpers/index.js +1 -0
- 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 +32 -4
- 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 +14 -10
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +62 -28
- package/dest/testbench/p2p_client_testbench_worker.js +96 -25
- package/dest/testbench/parse_log_file.js +4 -4
- package/dest/testbench/testbench.js +4 -4
- package/dest/testbench/worker_client_manager.d.ts +0 -5
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +11 -19
- package/dest/types/index.d.ts +3 -1
- package/dest/types/index.d.ts.map +1 -1
- package/dest/types/index.js +2 -0
- package/dest/util.d.ts +22 -15
- package/dest/util.d.ts.map +1 -1
- package/dest/util.js +64 -67
- package/dest/versioning.d.ts +3 -3
- package/dest/versioning.d.ts.map +1 -1
- package/dest/versioning.js +8 -3
- package/package.json +28 -24
- package/src/bootstrap/bootstrap.ts +27 -11
- package/src/client/factory.ts +136 -45
- package/src/client/index.ts +1 -0
- package/src/client/interface.ts +195 -0
- package/src/client/p2p_client.ts +460 -327
- package/src/config.ts +288 -134
- package/src/enr/generate-enr.ts +39 -6
- package/src/index.ts +4 -0
- package/src/mem_pools/attestation_pool/attestation_pool.ts +48 -4
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +241 -55
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +117 -20
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +114 -22
- package/src/mem_pools/attestation_pool/mocks.ts +11 -10
- package/src/mem_pools/instrumentation.ts +32 -46
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +549 -108
- package/src/mem_pools/tx_pool/memory_tx_pool.ts +153 -44
- package/src/mem_pools/tx_pool/priority.ts +1 -1
- package/src/mem_pools/tx_pool/tx_pool.ts +67 -8
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +217 -34
- package/src/msg_validators/attestation_validator/attestation_validator.ts +55 -10
- package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +66 -14
- package/src/msg_validators/msg_seen_validator/msg_seen_validator.ts +36 -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 +4 -4
- package/src/msg_validators/tx_validator/data_validator.ts +81 -69
- package/src/msg_validators/tx_validator/double_spend_validator.ts +19 -17
- package/src/msg_validators/tx_validator/factory.ts +109 -0
- package/src/msg_validators/tx_validator/gas_validator.ts +134 -0
- package/src/msg_validators/tx_validator/index.ts +7 -0
- package/src/msg_validators/tx_validator/metadata_validator.ts +58 -21
- package/src/msg_validators/tx_validator/phases_validator.ts +114 -0
- package/src/msg_validators/tx_validator/test_utils.ts +43 -0
- package/src/msg_validators/tx_validator/timestamp_validator.ts +46 -0
- package/src/msg_validators/tx_validator/tx_permitted_validator.ts +17 -0
- package/src/msg_validators/tx_validator/tx_proof_validator.ts +6 -5
- package/src/services/discv5/discV5_service.ts +84 -38
- package/src/services/dummy_service.ts +147 -9
- package/src/services/encoding.ts +80 -5
- package/src/services/index.ts +4 -0
- package/src/services/libp2p/instrumentation.ts +158 -0
- package/src/services/libp2p/libp2p_service.ts +646 -263
- package/src/services/peer-manager/interface.ts +29 -0
- package/src/services/peer-manager/metrics.ts +16 -1
- package/src/services/peer-manager/peer_manager.ts +652 -78
- package/src/services/reqresp/config.ts +26 -9
- package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +12 -6
- package/src/services/reqresp/connection-sampler/connection_sampler.ts +148 -95
- package/src/services/reqresp/index.ts +2 -0
- package/src/services/reqresp/interface.ts +91 -36
- package/src/services/reqresp/metrics.ts +4 -1
- package/src/services/reqresp/protocols/auth.ts +83 -0
- package/src/services/reqresp/protocols/block.ts +24 -3
- package/src/services/reqresp/protocols/block_txs/bitvector.ts +90 -0
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +53 -0
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +79 -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 +117 -5
- package/src/services/reqresp/protocols/tx.ts +35 -6
- 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 +387 -256
- package/src/services/reqresp/status.ts +12 -3
- package/src/services/service.ts +45 -21
- package/src/services/tx_collection/config.ts +84 -0
- package/src/services/tx_collection/fast_tx_collection.ts +340 -0
- package/src/services/tx_collection/index.ts +2 -0
- package/src/services/tx_collection/instrumentation.ts +43 -0
- package/src/services/tx_collection/slow_tx_collection.ts +232 -0
- package/src/services/tx_collection/tx_collection.ts +215 -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 +216 -0
- package/src/services/tx_provider_instrumentation.ts +44 -0
- package/src/test-helpers/index.ts +1 -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 +86 -35
- package/src/testbench/p2p_client_testbench_worker.ts +145 -22
- package/src/testbench/parse_log_file.ts +4 -4
- package/src/testbench/testbench.ts +4 -4
- package/src/testbench/worker_client_manager.ts +17 -23
- package/src/types/index.ts +2 -0
- package/src/util.ts +93 -89
- package/src/versioning.ts +11 -4
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
|
+
import type { PeerInfo } from '@aztec/stdlib/interfaces/server';
|
|
3
|
+
import type { PeerErrorSeverity } from '@aztec/stdlib/p2p';
|
|
4
|
+
import type { PeerId } from '@libp2p/interface';
|
|
5
|
+
import type { AuthRequest, StatusMessage } from '../reqresp/index.js';
|
|
6
|
+
import type { GoodByeReason } from '../reqresp/protocols/goodbye.js';
|
|
7
|
+
export interface PeerManagerInterface {
|
|
8
|
+
getPeers(_includePending?: boolean): PeerInfo[];
|
|
9
|
+
initializePeers(): Promise<void>;
|
|
10
|
+
heartbeat(): Promise<void>;
|
|
11
|
+
addTrustedPeer(peerId: PeerId): void;
|
|
12
|
+
addPrivatePeer(peerId: PeerId): void;
|
|
13
|
+
addPreferredPeer(peerId: PeerId): void;
|
|
14
|
+
goodbyeReceived(peerId: PeerId, reason: GoodByeReason): void;
|
|
15
|
+
penalizePeer(peerId: PeerId, penalty: PeerErrorSeverity): void;
|
|
16
|
+
handleAuthRequestFromPeer(authRequest: AuthRequest, peerId: PeerId): Promise<StatusMessage>;
|
|
17
|
+
getPeerScore(peerId: string): number;
|
|
18
|
+
shouldDisableP2PGossip(peerId: string): boolean;
|
|
19
|
+
stop(): Promise<void>;
|
|
20
|
+
/** If node running this P2P stack is validator, passes in validator address to P2P layer */
|
|
21
|
+
registerThisValidatorAddresses(address: EthAddress[]): void;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/services/peer-manager/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAErE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,GAAG,QAAQ,EAAE,CAAC;IAEhD,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7D,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC/D,yBAAyB,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAE5F,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAEhD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB,4FAA4F;IAC5F,8BAA8B,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;CAC7D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -4,9 +4,11 @@ export declare class PeerManagerMetrics {
|
|
|
4
4
|
readonly telemetryClient: TelemetryClient;
|
|
5
5
|
private sentGoodbyes;
|
|
6
6
|
private receivedGoodbyes;
|
|
7
|
+
private peerCount;
|
|
7
8
|
readonly tracer: Tracer;
|
|
8
|
-
constructor(telemetryClient
|
|
9
|
+
constructor(telemetryClient?: TelemetryClient, name?: string);
|
|
9
10
|
recordGoodbyeSent(reason: GoodByeReason): void;
|
|
10
11
|
recordGoodbyeReceived(reason: GoodByeReason): void;
|
|
12
|
+
recordPeerCount(count: number): void;
|
|
11
13
|
}
|
|
12
14
|
//# sourceMappingURL=metrics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/services/peer-manager/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/services/peer-manager/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,MAAM,EAIZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,KAAK,aAAa,EAAuB,MAAM,+BAA+B,CAAC;AAExF,qBAAa,kBAAkB;aAQX,eAAe,EAAE,eAAe;IAPlD,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,SAAS,CAAQ;IAEzB,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAGb,eAAe,GAAE,eAAsC,EACvE,IAAI,SAAgB;IAsBf,iBAAiB,CAAC,MAAM,EAAE,aAAa;IAIvC,qBAAqB,CAAC,MAAM,EAAE,aAAa;IAI3C,eAAe,CAAC,KAAK,EAAE,MAAM;CAGrC"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { Attributes, Metrics, ValueType } from '@aztec/telemetry-client';
|
|
1
|
+
import { Attributes, Metrics, ValueType, getTelemetryClient } from '@aztec/telemetry-client';
|
|
2
2
|
import { prettyGoodbyeReason } from '../reqresp/protocols/index.js';
|
|
3
3
|
export class PeerManagerMetrics {
|
|
4
4
|
telemetryClient;
|
|
5
5
|
sentGoodbyes;
|
|
6
6
|
receivedGoodbyes;
|
|
7
|
+
peerCount;
|
|
7
8
|
tracer;
|
|
8
|
-
constructor(telemetryClient, name = 'PeerManager'){
|
|
9
|
+
constructor(telemetryClient = getTelemetryClient(), name = 'PeerManager'){
|
|
9
10
|
this.telemetryClient = telemetryClient;
|
|
10
11
|
this.tracer = telemetryClient.getTracer(name);
|
|
11
12
|
const meter = telemetryClient.getMeter(name);
|
|
@@ -19,6 +20,11 @@ export class PeerManagerMetrics {
|
|
|
19
20
|
unit: 'peers',
|
|
20
21
|
valueType: ValueType.INT
|
|
21
22
|
});
|
|
23
|
+
this.peerCount = meter.createGauge(Metrics.PEER_MANAGER_PEER_COUNT, {
|
|
24
|
+
description: 'Number of peers',
|
|
25
|
+
unit: 'peers',
|
|
26
|
+
valueType: ValueType.INT
|
|
27
|
+
});
|
|
22
28
|
}
|
|
23
29
|
recordGoodbyeSent(reason) {
|
|
24
30
|
this.sentGoodbyes.add(1, {
|
|
@@ -30,4 +36,7 @@ export class PeerManagerMetrics {
|
|
|
30
36
|
[Attributes.P2P_GOODBYE_REASON]: prettyGoodbyeReason(reason)
|
|
31
37
|
});
|
|
32
38
|
}
|
|
39
|
+
recordPeerCount(count) {
|
|
40
|
+
this.peerCount.record(count);
|
|
41
|
+
}
|
|
33
42
|
}
|
|
@@ -1,29 +1,57 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { EpochCacheInterface } from '@aztec/epoch-cache';
|
|
2
|
+
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
|
+
import { DateProvider } from '@aztec/foundation/timer';
|
|
4
|
+
import type { PeerInfo, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
2
5
|
import type { PeerErrorSeverity } from '@aztec/stdlib/p2p';
|
|
3
6
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
4
7
|
import type { PeerId } from '@libp2p/interface';
|
|
5
8
|
import type { P2PConfig } from '../../config.js';
|
|
6
|
-
import type {
|
|
9
|
+
import type { FullLibp2p } from '../../util.js';
|
|
10
|
+
import { AuthRequest } from '../reqresp/protocols/auth.js';
|
|
7
11
|
import { GoodByeReason } from '../reqresp/protocols/goodbye.js';
|
|
12
|
+
import { StatusMessage } from '../reqresp/protocols/status.js';
|
|
8
13
|
import type { ReqResp } from '../reqresp/reqresp.js';
|
|
9
14
|
import type { PeerDiscoveryService } from '../service.js';
|
|
15
|
+
import type { PeerManagerInterface } from './interface.js';
|
|
10
16
|
import { type PeerScoring } from './peer_scoring.js';
|
|
11
|
-
export declare class PeerManager {
|
|
17
|
+
export declare class PeerManager implements PeerManagerInterface {
|
|
12
18
|
private libP2PNode;
|
|
13
19
|
private peerDiscoveryService;
|
|
14
20
|
private config;
|
|
15
21
|
private logger;
|
|
16
22
|
private peerScoring;
|
|
17
23
|
private reqresp;
|
|
24
|
+
private readonly worldStateSynchronizer;
|
|
25
|
+
private readonly protocolVersion;
|
|
26
|
+
private readonly epochCache;
|
|
27
|
+
private readonly dateProvider;
|
|
18
28
|
private cachedPeers;
|
|
19
29
|
private heartbeatCounter;
|
|
20
30
|
private displayPeerCountsPeerHeartbeat;
|
|
21
31
|
private timedOutPeers;
|
|
32
|
+
private trustedPeers;
|
|
33
|
+
private trustedPeersInitialized;
|
|
34
|
+
private privatePeers;
|
|
35
|
+
private privatePeersInitialized;
|
|
36
|
+
private preferredPeers;
|
|
37
|
+
private authenticatedPeerIdToValidatorAddress;
|
|
38
|
+
private authenticatedValidatorAddressToPeerId;
|
|
39
|
+
private peersToBeDisconnected;
|
|
40
|
+
private failedAuthHandshakes;
|
|
41
|
+
private validatorAddresses;
|
|
42
|
+
private initializedPreferredPeers;
|
|
22
43
|
private metrics;
|
|
23
|
-
private
|
|
24
|
-
constructor(libP2PNode:
|
|
44
|
+
private handlers;
|
|
45
|
+
constructor(libP2PNode: FullLibp2p, peerDiscoveryService: PeerDiscoveryService, config: P2PConfig, telemetryClient: TelemetryClient, logger: import("@aztec/foundation/log").Logger | undefined, peerScoring: PeerScoring, reqresp: ReqResp, worldStateSynchronizer: WorldStateSynchronizer, protocolVersion: string, epochCache: EpochCacheInterface, dateProvider?: DateProvider);
|
|
46
|
+
/**
|
|
47
|
+
* Initializes the trusted peers.
|
|
48
|
+
*
|
|
49
|
+
* This function is called when the peer manager is initialized.
|
|
50
|
+
*/
|
|
51
|
+
initializePeers(): Promise<void>;
|
|
25
52
|
get tracer(): import("@aztec/telemetry-client").Tracer;
|
|
26
|
-
heartbeat(): void
|
|
53
|
+
heartbeat(): Promise<void>;
|
|
54
|
+
setupDirectPeersIfValidator(): Promise<void>;
|
|
27
55
|
/**
|
|
28
56
|
* Cleans up expired timeouts.
|
|
29
57
|
*
|
|
@@ -33,7 +61,14 @@ export declare class PeerManager {
|
|
|
33
61
|
*/
|
|
34
62
|
private cleanupExpiredTimeouts;
|
|
35
63
|
/**
|
|
36
|
-
*
|
|
64
|
+
* Processes scheduled disconnects during heartbeat.
|
|
65
|
+
*
|
|
66
|
+
* This batch processes all peers that have been marked for disconnect.
|
|
67
|
+
* preventing immediate disconnects that could cause libp2p state corruption.
|
|
68
|
+
*/
|
|
69
|
+
private processScheduledDisconnects;
|
|
70
|
+
/**
|
|
71
|
+
* Performs Status Handshake with a connected peer.
|
|
37
72
|
* @param e - The connected peer event.
|
|
38
73
|
*/
|
|
39
74
|
private handleConnectedPeerEvent;
|
|
@@ -42,6 +77,47 @@ export declare class PeerManager {
|
|
|
42
77
|
* @param e - The disconnected peer event.
|
|
43
78
|
*/
|
|
44
79
|
private handleDisconnectedPeerEvent;
|
|
80
|
+
registerThisValidatorAddresses(address: EthAddress[]): void;
|
|
81
|
+
/**
|
|
82
|
+
* Checks if a peer is trusted.
|
|
83
|
+
* @param peerId - The peer ID.
|
|
84
|
+
* @returns True if the peer is trusted, false otherwise.
|
|
85
|
+
* Note: This function will return false and log a warning if the trusted peers are not initialized.
|
|
86
|
+
*/
|
|
87
|
+
private isTrustedPeer;
|
|
88
|
+
/**
|
|
89
|
+
* Adds a peer to the trusted peers set.
|
|
90
|
+
* @param peerId - The peer ID to add to trusted peers.
|
|
91
|
+
*/
|
|
92
|
+
addTrustedPeer(peerId: PeerId): void;
|
|
93
|
+
/**
|
|
94
|
+
* Adds a peer to the private peers set.
|
|
95
|
+
* @param peerId - The peer ID to add to private peers.
|
|
96
|
+
*/
|
|
97
|
+
addPrivatePeer(peerId: PeerId): void;
|
|
98
|
+
/**
|
|
99
|
+
* Checks if a peer is private.
|
|
100
|
+
* @param peerId - The peer ID.
|
|
101
|
+
* @returns True if the peer is private, false otherwise.
|
|
102
|
+
*/
|
|
103
|
+
private isPrivatePeer;
|
|
104
|
+
/**
|
|
105
|
+
* Adds a peer to the preferred peers set.
|
|
106
|
+
* @param peerId - The peer ID to add to preferred peers.
|
|
107
|
+
*/
|
|
108
|
+
addPreferredPeer(peerId: PeerId): void;
|
|
109
|
+
/**
|
|
110
|
+
* Checks if a peer is preferred.
|
|
111
|
+
* @param peerId - The peer ID.
|
|
112
|
+
* @returns True if the peer is preferred, false otherwise.
|
|
113
|
+
*/
|
|
114
|
+
private isPreferredPeer;
|
|
115
|
+
/**
|
|
116
|
+
* Checks if a peer is protected (either trusted or private).
|
|
117
|
+
* @param peerId - The peer ID.
|
|
118
|
+
* @returns True if the peer is protected, false otherwise.
|
|
119
|
+
*/
|
|
120
|
+
private isProtectedPeer;
|
|
45
121
|
/**
|
|
46
122
|
* Handles a goodbye received from a peer.
|
|
47
123
|
*
|
|
@@ -52,11 +128,16 @@ export declare class PeerManager {
|
|
|
52
128
|
goodbyeReceived(peerId: PeerId, reason: GoodByeReason): void;
|
|
53
129
|
penalizePeer(peerId: PeerId, penalty: PeerErrorSeverity): void;
|
|
54
130
|
getPeerScore(peerId: string): number;
|
|
131
|
+
shouldDisableP2PGossip(peerId: string): boolean;
|
|
55
132
|
getPeers(includePending?: boolean): PeerInfo[];
|
|
133
|
+
isAuthenticatedPeer(peerId: PeerId): boolean;
|
|
134
|
+
isNodeAllowedToConnect(id: string | PeerId): boolean;
|
|
56
135
|
/**
|
|
57
136
|
* Discovers peers.
|
|
58
137
|
*/
|
|
59
138
|
private discover;
|
|
139
|
+
private getNonProtectedPeers;
|
|
140
|
+
private getProtectedPeerCount;
|
|
60
141
|
private pruneUnhealthyPeers;
|
|
61
142
|
/**
|
|
62
143
|
* If the max peer count is reached, the lowest scoring peers will be pruned to satisfy the max peer count.
|
|
@@ -65,17 +146,14 @@ export declare class PeerManager {
|
|
|
65
146
|
* @returns The pruned list of connections.
|
|
66
147
|
*/
|
|
67
148
|
private prioritizePeers;
|
|
149
|
+
private goodbyeAndDisconnectPeer;
|
|
150
|
+
private markPeerForDisconnect;
|
|
68
151
|
/**
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
* This is necessary to resolve a race condition where multiple connections to the same peer are established if
|
|
72
|
-
* they are discovered at the same time.
|
|
152
|
+
* Performs the actual disconnection of a peer.
|
|
153
|
+
* This is called during heartbeat processing to avoid immediate disconnections.
|
|
73
154
|
*
|
|
74
|
-
* @
|
|
75
|
-
* @returns The pruned list of connections.
|
|
155
|
+
* @returns True if peer was disconnect, otherwise false
|
|
76
156
|
*/
|
|
77
|
-
private pruneDuplicatePeers;
|
|
78
|
-
private goodbyeAndDisconnectPeer;
|
|
79
157
|
private disconnectPeer;
|
|
80
158
|
/**
|
|
81
159
|
* Handles a discovered peer.
|
|
@@ -85,10 +163,43 @@ export declare class PeerManager {
|
|
|
85
163
|
private dialPeer;
|
|
86
164
|
private shouldDialPeer;
|
|
87
165
|
private pruneCachedPeers;
|
|
166
|
+
private createStatusMessage;
|
|
167
|
+
/**
|
|
168
|
+
* Performs status Handshake with the Peer
|
|
169
|
+
* The way the protocol is designed is that each peer will call this method on newly established p2p connection.
|
|
170
|
+
* Both peers request Status message and both peers perform validation of the received Status message.
|
|
171
|
+
* If this validation fails on any end that peer will initiate disconnect.
|
|
172
|
+
* Note: It's important for both peers to request and perform Status validation,
|
|
173
|
+
* Because one of the peers can be _bad peer_ and this peer can simply skip the check.
|
|
174
|
+
* If we don't implement validation on both ends the _bad peer_ remains connected.
|
|
175
|
+
* @param: peerId The Id of the peer to request the Status from.
|
|
176
|
+
* */
|
|
177
|
+
private exchangeStatusHandshake;
|
|
178
|
+
/**
|
|
179
|
+
* Performs auth Handshake with the Peer
|
|
180
|
+
* A superset of the status handshake. Also includes a challenge that needs to be signed by the peer's validator key.
|
|
181
|
+
* @param: peerId The Id of the peer to request the Status from.
|
|
182
|
+
* */
|
|
183
|
+
private exchangeAuthHandshake;
|
|
184
|
+
private markAuthHandshakeFailed;
|
|
185
|
+
private markAuthHandshakeSuccess;
|
|
88
186
|
/**
|
|
89
187
|
* Stops the peer manager.
|
|
90
188
|
* Removing all event listeners.
|
|
91
189
|
*/
|
|
92
190
|
stop(): Promise<void>;
|
|
191
|
+
private shouldTrustWithIdentity;
|
|
192
|
+
/**
|
|
193
|
+
* Performs auth request verification from peer. An auth request is valid if requested by an authorized peer (a peer we trust).
|
|
194
|
+
*
|
|
195
|
+
* @param: _authRequest - Auth request (unused)
|
|
196
|
+
* @param: peerId - The ID of the peer that requested the auth handshake
|
|
197
|
+
*
|
|
198
|
+
* @returns: StatusMessage if peer is trusted
|
|
199
|
+
*
|
|
200
|
+
* @throws: If peer is unauthorized
|
|
201
|
+
* */
|
|
202
|
+
handleAuthRequestFromPeer(_authRequest: AuthRequest, peerId: PeerId): Promise<StatusMessage>;
|
|
203
|
+
private updateAuthenticatedPeers;
|
|
93
204
|
}
|
|
94
205
|
//# sourceMappingURL=peer_manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer_manager.d.ts","sourceRoot":"","sources":["../../../src/services/peer-manager/peer_manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"peer_manager.d.ts","sourceRoot":"","sources":["../../../src/services/peer-manager/peer_manager.ts"],"names":[],"mappings":"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"}
|