@aztec/p2p 0.0.0-test.0 → 0.0.1-commit.21caa21
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 +1 -1
- package/dest/bootstrap/bootstrap.d.ts.map +1 -1
- package/dest/bootstrap/bootstrap.js +22 -9
- package/dest/client/factory.d.ts +14 -4
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +60 -24
- 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 +157 -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 -187
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +373 -177
- package/dest/config.d.ts +151 -125
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +183 -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 +68 -8
- 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 +214 -63
- package/dest/mem_pools/attestation_pool/index.d.ts +1 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +21 -6
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +126 -25
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +19 -6
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +111 -21
- package/dest/mem_pools/attestation_pool/mocks.d.ts +225 -5
- 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/index.d.ts +1 -1
- package/dest/mem_pools/instrumentation.d.ts +10 -12
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +35 -38
- package/dest/mem_pools/interface.d.ts +1 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +62 -13
- 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/index.d.ts +1 -1
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +34 -10
- 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.d.ts +1 -1
- package/dest/mem_pools/tx_pool/priority.js +1 -1
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +65 -9
- 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 +264 -39
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +4 -2
- 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/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 +67 -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/block_proposal_validator/block_proposal_validator.d.ts +6 -2
- 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 +73 -12
- package/dest/msg_validators/block_proposal_validator/index.d.ts +1 -1
- package/dest/msg_validators/index.d.ts +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/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 +1 -1
- 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 +1 -1
- 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 +1 -3
- 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 +8 -1
- 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 +8 -4
- 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 +93 -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 +1 -1
- 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/data_store.d.ts +1 -1
- package/dest/services/data_store.d.ts.map +1 -1
- 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 +63 -36
- package/dest/services/dummy_service.d.ts +50 -11
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +88 -5
- package/dest/services/encoding.d.ts +26 -7
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +73 -5
- 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 +164 -0
- package/dest/services/libp2p/libp2p_service.d.ts +78 -89
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +698 -246
- 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 +6 -2
- package/dest/services/peer-manager/metrics.d.ts.map +1 -1
- package/dest/services/peer-manager/metrics.js +22 -2
- package/dest/services/peer-manager/peer_manager.d.ts +102 -22
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +549 -72
- 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 +40 -2
- 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 +2 -2
- 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 +31 -17
- 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 +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 +73 -24
- 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 +1 -1
- 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 +6 -1
- 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 +47 -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 +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 +39 -7
- 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 +13 -2
- 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 +24 -66
- 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 +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 +23 -19
- 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 +50 -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 +52 -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 +109 -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/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 +2 -1
- 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 +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/testbench/p2p_client_testbench_worker.d.ts +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +103 -29
- 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 +1 -6
- 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 +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 +27 -11
- package/src/client/factory.ts +136 -45
- package/src/client/index.ts +1 -0
- package/src/client/interface.ts +198 -0
- package/src/client/p2p_client.ts +469 -330
- package/src/config.ts +305 -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 +75 -7
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +264 -65
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +173 -34
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +156 -30
- package/src/mem_pools/attestation_pool/mocks.ts +11 -10
- package/src/mem_pools/instrumentation.ts +43 -44
- 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 +54 -11
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +91 -0
- package/src/msg_validators/attestation_validator/index.ts +1 -0
- package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +82 -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 +116 -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 +167 -0
- package/src/services/libp2p/libp2p_service.ts +866 -294
- package/src/services/peer-manager/interface.ts +29 -0
- package/src/services/peer-manager/metrics.ts +26 -1
- package/src/services/peer-manager/peer_manager.ts +654 -78
- package/src/services/peer-manager/peer_scoring.ts +46 -3
- 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 +233 -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 +151 -25
- 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 +105 -91
- package/src/versioning.ts +11 -4
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
// Taken from lodestar: https://github.com/ChainSafe/lodestar
|
|
2
2
|
import { sha256 } from '@aztec/foundation/crypto';
|
|
3
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
4
|
+
import { TopicType, getTopicFromString } from '@aztec/stdlib/p2p';
|
|
3
5
|
import { compressSync, uncompressSync } from 'snappy';
|
|
4
6
|
import xxhashFactory from 'xxhash-wasm';
|
|
5
7
|
// Load WASM
|
|
@@ -38,29 +40,95 @@ export function msgIdToStrFn(msgId) {
|
|
|
38
40
|
];
|
|
39
41
|
return sha256(Buffer.concat(vec)).subarray(0, 20);
|
|
40
42
|
}
|
|
43
|
+
const DefaultMaxSizesKb = {
|
|
44
|
+
// Tx effects should not exceed 128kb, so 512kb for the full tx obj should be sufficient
|
|
45
|
+
[TopicType.tx]: 512,
|
|
46
|
+
// An attestation has roughly 30 fields, which is 1kb, so 5x is plenty
|
|
47
|
+
[TopicType.block_attestation]: 5,
|
|
48
|
+
// Proposals may carry some tx objects, so we allow a larger size capped at 10mb
|
|
49
|
+
// Note this may not be enough for carrying all tx objects in a block
|
|
50
|
+
[TopicType.block_proposal]: 1024 * 10
|
|
51
|
+
};
|
|
41
52
|
/**
|
|
42
53
|
* Snappy transform for libp2p gossipsub
|
|
43
54
|
*/ export class SnappyTransform {
|
|
55
|
+
maxSizesKb;
|
|
56
|
+
defaultMaxSizeKb;
|
|
57
|
+
logger;
|
|
58
|
+
constructor(maxSizesKb = DefaultMaxSizesKb, defaultMaxSizeKb = 10 * 1024, logger = createLogger('p2p:snappy-transform')){
|
|
59
|
+
this.maxSizesKb = maxSizesKb;
|
|
60
|
+
this.defaultMaxSizeKb = defaultMaxSizeKb;
|
|
61
|
+
this.logger = logger;
|
|
62
|
+
}
|
|
44
63
|
// Topic string included to satisfy DataTransform interface
|
|
45
|
-
inboundTransform(
|
|
46
|
-
|
|
64
|
+
inboundTransform(topicStr, data) {
|
|
65
|
+
const topic = getTopicFromString(topicStr);
|
|
66
|
+
return this.inboundTransformData(Buffer.from(data), topic);
|
|
47
67
|
}
|
|
48
|
-
|
|
68
|
+
inboundTransformData(data, topic) {
|
|
49
69
|
if (data.length === 0) {
|
|
50
70
|
return data;
|
|
51
71
|
}
|
|
72
|
+
const maxSizeKb = this.maxSizesKb[topic] ?? this.defaultMaxSizeKb;
|
|
73
|
+
const { decompressedSize } = readSnappyPreamble(data);
|
|
74
|
+
if (decompressedSize > maxSizeKb * 1024) {
|
|
75
|
+
this.logger.warn(`Decompressed size ${decompressedSize} exceeds maximum allowed size of ${maxSizeKb}kb`);
|
|
76
|
+
throw new Error(`Decompressed size ${decompressedSize} exceeds maximum allowed size of ${maxSizeKb}kb`);
|
|
77
|
+
}
|
|
52
78
|
return Buffer.from(uncompressSync(data, {
|
|
53
79
|
asBuffer: true
|
|
54
80
|
}));
|
|
55
81
|
}
|
|
56
82
|
// Topic string included to satisfy DataTransform interface
|
|
57
83
|
outboundTransform(_topicStr, data) {
|
|
58
|
-
return this.
|
|
84
|
+
return this.outboundTransformData(Buffer.from(data));
|
|
59
85
|
}
|
|
60
|
-
|
|
86
|
+
outboundTransformData(data) {
|
|
61
87
|
if (data.length === 0) {
|
|
62
88
|
return data;
|
|
63
89
|
}
|
|
64
90
|
return Buffer.from(compressSync(data));
|
|
65
91
|
}
|
|
66
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Reads the Snappy preamble from compressed data and returns the expected decompressed size.
|
|
95
|
+
*
|
|
96
|
+
* The Snappy format starts with a little-endian varint encoding the uncompressed length.
|
|
97
|
+
* Varints consist of a series of bytes where:
|
|
98
|
+
* - Lower 7 bits contain data
|
|
99
|
+
* - Upper bit (0x80) is set if more bytes follow
|
|
100
|
+
*
|
|
101
|
+
* @param data - The compressed data starting with the Snappy preamble
|
|
102
|
+
* @returns Object containing the decompressed size and the number of bytes read from the preamble
|
|
103
|
+
* @throws Error if the data is too short or the varint is invalid
|
|
104
|
+
*/ export function readSnappyPreamble(data) {
|
|
105
|
+
if (data.length === 0) {
|
|
106
|
+
throw new Error('Cannot read preamble from empty data');
|
|
107
|
+
}
|
|
108
|
+
let result = 0;
|
|
109
|
+
let shift = 0;
|
|
110
|
+
let bytesRead = 0;
|
|
111
|
+
// Maximum varint length for 32-bit value is 5 bytes
|
|
112
|
+
// (7 bits per byte, so 5 bytes = 35 bits, enough for 2^32 - 1)
|
|
113
|
+
const maxBytes = 5;
|
|
114
|
+
for(let i = 0; i < Math.min(data.length, maxBytes); i++){
|
|
115
|
+
const byte = data[i];
|
|
116
|
+
bytesRead++;
|
|
117
|
+
// Extract lower 7 bits and add to result with appropriate shift
|
|
118
|
+
// Use >>> 0 to convert to unsigned 32-bit integer to avoid sign issues
|
|
119
|
+
result = (result | (byte & 0x7f) << shift) >>> 0;
|
|
120
|
+
// If upper bit is not set, we're done
|
|
121
|
+
if ((byte & 0x80) === 0) {
|
|
122
|
+
return {
|
|
123
|
+
decompressedSize: result,
|
|
124
|
+
bytesRead
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
shift += 7;
|
|
128
|
+
}
|
|
129
|
+
// If we get here, either we ran out of data or the varint is too long
|
|
130
|
+
if (bytesRead >= maxBytes) {
|
|
131
|
+
throw new Error('Varint is too long (max 5 bytes for 32-bit value)');
|
|
132
|
+
}
|
|
133
|
+
throw new Error('Incomplete varint: data ended before varint termination');
|
|
134
|
+
}
|
|
@@ -4,4 +4,4 @@ import type { PeerScoreThresholds } from '@chainsafe/libp2p-gossipsub/score';
|
|
|
4
4
|
* https://github.com/sigp/lighthouse/blob/b0ac3464ca5fb1e9d75060b56c83bfaf990a3d25/beacon_node/eth2_libp2p/src/behaviour/gossipsub_scoring_parameters.rs#L83
|
|
5
5
|
*/
|
|
6
6
|
export declare const gossipScoreThresholds: PeerScoreThresholds;
|
|
7
|
-
//# sourceMappingURL=
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcmluZy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2dvc3NpcHN1Yi9zY29yaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFN0U7OztHQUdHO0FBQ0gsZUFBTyxNQUFNLHFCQUFxQixFQUFFLG1CQU1uQyxDQUFDIn0=
|
package/dest/services/index.d.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
export * from './service.js';
|
|
2
2
|
export * from './libp2p/libp2p_service.js';
|
|
3
|
-
|
|
3
|
+
export * from './tx_provider.js';
|
|
4
|
+
export * from './dummy_service.js';
|
|
5
|
+
export * from './reqresp/index.js';
|
|
6
|
+
export * from './tx_collection/index.js';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMEJBQTBCLENBQUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC"}
|
package/dest/services/index.js
CHANGED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Timer } from '@aztec/foundation/timer';
|
|
2
|
+
import { TopicType } from '@aztec/stdlib/p2p';
|
|
3
|
+
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
4
|
+
export declare class P2PInstrumentation {
|
|
5
|
+
private messageValidationDuration;
|
|
6
|
+
private messagePrevalidationCount;
|
|
7
|
+
private messageLatency;
|
|
8
|
+
private txReceivedCount;
|
|
9
|
+
private aggLatencyHisto;
|
|
10
|
+
private aggValidationHisto;
|
|
11
|
+
private aggLatencyMetrics;
|
|
12
|
+
private aggValidationMetrics;
|
|
13
|
+
constructor(client: TelemetryClient, name: string);
|
|
14
|
+
recordMessageValidation(topicName: TopicType, timerOrMs: Timer | number): void;
|
|
15
|
+
incrementTxReceived(count: number): void;
|
|
16
|
+
incMessagePrevalidationStatus(passed: boolean, topicName: TopicType | undefined): void;
|
|
17
|
+
recordMessageLatency(topicName: TopicType, timerOrMs: Timer | number): void;
|
|
18
|
+
private aggregate;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvbGlicDJwL2luc3RydW1lbnRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQU1MLEtBQUssZUFBZSxFQUdyQixNQUFNLHlCQUF5QixDQUFDO0FBSWpDLHFCQUFhLGtCQUFrQjtJQUM3QixPQUFPLENBQUMseUJBQXlCLENBQVk7SUFDN0MsT0FBTyxDQUFDLHlCQUF5QixDQUFnQjtJQUNqRCxPQUFPLENBQUMsY0FBYyxDQUFZO0lBQ2xDLE9BQU8sQ0FBQyxlQUFlLENBQWdCO0lBRXZDLE9BQU8sQ0FBQyxlQUFlLENBQTZDO0lBQ3BFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBNkM7SUFFdkUsT0FBTyxDQUFDLGlCQUFpQixDQUFpRTtJQUMxRixPQUFPLENBQUMsb0JBQW9CLENBQWlFO0lBRTdGLFlBQVksTUFBTSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQW9GaEQ7SUFFTSx1QkFBdUIsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEdBQUcsTUFBTSxRQVc3RTtJQUVNLG1CQUFtQixDQUFDLEtBQUssRUFBRSxNQUFNLFFBRXZDO0lBRU0sNkJBQTZCLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxHQUFHLFNBQVMsUUFFckY7SUFFTSxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEdBQUcsTUFBTSxRQVcxRTtJQUVELE9BQU8sQ0FBQyxTQUFTLENBa0JmO0NBQ0gifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../../src/services/libp2p/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAML,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAIjC,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,yBAAyB,CAAY;IAC7C,OAAO,CAAC,yBAAyB,CAAgB;IACjD,OAAO,CAAC,cAAc,CAAY;IAClC,OAAO,CAAC,eAAe,CAAgB;IAEvC,OAAO,CAAC,eAAe,CAA6C;IACpE,OAAO,CAAC,kBAAkB,CAA6C;IAEvE,OAAO,CAAC,iBAAiB,CAAiE;IAC1F,OAAO,CAAC,oBAAoB,CAAiE;IAE7F,YAAY,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAoFhD;IAEM,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,QAW7E;IAEM,mBAAmB,CAAC,KAAK,EAAE,MAAM,QAEvC;IAEM,6BAA6B,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,QAErF;IAEM,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,QAW1E;IAED,OAAO,CAAC,SAAS,CAkBf;CACH"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { TopicType } from '@aztec/stdlib/p2p';
|
|
2
|
+
import { Attributes, Metrics, ValueType } from '@aztec/telemetry-client';
|
|
3
|
+
import { createHistogram } from 'node:perf_hooks';
|
|
4
|
+
export class P2PInstrumentation {
|
|
5
|
+
messageValidationDuration;
|
|
6
|
+
messagePrevalidationCount;
|
|
7
|
+
messageLatency;
|
|
8
|
+
txReceivedCount;
|
|
9
|
+
aggLatencyHisto = new Map();
|
|
10
|
+
aggValidationHisto = new Map();
|
|
11
|
+
aggLatencyMetrics;
|
|
12
|
+
aggValidationMetrics;
|
|
13
|
+
constructor(client, name){
|
|
14
|
+
const meter = client.getMeter(name);
|
|
15
|
+
this.messageValidationDuration = meter.createHistogram(Metrics.P2P_GOSSIP_MESSAGE_VALIDATION_DURATION, {
|
|
16
|
+
unit: 'ms',
|
|
17
|
+
description: 'How long validating a gossiped message takes',
|
|
18
|
+
valueType: ValueType.INT
|
|
19
|
+
});
|
|
20
|
+
this.messagePrevalidationCount = meter.createUpDownCounter(Metrics.P2P_GOSSIP_MESSAGE_PREVALIDATION_COUNT, {
|
|
21
|
+
description: 'How many message pass/fail prevalidation',
|
|
22
|
+
valueType: ValueType.INT
|
|
23
|
+
});
|
|
24
|
+
this.messageLatency = meter.createHistogram(Metrics.P2P_GOSSIP_MESSAGE_LATENCY, {
|
|
25
|
+
unit: 'ms',
|
|
26
|
+
description: 'P2P message latency',
|
|
27
|
+
valueType: ValueType.INT
|
|
28
|
+
});
|
|
29
|
+
this.txReceivedCount = meter.createUpDownCounter(Metrics.P2P_GOSSIP_TX_RECEIVED_COUNT, {
|
|
30
|
+
description: 'The number of txs received from the p2p network'
|
|
31
|
+
});
|
|
32
|
+
this.aggLatencyMetrics = {
|
|
33
|
+
avg: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_LATENCY_AVG, {
|
|
34
|
+
valueType: ValueType.DOUBLE,
|
|
35
|
+
description: 'AVG msg latency',
|
|
36
|
+
unit: 'ms'
|
|
37
|
+
}),
|
|
38
|
+
max: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_LATENCY_MAX, {
|
|
39
|
+
valueType: ValueType.DOUBLE,
|
|
40
|
+
description: 'MAX msg latency',
|
|
41
|
+
unit: 'ms'
|
|
42
|
+
}),
|
|
43
|
+
min: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_LATENCY_MIN, {
|
|
44
|
+
valueType: ValueType.DOUBLE,
|
|
45
|
+
description: 'MIN msg latency',
|
|
46
|
+
unit: 'ms'
|
|
47
|
+
}),
|
|
48
|
+
p50: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_LATENCY_P50, {
|
|
49
|
+
valueType: ValueType.DOUBLE,
|
|
50
|
+
description: 'P50 msg latency',
|
|
51
|
+
unit: 'ms'
|
|
52
|
+
}),
|
|
53
|
+
p90: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_LATENCY_P90, {
|
|
54
|
+
valueType: ValueType.DOUBLE,
|
|
55
|
+
description: 'P90 msg latency',
|
|
56
|
+
unit: 'ms'
|
|
57
|
+
})
|
|
58
|
+
};
|
|
59
|
+
this.aggValidationMetrics = {
|
|
60
|
+
avg: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_VALIDATION_DURATION_AVG, {
|
|
61
|
+
valueType: ValueType.DOUBLE,
|
|
62
|
+
description: 'AVG msg validation',
|
|
63
|
+
unit: 'ms'
|
|
64
|
+
}),
|
|
65
|
+
max: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_VALIDATION_DURATION_MAX, {
|
|
66
|
+
valueType: ValueType.DOUBLE,
|
|
67
|
+
description: 'MAX msg validation',
|
|
68
|
+
unit: 'ms'
|
|
69
|
+
}),
|
|
70
|
+
min: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_VALIDATION_DURATION_MIN, {
|
|
71
|
+
valueType: ValueType.DOUBLE,
|
|
72
|
+
description: 'MIN msg validation',
|
|
73
|
+
unit: 'ms'
|
|
74
|
+
}),
|
|
75
|
+
p50: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_VALIDATION_DURATION_P50, {
|
|
76
|
+
valueType: ValueType.DOUBLE,
|
|
77
|
+
description: 'P50 msg validation',
|
|
78
|
+
unit: 'ms'
|
|
79
|
+
}),
|
|
80
|
+
p90: meter.createObservableGauge(Metrics.P2P_GOSSIP_AGG_MESSAGE_VALIDATION_DURATION_P90, {
|
|
81
|
+
valueType: ValueType.DOUBLE,
|
|
82
|
+
description: 'P90 msg validation',
|
|
83
|
+
unit: 'ms'
|
|
84
|
+
})
|
|
85
|
+
};
|
|
86
|
+
meter.addBatchObservableCallback(this.aggregate, [
|
|
87
|
+
...Object.values(this.aggValidationMetrics),
|
|
88
|
+
...Object.values(this.aggLatencyMetrics)
|
|
89
|
+
]);
|
|
90
|
+
}
|
|
91
|
+
recordMessageValidation(topicName, timerOrMs) {
|
|
92
|
+
const ms = Math.ceil(typeof timerOrMs === 'number' ? timerOrMs : timerOrMs.ms());
|
|
93
|
+
this.messageValidationDuration.record(ms, {
|
|
94
|
+
[Attributes.TOPIC_NAME]: topicName
|
|
95
|
+
});
|
|
96
|
+
let validationHistogram = this.aggValidationHisto.get(topicName);
|
|
97
|
+
if (!validationHistogram) {
|
|
98
|
+
validationHistogram = createHistogram({
|
|
99
|
+
min: 1,
|
|
100
|
+
max: 5 * 60 * 1000
|
|
101
|
+
}); // 5 mins
|
|
102
|
+
this.aggValidationHisto.set(topicName, validationHistogram);
|
|
103
|
+
}
|
|
104
|
+
validationHistogram.record(Math.max(ms, 1));
|
|
105
|
+
}
|
|
106
|
+
incrementTxReceived(count) {
|
|
107
|
+
this.txReceivedCount.add(count);
|
|
108
|
+
}
|
|
109
|
+
incMessagePrevalidationStatus(passed, topicName) {
|
|
110
|
+
this.messagePrevalidationCount.add(1, {
|
|
111
|
+
[Attributes.TOPIC_NAME]: topicName,
|
|
112
|
+
[Attributes.OK]: passed
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
recordMessageLatency(topicName, timerOrMs) {
|
|
116
|
+
const ms = Math.ceil(typeof timerOrMs === 'number' ? timerOrMs : timerOrMs.ms());
|
|
117
|
+
this.messageLatency.record(ms, {
|
|
118
|
+
[Attributes.TOPIC_NAME]: topicName
|
|
119
|
+
});
|
|
120
|
+
let latencyHistogram = this.aggLatencyHisto.get(topicName);
|
|
121
|
+
if (!latencyHistogram) {
|
|
122
|
+
latencyHistogram = createHistogram({
|
|
123
|
+
min: 1,
|
|
124
|
+
max: 60 * 1000
|
|
125
|
+
}); // Max: 1 minute
|
|
126
|
+
this.aggLatencyHisto.set(topicName, latencyHistogram);
|
|
127
|
+
}
|
|
128
|
+
latencyHistogram.record(Math.max(ms, 1));
|
|
129
|
+
}
|
|
130
|
+
aggregate = (res)=>{
|
|
131
|
+
for (const [metrics, histograms] of [
|
|
132
|
+
[
|
|
133
|
+
this.aggLatencyMetrics,
|
|
134
|
+
this.aggLatencyHisto
|
|
135
|
+
],
|
|
136
|
+
[
|
|
137
|
+
this.aggValidationMetrics,
|
|
138
|
+
this.aggValidationHisto
|
|
139
|
+
]
|
|
140
|
+
]){
|
|
141
|
+
for (const topicName of Object.values(TopicType)){
|
|
142
|
+
const histogram = histograms.get(topicName);
|
|
143
|
+
if (!histogram || histogram.count === 0) {
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
res.observe(metrics.avg, histogram.mean, {
|
|
147
|
+
[Attributes.TOPIC_NAME]: topicName
|
|
148
|
+
});
|
|
149
|
+
res.observe(metrics.max, histogram.max, {
|
|
150
|
+
[Attributes.TOPIC_NAME]: topicName
|
|
151
|
+
});
|
|
152
|
+
res.observe(metrics.min, histogram.min, {
|
|
153
|
+
[Attributes.TOPIC_NAME]: topicName
|
|
154
|
+
});
|
|
155
|
+
res.observe(metrics.p50, histogram.percentile(50), {
|
|
156
|
+
[Attributes.TOPIC_NAME]: topicName
|
|
157
|
+
});
|
|
158
|
+
res.observe(metrics.p90, histogram.percentile(90), {
|
|
159
|
+
[Attributes.TOPIC_NAME]: topicName
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
}
|
|
@@ -1,51 +1,79 @@
|
|
|
1
1
|
import type { EpochCacheInterface } from '@aztec/epoch-cache';
|
|
2
|
+
import { type Logger } from '@aztec/foundation/log';
|
|
2
3
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
3
|
-
import type { L2BlockSource } from '@aztec/stdlib/block';
|
|
4
|
+
import type { EthAddress, L2BlockSource } from '@aztec/stdlib/block';
|
|
5
|
+
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
4
6
|
import type { ClientProtocolCircuitVerifier, PeerInfo, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
5
|
-
import { BlockAttestation, BlockProposal, type Gossipable, P2PClientType } from '@aztec/stdlib/p2p';
|
|
7
|
+
import { BlockAttestation, BlockProposal, type Gossipable, P2PClientType, TopicType } from '@aztec/stdlib/p2p';
|
|
8
|
+
import { Tx } from '@aztec/stdlib/tx';
|
|
6
9
|
import { type TelemetryClient, WithTracer } from '@aztec/telemetry-client';
|
|
7
|
-
import type
|
|
8
|
-
import {
|
|
9
|
-
import '@libp2p/kad-dht';
|
|
10
|
+
import { type Message, type PeerId, TopicValidatorResult } from '@libp2p/interface';
|
|
11
|
+
import { ENR } from '@nethermindeth/enr';
|
|
10
12
|
import type { P2PConfig } from '../../config.js';
|
|
11
13
|
import type { MemPools } from '../../mem_pools/interface.js';
|
|
12
14
|
import { type PubSubLibp2p } from '../../util.js';
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import type
|
|
15
|
+
import type { PeerManagerInterface } from '../peer-manager/interface.js';
|
|
16
|
+
import type { P2PReqRespConfig } from '../reqresp/config.js';
|
|
17
|
+
import { type ReqRespInterface, ReqRespSubProtocol, type ReqRespSubProtocolHandler, type ReqRespSubProtocolValidators, type SubProtocolMap } from '../reqresp/interface.js';
|
|
18
|
+
import { AuthRequest, StatusMessage } from '../reqresp/protocols/index.js';
|
|
19
|
+
import type { P2PBlockReceivedCallback, P2PService, PeerDiscoveryService } from '../service.js';
|
|
20
|
+
type ReceivedMessageValidationResult<T> = {
|
|
21
|
+
obj: T;
|
|
22
|
+
result: Exclude<TopicValidatorResult, TopicValidatorResult.Reject>;
|
|
23
|
+
} | {
|
|
24
|
+
obj?: undefined;
|
|
25
|
+
result: TopicValidatorResult.Reject;
|
|
26
|
+
};
|
|
16
27
|
/**
|
|
17
28
|
* Lib P2P implementation of the P2PService interface.
|
|
18
29
|
*/
|
|
19
|
-
export declare class LibP2PService<T extends P2PClientType> extends WithTracer implements P2PService {
|
|
30
|
+
export declare class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends WithTracer implements P2PService {
|
|
20
31
|
private clientType;
|
|
21
32
|
private config;
|
|
22
|
-
|
|
33
|
+
protected node: PubSubLibp2p;
|
|
23
34
|
private peerDiscoveryService;
|
|
24
|
-
private
|
|
25
|
-
private
|
|
35
|
+
private reqresp;
|
|
36
|
+
private peerManager;
|
|
37
|
+
protected mempools: MemPools<T>;
|
|
38
|
+
private archiver;
|
|
39
|
+
private epochCache;
|
|
26
40
|
private proofVerifier;
|
|
27
41
|
private worldStateSynchronizer;
|
|
28
|
-
private logger;
|
|
29
|
-
private jobQueue;
|
|
30
|
-
private peerManager;
|
|
31
42
|
private discoveryRunningPromise?;
|
|
43
|
+
private msgIdSeenValidators;
|
|
32
44
|
private attestationValidator;
|
|
33
45
|
private blockProposalValidator;
|
|
34
|
-
|
|
46
|
+
private protocolVersion;
|
|
47
|
+
private topicStrings;
|
|
48
|
+
private feesCache;
|
|
35
49
|
/**
|
|
36
50
|
* Callback for when a block is received from a peer.
|
|
37
51
|
* @param block - The block received from the peer.
|
|
38
52
|
* @returns The attestation for the block, if any.
|
|
39
53
|
*/
|
|
40
54
|
private blockReceivedCallback;
|
|
41
|
-
|
|
55
|
+
private gossipSubEventHandler;
|
|
56
|
+
private instrumentation;
|
|
57
|
+
protected logger: Logger;
|
|
58
|
+
constructor(clientType: T, config: P2PConfig, node: PubSubLibp2p, peerDiscoveryService: PeerDiscoveryService, reqresp: ReqRespInterface, peerManager: PeerManagerInterface, mempools: MemPools<T>, archiver: L2BlockSource & ContractDataSource, epochCache: EpochCacheInterface, proofVerifier: ClientProtocolCircuitVerifier, worldStateSynchronizer: WorldStateSynchronizer, telemetry: TelemetryClient, logger?: Logger);
|
|
59
|
+
updateConfig(config: Partial<P2PReqRespConfig>): void;
|
|
42
60
|
/**
|
|
43
61
|
* Creates an instance of the LibP2P service.
|
|
44
62
|
* @param config - The configuration to use when creating the service.
|
|
45
63
|
* @param txPool - The transaction pool to be accessed by the service.
|
|
46
64
|
* @returns The new service.
|
|
47
65
|
*/
|
|
48
|
-
static new<T extends P2PClientType>(clientType: T, config: P2PConfig,
|
|
66
|
+
static new<T extends P2PClientType>(clientType: T, config: P2PConfig, peerId: PeerId, deps: {
|
|
67
|
+
mempools: MemPools<T>;
|
|
68
|
+
l2BlockSource: L2BlockSource & ContractDataSource;
|
|
69
|
+
epochCache: EpochCacheInterface;
|
|
70
|
+
proofVerifier: ClientProtocolCircuitVerifier;
|
|
71
|
+
worldStateSynchronizer: WorldStateSynchronizer;
|
|
72
|
+
peerStore: AztecAsyncKVStore;
|
|
73
|
+
telemetry: TelemetryClient;
|
|
74
|
+
logger: Logger;
|
|
75
|
+
packageVersion: string;
|
|
76
|
+
}): Promise<LibP2PService<T>>;
|
|
49
77
|
/**
|
|
50
78
|
* Starts the LibP2P service.
|
|
51
79
|
* @returns An empty promise.
|
|
@@ -56,114 +84,73 @@ export declare class LibP2PService<T extends P2PClientType> extends WithTracer i
|
|
|
56
84
|
* @returns An empty promise.
|
|
57
85
|
*/
|
|
58
86
|
stop(): Promise<void>;
|
|
87
|
+
addReqRespSubProtocol(subProtocol: ReqRespSubProtocol, handler: ReqRespSubProtocolHandler, validator?: ReqRespSubProtocolValidators[ReqRespSubProtocol]): Promise<void>;
|
|
88
|
+
registerThisValidatorAddresses(address: EthAddress[]): void;
|
|
59
89
|
getPeers(includePending?: boolean): PeerInfo[];
|
|
60
90
|
private handleGossipSubEvent;
|
|
61
|
-
/**
|
|
62
|
-
* Send Request via the ReqResp service
|
|
63
|
-
* The subprotocol defined will determine the request and response types
|
|
64
|
-
*
|
|
65
|
-
* See the subProtocolMap for the mapping of subprotocols to request/response types in `interface.ts`
|
|
66
|
-
*
|
|
67
|
-
* @param protocol The request response protocol to use
|
|
68
|
-
* @param request The request type to send
|
|
69
|
-
* @returns
|
|
70
|
-
*/
|
|
71
|
-
sendRequest<SubProtocol extends ReqRespSubProtocol>(protocol: SubProtocol, request: InstanceType<SubProtocolMap[SubProtocol]['request']>): Promise<InstanceType<SubProtocolMap[SubProtocol]['response']> | undefined>;
|
|
72
91
|
/**
|
|
73
92
|
* Send a batch of requests to peers, and return the responses
|
|
74
93
|
* @param protocol - The request response protocol to use
|
|
75
94
|
* @param requests - The requests to send to the peers
|
|
76
95
|
* @returns The responses to the requests
|
|
77
96
|
*/
|
|
78
|
-
sendBatchRequest<SubProtocol extends ReqRespSubProtocol>(protocol: SubProtocol, requests: InstanceType<SubProtocolMap[SubProtocol]['request']>[]): Promise<InstanceType<SubProtocolMap[SubProtocol]['response']>[]
|
|
97
|
+
sendBatchRequest<SubProtocol extends ReqRespSubProtocol>(protocol: SubProtocol, requests: InstanceType<SubProtocolMap[SubProtocol]['request']>[], pinnedPeerId: PeerId | undefined): Promise<InstanceType<SubProtocolMap[SubProtocol]['response']>[]>;
|
|
79
98
|
/**
|
|
80
99
|
* Get the ENR of the node
|
|
81
100
|
* @returns The ENR of the node
|
|
82
101
|
*/
|
|
83
102
|
getEnr(): ENR | undefined;
|
|
84
|
-
registerBlockReceivedCallback(callback:
|
|
103
|
+
registerBlockReceivedCallback(callback: P2PBlockReceivedCallback): void;
|
|
85
104
|
/**
|
|
86
105
|
* Subscribes to a topic.
|
|
87
106
|
* @param topic - The topic to subscribe to.
|
|
88
107
|
*/
|
|
89
108
|
private subscribeToTopic;
|
|
109
|
+
private publishToTopic;
|
|
90
110
|
/**
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
* @returns The number of recipients the data was sent to.
|
|
111
|
+
* Checks if this message has already been seen, based on its msgId computed from hashing the message data.
|
|
112
|
+
* Note that we do not rely on the seenCache from gossipsub since we want to keep a longer history of seen
|
|
113
|
+
* messages to avoid tx echoes across the network.
|
|
95
114
|
*/
|
|
96
|
-
|
|
115
|
+
protected preValidateReceivedMessage(msg: Message, msgId: string, source: PeerId): {
|
|
116
|
+
result: boolean;
|
|
117
|
+
topicType?: TopicType;
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* Safely deserializes a P2PMessage from raw message data.
|
|
121
|
+
* @param msgId - The message ID.
|
|
122
|
+
* @param source - The peer ID of the message source.
|
|
123
|
+
* @param data - The raw message data.
|
|
124
|
+
* @returns The deserialized P2PMessage or undefined if deserialization fails.
|
|
125
|
+
*/
|
|
126
|
+
private safelyDeserializeP2PMessage;
|
|
97
127
|
/**
|
|
98
128
|
* Handles a new gossip message that was received by the client.
|
|
99
129
|
* @param topic - The message's topic.
|
|
100
130
|
* @param data - The message data
|
|
101
131
|
*/
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
/**Process Attestation From Peer
|
|
106
|
-
* When a proposal is received from a peer, we add it to the attestation pool, so it can be accessed by other services.
|
|
107
|
-
*
|
|
108
|
-
* @param attestation - The attestation to process.
|
|
109
|
-
*/
|
|
132
|
+
protected handleNewGossipMessage(msg: Message, msgId: string, source: PeerId): Promise<void>;
|
|
133
|
+
protected validateReceivedMessage<T>(validationFunc: () => Promise<ReceivedMessageValidationResult<T>>, msgId: string, source: PeerId, topicType: TopicType): Promise<ReceivedMessageValidationResult<T>>;
|
|
134
|
+
protected handleGossipedTx(payloadData: Buffer, msgId: string, source: PeerId): Promise<void>;
|
|
110
135
|
private processAttestationFromPeer;
|
|
111
136
|
private processBlockFromPeer;
|
|
112
137
|
private processValidBlockProposal;
|
|
113
|
-
/**
|
|
114
|
-
* Broadcast an attestation to all peers.
|
|
115
|
-
* @param attestation - The attestation to broadcast.
|
|
116
|
-
*/
|
|
117
138
|
private broadcastAttestation;
|
|
118
139
|
/**
|
|
119
140
|
* Propagates provided message to peers.
|
|
120
141
|
* @param message - The message to propagate.
|
|
121
142
|
*/
|
|
122
143
|
propagate<T extends Gossipable>(message: T): Promise<void>;
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
* In order to perform this check, the tx proof must be verified.
|
|
128
|
-
*
|
|
129
|
-
* Note: This function is called from within `ReqResp.sendRequest` as part of the
|
|
130
|
-
* ReqRespSubProtocol.TX subprotocol validation.
|
|
131
|
-
*
|
|
132
|
-
* @param requestedTxHash - The hash of the tx that was requested.
|
|
133
|
-
* @param responseTx - The tx that was received as a response to the request.
|
|
134
|
-
* @param peerId - The peer ID of the peer that sent the tx.
|
|
135
|
-
* @returns True if the tx is valid, false otherwise.
|
|
136
|
-
*/
|
|
144
|
+
private validateRequestedBlockTxs;
|
|
145
|
+
private validateRequestedTxs;
|
|
146
|
+
private validateRequestedBlock;
|
|
147
|
+
private createRequestedTxValidator;
|
|
137
148
|
private validateRequestedTx;
|
|
138
149
|
private validatePropagatedTx;
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
*
|
|
142
|
-
* Each validator is a pair of a validator and a severity.
|
|
143
|
-
* If a validator fails, the peer is penalized with the severity of the validator.
|
|
144
|
-
*
|
|
145
|
-
* @param blockNumber - The block number to create validators for.
|
|
146
|
-
* @returns The message validators.
|
|
147
|
-
*/
|
|
150
|
+
private getGasFees;
|
|
151
|
+
validate(txs: Tx[]): Promise<void>;
|
|
148
152
|
private createMessageValidators;
|
|
149
|
-
/**
|
|
150
|
-
* Run validations on a tx.
|
|
151
|
-
* @param tx - The tx to validate.
|
|
152
|
-
* @param messageValidators - The message validators to run.
|
|
153
|
-
* @returns The validation outcome.
|
|
154
|
-
*/
|
|
155
153
|
private runValidations;
|
|
156
|
-
/**
|
|
157
|
-
* Handle a double spend failure.
|
|
158
|
-
*
|
|
159
|
-
* Double spend failures are managed on their own because they are a special case.
|
|
160
|
-
* We must check if the double spend is recent or old, if it is past a threshold, then we heavily penalize the peer.
|
|
161
|
-
*
|
|
162
|
-
* @param tx - The tx that failed the double spend validator.
|
|
163
|
-
* @param blockNumber - The block number of the tx.
|
|
164
|
-
* @param peerId - The peer ID of the peer that sent the tx.
|
|
165
|
-
* @returns Severity
|
|
166
|
-
*/
|
|
167
154
|
private handleDoubleSpendFailure;
|
|
168
155
|
/**
|
|
169
156
|
* Validate an attestation.
|
|
@@ -180,7 +167,9 @@ export declare class LibP2PService<T extends P2PClientType> extends WithTracer i
|
|
|
180
167
|
*/
|
|
181
168
|
validateBlockProposal(peerId: PeerId, block: BlockProposal): Promise<boolean>;
|
|
182
169
|
getPeerScore(peerId: PeerId): number;
|
|
170
|
+
handleAuthRequestFromPeer(authRequest: AuthRequest, peerId: PeerId): Promise<StatusMessage>;
|
|
183
171
|
private sendToPeers;
|
|
184
172
|
private stopLibP2P;
|
|
185
173
|
}
|
|
186
|
-
|
|
174
|
+
export {};
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicDJwX3NlcnZpY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9saWJwMnAvbGlicDJwX3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUk5RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQTZDLE1BQU0sdUJBQXVCLENBQUM7QUFHL0YsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUd6RCxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQVcsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUUsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVqRSxPQUFPLEtBQUssRUFBRSw2QkFBNkIsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2SCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixLQUFLLFVBQVUsRUFDZixhQUFhLEVBR2IsU0FBUyxFQUlWLE1BQU0sbUJBQW1CLENBQUM7QUFFM0IsT0FBTyxFQUFFLEVBQUUsRUFBMEQsTUFBTSxrQkFBa0IsQ0FBQztBQUc5RixPQUFPLEVBQWtDLEtBQUssZUFBZSxFQUFFLFVBQVUsRUFBYSxNQUFNLHlCQUF5QixDQUFDO0FBY3RILE9BQU8sRUFBRSxLQUFLLE9BQU8sRUFBNEIsS0FBSyxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUk5RyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHekMsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakQsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFpQjdELE9BQU8sRUFBRSxLQUFL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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libp2p_service.d.ts","sourceRoot":"","sources":["../../../src/services/libp2p/libp2p_service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"libp2p_service.d.ts","sourceRoot":"","sources":["../../../src/services/libp2p/libp2p_service.ts"],"names":[],"mappings":"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"}
|