@aztec/p2p 0.0.0-test.1 → 0.0.1-commit.1142ef1
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 +170 -0
- package/dest/client/interface.d.ts.map +1 -0
- package/dest/client/interface.js +9 -0
- package/dest/client/p2p_client.d.ts +75 -193
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +757 -228
- package/dest/config.d.ts +148 -125
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +180 -34
- package/dest/enr/generate-enr.d.ts +11 -3
- package/dest/enr/generate-enr.d.ts.map +1 -1
- package/dest/enr/generate-enr.js +27 -5
- package/dest/enr/index.d.ts +1 -1
- package/dest/errors/attestation-pool.error.d.ts +7 -0
- package/dest/errors/attestation-pool.error.d.ts.map +1 -0
- package/dest/errors/attestation-pool.error.js +12 -0
- package/dest/errors/reqresp.error.d.ts +1 -1
- package/dest/errors/reqresp.error.d.ts.map +1 -1
- package/dest/index.d.ts +4 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +2 -0
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +104 -25
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +288 -174
- package/dest/mem_pools/attestation_pool/index.d.ts +1 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +29 -11
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +168 -62
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +24 -10
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +133 -82
- package/dest/mem_pools/attestation_pool/mocks.d.ts +232 -11
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +15 -20
- 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 +55 -40
- 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 +70 -16
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +452 -142
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +18 -0
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +56 -0
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +83 -0
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +5 -0
- package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts +15 -0
- package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.js +88 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +17 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +84 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +19 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +76 -0
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +26 -0
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +84 -0
- package/dest/mem_pools/tx_pool/index.d.ts +1 -2
- package/dest/mem_pools/tx_pool/index.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/index.js +0 -1
- package/dest/mem_pools/tx_pool/priority.d.ts +5 -1
- package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/priority.js +7 -2
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +72 -11
- package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +276 -45
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +7 -5
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +48 -10
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +20 -0
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -0
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +64 -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/index.d.ts +2 -2
- package/dest/msg_validators/index.d.ts.map +1 -1
- package/dest/msg_validators/index.js +1 -1
- package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts +10 -0
- package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts.map +1 -0
- package/dest/msg_validators/msg_seen_validator/msg_seen_validator.js +36 -0
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +9 -0
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/block_proposal_validator.js +6 -0
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +9 -0
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +6 -0
- package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
- package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/index.js +3 -0
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -0
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/proposal_validator.js +80 -0
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +23 -0
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +183 -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 +54 -11
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +91 -5
- package/dest/services/encoding.d.ts +26 -7
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +76 -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 +111 -0
- package/dest/services/libp2p/libp2p_service.d.ts +102 -96
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +1307 -301
- 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 +11 -2
- package/dest/services/peer-manager/metrics.d.ts.map +1 -1
- package/dest/services/peer-manager/metrics.js +29 -12
- package/dest/services/peer-manager/peer_manager.d.ts +103 -23
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +551 -82
- package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
- package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_scoring.js +37 -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/metrics.js +5 -21
- package/dest/services/reqresp/protocols/auth.d.ts +43 -0
- package/dest/services/reqresp/protocols/auth.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/auth.js +71 -0
- package/dest/services/reqresp/protocols/block.d.ts +6 -1
- package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block.js +30 -6
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +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 +75 -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 +699 -230
- 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 +37 -20
- 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 +24 -0
- package/dest/services/tx_collection/slow_tx_collection.d.ts +53 -0
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/slow_tx_collection.js +177 -0
- package/dest/services/tx_collection/tx_collection.d.ts +110 -0
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_collection.js +128 -0
- package/dest/services/tx_collection/tx_collection_sink.d.ts +30 -0
- package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_collection_sink.js +111 -0
- package/dest/services/tx_collection/tx_source.d.ts +18 -0
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_source.js +31 -0
- package/dest/services/tx_provider.d.ts +51 -0
- package/dest/services/tx_provider.d.ts.map +1 -0
- package/dest/services/tx_provider.js +219 -0
- package/dest/services/tx_provider_instrumentation.d.ts +16 -0
- package/dest/services/tx_provider_instrumentation.d.ts.map +1 -0
- package/dest/services/tx_provider_instrumentation.js +34 -0
- package/dest/test-helpers/generate-peer-id-private-keys.d.ts +1 -1
- package/dest/test-helpers/get-ports.d.ts +1 -1
- package/dest/test-helpers/get-ports.d.ts.map +1 -1
- package/dest/test-helpers/index.d.ts +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 +124 -35
- 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 +17 -20
- 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 +213 -0
- package/src/client/p2p_client.ts +471 -385
- package/src/config.ts +299 -134
- package/src/enr/generate-enr.ts +39 -6
- package/src/errors/attestation-pool.error.ts +13 -0
- package/src/index.ts +4 -0
- package/src/mem_pools/attestation_pool/attestation_pool.ts +119 -24
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +344 -201
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +233 -72
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +199 -96
- package/src/mem_pools/attestation_pool/mocks.ts +21 -16
- package/src/mem_pools/instrumentation.ts +71 -48
- package/src/mem_pools/interface.ts +2 -4
- package/src/mem_pools/tx_pool/README.md +255 -0
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +537 -155
- package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +71 -0
- package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +93 -0
- package/src/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.ts +108 -0
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +104 -0
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +91 -0
- package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +106 -0
- package/src/mem_pools/tx_pool/index.ts +0 -1
- package/src/mem_pools/tx_pool/priority.ts +9 -2
- package/src/mem_pools/tx_pool/tx_pool.ts +75 -10
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +225 -36
- package/src/msg_validators/attestation_validator/attestation_validator.ts +60 -14
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +88 -0
- package/src/msg_validators/attestation_validator/index.ts +1 -0
- package/src/msg_validators/index.ts +1 -1
- package/src/msg_validators/msg_seen_validator/msg_seen_validator.ts +36 -0
- package/src/msg_validators/proposal_validator/block_proposal_validator.ts +10 -0
- package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +13 -0
- package/src/msg_validators/proposal_validator/index.ts +3 -0
- package/src/msg_validators/proposal_validator/proposal_validator.ts +92 -0
- package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +206 -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 +89 -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 +67 -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 +49 -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 +153 -9
- package/src/services/encoding.ts +83 -6
- package/src/services/index.ts +4 -0
- package/src/services/libp2p/instrumentation.ts +113 -0
- package/src/services/libp2p/libp2p_service.ts +1120 -329
- package/src/services/peer-manager/interface.ts +29 -0
- package/src/services/peer-manager/metrics.ts +38 -12
- package/src/services/peer-manager/peer_manager.ts +657 -80
- package/src/services/peer-manager/peer_scoring.ts +42 -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 +150 -95
- package/src/services/reqresp/index.ts +2 -0
- package/src/services/reqresp/interface.ts +92 -37
- package/src/services/reqresp/metrics.ts +11 -24
- 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 +119 -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 +61 -22
- 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 +26 -0
- package/src/services/tx_collection/slow_tx_collection.ts +233 -0
- package/src/services/tx_collection/tx_collection.ts +216 -0
- package/src/services/tx_collection/tx_collection_sink.ts +129 -0
- package/src/services/tx_collection/tx_source.ts +37 -0
- package/src/services/tx_provider.ts +232 -0
- package/src/services/tx_provider_instrumentation.ts +48 -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 +182 -32
- package/src/testbench/parse_log_file.ts +4 -4
- package/src/testbench/testbench.ts +4 -4
- package/src/testbench/worker_client_manager.ts +23 -24
- package/src/types/index.ts +2 -0
- package/src/util.ts +105 -91
- package/src/versioning.ts +11 -4
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +0 -56
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/memory_tx_pool.js +0 -141
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -8
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +0 -21
- package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
- package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
- package/dest/msg_validators/block_proposal_validator/index.js +0 -1
- package/src/mem_pools/tx_pool/memory_tx_pool.ts +0 -174
- package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -29
- package/src/msg_validators/block_proposal_validator/index.ts +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discV5_service.d.ts","sourceRoot":"","sources":["../../../src/services/discv5/discV5_service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"discV5_service.d.ts","sourceRoot":"","sources":["../../../src/services/discv5/discV5_service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAsB,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEvG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAmC,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,GAAG,EAAe,MAAM,oBAAoB,CAAC;AACtD,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIjD,OAAO,EAAE,KAAK,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAI9E;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAa,YAAW,oBAAoB;IAyB3E,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,MAAM;IA5BhB,0BAA0B;IAC1B,OAAO,CAAC,MAAM,CAAqB;IAEnC,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAc;IAEzB,2BAA2B;IAC3B,OAAO,CAAC,QAAQ,CAAqB;IAErC,OAAO,CAAC,YAAY,CAA8B;IAElD,OAAO,CAAC,oBAAoB,CAAgB;IACrC,iBAAiB,EAAE,GAAG,EAAE,CAAM;IACrC,OAAO,CAAC,eAAe,CAAa;IAEpC,OAAO,CAAC,SAAS,CAAK;IAEtB,OAAO,CAAC,QAAQ,CAId;IAEF,YACU,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACR,cAAc,EAAE,MAAM,EACvC,SAAS,GAAE,eAAsC,EACzC,MAAM,yCAAqC,EACnD,eAAe,GAAE,OAAO,CAAC,oBAAoB,CAAM,EA0EpD;IAED,OAAO,CAAC,kBAAkB;IAQb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAqDlC;IAEY,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiBhD;IAEM,YAAY,IAAI,GAAG,EAAE,CAE3B;IAEM,MAAM,IAAI,GAAG,CAEnB;IAEM,SAAS,IAAI,MAAM,CAEzB;IAEM,SAAS,IAAI,kBAAkB,CAErC;IAEM,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE9C;IAEY,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAWjC;YAEa,UAAU;IAOxB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,WAAW;CA0BpB"}
|
|
@@ -2,13 +2,13 @@ import { createLogger } from '@aztec/foundation/log';
|
|
|
2
2
|
import { sleep } from '@aztec/foundation/sleep';
|
|
3
3
|
import { checkCompressedComponentVersion } from '@aztec/stdlib/versioning';
|
|
4
4
|
import { OtelMetricsAdapter, getTelemetryClient } from '@aztec/telemetry-client';
|
|
5
|
-
import { Discv5 } from '@chainsafe/discv5';
|
|
6
|
-
import { ENR, SignableENR } from '@chainsafe/enr';
|
|
7
5
|
import { multiaddr } from '@multiformats/multiaddr';
|
|
6
|
+
import { Discv5 } from '@nethermindeth/discv5';
|
|
7
|
+
import { ENR } from '@nethermindeth/enr';
|
|
8
8
|
import EventEmitter from 'events';
|
|
9
|
+
import { createNodeENR } from '../../enr/generate-enr.js';
|
|
9
10
|
import { AZTEC_ENR_KEY, Discv5Event, PeerEvent } from '../../types/index.js';
|
|
10
11
|
import { convertToMultiaddr } from '../../util.js';
|
|
11
|
-
import { setAztecEnrKey } from '../../versioning.js';
|
|
12
12
|
import { PeerDiscoveryState } from '../service.js';
|
|
13
13
|
const delayBeforeStart = 2000; // 2sec
|
|
14
14
|
/**
|
|
@@ -16,46 +16,52 @@ const delayBeforeStart = 2000; // 2sec
|
|
|
16
16
|
*/ export class DiscV5Service extends EventEmitter {
|
|
17
17
|
peerId;
|
|
18
18
|
config;
|
|
19
|
+
packageVersion;
|
|
19
20
|
logger;
|
|
20
21
|
/** The Discv5 instance */ discv5;
|
|
21
22
|
/** This instance's ENR */ enr;
|
|
22
23
|
/** Version identifiers. */ versions;
|
|
23
|
-
/** UDP listen addr */ listenMultiAddrUdp;
|
|
24
24
|
currentState;
|
|
25
|
-
bootstrapNodes;
|
|
26
25
|
bootstrapNodePeerIds;
|
|
27
26
|
bootstrapNodeEnrs;
|
|
27
|
+
trustedPeerEnrs;
|
|
28
28
|
startTime;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
this.
|
|
38
|
-
|
|
39
|
-
|
|
29
|
+
handlers;
|
|
30
|
+
constructor(peerId, config, packageVersion, telemetry = getTelemetryClient(), logger = createLogger('p2p:discv5_service'), configOverrides = {}){
|
|
31
|
+
super(), this.peerId = peerId, this.config = config, this.packageVersion = packageVersion, this.logger = logger, this.currentState = PeerDiscoveryState.STOPPED, this.bootstrapNodePeerIds = [], this.bootstrapNodeEnrs = [], this.trustedPeerEnrs = [], this.startTime = 0, this.handlers = {
|
|
32
|
+
onMultiaddrUpdated: this.onMultiaddrUpdated.bind(this),
|
|
33
|
+
onDiscovered: this.onDiscovered.bind(this),
|
|
34
|
+
onEnrAdded: this.onEnrAdded.bind(this)
|
|
35
|
+
};
|
|
36
|
+
const { p2pIp, p2pPort, p2pBroadcastPort, bootstrapNodes, trustedPeers, privatePeers } = config;
|
|
37
|
+
this.bootstrapNodeEnrs = bootstrapNodes.map((x)=>ENR.decodeTxt(x));
|
|
38
|
+
const privatePeerEnrs = new Set(privatePeers);
|
|
39
|
+
this.trustedPeerEnrs = trustedPeers.filter((x)=>!privatePeerEnrs.has(x)).map((x)=>ENR.decodeTxt(x));
|
|
40
|
+
// If no overridden broadcast port is provided, use the p2p port as the broadcast port
|
|
41
|
+
if (!p2pBroadcastPort) {
|
|
42
|
+
this.logger.warn('No p2pBroadcastPort provided, using p2pPort as broadcast port');
|
|
43
|
+
config.p2pBroadcastPort = p2pPort;
|
|
40
44
|
}
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
const bindAddrs = {
|
|
46
|
+
ip4: multiaddr(convertToMultiaddr(config.listenAddress, p2pPort, 'udp'))
|
|
47
|
+
};
|
|
48
|
+
let multiAddrUdp, multiAddrTcp;
|
|
49
|
+
if (p2pIp) {
|
|
50
|
+
multiAddrTcp = multiaddr(`${convertToMultiaddr(p2pIp, config.p2pBroadcastPort, 'tcp')}/p2p/${peerId.toString()}`);
|
|
51
|
+
multiAddrUdp = multiaddr(`${convertToMultiaddr(p2pIp, config.p2pBroadcastPort, 'udp')}/p2p/${peerId.toString()}`);
|
|
52
|
+
}
|
|
53
|
+
({ enr: this.enr, versions: this.versions } = createNodeENR(peerId, multiAddrUdp, multiAddrTcp, config, this.packageVersion));
|
|
48
54
|
const metricsRegistry = new OtelMetricsAdapter(telemetry);
|
|
49
55
|
this.discv5 = Discv5.create({
|
|
50
56
|
enr: this.enr,
|
|
51
57
|
peerId,
|
|
52
|
-
bindAddrs
|
|
53
|
-
ip4: this.listenMultiAddrUdp
|
|
54
|
-
},
|
|
58
|
+
bindAddrs,
|
|
55
59
|
config: {
|
|
56
60
|
lookupTimeout: 2000,
|
|
57
61
|
requestTimeout: 2000,
|
|
58
|
-
allowUnverifiedSessions: true
|
|
62
|
+
allowUnverifiedSessions: true,
|
|
63
|
+
enrUpdate: !p2pIp ? true : false,
|
|
64
|
+
...configOverrides.config
|
|
59
65
|
},
|
|
60
66
|
metricsRegistry
|
|
61
67
|
});
|
|
@@ -77,8 +83,18 @@ const delayBeforeStart = 2000; // 2sec
|
|
|
77
83
|
return origOnEstablished(...args);
|
|
78
84
|
}
|
|
79
85
|
};
|
|
80
|
-
this.discv5.on(Discv5Event.DISCOVERED, this.onDiscovered
|
|
81
|
-
this.discv5.on(Discv5Event.ENR_ADDED, this.onEnrAdded
|
|
86
|
+
this.discv5.on(Discv5Event.DISCOVERED, this.handlers.onDiscovered);
|
|
87
|
+
this.discv5.on(Discv5Event.ENR_ADDED, this.handlers.onEnrAdded);
|
|
88
|
+
this.discv5.on(Discv5Event.MULTIADDR_UPDATED, this.handlers.onMultiaddrUpdated);
|
|
89
|
+
}
|
|
90
|
+
onMultiaddrUpdated(m) {
|
|
91
|
+
// We want to update our tcp port to match the udp port
|
|
92
|
+
// p2pBroadcastPort is optional on config, however it is set to default within the p2p client factory
|
|
93
|
+
const multiAddrTcp = multiaddr(convertToMultiaddr(m.nodeAddress().address, this.config.p2pBroadcastPort, 'tcp'));
|
|
94
|
+
this.enr.setLocationMultiaddr(multiAddrTcp);
|
|
95
|
+
this.logger.info('Multiaddr updated', {
|
|
96
|
+
multiaddr: multiAddrTcp.toString()
|
|
97
|
+
});
|
|
82
98
|
}
|
|
83
99
|
async start() {
|
|
84
100
|
if (this.currentState === PeerDiscoveryState.RUNNING) {
|
|
@@ -96,10 +112,10 @@ const delayBeforeStart = 2000; // 2sec
|
|
|
96
112
|
});
|
|
97
113
|
this.currentState = PeerDiscoveryState.RUNNING;
|
|
98
114
|
// Add bootnode ENR if provided
|
|
99
|
-
if (this.
|
|
115
|
+
if (this.bootstrapNodeEnrs?.length) {
|
|
100
116
|
// Do this conversion once since it involves an async function call
|
|
101
117
|
this.bootstrapNodePeerIds = await Promise.all(this.bootstrapNodeEnrs.map((enr)=>enr.peerId()));
|
|
102
|
-
this.logger.info(`Adding ${this.
|
|
118
|
+
this.logger.info(`Adding ${this.bootstrapNodeEnrs.length} bootstrap nodes ENRs: ${this.bootstrapNodeEnrs.map((enr)=>enr.encodeTxt()).join(', ')}`);
|
|
103
119
|
for (const enr of this.bootstrapNodeEnrs){
|
|
104
120
|
try {
|
|
105
121
|
if (this.config.bootstrapNodeEnrVersionCheck) {
|
|
@@ -115,10 +131,17 @@ const delayBeforeStart = 2000; // 2sec
|
|
|
115
131
|
}
|
|
116
132
|
}
|
|
117
133
|
}
|
|
134
|
+
// Add trusted peer ENRs if provided
|
|
135
|
+
if (this.trustedPeerEnrs?.length) {
|
|
136
|
+
this.logger.info(`Adding ${this.trustedPeerEnrs.length} trusted peer ENRs: ${this.trustedPeerEnrs.map((enr)=>enr.encodeTxt()).join(', ')}`);
|
|
137
|
+
for (const enr of this.trustedPeerEnrs){
|
|
138
|
+
this.discv5.addEnr(enr);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
118
141
|
}
|
|
119
142
|
async runRandomNodesQuery() {
|
|
120
143
|
if (this.currentState !== PeerDiscoveryState.RUNNING) {
|
|
121
|
-
|
|
144
|
+
return;
|
|
122
145
|
}
|
|
123
146
|
// First, wait some time before starting the peer discovery
|
|
124
147
|
// reference: https://github.com/ChainSafe/lodestar/issues/3423
|
|
@@ -132,7 +155,7 @@ const delayBeforeStart = 2000; // 2sec
|
|
|
132
155
|
this.logger.error(`Error running discV5 random node query: ${err}`);
|
|
133
156
|
}
|
|
134
157
|
}
|
|
135
|
-
|
|
158
|
+
getKadValues() {
|
|
136
159
|
return this.discv5.kadValues();
|
|
137
160
|
}
|
|
138
161
|
getEnr() {
|
|
@@ -148,8 +171,12 @@ const delayBeforeStart = 2000; // 2sec
|
|
|
148
171
|
return this.bootstrapNodePeerIds.some((node)=>node.equals(peerId));
|
|
149
172
|
}
|
|
150
173
|
async stop() {
|
|
151
|
-
|
|
152
|
-
|
|
174
|
+
if (this.currentState !== PeerDiscoveryState.RUNNING) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
await this.discv5.off(Discv5Event.DISCOVERED, this.handlers.onDiscovered);
|
|
178
|
+
await this.discv5.off(Discv5Event.ENR_ADDED, this.handlers.onEnrAdded);
|
|
179
|
+
await this.discv5.off(Discv5Event.MULTIADDR_UPDATED, this.handlers.onMultiaddrUpdated);
|
|
153
180
|
await this.discv5.stop();
|
|
154
181
|
this.currentState = PeerDiscoveryState.STOPPED;
|
|
155
182
|
}
|
|
@@ -190,7 +217,7 @@ const delayBeforeStart = 2000; // 2sec
|
|
|
190
217
|
// Check the peer is an aztec peer
|
|
191
218
|
const value = enr.kvs.get(AZTEC_ENR_KEY);
|
|
192
219
|
if (!value) {
|
|
193
|
-
this.logger.
|
|
220
|
+
this.logger.debug(`Peer node ${enr.nodeId} does not have aztec key in ENR`);
|
|
194
221
|
return false;
|
|
195
222
|
}
|
|
196
223
|
// And check it has the correct version
|
|
@@ -1,15 +1,21 @@
|
|
|
1
|
-
|
|
1
|
+
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
2
|
import type { PeerInfo } from '@aztec/stdlib/interfaces/server';
|
|
3
|
-
import type {
|
|
4
|
-
import { TxHash } from '@aztec/stdlib/tx';
|
|
3
|
+
import type { Gossipable, PeerErrorSeverity } from '@aztec/stdlib/p2p';
|
|
4
|
+
import { Tx, TxHash } from '@aztec/stdlib/tx';
|
|
5
5
|
import type { PeerId } from '@libp2p/interface';
|
|
6
|
+
import type { ENR } from '@nethermindeth/enr';
|
|
6
7
|
import EventEmitter from 'events';
|
|
7
|
-
import type {
|
|
8
|
-
import
|
|
8
|
+
import type { PeerManagerInterface } from './peer-manager/interface.js';
|
|
9
|
+
import type { P2PReqRespConfig } from './reqresp/config.js';
|
|
10
|
+
import { type AuthRequest, StatusMessage } from './reqresp/index.js';
|
|
11
|
+
import type { ReqRespInterface, ReqRespResponse, ReqRespSubProtocol, ReqRespSubProtocolHandler, ReqRespSubProtocolHandlers, ReqRespSubProtocolValidators, SubProtocolMap } from './reqresp/interface.js';
|
|
12
|
+
import type { GoodByeReason } from './reqresp/protocols/goodbye.js';
|
|
13
|
+
import { type P2PBlockReceivedCallback, type P2PCheckpointReceivedCallback, type P2PService, type PeerDiscoveryService, PeerDiscoveryState } from './service.js';
|
|
9
14
|
/**
|
|
10
15
|
* A dummy implementation of the P2P Service.
|
|
11
16
|
*/
|
|
12
17
|
export declare class DummyP2PService implements P2PService {
|
|
18
|
+
updateConfig(_config: Partial<P2PReqRespConfig>): void;
|
|
13
19
|
/** Returns an empty array for peers. */
|
|
14
20
|
getPeers(): PeerInfo[];
|
|
15
21
|
/**
|
|
@@ -26,7 +32,7 @@ export declare class DummyP2PService implements P2PService {
|
|
|
26
32
|
* Called to have the given message propagated through the P2P network.
|
|
27
33
|
* @param _ - The message to be propagated.
|
|
28
34
|
*/
|
|
29
|
-
propagate<T extends Gossipable>(_: T): void
|
|
35
|
+
propagate<T extends Gossipable>(_: T): Promise<void>;
|
|
30
36
|
/**
|
|
31
37
|
* Called upon receipt of settled transactions.
|
|
32
38
|
* @param _ - The hashes of the settled transactions.
|
|
@@ -35,7 +41,11 @@ export declare class DummyP2PService implements P2PService {
|
|
|
35
41
|
/**
|
|
36
42
|
* Register a callback into the validator client for when a block proposal is received
|
|
37
43
|
*/
|
|
38
|
-
registerBlockReceivedCallback(
|
|
44
|
+
registerBlockReceivedCallback(_callback: P2PBlockReceivedCallback): void;
|
|
45
|
+
/**
|
|
46
|
+
* Register a callback into the validator client for when a checkpoint proposal is received
|
|
47
|
+
*/
|
|
48
|
+
registerCheckpointReceivedCallback(_callback: P2PCheckpointReceivedCallback): void;
|
|
39
49
|
/**
|
|
40
50
|
* Sends a request to a peer.
|
|
41
51
|
* @param _protocol - The protocol to send the request on.
|
|
@@ -55,13 +65,17 @@ export declare class DummyP2PService implements P2PService {
|
|
|
55
65
|
* @returns The ENR of the peer, otherwise undefined.
|
|
56
66
|
*/
|
|
57
67
|
getEnr(): undefined;
|
|
68
|
+
validate(_txs: Tx[]): Promise<void>;
|
|
69
|
+
addReqRespSubProtocol(_subProtocol: ReqRespSubProtocol, _handler: ReqRespSubProtocolHandler, _validator?: ReqRespSubProtocolValidators[ReqRespSubProtocol]): Promise<void>;
|
|
70
|
+
handleAuthRequestFromPeer(_authRequest: AuthRequest, _peerId: PeerId): Promise<StatusMessage>;
|
|
71
|
+
registerThisValidatorAddresses(_address: EthAddress[]): void;
|
|
58
72
|
}
|
|
59
73
|
/**
|
|
60
74
|
* A dummy implementation of the Peer Discovery Service.
|
|
61
75
|
*/
|
|
62
76
|
export declare class DummyPeerDiscoveryService extends EventEmitter implements PeerDiscoveryService {
|
|
63
77
|
private currentState;
|
|
64
|
-
|
|
78
|
+
bootstrapNodeEnrs: ENR[];
|
|
65
79
|
/**
|
|
66
80
|
* Starts the dummy implementation.
|
|
67
81
|
* @returns A resolved promise.
|
|
@@ -74,12 +88,41 @@ export declare class DummyPeerDiscoveryService extends EventEmitter implements P
|
|
|
74
88
|
stop(): Promise<void>;
|
|
75
89
|
/**
|
|
76
90
|
* Called to discover peers in the network.
|
|
77
|
-
* @returns An array of
|
|
91
|
+
* @returns An array of Enrs.
|
|
78
92
|
*/
|
|
79
|
-
|
|
93
|
+
getKadValues(): never[];
|
|
80
94
|
runRandomNodesQuery(): Promise<void>;
|
|
81
95
|
isBootstrapPeer(_: PeerId): boolean;
|
|
82
96
|
getStatus(): PeerDiscoveryState;
|
|
83
97
|
getEnr(): undefined;
|
|
84
98
|
}
|
|
85
|
-
|
|
99
|
+
export declare class DummyPeerManager implements PeerManagerInterface {
|
|
100
|
+
peerId: PeerId;
|
|
101
|
+
private peersProvider?;
|
|
102
|
+
constructor(peerId: PeerId, peersProvider?: {
|
|
103
|
+
getPeers: () => PeerId[];
|
|
104
|
+
} | undefined);
|
|
105
|
+
getPeers(_includePending?: boolean): PeerInfo[];
|
|
106
|
+
initializePeers(): Promise<void>;
|
|
107
|
+
getPeerScore(_peerId: string): number;
|
|
108
|
+
shouldDisableP2PGossip(_peerId: string): boolean;
|
|
109
|
+
stop(): Promise<void>;
|
|
110
|
+
heartbeat(): Promise<void>;
|
|
111
|
+
addTrustedPeer(_peerId: PeerId): void;
|
|
112
|
+
addPrivatePeer(_peerId: PeerId): void;
|
|
113
|
+
goodbyeReceived(_peerId: PeerId, _reason: GoodByeReason): void;
|
|
114
|
+
penalizePeer(_peerId: PeerId, _penalty: PeerErrorSeverity): void;
|
|
115
|
+
addPreferredPeer(_peerId: PeerId): void;
|
|
116
|
+
handleAuthRequestFromPeer(_authRequest: AuthRequest, _peerId: PeerId): Promise<StatusMessage>;
|
|
117
|
+
registerThisValidatorAddresses(_address: EthAddress[]): void;
|
|
118
|
+
}
|
|
119
|
+
export declare class DummyReqResp implements ReqRespInterface {
|
|
120
|
+
updateConfig(_config: Partial<P2PReqRespConfig>): void;
|
|
121
|
+
start(_subProtocolHandlers: ReqRespSubProtocolHandlers, _subProtocolValidators: ReqRespSubProtocolValidators): Promise<void>;
|
|
122
|
+
stop(): Promise<void>;
|
|
123
|
+
sendRequest<SubProtocol extends ReqRespSubProtocol>(_subProtocol: SubProtocol, _request: InstanceType<SubProtocolMap[SubProtocol]['request']>): Promise<InstanceType<SubProtocolMap[SubProtocol]['response']> | undefined>;
|
|
124
|
+
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']>[]>;
|
|
125
|
+
sendRequestToPeer(_peerId: PeerId, _subProtocol: ReqRespSubProtocol, _payload: Buffer, _dialTimeout?: number): Promise<ReqRespResponse>;
|
|
126
|
+
addSubProtocol(_subProtocol: ReqRespSubProtocol, _handler: ReqRespSubProtocolHandler, _validator?: ReqRespSubProtocolValidators[ReqRespSubProtocol]): Promise<void>;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVtbXlfc2VydmljZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2R1bW15X3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU5QyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLFlBQVksTUFBTSxRQUFRLENBQUM7QUFFbEMsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFDVixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLGtCQUFrQixFQUNsQix5QkFBeUIsRUFDekIsMEJBQTBCLEVBQzFCLDRCQUE0QixFQUM1QixjQUFjLEVBQ2YsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRSxPQUFPLEVBQ0wsS0FBSyx3QkFBd0IsRUFDN0IsS0FBSyw2QkFBNkIsRUFDbEMsS0FBSyxVQUFVLEVBQ2YsS0FBSyxvQkFBb0IsRUFDekIsa0JBQWtCLEVBQ25CLE1BQU0sY0FB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dummy_service.d.ts","sourceRoot":"","sources":["../../src/services/dummy_service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dummy_service.d.ts","sourceRoot":"","sources":["../../src/services/dummy_service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import EventEmitter from 'events';
|
|
2
|
+
import { StatusMessage } from './reqresp/index.js';
|
|
3
|
+
import { ReqRespStatus } from './reqresp/status.js';
|
|
2
4
|
import { PeerDiscoveryState } from './service.js';
|
|
3
5
|
/**
|
|
4
6
|
* A dummy implementation of the P2P Service.
|
|
5
7
|
*/ export class DummyP2PService {
|
|
8
|
+
updateConfig(_config) {}
|
|
6
9
|
/** Returns an empty array for peers. */ getPeers() {
|
|
7
10
|
return [];
|
|
8
11
|
}
|
|
@@ -21,14 +24,19 @@ import { PeerDiscoveryState } from './service.js';
|
|
|
21
24
|
/**
|
|
22
25
|
* Called to have the given message propagated through the P2P network.
|
|
23
26
|
* @param _ - The message to be propagated.
|
|
24
|
-
*/ propagate(_) {
|
|
27
|
+
*/ propagate(_) {
|
|
28
|
+
return Promise.resolve();
|
|
29
|
+
}
|
|
25
30
|
/**
|
|
26
31
|
* Called upon receipt of settled transactions.
|
|
27
32
|
* @param _ - The hashes of the settled transactions.
|
|
28
33
|
*/ settledTxs(_) {}
|
|
29
34
|
/**
|
|
30
35
|
* Register a callback into the validator client for when a block proposal is received
|
|
31
|
-
*/ registerBlockReceivedCallback(
|
|
36
|
+
*/ registerBlockReceivedCallback(_callback) {}
|
|
37
|
+
/**
|
|
38
|
+
* Register a callback into the validator client for when a checkpoint proposal is received
|
|
39
|
+
*/ registerCheckpointReceivedCallback(_callback) {}
|
|
32
40
|
/**
|
|
33
41
|
* Sends a request to a peer.
|
|
34
42
|
* @param _protocol - The protocol to send the request on.
|
|
@@ -51,12 +59,23 @@ import { PeerDiscoveryState } from './service.js';
|
|
|
51
59
|
*/ getEnr() {
|
|
52
60
|
return undefined;
|
|
53
61
|
}
|
|
62
|
+
validate(_txs) {
|
|
63
|
+
return Promise.resolve();
|
|
64
|
+
}
|
|
65
|
+
addReqRespSubProtocol(_subProtocol, _handler, _validator) {
|
|
66
|
+
return Promise.resolve();
|
|
67
|
+
}
|
|
68
|
+
handleAuthRequestFromPeer(_authRequest, _peerId) {
|
|
69
|
+
return Promise.resolve(StatusMessage.random());
|
|
70
|
+
}
|
|
71
|
+
//this is no-op
|
|
72
|
+
registerThisValidatorAddresses(_address) {}
|
|
54
73
|
}
|
|
55
74
|
/**
|
|
56
75
|
* A dummy implementation of the Peer Discovery Service.
|
|
57
76
|
*/ export class DummyPeerDiscoveryService extends EventEmitter {
|
|
58
77
|
currentState = PeerDiscoveryState.STOPPED;
|
|
59
|
-
|
|
78
|
+
bootstrapNodeEnrs = [];
|
|
60
79
|
/**
|
|
61
80
|
* Starts the dummy implementation.
|
|
62
81
|
* @returns A resolved promise.
|
|
@@ -73,8 +92,8 @@ import { PeerDiscoveryState } from './service.js';
|
|
|
73
92
|
}
|
|
74
93
|
/**
|
|
75
94
|
* Called to discover peers in the network.
|
|
76
|
-
* @returns An array of
|
|
77
|
-
*/
|
|
95
|
+
* @returns An array of Enrs.
|
|
96
|
+
*/ getKadValues() {
|
|
78
97
|
return [];
|
|
79
98
|
}
|
|
80
99
|
runRandomNodesQuery() {
|
|
@@ -90,3 +109,70 @@ import { PeerDiscoveryState } from './service.js';
|
|
|
90
109
|
return undefined;
|
|
91
110
|
}
|
|
92
111
|
}
|
|
112
|
+
export class DummyPeerManager {
|
|
113
|
+
peerId;
|
|
114
|
+
peersProvider;
|
|
115
|
+
constructor(peerId, peersProvider){
|
|
116
|
+
this.peerId = peerId;
|
|
117
|
+
this.peersProvider = peersProvider;
|
|
118
|
+
}
|
|
119
|
+
getPeers(_includePending) {
|
|
120
|
+
if (!this.peersProvider) {
|
|
121
|
+
return [];
|
|
122
|
+
}
|
|
123
|
+
return this.peersProvider.getPeers().filter((peer)=>!peer.equals(this.peerId)).map((id)=>({
|
|
124
|
+
id: id.toString(),
|
|
125
|
+
status: 'connected',
|
|
126
|
+
score: 0
|
|
127
|
+
}));
|
|
128
|
+
}
|
|
129
|
+
initializePeers() {
|
|
130
|
+
return Promise.resolve();
|
|
131
|
+
}
|
|
132
|
+
getPeerScore(_peerId) {
|
|
133
|
+
return 0;
|
|
134
|
+
}
|
|
135
|
+
shouldDisableP2PGossip(_peerId) {
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
stop() {
|
|
139
|
+
return Promise.resolve();
|
|
140
|
+
}
|
|
141
|
+
heartbeat() {
|
|
142
|
+
return Promise.resolve();
|
|
143
|
+
}
|
|
144
|
+
addTrustedPeer(_peerId) {}
|
|
145
|
+
addPrivatePeer(_peerId) {}
|
|
146
|
+
goodbyeReceived(_peerId, _reason) {}
|
|
147
|
+
penalizePeer(_peerId, _penalty) {}
|
|
148
|
+
addPreferredPeer(_peerId) {}
|
|
149
|
+
handleAuthRequestFromPeer(_authRequest, _peerId) {
|
|
150
|
+
return Promise.resolve(StatusMessage.random());
|
|
151
|
+
}
|
|
152
|
+
//this is no-op
|
|
153
|
+
registerThisValidatorAddresses(_address) {}
|
|
154
|
+
}
|
|
155
|
+
export class DummyReqResp {
|
|
156
|
+
updateConfig(_config) {}
|
|
157
|
+
start(_subProtocolHandlers, _subProtocolValidators) {
|
|
158
|
+
return Promise.resolve();
|
|
159
|
+
}
|
|
160
|
+
stop() {
|
|
161
|
+
return Promise.resolve();
|
|
162
|
+
}
|
|
163
|
+
sendRequest(_subProtocol, _request) {
|
|
164
|
+
return Promise.resolve(undefined);
|
|
165
|
+
}
|
|
166
|
+
sendBatchRequest(_subProtocol, _requests, _pinnedPeer, _timeoutMs, _maxPeers, _maxRetryAttempts) {
|
|
167
|
+
return Promise.resolve([]);
|
|
168
|
+
}
|
|
169
|
+
sendRequestToPeer(_peerId, _subProtocol, _payload, _dialTimeout) {
|
|
170
|
+
return Promise.resolve({
|
|
171
|
+
status: ReqRespStatus.SUCCESS,
|
|
172
|
+
data: Buffer.from([])
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
addSubProtocol(_subProtocol, _handler, _validator) {
|
|
176
|
+
return Promise.resolve();
|
|
177
|
+
}
|
|
178
|
+
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
1
|
+
import { TopicType } from '@aztec/stdlib/p2p';
|
|
3
2
|
import type { RPC } from '@chainsafe/libp2p-gossipsub/message';
|
|
4
3
|
import type { DataTransform } from '@chainsafe/libp2p-gossipsub/types';
|
|
5
4
|
import type { Message } from '@libp2p/interface';
|
|
@@ -18,14 +17,34 @@ export declare function msgIdToStrFn(msgId: Uint8Array): string;
|
|
|
18
17
|
* @param message - The libp2p message
|
|
19
18
|
* @returns The message identifier
|
|
20
19
|
*/
|
|
21
|
-
export declare function getMsgIdFn(message: Message): Buffer
|
|
20
|
+
export declare function getMsgIdFn(message: Message): Buffer<ArrayBuffer>;
|
|
22
21
|
/**
|
|
23
22
|
* Snappy transform for libp2p gossipsub
|
|
24
23
|
*/
|
|
25
24
|
export declare class SnappyTransform implements DataTransform {
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
private maxSizesKb;
|
|
26
|
+
private defaultMaxSizeKb;
|
|
27
|
+
private logger;
|
|
28
|
+
constructor(maxSizesKb?: Record<TopicType, number>, defaultMaxSizeKb?: number, logger?: import("@aztec/foundation/log").Logger);
|
|
29
|
+
inboundTransform(topicStr: string, data: Uint8Array): Uint8Array;
|
|
30
|
+
inboundTransformData(data: Buffer, topic?: TopicType): Buffer;
|
|
28
31
|
outboundTransform(_topicStr: string, data: Uint8Array): Uint8Array;
|
|
29
|
-
|
|
32
|
+
outboundTransformData(data: Buffer): Buffer;
|
|
30
33
|
}
|
|
31
|
-
|
|
34
|
+
/**
|
|
35
|
+
* Reads the Snappy preamble from compressed data and returns the expected decompressed size.
|
|
36
|
+
*
|
|
37
|
+
* The Snappy format starts with a little-endian varint encoding the uncompressed length.
|
|
38
|
+
* Varints consist of a series of bytes where:
|
|
39
|
+
* - Lower 7 bits contain data
|
|
40
|
+
* - Upper bit (0x80) is set if more bytes follow
|
|
41
|
+
*
|
|
42
|
+
* @param data - The compressed data starting with the Snappy preamble
|
|
43
|
+
* @returns Object containing the decompressed size and the number of bytes read from the preamble
|
|
44
|
+
* @throws Error if the data is too short or the varint is invalid
|
|
45
|
+
*/
|
|
46
|
+
export declare function readSnappyPreamble(data: Uint8Array): {
|
|
47
|
+
decompressedSize: number;
|
|
48
|
+
bytesRead: number;
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2RpbmcuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9lbmNvZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsU0FBUyxFQUFzQixNQUFNLG1CQUFtQixDQUFDO0FBRWxFLE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQy9ELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBYWpEOzs7R0FHRztBQUNILHdCQUFnQixXQUFXLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUt2RDtBQUVELHdCQUFnQixZQUFZLENBQUMsS0FBSyxFQUFFLFVBQVUsR0FBRyxNQUFNLENBSXREO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCx3QkFBZ0IsVUFBVSxDQUFDLE9BQU8sRUFBRSxPQUFPLHVCQUsxQztBQWNEOztHQUVHO0FBQ0gscUJBQWEsZUFBZ0IsWUFBVyxhQUFhO0lBRWpELE9BQU8sQ0FBQyxVQUFVO0lBQ2xCLE9BQU8sQ0FBQyxnQkFBZ0I7SUFDeEIsT0FBTyxDQUFDLE1BQU07SUFIaEIsWUFDVSxVQUFVLEdBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQXFCLEVBQ3pELGdCQUFnQixHQUFFLE1BQWtCLEVBQ3BDLE1BQU0seUNBQXVDLEVBQ25EO0lBR0osZ0JBQWdCLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxHQUFHLFVBQVUsQ0FHL0Q7SUFFTSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsR0FBRyxNQUFNLENBWW5FO0lBR0QsaUJBQWlCLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxHQUFHLFVBQVUsQ0FFakU7SUFFTSxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FLakQ7Q0FDRjtBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsd0JBQWdCLGtCQUFrQixDQUFDLElBQUksRUFBRSxVQUFVLEdBQUc7SUFBRSxnQkFBZ0IsRUFBRSxNQUFNLENBQUM7SUFBQyxTQUFTLEVBQUUsTUFBTSxDQUFBO0NBQUUsQ0FtQ3BHIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../src/services/encoding.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../src/services/encoding.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAsB,MAAM,mBAAmB,CAAC;AAElE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAajD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAKvD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAItD;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,uBAK1C;AAcD;;GAEG;AACH,qBAAa,eAAgB,YAAW,aAAa;IAEjD,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,MAAM;IAHhB,YACU,UAAU,GAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAqB,EACzD,gBAAgB,GAAE,MAAkB,EACpC,MAAM,yCAAuC,EACnD;IAGJ,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAG/D;IAEM,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAYnE;IAGD,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAEjE;IAEM,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKjD;CACF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAmCpG"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
// Taken from lodestar: https://github.com/ChainSafe/lodestar
|
|
2
|
-
import { sha256 } from '@aztec/foundation/crypto';
|
|
2
|
+
import { sha256 } from '@aztec/foundation/crypto/sha256';
|
|
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,97 @@ 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.checkpoint_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
|
+
// TODO(palla/mbps): Check size for checkpoint proposal
|
|
52
|
+
[TopicType.checkpoint_proposal]: 1024 * 10
|
|
53
|
+
};
|
|
41
54
|
/**
|
|
42
55
|
* Snappy transform for libp2p gossipsub
|
|
43
56
|
*/ export class SnappyTransform {
|
|
57
|
+
maxSizesKb;
|
|
58
|
+
defaultMaxSizeKb;
|
|
59
|
+
logger;
|
|
60
|
+
constructor(maxSizesKb = DefaultMaxSizesKb, defaultMaxSizeKb = 10 * 1024, logger = createLogger('p2p:snappy-transform')){
|
|
61
|
+
this.maxSizesKb = maxSizesKb;
|
|
62
|
+
this.defaultMaxSizeKb = defaultMaxSizeKb;
|
|
63
|
+
this.logger = logger;
|
|
64
|
+
}
|
|
44
65
|
// Topic string included to satisfy DataTransform interface
|
|
45
|
-
inboundTransform(
|
|
46
|
-
|
|
66
|
+
inboundTransform(topicStr, data) {
|
|
67
|
+
const topic = getTopicFromString(topicStr);
|
|
68
|
+
return this.inboundTransformData(Buffer.from(data), topic);
|
|
47
69
|
}
|
|
48
|
-
|
|
70
|
+
inboundTransformData(data, topic) {
|
|
49
71
|
if (data.length === 0) {
|
|
50
72
|
return data;
|
|
51
73
|
}
|
|
74
|
+
const maxSizeKb = this.maxSizesKb[topic] ?? this.defaultMaxSizeKb;
|
|
75
|
+
const { decompressedSize } = readSnappyPreamble(data);
|
|
76
|
+
if (decompressedSize > maxSizeKb * 1024) {
|
|
77
|
+
this.logger.warn(`Decompressed size ${decompressedSize} exceeds maximum allowed size of ${maxSizeKb}kb`);
|
|
78
|
+
throw new Error(`Decompressed size ${decompressedSize} exceeds maximum allowed size of ${maxSizeKb}kb`);
|
|
79
|
+
}
|
|
52
80
|
return Buffer.from(uncompressSync(data, {
|
|
53
81
|
asBuffer: true
|
|
54
82
|
}));
|
|
55
83
|
}
|
|
56
84
|
// Topic string included to satisfy DataTransform interface
|
|
57
85
|
outboundTransform(_topicStr, data) {
|
|
58
|
-
return this.
|
|
86
|
+
return this.outboundTransformData(Buffer.from(data));
|
|
59
87
|
}
|
|
60
|
-
|
|
88
|
+
outboundTransformData(data) {
|
|
61
89
|
if (data.length === 0) {
|
|
62
90
|
return data;
|
|
63
91
|
}
|
|
64
92
|
return Buffer.from(compressSync(data));
|
|
65
93
|
}
|
|
66
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* Reads the Snappy preamble from compressed data and returns the expected decompressed size.
|
|
97
|
+
*
|
|
98
|
+
* The Snappy format starts with a little-endian varint encoding the uncompressed length.
|
|
99
|
+
* Varints consist of a series of bytes where:
|
|
100
|
+
* - Lower 7 bits contain data
|
|
101
|
+
* - Upper bit (0x80) is set if more bytes follow
|
|
102
|
+
*
|
|
103
|
+
* @param data - The compressed data starting with the Snappy preamble
|
|
104
|
+
* @returns Object containing the decompressed size and the number of bytes read from the preamble
|
|
105
|
+
* @throws Error if the data is too short or the varint is invalid
|
|
106
|
+
*/ export function readSnappyPreamble(data) {
|
|
107
|
+
if (data.length === 0) {
|
|
108
|
+
throw new Error('Cannot read preamble from empty data');
|
|
109
|
+
}
|
|
110
|
+
let result = 0;
|
|
111
|
+
let shift = 0;
|
|
112
|
+
let bytesRead = 0;
|
|
113
|
+
// Maximum varint length for 32-bit value is 5 bytes
|
|
114
|
+
// (7 bits per byte, so 5 bytes = 35 bits, enough for 2^32 - 1)
|
|
115
|
+
const maxBytes = 5;
|
|
116
|
+
for(let i = 0; i < Math.min(data.length, maxBytes); i++){
|
|
117
|
+
const byte = data[i];
|
|
118
|
+
bytesRead++;
|
|
119
|
+
// Extract lower 7 bits and add to result with appropriate shift
|
|
120
|
+
// Use >>> 0 to convert to unsigned 32-bit integer to avoid sign issues
|
|
121
|
+
result = (result | (byte & 0x7f) << shift) >>> 0;
|
|
122
|
+
// If upper bit is not set, we're done
|
|
123
|
+
if ((byte & 0x80) === 0) {
|
|
124
|
+
return {
|
|
125
|
+
decompressedSize: result,
|
|
126
|
+
bytesRead
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
shift += 7;
|
|
130
|
+
}
|
|
131
|
+
// If we get here, either we ran out of data or the varint is too long
|
|
132
|
+
if (bytesRead >= maxBytes) {
|
|
133
|
+
throw new Error('Varint is too long (max 5 bytes for 32-bit value)');
|
|
134
|
+
}
|
|
135
|
+
throw new Error('Incomplete varint: data ended before varint termination');
|
|
136
|
+
}
|
|
@@ -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=
|