@aztec/p2p 0.0.0-test.0 → 0.0.1-commit.03f7ef2
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 +15 -5
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +60 -25
- package/dest/client/index.d.ts +2 -1
- package/dest/client/index.d.ts.map +1 -1
- package/dest/client/index.js +1 -0
- package/dest/client/interface.d.ts +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 +75 -190
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +381 -183
- 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 +216 -65
- 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 +127 -26
- 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 +227 -7
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +10 -16
- package/dest/mem_pools/index.d.ts +1 -1
- package/dest/mem_pools/instrumentation.d.ts +16 -12
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +57 -35
- package/dest/mem_pools/interface.d.ts +3 -4
- package/dest/mem_pools/interface.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +64 -14
- 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 +472 -97
- package/dest/mem_pools/tx_pool/index.d.ts +1 -1
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +36 -11
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/memory_tx_pool.js +137 -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 +67 -10
- 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 +273 -42
- 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 +2 -2
- 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 +16 -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 +9 -5
- 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 +13 -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 +74 -6
- package/dest/services/gossipsub/scoring.d.ts +1 -1
- package/dest/services/index.d.ts +5 -1
- package/dest/services/index.d.ts.map +1 -1
- package/dest/services/index.js +4 -0
- package/dest/services/libp2p/instrumentation.d.ts +20 -0
- package/dest/services/libp2p/instrumentation.d.ts.map +1 -0
- package/dest/services/libp2p/instrumentation.js +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 +695 -248
- 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 +46 -27
- 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 +30 -6
- 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 +40 -7
- package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/status.js +73 -5
- package/dest/services/reqresp/protocols/tx.d.ts +14 -4
- package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/tx.js +34 -6
- package/dest/services/reqresp/rate-limiter/index.d.ts +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +6 -4
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -2
- package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limits.js +21 -1
- package/dest/services/reqresp/reqresp.d.ts +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 +51 -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 +53 -0
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/slow_tx_collection.js +177 -0
- package/dest/services/tx_collection/tx_collection.d.ts +110 -0
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_collection.js +128 -0
- package/dest/services/tx_collection/tx_collection_sink.d.ts +30 -0
- package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_collection_sink.js +111 -0
- package/dest/services/tx_collection/tx_source.d.ts +18 -0
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_source.js +31 -0
- package/dest/services/tx_provider.d.ts +51 -0
- package/dest/services/tx_provider.d.ts.map +1 -0
- package/dest/services/tx_provider.js +217 -0
- package/dest/services/tx_provider_instrumentation.d.ts +16 -0
- package/dest/services/tx_provider_instrumentation.d.ts.map +1 -0
- package/dest/services/tx_provider_instrumentation.js +47 -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 +139 -53
- package/src/client/index.ts +1 -0
- package/src/client/interface.ts +198 -0
- package/src/client/p2p_client.ts +484 -348
- 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 +266 -67
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +174 -35
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +156 -30
- package/src/mem_pools/attestation_pool/mocks.ts +13 -12
- package/src/mem_pools/instrumentation.ts +70 -40
- package/src/mem_pools/interface.ts +2 -4
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +555 -110
- package/src/mem_pools/tx_pool/memory_tx_pool.ts +160 -46
- package/src/mem_pools/tx_pool/priority.ts +1 -1
- package/src/mem_pools/tx_pool/tx_pool.ts +69 -9
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +224 -35
- 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 +5 -5
- 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 +110 -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 +59 -22
- 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 +47 -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 +81 -6
- package/src/services/index.ts +4 -0
- package/src/services/libp2p/instrumentation.ts +167 -0
- package/src/services/libp2p/libp2p_service.ts +865 -298
- 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 +92 -37
- package/src/services/reqresp/metrics.ts +4 -1
- package/src/services/reqresp/protocols/auth.ts +83 -0
- package/src/services/reqresp/protocols/block.ts +26 -4
- package/src/services/reqresp/protocols/block_txs/bitvector.ts +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 +118 -5
- package/src/services/reqresp/protocols/tx.ts +36 -8
- package/src/services/reqresp/rate-limiter/rate_limiter.ts +12 -3
- package/src/services/reqresp/rate-limiter/rate_limits.ts +21 -1
- package/src/services/reqresp/reqresp.ts +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 +341 -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 +216 -0
- package/src/services/tx_collection/tx_collection_sink.ts +129 -0
- package/src/services/tx_collection/tx_source.ts +37 -0
- package/src/services/tx_provider.ts +229 -0
- package/src/services/tx_provider_instrumentation.ts +61 -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 +87 -36
- 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,5 @@
|
|
|
1
|
+
import { AbortError } from '@aztec/foundation/error';
|
|
1
2
|
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
-
import { SerialQueue } from '@aztec/foundation/queue';
|
|
3
3
|
const MAX_SAMPLE_ATTEMPTS = 4;
|
|
4
4
|
export class RandomSampler {
|
|
5
5
|
random(max) {
|
|
@@ -7,43 +7,40 @@ export class RandomSampler {
|
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
|
-
* A class that samples peers from the libp2p node and returns a peer that we don't already have a connection open to.
|
|
10
|
+
* A class that samples peers from the libp2p node and returns a peer that we don't already have a reqresp connection open to.
|
|
11
11
|
* If we already have a connection open, we try to sample a different peer.
|
|
12
12
|
* We do this MAX_SAMPLE_ATTEMPTS times, if we still don't find a peer we just go for it.
|
|
13
13
|
*
|
|
14
14
|
* @dev Close must always be called on connections, else memory leak
|
|
15
15
|
*/ export class ConnectionSampler {
|
|
16
16
|
libp2p;
|
|
17
|
-
cleanupIntervalMs;
|
|
18
17
|
sampler;
|
|
19
18
|
logger;
|
|
19
|
+
opts;
|
|
20
20
|
cleanupInterval;
|
|
21
|
-
|
|
21
|
+
// Map from stringified peer id to number of active connections
|
|
22
22
|
activeConnectionsCount;
|
|
23
|
+
// eslint-disable-next-line aztec-custom/no-non-primitive-in-collections
|
|
23
24
|
streams;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
constructor(libp2p, cleanupIntervalMs = 60000, sampler = new RandomSampler()){
|
|
25
|
+
abortOnStop;
|
|
26
|
+
constructor(libp2p, sampler, logger = createLogger('p2p:reqresp:connection-sampler'), opts = {}){
|
|
27
27
|
this.libp2p = libp2p;
|
|
28
|
-
this.cleanupIntervalMs = cleanupIntervalMs;
|
|
29
28
|
this.sampler = sampler;
|
|
30
|
-
this.logger =
|
|
31
|
-
this.
|
|
29
|
+
this.logger = logger;
|
|
30
|
+
this.opts = opts;
|
|
32
31
|
this.activeConnectionsCount = new Map();
|
|
33
|
-
this.streams = new
|
|
34
|
-
this.
|
|
35
|
-
this.cleanupInterval = setInterval(()=>void this.cleanupStaleConnections(), this.cleanupIntervalMs);
|
|
36
|
-
this.dialQueue.start();
|
|
32
|
+
this.streams = new Set();
|
|
33
|
+
this.abortOnStop = new AbortController();
|
|
34
|
+
this.cleanupInterval = setInterval(()=>void this.cleanupStaleConnections(), this.opts.cleanupIntervalMs ?? 60_000);
|
|
37
35
|
}
|
|
38
36
|
/**
|
|
39
37
|
* Stops the cleanup job and closes all active connections
|
|
40
38
|
*/ async stop() {
|
|
41
39
|
this.logger.info('Stopping connection sampler');
|
|
40
|
+
this.abortOnStop.abort(new AbortError('Connection sampler stopped'));
|
|
42
41
|
clearInterval(this.cleanupInterval);
|
|
43
|
-
this.abortController.abort();
|
|
44
|
-
await this.dialQueue.end();
|
|
45
42
|
// Close all active streams
|
|
46
|
-
const closePromises = Array.from(this.streams.
|
|
43
|
+
const closePromises = Array.from(this.streams.values()).map((stream)=>this.close(stream));
|
|
47
44
|
await Promise.all(closePromises);
|
|
48
45
|
this.logger.info('Connection sampler stopped');
|
|
49
46
|
}
|
|
@@ -55,56 +52,102 @@ export class RandomSampler {
|
|
|
55
52
|
*/ getPeer(excluding) {
|
|
56
53
|
// In libp2p getPeers performs a shallow copy, so this array can be sliced from safetly
|
|
57
54
|
const peers = this.libp2p.getPeers();
|
|
55
|
+
const { peer } = this.getPeerFromList(peers, excluding);
|
|
56
|
+
return peer;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Samples a peer from a list of peers, excluding those that have active (reqresp) connections or are in the exclusion list
|
|
60
|
+
*
|
|
61
|
+
* @param peers - The list of peers to sample from
|
|
62
|
+
* @param excluding - The peers to exclude from the sampling
|
|
63
|
+
* @returns - A peer from the list, or undefined if no peers are available,
|
|
64
|
+
* - a boolean indicating if the peer has active connections, and
|
|
65
|
+
* - all sampled peers - to enable optional resampling
|
|
66
|
+
*
|
|
67
|
+
* @dev The provided list peers, should be mutated by this function. This allows batch sampling
|
|
68
|
+
* to be performed without making extra copies of the list.
|
|
69
|
+
*/ getPeerFromList(peers, excluding) {
|
|
58
70
|
if (peers.length === 0) {
|
|
59
|
-
return
|
|
71
|
+
return {
|
|
72
|
+
peer: undefined,
|
|
73
|
+
sampledPeers: []
|
|
74
|
+
};
|
|
60
75
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
76
|
+
const sampledPeers = [];
|
|
77
|
+
// Try to find a peer that has no active connections and is not in the exclusion list
|
|
78
|
+
for(let attempts = 0; attempts < MAX_SAMPLE_ATTEMPTS && peers.length > 0; attempts++){
|
|
79
|
+
const randomIndex = this.sampler.random(peers.length);
|
|
80
|
+
const peer = peers[randomIndex];
|
|
81
|
+
const hasActiveConnections = (this.activeConnectionsCount.get(peer.toString()) ?? 0) > 0;
|
|
82
|
+
const isExcluded = excluding?.get(peer.toString()) ?? false;
|
|
83
|
+
// Remove this peer from consideration
|
|
67
84
|
peers.splice(randomIndex, 1);
|
|
68
|
-
|
|
69
|
-
|
|
85
|
+
// If peer is suitable (no active connections and not excluded), return it
|
|
86
|
+
if (!hasActiveConnections && !isExcluded) {
|
|
87
|
+
this.logger.trace('Sampled peer', {
|
|
88
|
+
attempts,
|
|
89
|
+
peer
|
|
90
|
+
});
|
|
91
|
+
return {
|
|
92
|
+
peer,
|
|
93
|
+
sampledPeers
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
// Keep track of peers that have active reqresp channels, batch sampling will use these to resample
|
|
97
|
+
sampledPeers.push(peer);
|
|
70
98
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
99
|
+
// If we've exhausted our attempts or peers list is empty, return the last peer if available
|
|
100
|
+
const lastPeer = peers.length > 0 ? peers[this.sampler.random(peers.length)] : undefined;
|
|
101
|
+
this.logger.trace('Sampled peer', {
|
|
102
|
+
attempts: MAX_SAMPLE_ATTEMPTS,
|
|
103
|
+
peer: lastPeer?.toString()
|
|
74
104
|
});
|
|
75
|
-
return
|
|
105
|
+
return {
|
|
106
|
+
peer: lastPeer,
|
|
107
|
+
sampledPeers
|
|
108
|
+
};
|
|
76
109
|
}
|
|
77
110
|
/**
|
|
78
111
|
* Samples a batch of unique peers from the libp2p node, prioritizing peers without active connections
|
|
79
112
|
*
|
|
80
113
|
* @param numberToSample - The number of peers to sample
|
|
114
|
+
* @param excluding - The peers to exclude from the sampling
|
|
81
115
|
* @returns Array of unique sampled peers, prioritizing those without active connections
|
|
82
|
-
*/ samplePeersBatch(numberToSample) {
|
|
116
|
+
*/ samplePeersBatch(numberToSample, excluding) {
|
|
83
117
|
const peers = this.libp2p.getPeers();
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
118
|
+
this.logger.debug('Sampling peers batch', {
|
|
119
|
+
numberToSample,
|
|
120
|
+
peers
|
|
121
|
+
});
|
|
122
|
+
// Only sample as many peers as we have available
|
|
123
|
+
numberToSample = Math.min(numberToSample, peers.length);
|
|
124
|
+
const batch = [];
|
|
125
|
+
// eslint-disable-next-line aztec-custom/no-non-primitive-in-collections
|
|
126
|
+
const withActiveConnections = new Set();
|
|
127
|
+
for(let i = 0; i < numberToSample; i++){
|
|
128
|
+
const { peer, sampledPeers } = this.getPeerFromList(peers, excluding);
|
|
129
|
+
if (peer) {
|
|
130
|
+
batch.push(peer);
|
|
131
|
+
}
|
|
132
|
+
if (sampledPeers.length > 0) {
|
|
133
|
+
sampledPeers.forEach((peer)=>withActiveConnections.add(peer));
|
|
94
134
|
}
|
|
95
135
|
}
|
|
136
|
+
const lengthWithoutConnections = batch.length;
|
|
96
137
|
// If we still need more peers, sample from those with connections
|
|
97
|
-
while(
|
|
98
|
-
const randomIndex = this.sampler.random(
|
|
99
|
-
const
|
|
100
|
-
|
|
138
|
+
while(batch.length < numberToSample && withActiveConnections.size > 0){
|
|
139
|
+
const randomIndex = this.sampler.random(withActiveConnections.size);
|
|
140
|
+
const peer = Array.from(withActiveConnections)[randomIndex];
|
|
141
|
+
withActiveConnections.delete(peer);
|
|
142
|
+
batch.push(peer);
|
|
101
143
|
}
|
|
102
|
-
this.logger.trace(
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
144
|
+
this.logger.trace('Batch sampled peers', {
|
|
145
|
+
length: batch.length,
|
|
146
|
+
peers: batch,
|
|
147
|
+
withoutConnections: lengthWithoutConnections,
|
|
148
|
+
withConnections: numberToSample - lengthWithoutConnections
|
|
106
149
|
});
|
|
107
|
-
return
|
|
150
|
+
return batch;
|
|
108
151
|
}
|
|
109
152
|
// Set of passthrough functions to keep track of active connections
|
|
110
153
|
/**
|
|
@@ -112,51 +155,60 @@ export class RandomSampler {
|
|
|
112
155
|
*
|
|
113
156
|
* @param peerId - The peer id
|
|
114
157
|
* @param protocol - The protocol
|
|
158
|
+
* @param timeout - Abort connection if it takes too long
|
|
115
159
|
* @returns The stream
|
|
116
|
-
*/ async dialProtocol(peerId, protocol) {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
160
|
+
*/ async dialProtocol(peerId, protocol, timeout) {
|
|
161
|
+
const stream = await this.libp2p.dialProtocol(peerId, protocol, {
|
|
162
|
+
signal: AbortSignal.any(timeout ? [
|
|
163
|
+
this.abortOnStop.signal,
|
|
164
|
+
AbortSignal.timeout(timeout)
|
|
165
|
+
] : [
|
|
166
|
+
this.abortOnStop.signal
|
|
167
|
+
]),
|
|
168
|
+
negotiateFully: !this.opts.p2pOptimisticNegotiation
|
|
125
169
|
});
|
|
126
|
-
|
|
127
|
-
this.
|
|
128
|
-
|
|
170
|
+
stream.metadata.peerId = peerId;
|
|
171
|
+
this.streams.add(stream);
|
|
172
|
+
const peerIdString = peerId.toString();
|
|
173
|
+
const updatedActiveConnectionsCount = (this.activeConnectionsCount.get(peerIdString) ?? 0) + 1;
|
|
174
|
+
this.activeConnectionsCount.set(peerIdString, updatedActiveConnectionsCount);
|
|
175
|
+
this.logger.trace('Dialed protocol', {
|
|
129
176
|
streamId: stream.id,
|
|
130
|
-
|
|
177
|
+
protocol,
|
|
178
|
+
peerId: peerIdString,
|
|
131
179
|
activeConnectionsCount: updatedActiveConnectionsCount
|
|
132
180
|
});
|
|
133
181
|
return stream;
|
|
134
182
|
}
|
|
135
183
|
/**
|
|
136
184
|
* Closes a stream and updates the active connections count
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
*/ async close(streamId) {
|
|
185
|
+
*/ async close(stream) {
|
|
186
|
+
let peerId = undefined;
|
|
140
187
|
try {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
188
|
+
peerId = stream.metadata.peerId;
|
|
189
|
+
let updatedActiveConnectionsCount = undefined;
|
|
190
|
+
if (!peerId) {
|
|
191
|
+
this.logger.warn(`Stream ${stream.id} does not have a peerId set`);
|
|
192
|
+
} else {
|
|
193
|
+
updatedActiveConnectionsCount = (this.activeConnectionsCount.get(peerId.toString()) ?? 1) - 1;
|
|
194
|
+
this.activeConnectionsCount.set(peerId.toString(), updatedActiveConnectionsCount);
|
|
145
195
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
this.logger.trace(`Closing connection to peer ${peerId.toString()}`, {
|
|
150
|
-
streamId,
|
|
151
|
-
peerId: peerId.toString(),
|
|
196
|
+
this.logger.trace('Closing connection', {
|
|
197
|
+
streamId: stream.id,
|
|
198
|
+
peerId: peerId?.toString(),
|
|
152
199
|
protocol: stream.protocol,
|
|
153
200
|
activeConnectionsCount: updatedActiveConnectionsCount
|
|
154
201
|
});
|
|
155
|
-
|
|
202
|
+
if (!this.streams.has(stream)) {
|
|
203
|
+
this.logger.debug(`Stream ${stream.id} is not in the active streams set`);
|
|
204
|
+
}
|
|
205
|
+
await stream.close();
|
|
156
206
|
} catch (error) {
|
|
157
|
-
this.logger.error(`Failed to close connection to peer with stream id ${
|
|
207
|
+
this.logger.error(`Failed to close connection to peer ${peerId ?? 'unknown'} with stream id ${stream.id}`, error);
|
|
208
|
+
// graceful close failed, abort the stream
|
|
209
|
+
stream.abort(new AbortError('Failed to close stream gracefully'));
|
|
158
210
|
} finally{
|
|
159
|
-
this.streams.delete(
|
|
211
|
+
this.streams.delete(stream);
|
|
160
212
|
}
|
|
161
213
|
}
|
|
162
214
|
/**
|
|
@@ -164,15 +216,21 @@ export class RandomSampler {
|
|
|
164
216
|
*/ async cleanupStaleConnections() {
|
|
165
217
|
// Look for streams without anything in the activeConnectionsCount
|
|
166
218
|
// If we find anything, close the stream
|
|
167
|
-
for (const
|
|
219
|
+
for (const stream of this.streams.values()){
|
|
168
220
|
try {
|
|
169
221
|
// Check if we have lost track of accounting
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
this.logger.
|
|
222
|
+
const peerId = stream.metadata.peerId;
|
|
223
|
+
if (!peerId) {
|
|
224
|
+
this.logger.warn(`Stream ${stream.id} does not have a peerId set`);
|
|
225
|
+
} else if (this.activeConnectionsCount.get(peerId.toString()) === 0) {
|
|
226
|
+
await this.close(stream);
|
|
227
|
+
this.logger.debug('Cleaned up stale connection', {
|
|
228
|
+
streamId: stream.id,
|
|
229
|
+
peerId: peerId.toString()
|
|
230
|
+
});
|
|
173
231
|
}
|
|
174
232
|
} catch (error) {
|
|
175
|
-
this.logger.error(`Error cleaning up stale connection ${
|
|
233
|
+
this.logger.error(`Error cleaning up stale connection to peer ${stream.metadata.peerId?.toString() ?? 'unknown'} stream ${stream.id}`, {
|
|
176
234
|
error
|
|
177
235
|
});
|
|
178
236
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
export {};
|
|
2
1
|
/**
|
|
3
2
|
* Request Response protocol allows nodes to ask their peers for data
|
|
4
3
|
* that they missed via the traditional gossip protocol.
|
|
5
4
|
*/
|
|
6
|
-
|
|
5
|
+
export * from './protocols/index.js';
|
|
6
|
+
export * from './interface.js';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxnQkFBZ0IsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/reqresp/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/reqresp/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC"}
|
|
@@ -1,18 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import { L2Block } from '@aztec/stdlib/block';
|
|
3
|
+
import { TxArray, TxHashArray } from '@aztec/stdlib/tx';
|
|
3
4
|
import type { PeerId } from '@libp2p/interface';
|
|
5
|
+
import type { P2PReqRespConfig } from './config.js';
|
|
6
|
+
import { AuthRequest, AuthResponse } from './protocols/auth.js';
|
|
7
|
+
import { BlockTxsRequest, BlockTxsResponse } from './protocols/block_txs/block_txs_reqresp.js';
|
|
8
|
+
import { StatusMessage } from './protocols/status.js';
|
|
4
9
|
import type { ReqRespStatus } from './status.js';
|
|
5
|
-
export declare const PING_PROTOCOL = "/aztec/req/ping/
|
|
6
|
-
export declare const STATUS_PROTOCOL = "/aztec/req/status/
|
|
7
|
-
export declare const GOODBYE_PROTOCOL = "/aztec/req/goodbye/
|
|
8
|
-
export declare const TX_REQ_PROTOCOL = "/aztec/req/tx/
|
|
9
|
-
export declare const BLOCK_REQ_PROTOCOL = "/aztec/req/block/
|
|
10
|
+
export declare const PING_PROTOCOL = "/aztec/req/ping/1.0.0";
|
|
11
|
+
export declare const STATUS_PROTOCOL = "/aztec/req/status/1.0.0";
|
|
12
|
+
export declare const GOODBYE_PROTOCOL = "/aztec/req/goodbye/1.0.0";
|
|
13
|
+
export declare const TX_REQ_PROTOCOL = "/aztec/req/tx/1.0.0";
|
|
14
|
+
export declare const BLOCK_REQ_PROTOCOL = "/aztec/req/block/1.0.0";
|
|
15
|
+
export declare const AUTH_PROTOCOL = "/aztec/req/auth/1.0.0";
|
|
16
|
+
export declare const BLOCK_TXS_REQ_PROTOCOL = "/aztec/req/block_txs/1.0.0";
|
|
10
17
|
export declare enum ReqRespSubProtocol {
|
|
11
|
-
PING = "/aztec/req/ping/
|
|
12
|
-
STATUS = "/aztec/req/status/
|
|
13
|
-
GOODBYE = "/aztec/req/goodbye/
|
|
14
|
-
TX = "/aztec/req/tx/
|
|
15
|
-
BLOCK = "/aztec/req/block/
|
|
18
|
+
PING = "/aztec/req/ping/1.0.0",
|
|
19
|
+
STATUS = "/aztec/req/status/1.0.0",
|
|
20
|
+
GOODBYE = "/aztec/req/goodbye/1.0.0",
|
|
21
|
+
TX = "/aztec/req/tx/1.0.0",
|
|
22
|
+
BLOCK = "/aztec/req/block/1.0.0",
|
|
23
|
+
AUTH = "/aztec/req/auth/1.0.0",
|
|
24
|
+
BLOCK_TXS = "/aztec/req/block_txs/1.0.0"
|
|
16
25
|
}
|
|
17
26
|
/**
|
|
18
27
|
* A handler for a sub protocol
|
|
@@ -25,12 +34,15 @@ export type ReqRespSubProtocolHandler = (peerId: PeerId, msg: Buffer) => Promise
|
|
|
25
34
|
export type ReqRespSubProtocolRateLimits = Record<ReqRespSubProtocol, ProtocolRateLimitQuota>;
|
|
26
35
|
/**
|
|
27
36
|
* The response from the ReqResp protocol
|
|
28
|
-
* Consists of a status
|
|
37
|
+
* Consists of a status
|
|
38
|
+
* And, optionally, a data buffer (in case status is SUCCESS)
|
|
29
39
|
*/
|
|
30
|
-
export
|
|
31
|
-
status: ReqRespStatus;
|
|
40
|
+
export type ReqRespResponse = {
|
|
41
|
+
status: ReqRespStatus.SUCCESS;
|
|
32
42
|
data: Buffer;
|
|
33
|
-
}
|
|
43
|
+
} | {
|
|
44
|
+
status: Exclude<ReqRespStatus, ReqRespStatus.SUCCESS>;
|
|
45
|
+
};
|
|
34
46
|
/**
|
|
35
47
|
* A rate limit quota
|
|
36
48
|
*/
|
|
@@ -64,17 +76,16 @@ export type ReqRespSubProtocolValidators = {
|
|
|
64
76
|
[S in ReqRespSubProtocol]: ResponseValidator<any, any>;
|
|
65
77
|
};
|
|
66
78
|
export declare const DEFAULT_SUB_PROTOCOL_VALIDATORS: ReqRespSubProtocolValidators;
|
|
79
|
+
export declare class ValidationError extends Error {
|
|
80
|
+
constructor(message: string);
|
|
81
|
+
}
|
|
67
82
|
/**
|
|
68
83
|
* Sub protocol map determines the request and response types for each
|
|
69
84
|
* Req Resp protocol
|
|
70
85
|
*/
|
|
71
86
|
export type SubProtocolMap = {
|
|
72
|
-
[S in ReqRespSubProtocol]: RequestResponsePair<
|
|
87
|
+
[S in ReqRespSubProtocol]: RequestResponsePair<InstanceType<(typeof subProtocolMap)[S]['request']>, InstanceType<(typeof subProtocolMap)[S]['response']>>;
|
|
73
88
|
};
|
|
74
|
-
/**
|
|
75
|
-
* Default sub protocol handlers - this SHOULD be overwritten by the service,
|
|
76
|
-
*/
|
|
77
|
-
export declare const DEFAULT_SUB_PROTOCOL_HANDLERS: ReqRespSubProtocolHandlers;
|
|
78
89
|
/**
|
|
79
90
|
* The Request Response Pair interface defines the methods that each
|
|
80
91
|
* request response pair must implement
|
|
@@ -94,6 +105,7 @@ interface RequestResponsePair<Req extends {
|
|
|
94
105
|
fromBuffer(buffer: Buffer): Res;
|
|
95
106
|
};
|
|
96
107
|
}
|
|
108
|
+
export declare function responseFromBuffer<P extends ReqRespSubProtocol>(proto: P, buffer: Buffer): InstanceType<(typeof subProtocolMap)[P]['response']>;
|
|
97
109
|
/**
|
|
98
110
|
* RequestableBuffer is a wrapper around a buffer that allows it to be
|
|
99
111
|
* used in generic request response protocols
|
|
@@ -103,7 +115,7 @@ interface RequestResponsePair<Req extends {
|
|
|
103
115
|
export declare class RequestableBuffer {
|
|
104
116
|
buffer: Buffer;
|
|
105
117
|
constructor(buffer: Buffer);
|
|
106
|
-
toBuffer(): Buffer
|
|
118
|
+
toBuffer(): Buffer<ArrayBufferLike>;
|
|
107
119
|
static fromBuffer(buffer: Buffer): RequestableBuffer;
|
|
108
120
|
}
|
|
109
121
|
/**
|
|
@@ -111,6 +123,43 @@ export declare class RequestableBuffer {
|
|
|
111
123
|
* This defines the request and response types for each sub protocol, used primarily
|
|
112
124
|
* as a type rather than an object
|
|
113
125
|
*/
|
|
114
|
-
export declare const subProtocolMap:
|
|
126
|
+
export declare const subProtocolMap: {
|
|
127
|
+
"/aztec/req/ping/1.0.0": {
|
|
128
|
+
request: typeof RequestableBuffer;
|
|
129
|
+
response: typeof RequestableBuffer;
|
|
130
|
+
};
|
|
131
|
+
"/aztec/req/status/1.0.0": {
|
|
132
|
+
request: typeof StatusMessage;
|
|
133
|
+
response: typeof StatusMessage;
|
|
134
|
+
};
|
|
135
|
+
"/aztec/req/tx/1.0.0": {
|
|
136
|
+
request: typeof TxHashArray;
|
|
137
|
+
response: typeof TxArray;
|
|
138
|
+
};
|
|
139
|
+
"/aztec/req/goodbye/1.0.0": {
|
|
140
|
+
request: typeof RequestableBuffer;
|
|
141
|
+
response: typeof RequestableBuffer;
|
|
142
|
+
};
|
|
143
|
+
"/aztec/req/block/1.0.0": {
|
|
144
|
+
request: typeof Fr;
|
|
145
|
+
response: typeof L2Block;
|
|
146
|
+
};
|
|
147
|
+
"/aztec/req/auth/1.0.0": {
|
|
148
|
+
request: typeof AuthRequest;
|
|
149
|
+
response: typeof AuthResponse;
|
|
150
|
+
};
|
|
151
|
+
"/aztec/req/block_txs/1.0.0": {
|
|
152
|
+
request: typeof BlockTxsRequest;
|
|
153
|
+
response: typeof BlockTxsResponse;
|
|
154
|
+
};
|
|
155
|
+
};
|
|
156
|
+
export interface ReqRespInterface {
|
|
157
|
+
start(subProtocolHandlers: Partial<ReqRespSubProtocolHandlers>, subProtocolValidators: ReqRespSubProtocolValidators): Promise<void>;
|
|
158
|
+
addSubProtocol(subProtocol: ReqRespSubProtocol, handler: ReqRespSubProtocolHandler, validator?: ReqRespSubProtocolValidators[ReqRespSubProtocol]): Promise<void>;
|
|
159
|
+
stop(): Promise<void>;
|
|
160
|
+
sendBatchRequest<SubProtocol extends ReqRespSubProtocol>(subProtocol: SubProtocol, requests: InstanceType<SubProtocolMap[SubProtocol]['request']>[], pinnedPeer: PeerId | undefined, timeoutMs?: number, maxPeers?: number, maxRetryAttempts?: number): Promise<InstanceType<SubProtocolMap[SubProtocol]['response']>[]>;
|
|
161
|
+
sendRequestToPeer(peerId: PeerId, subProtocol: ReqRespSubProtocol, payload: Buffer, dialTimeout?: number): Promise<ReqRespResponse>;
|
|
162
|
+
updateConfig(config: Partial<P2PReqRespConfig>): void;
|
|
163
|
+
}
|
|
115
164
|
export {};
|
|
116
|
-
//# sourceMappingURL=
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvcmVxcmVzcC9pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWhELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQy9GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFLakQsZUFBTyxNQUFNLGFBQWEsMEJBQTBCLENBQUM7QUFDckQsZUFBTyxNQUFNLGVBQWUsNEJBQTRCLENBQUM7QUFDekQsZUFBTyxNQUFNLGdCQUFnQiw2QkFBNkIsQ0FBQztBQUMzRCxlQUFPLE1BQU0sZUFBZSx3QkFBd0IsQ0FBQztBQUNyRCxlQUFPLE1BQU0sa0JBQWtCLDJCQUEyQixDQUFDO0FBQzNELGVBQU8sTUFBTSxhQUFhLDBCQUEwQixDQUFDO0FBQ3JELGVBQU8sTUFBTSxzQkFBc0IsK0JBQStCLENBQUM7QUFFbkUsb0JBQVksa0JBQWtCO0lBQzVCLElBQUksMEJBQWdCO0lBQ3BCLE1BQU0sNEJBQWtCO0lBQ3hCLE9BQU8sNkJBQW1CO0lBQzFCLEVBQUUsd0JBQWtCO0lBQ3BCLEtB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/services/reqresp/interface.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/services/reqresp/interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,26 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import { L2Block } from '@aztec/stdlib/block';
|
|
3
|
-
import {
|
|
3
|
+
import { TxArray, TxHashArray } from '@aztec/stdlib/tx';
|
|
4
|
+
import { AuthRequest, AuthResponse } from './protocols/auth.js';
|
|
5
|
+
import { BlockTxsRequest, BlockTxsResponse } from './protocols/block_txs/block_txs_reqresp.js';
|
|
6
|
+
import { StatusMessage } from './protocols/status.js';
|
|
4
7
|
/*
|
|
5
8
|
* Request Response Sub Protocols
|
|
6
|
-
*/ export const PING_PROTOCOL = '/aztec/req/ping/
|
|
7
|
-
export const STATUS_PROTOCOL = '/aztec/req/status/
|
|
8
|
-
export const GOODBYE_PROTOCOL = '/aztec/req/goodbye/
|
|
9
|
-
export const TX_REQ_PROTOCOL = '/aztec/req/tx/
|
|
10
|
-
export const BLOCK_REQ_PROTOCOL = '/aztec/req/block/
|
|
9
|
+
*/ export const PING_PROTOCOL = '/aztec/req/ping/1.0.0';
|
|
10
|
+
export const STATUS_PROTOCOL = '/aztec/req/status/1.0.0';
|
|
11
|
+
export const GOODBYE_PROTOCOL = '/aztec/req/goodbye/1.0.0';
|
|
12
|
+
export const TX_REQ_PROTOCOL = '/aztec/req/tx/1.0.0';
|
|
13
|
+
export const BLOCK_REQ_PROTOCOL = '/aztec/req/block/1.0.0';
|
|
14
|
+
export const AUTH_PROTOCOL = '/aztec/req/auth/1.0.0';
|
|
15
|
+
export const BLOCK_TXS_REQ_PROTOCOL = '/aztec/req/block_txs/1.0.0';
|
|
11
16
|
export var ReqRespSubProtocol = /*#__PURE__*/ function(ReqRespSubProtocol) {
|
|
12
17
|
ReqRespSubProtocol[ReqRespSubProtocol["PING"] = PING_PROTOCOL] = "PING";
|
|
13
18
|
ReqRespSubProtocol[ReqRespSubProtocol["STATUS"] = STATUS_PROTOCOL] = "STATUS";
|
|
14
19
|
ReqRespSubProtocol[ReqRespSubProtocol["GOODBYE"] = GOODBYE_PROTOCOL] = "GOODBYE";
|
|
15
20
|
ReqRespSubProtocol[ReqRespSubProtocol["TX"] = TX_REQ_PROTOCOL] = "TX";
|
|
16
21
|
ReqRespSubProtocol[ReqRespSubProtocol["BLOCK"] = BLOCK_REQ_PROTOCOL] = "BLOCK";
|
|
22
|
+
ReqRespSubProtocol[ReqRespSubProtocol["AUTH"] = AUTH_PROTOCOL] = "AUTH";
|
|
23
|
+
ReqRespSubProtocol[ReqRespSubProtocol["BLOCK_TXS"] = BLOCK_TXS_REQ_PROTOCOL] = "BLOCK_TXS";
|
|
17
24
|
return ReqRespSubProtocol;
|
|
18
25
|
}({});
|
|
19
26
|
export const noopValidator = ()=>Promise.resolve(true);
|
|
@@ -22,23 +29,27 @@ export const DEFAULT_SUB_PROTOCOL_VALIDATORS = {
|
|
|
22
29
|
[ReqRespSubProtocol.STATUS]: noopValidator,
|
|
23
30
|
[ReqRespSubProtocol.TX]: noopValidator,
|
|
24
31
|
[ReqRespSubProtocol.GOODBYE]: noopValidator,
|
|
25
|
-
[ReqRespSubProtocol.BLOCK]: noopValidator
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
* Default handler for unimplemented sub protocols, this SHOULD be overwritten
|
|
29
|
-
* by the service, but is provided as a fallback
|
|
30
|
-
*/ const defaultHandler = (_msg)=>{
|
|
31
|
-
return Promise.resolve(Buffer.from('unimplemented'));
|
|
32
|
-
};
|
|
33
|
-
/**
|
|
34
|
-
* Default sub protocol handlers - this SHOULD be overwritten by the service,
|
|
35
|
-
*/ export const DEFAULT_SUB_PROTOCOL_HANDLERS = {
|
|
36
|
-
[ReqRespSubProtocol.PING]: defaultHandler,
|
|
37
|
-
[ReqRespSubProtocol.STATUS]: defaultHandler,
|
|
38
|
-
[ReqRespSubProtocol.TX]: defaultHandler,
|
|
39
|
-
[ReqRespSubProtocol.GOODBYE]: defaultHandler,
|
|
40
|
-
[ReqRespSubProtocol.BLOCK]: defaultHandler
|
|
32
|
+
[ReqRespSubProtocol.BLOCK]: noopValidator,
|
|
33
|
+
[ReqRespSubProtocol.AUTH]: noopValidator,
|
|
34
|
+
[ReqRespSubProtocol.BLOCK_TXS]: noopValidator
|
|
41
35
|
};
|
|
36
|
+
/*
|
|
37
|
+
* Helper class to sub-protocol validation error*/ export class ValidationError extends Error {
|
|
38
|
+
constructor(message){
|
|
39
|
+
super(message);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/*
|
|
43
|
+
* Small helper function which parses buffer into specific response type
|
|
44
|
+
* It is needed to make TypeScript happy, as it cannot infer the type from the buffer
|
|
45
|
+
*
|
|
46
|
+
* @param proto - The sub protocol to parse the response for
|
|
47
|
+
* @param buffer - The buffer to parse
|
|
48
|
+
*
|
|
49
|
+
* @returns - The parsed response object
|
|
50
|
+
* */ export function responseFromBuffer(proto, buffer) {
|
|
51
|
+
return subProtocolMap[proto].response.fromBuffer(buffer);
|
|
52
|
+
}
|
|
42
53
|
/**
|
|
43
54
|
* RequestableBuffer is a wrapper around a buffer that allows it to be
|
|
44
55
|
* used in generic request response protocols
|
|
@@ -66,12 +77,12 @@ export const DEFAULT_SUB_PROTOCOL_VALIDATORS = {
|
|
|
66
77
|
response: RequestableBuffer
|
|
67
78
|
},
|
|
68
79
|
[ReqRespSubProtocol.STATUS]: {
|
|
69
|
-
request:
|
|
70
|
-
response:
|
|
80
|
+
request: StatusMessage,
|
|
81
|
+
response: StatusMessage
|
|
71
82
|
},
|
|
72
83
|
[ReqRespSubProtocol.TX]: {
|
|
73
|
-
request:
|
|
74
|
-
response:
|
|
84
|
+
request: TxHashArray,
|
|
85
|
+
response: TxArray
|
|
75
86
|
},
|
|
76
87
|
[ReqRespSubProtocol.GOODBYE]: {
|
|
77
88
|
request: RequestableBuffer,
|
|
@@ -80,5 +91,13 @@ export const DEFAULT_SUB_PROTOCOL_VALIDATORS = {
|
|
|
80
91
|
[ReqRespSubProtocol.BLOCK]: {
|
|
81
92
|
request: Fr,
|
|
82
93
|
response: L2Block
|
|
94
|
+
},
|
|
95
|
+
[ReqRespSubProtocol.AUTH]: {
|
|
96
|
+
request: AuthRequest,
|
|
97
|
+
response: AuthResponse
|
|
98
|
+
},
|
|
99
|
+
[ReqRespSubProtocol.BLOCK_TXS]: {
|
|
100
|
+
request: BlockTxsRequest,
|
|
101
|
+
response: BlockTxsResponse
|
|
83
102
|
}
|
|
84
103
|
};
|
|
@@ -12,4 +12,4 @@ export declare class ReqRespMetrics {
|
|
|
12
12
|
recordRequestError(protocol: string): void;
|
|
13
13
|
recordResponseError(protocol: string): void;
|
|
14
14
|
}
|
|
15
|
-
//# sourceMappingURL=
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3JlcXJlc3AvbWV0cmljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFpQixNQUFNLHlCQUF5QixDQUFDO0FBRXRGLHFCQUFhLGNBQWM7SUFVdkIsUUFBUSxDQUFDLGVBQWUsRUFBRSxlQUFlO0lBVDNDLFNBQWdCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFFL0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQWdCO0lBQzdDLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQWdCO0lBRWpELE9BQU8sQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQWdCO0lBQ3ZELE9BQU8sQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQWdCO0lBRXRELFlBQ1csZUFBZSxFQUFFLGVBQWUsRUFDekMsSUFBSSxTQUFZLEVBMkJqQjtJQUVNLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxNQUFNLFFBRXhDO0lBRU0scUJBQXFCLENBQUMsUUFBUSxFQUFFLE1BQU0sUUFFNUM7SUFFTSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxRQUV6QztJQUVNLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxNQUFNLFFBRTFDO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/services/reqresp/metrics.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAiB,MAAM,yBAAyB,CAAC;AAEtF,qBAAa,cAAc;
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/services/reqresp/metrics.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAiB,MAAM,yBAAyB,CAAC;AAEtF,qBAAa,cAAc;IAUvB,QAAQ,CAAC,eAAe,EAAE,eAAe;IAT3C,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;IAC7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgB;IAEjD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAgB;IACvD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAgB;IAEtD,YACW,eAAe,EAAE,eAAe,EACzC,IAAI,SAAY,EA2BjB;IAEM,iBAAiB,CAAC,QAAQ,EAAE,MAAM,QAExC;IAEM,qBAAqB,CAAC,QAAQ,EAAE,MAAM,QAE5C;IAEM,kBAAkB,CAAC,QAAQ,EAAE,MAAM,QAEzC;IAEM,mBAAmB,CAAC,QAAQ,EAAE,MAAM,QAE1C;CACF"}
|