@aztec/p2p 0.0.0-test.0 → 0.0.1-commit.24de95ac
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/bootstrap/bootstrap.d.ts.map +1 -1
- package/dest/bootstrap/bootstrap.js +22 -9
- package/dest/client/factory.d.ts +13 -3
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +60 -24
- package/dest/client/index.d.ts +1 -0
- package/dest/client/index.d.ts.map +1 -1
- package/dest/client/index.js +1 -0
- package/dest/client/interface.d.ts +155 -0
- package/dest/client/interface.d.ts.map +1 -0
- package/dest/client/interface.js +9 -0
- package/dest/client/p2p_client.d.ts +72 -169
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +365 -174
- package/dest/config.d.ts +123 -103
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +173 -34
- package/dest/enr/generate-enr.d.ts +10 -2
- package/dest/enr/generate-enr.d.ts.map +1 -1
- package/dest/enr/generate-enr.js +27 -5
- package/dest/index.d.ts +3 -0
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +2 -0
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +42 -4
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +204 -54
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +10 -2
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +93 -15
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +10 -2
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +86 -18
- package/dest/mem_pools/attestation_pool/mocks.d.ts +1 -2
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +9 -15
- package/dest/mem_pools/instrumentation.d.ts +7 -11
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +25 -37
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +93 -9
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +469 -97
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +33 -9
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/memory_tx_pool.js +133 -36
- package/dest/mem_pools/tx_pool/priority.js +1 -1
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +64 -8
- package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +264 -39
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +1 -0
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +45 -9
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +5 -1
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +61 -12
- package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts +10 -0
- package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts.map +1 -0
- package/dest/msg_validators/msg_seen_validator/msg_seen_validator.js +36 -0
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +3 -0
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/allowed_public_setup.js +27 -0
- package/dest/msg_validators/tx_validator/archive_cache.d.ts +14 -0
- package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/archive_cache.js +22 -0
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.js +4 -4
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +56 -86
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +0 -2
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.js +21 -27
- package/dest/msg_validators/tx_validator/factory.d.ts +15 -0
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/factory.js +74 -0
- package/dest/msg_validators/tx_validator/gas_validator.d.ts +11 -0
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/gas_validator.js +115 -0
- package/dest/msg_validators/tx_validator/index.d.ts +7 -0
- package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/index.js +7 -0
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts +7 -3
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.js +39 -20
- package/dest/msg_validators/tx_validator/phases_validator.d.ts +14 -0
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/phases_validator.js +91 -0
- package/dest/msg_validators/tx_validator/test_utils.d.ts +17 -0
- package/dest/msg_validators/tx_validator/test_utils.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/test_utils.js +22 -0
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +12 -0
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/timestamp_validator.js +32 -0
- package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +8 -0
- package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/tx_permitted_validator.js +24 -0
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/tx_proof_validator.js +6 -5
- package/dest/services/discv5/discV5_service.d.ts +9 -8
- package/dest/services/discv5/discV5_service.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.js +63 -36
- package/dest/services/dummy_service.d.ts +49 -10
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +88 -5
- package/dest/services/encoding.d.ts +25 -6
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +73 -5
- package/dest/services/index.d.ts +4 -0
- package/dest/services/index.d.ts.map +1 -1
- package/dest/services/index.js +4 -0
- package/dest/services/libp2p/instrumentation.d.ts +18 -0
- package/dest/services/libp2p/instrumentation.d.ts.map +1 -0
- package/dest/services/libp2p/instrumentation.js +157 -0
- package/dest/services/libp2p/libp2p_service.d.ts +87 -42
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +500 -218
- package/dest/services/peer-manager/interface.d.ts +23 -0
- package/dest/services/peer-manager/interface.d.ts.map +1 -0
- package/dest/services/peer-manager/interface.js +1 -0
- package/dest/services/peer-manager/metrics.d.ts +3 -1
- package/dest/services/peer-manager/metrics.d.ts.map +1 -1
- package/dest/services/peer-manager/metrics.js +11 -2
- package/dest/services/peer-manager/peer_manager.d.ts +126 -15
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +547 -72
- package/dest/services/reqresp/config.d.ts +10 -8
- package/dest/services/reqresp/config.d.ts.map +1 -1
- package/dest/services/reqresp/config.js +18 -4
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +1 -1
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +10 -6
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +30 -13
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.js +142 -84
- package/dest/services/reqresp/index.d.ts +2 -1
- package/dest/services/reqresp/index.d.ts.map +1 -1
- package/dest/services/reqresp/index.js +2 -1
- package/dest/services/reqresp/interface.d.ts +72 -23
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +45 -26
- package/dest/services/reqresp/metrics.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/auth.d.ts +43 -0
- package/dest/services/reqresp/protocols/auth.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/auth.js +71 -0
- package/dest/services/reqresp/protocols/block.d.ts +5 -0
- package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block.js +28 -5
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +30 -0
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/bitvector.js +75 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +11 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +39 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +49 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +75 -0
- package/dest/services/reqresp/protocols/block_txs/index.d.ts +4 -0
- package/dest/services/reqresp/protocols/block_txs/index.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/index.js +3 -0
- package/dest/services/reqresp/protocols/goodbye.d.ts +2 -4
- package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/goodbye.js +7 -7
- package/dest/services/reqresp/protocols/index.d.ts +2 -0
- package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/index.js +2 -0
- package/dest/services/reqresp/protocols/ping.d.ts +0 -2
- package/dest/services/reqresp/protocols/ping.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/status.d.ts +38 -6
- package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/status.js +72 -5
- package/dest/services/reqresp/protocols/tx.d.ts +12 -1
- package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/tx.js +34 -6
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +4 -2
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -2
- package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limits.js +21 -1
- package/dest/services/reqresp/reqresp.d.ts +45 -47
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +298 -207
- package/dest/services/reqresp/status.d.ts +9 -3
- package/dest/services/reqresp/status.d.ts.map +1 -1
- package/dest/services/reqresp/status.js +9 -2
- package/dest/services/service.d.ts +22 -18
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +25 -0
- package/dest/services/tx_collection/config.d.ts.map +1 -0
- package/dest/services/tx_collection/config.js +58 -0
- package/dest/services/tx_collection/fast_tx_collection.d.ts +56 -0
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/fast_tx_collection.js +300 -0
- package/dest/services/tx_collection/index.d.ts +3 -0
- package/dest/services/tx_collection/index.d.ts.map +1 -0
- package/dest/services/tx_collection/index.js +2 -0
- package/dest/services/tx_collection/instrumentation.d.ts +10 -0
- package/dest/services/tx_collection/instrumentation.d.ts.map +1 -0
- package/dest/services/tx_collection/instrumentation.js +34 -0
- package/dest/services/tx_collection/slow_tx_collection.d.ts +54 -0
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/slow_tx_collection.js +176 -0
- package/dest/services/tx_collection/tx_collection.d.ts +110 -0
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_collection.js +128 -0
- package/dest/services/tx_collection/tx_collection_sink.d.ts +30 -0
- package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_collection_sink.js +111 -0
- package/dest/services/tx_collection/tx_source.d.ts +18 -0
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_source.js +31 -0
- package/dest/services/tx_provider.d.ts +49 -0
- package/dest/services/tx_provider.d.ts.map +1 -0
- package/dest/services/tx_provider.js +210 -0
- package/dest/services/tx_provider_instrumentation.d.ts +13 -0
- package/dest/services/tx_provider_instrumentation.d.ts.map +1 -0
- package/dest/services/tx_provider_instrumentation.js +34 -0
- package/dest/test-helpers/get-ports.d.ts.map +1 -1
- package/dest/test-helpers/index.d.ts +1 -0
- package/dest/test-helpers/index.d.ts.map +1 -1
- package/dest/test-helpers/index.js +1 -0
- package/dest/test-helpers/make-enrs.d.ts.map +1 -1
- package/dest/test-helpers/make-enrs.js +4 -5
- package/dest/test-helpers/make-test-p2p-clients.d.ts +32 -4
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.js +86 -16
- package/dest/test-helpers/mock-pubsub.d.ts +59 -0
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -0
- package/dest/test-helpers/mock-pubsub.js +130 -0
- package/dest/test-helpers/mock-tx-helpers.d.ts +12 -0
- package/dest/test-helpers/mock-tx-helpers.d.ts.map +1 -0
- package/dest/test-helpers/mock-tx-helpers.js +19 -0
- package/dest/test-helpers/reqresp-nodes.d.ts +14 -10
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +62 -28
- package/dest/testbench/p2p_client_testbench_worker.js +96 -25
- package/dest/testbench/parse_log_file.js +4 -4
- package/dest/testbench/testbench.js +4 -4
- package/dest/testbench/worker_client_manager.d.ts +0 -5
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +11 -19
- package/dest/types/index.d.ts +3 -1
- package/dest/types/index.d.ts.map +1 -1
- package/dest/types/index.js +2 -0
- package/dest/util.d.ts +22 -15
- package/dest/util.d.ts.map +1 -1
- package/dest/util.js +64 -67
- package/dest/versioning.d.ts +3 -3
- package/dest/versioning.d.ts.map +1 -1
- package/dest/versioning.js +8 -3
- package/package.json +28 -24
- package/src/bootstrap/bootstrap.ts +27 -11
- package/src/client/factory.ts +136 -45
- package/src/client/index.ts +1 -0
- package/src/client/interface.ts +195 -0
- package/src/client/p2p_client.ts +460 -327
- package/src/config.ts +288 -134
- package/src/enr/generate-enr.ts +39 -6
- package/src/index.ts +4 -0
- package/src/mem_pools/attestation_pool/attestation_pool.ts +48 -4
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +241 -55
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +117 -20
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +114 -22
- package/src/mem_pools/attestation_pool/mocks.ts +11 -10
- package/src/mem_pools/instrumentation.ts +32 -46
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +549 -108
- package/src/mem_pools/tx_pool/memory_tx_pool.ts +153 -44
- package/src/mem_pools/tx_pool/priority.ts +1 -1
- package/src/mem_pools/tx_pool/tx_pool.ts +67 -8
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +217 -34
- package/src/msg_validators/attestation_validator/attestation_validator.ts +55 -10
- package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +66 -14
- package/src/msg_validators/msg_seen_validator/msg_seen_validator.ts +36 -0
- package/src/msg_validators/tx_validator/allowed_public_setup.ts +35 -0
- package/src/msg_validators/tx_validator/archive_cache.ts +28 -0
- package/src/msg_validators/tx_validator/block_header_validator.ts +4 -4
- package/src/msg_validators/tx_validator/data_validator.ts +81 -69
- package/src/msg_validators/tx_validator/double_spend_validator.ts +19 -17
- package/src/msg_validators/tx_validator/factory.ts +109 -0
- package/src/msg_validators/tx_validator/gas_validator.ts +134 -0
- package/src/msg_validators/tx_validator/index.ts +7 -0
- package/src/msg_validators/tx_validator/metadata_validator.ts +58 -21
- package/src/msg_validators/tx_validator/phases_validator.ts +114 -0
- package/src/msg_validators/tx_validator/test_utils.ts +43 -0
- package/src/msg_validators/tx_validator/timestamp_validator.ts +46 -0
- package/src/msg_validators/tx_validator/tx_permitted_validator.ts +17 -0
- package/src/msg_validators/tx_validator/tx_proof_validator.ts +6 -5
- package/src/services/discv5/discV5_service.ts +84 -38
- package/src/services/dummy_service.ts +147 -9
- package/src/services/encoding.ts +80 -5
- package/src/services/index.ts +4 -0
- package/src/services/libp2p/instrumentation.ts +158 -0
- package/src/services/libp2p/libp2p_service.ts +646 -263
- package/src/services/peer-manager/interface.ts +29 -0
- package/src/services/peer-manager/metrics.ts +16 -1
- package/src/services/peer-manager/peer_manager.ts +652 -78
- package/src/services/reqresp/config.ts +26 -9
- package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +12 -6
- package/src/services/reqresp/connection-sampler/connection_sampler.ts +148 -95
- package/src/services/reqresp/index.ts +2 -0
- package/src/services/reqresp/interface.ts +91 -36
- package/src/services/reqresp/metrics.ts +4 -1
- package/src/services/reqresp/protocols/auth.ts +83 -0
- package/src/services/reqresp/protocols/block.ts +24 -3
- package/src/services/reqresp/protocols/block_txs/bitvector.ts +90 -0
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +53 -0
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +79 -0
- package/src/services/reqresp/protocols/block_txs/index.ts +3 -0
- package/src/services/reqresp/protocols/goodbye.ts +9 -7
- package/src/services/reqresp/protocols/index.ts +2 -0
- package/src/services/reqresp/protocols/status.ts +117 -5
- package/src/services/reqresp/protocols/tx.ts +35 -6
- package/src/services/reqresp/rate-limiter/rate_limiter.ts +12 -3
- package/src/services/reqresp/rate-limiter/rate_limits.ts +21 -1
- package/src/services/reqresp/reqresp.ts +387 -256
- package/src/services/reqresp/status.ts +12 -3
- package/src/services/service.ts +45 -21
- package/src/services/tx_collection/config.ts +84 -0
- package/src/services/tx_collection/fast_tx_collection.ts +340 -0
- package/src/services/tx_collection/index.ts +2 -0
- package/src/services/tx_collection/instrumentation.ts +43 -0
- package/src/services/tx_collection/slow_tx_collection.ts +232 -0
- package/src/services/tx_collection/tx_collection.ts +215 -0
- package/src/services/tx_collection/tx_collection_sink.ts +129 -0
- package/src/services/tx_collection/tx_source.ts +37 -0
- package/src/services/tx_provider.ts +216 -0
- package/src/services/tx_provider_instrumentation.ts +44 -0
- package/src/test-helpers/index.ts +1 -0
- package/src/test-helpers/make-enrs.ts +4 -5
- package/src/test-helpers/make-test-p2p-clients.ts +111 -21
- package/src/test-helpers/mock-pubsub.ts +188 -0
- package/src/test-helpers/mock-tx-helpers.ts +24 -0
- package/src/test-helpers/reqresp-nodes.ts +86 -35
- package/src/testbench/p2p_client_testbench_worker.ts +145 -22
- package/src/testbench/parse_log_file.ts +4 -4
- package/src/testbench/testbench.ts +4 -4
- package/src/testbench/worker_client_manager.ts +17 -23
- package/src/types/index.ts +2 -0
- package/src/util.ts +93 -89
- package/src/versioning.ts +11 -4
|
@@ -1,12 +1,28 @@
|
|
|
1
1
|
import { MockL2BlockSource } from '@aztec/archiver/test';
|
|
2
|
+
import { SecretValue } from '@aztec/foundation/config';
|
|
2
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
|
+
import { retryUntil } from '@aztec/foundation/retry';
|
|
5
|
+
import { sleep } from '@aztec/foundation/sleep';
|
|
3
6
|
import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
|
|
4
7
|
import { P2PClientType } from '@aztec/stdlib/p2p';
|
|
5
8
|
import { createP2PClient } from '../client/index.js';
|
|
6
9
|
import { generatePeerIdPrivateKeys } from '../test-helpers/generate-peer-id-private-keys.js';
|
|
7
10
|
import { getPorts } from './get-ports.js';
|
|
8
11
|
import { makeEnrs } from './make-enrs.js';
|
|
12
|
+
import { getMockPubSubP2PServiceFactory } from './mock-pubsub.js';
|
|
9
13
|
import { AlwaysFalseCircuitVerifier, AlwaysTrueCircuitVerifier } from './reqresp-nodes.js';
|
|
14
|
+
/**
|
|
15
|
+
* Creates a single P2P client and immediately starts it for testing purposes.
|
|
16
|
+
* @param peerIdPrivateKey - The private key of the peer.
|
|
17
|
+
* @param port - The port to run the client on.
|
|
18
|
+
* @param peers - The peers to connect to.
|
|
19
|
+
* @param options - The options for the client.
|
|
20
|
+
* @returns The created and already started client.
|
|
21
|
+
*/ export async function makeAndStartTestP2PClient(peerIdPrivateKey, port, peers, options) {
|
|
22
|
+
const client = await makeTestP2PClient(peerIdPrivateKey, port, peers, options);
|
|
23
|
+
await client.start();
|
|
24
|
+
return client;
|
|
25
|
+
}
|
|
10
26
|
/**
|
|
11
27
|
* Creates a single P2P client for testing purposes.
|
|
12
28
|
* @param peerIdPrivateKey - The private key of the peer.
|
|
@@ -14,18 +30,15 @@ import { AlwaysFalseCircuitVerifier, AlwaysTrueCircuitVerifier } from './reqresp
|
|
|
14
30
|
* @param peers - The peers to connect to.
|
|
15
31
|
* @param options - The options for the client.
|
|
16
32
|
* @returns The created client.
|
|
17
|
-
*/ export async function makeTestP2PClient(peerIdPrivateKey, port, peers, { alwaysTrueVerifier = true, p2pBaseConfig, p2pConfigOverrides = {}, mockAttestationPool, mockTxPool, mockEpochCache, mockWorldState, logger = createLogger('p2p-test-client') }) {
|
|
18
|
-
const addr = `127.0.0.1:${port}`;
|
|
19
|
-
const listenAddr = `0.0.0.0:${port}`;
|
|
33
|
+
*/ export async function makeTestP2PClient(peerIdPrivateKey, port, peers, { alwaysTrueVerifier = true, p2pBaseConfig, p2pConfigOverrides = {}, mockAttestationPool, mockTxPool, mockEpochCache, mockWorldState, mockGossipSubNetwork, logger = createLogger('p2p-test-client') }) {
|
|
20
34
|
// Filter nodes so that we only dial active peers
|
|
21
35
|
const config = {
|
|
22
36
|
...p2pBaseConfig,
|
|
23
37
|
p2pEnabled: true,
|
|
24
|
-
peerIdPrivateKey,
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
udpAnnounceAddress: addr,
|
|
38
|
+
peerIdPrivateKey: new SecretValue(peerIdPrivateKey),
|
|
39
|
+
p2pIp: `127.0.0.1`,
|
|
40
|
+
listenAddress: `127.0.0.1`,
|
|
41
|
+
p2pPort: port,
|
|
29
42
|
bootstrapNodes: peers,
|
|
30
43
|
peerCheckIntervalMS: 1000,
|
|
31
44
|
maxPeerCount: 10,
|
|
@@ -36,16 +49,55 @@ import { AlwaysFalseCircuitVerifier, AlwaysTrueCircuitVerifier } from './reqresp
|
|
|
36
49
|
await l2BlockSource.createBlocks(100);
|
|
37
50
|
const proofVerifier = alwaysTrueVerifier ? new AlwaysTrueCircuitVerifier() : new AlwaysFalseCircuitVerifier();
|
|
38
51
|
const kvStore = await openTmpStore('test');
|
|
39
|
-
const
|
|
52
|
+
const client = await createP2PClient(P2PClientType.Full, config, l2BlockSource, proofVerifier, mockWorldState, mockEpochCache, 'test-p2p-client', undefined, undefined, {
|
|
40
53
|
txPool: mockTxPool,
|
|
41
54
|
attestationPool: mockAttestationPool,
|
|
42
55
|
store: kvStore,
|
|
43
|
-
logger
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
await client.start();
|
|
56
|
+
logger,
|
|
57
|
+
p2pServiceFactory: mockGossipSubNetwork && getMockPubSubP2PServiceFactory(mockGossipSubNetwork)
|
|
58
|
+
});
|
|
47
59
|
return client;
|
|
48
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Creates a number of P2P clients and immediately starts them for testing purposes.
|
|
63
|
+
* @param numberOfPeers - The number of clients to create.
|
|
64
|
+
* @param options - The options for the clients.
|
|
65
|
+
* @returns The created and started clients.
|
|
66
|
+
*/ export async function makeAndStartTestP2PClients(numberOfPeers, testConfig) {
|
|
67
|
+
const clients = [];
|
|
68
|
+
const peerIdPrivateKeys = generatePeerIdPrivateKeys(numberOfPeers);
|
|
69
|
+
let ports = [];
|
|
70
|
+
while(true){
|
|
71
|
+
try {
|
|
72
|
+
ports = await getPorts(numberOfPeers);
|
|
73
|
+
break;
|
|
74
|
+
} catch {
|
|
75
|
+
await sleep(1000);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const peerEnrs = await makeEnrs(peerIdPrivateKeys, ports, testConfig.p2pBaseConfig);
|
|
79
|
+
for(let i = 0; i < numberOfPeers; i++){
|
|
80
|
+
const client = await makeAndStartTestP2PClient(peerIdPrivateKeys[i], ports[i], peerEnrs, {
|
|
81
|
+
...testConfig,
|
|
82
|
+
logger: createLogger(`p2p:${i}`)
|
|
83
|
+
});
|
|
84
|
+
clients.push(client);
|
|
85
|
+
}
|
|
86
|
+
await retryUntil(()=>clients.every((c)=>c.isReady()), 'p2p clients started', 10, 0.5);
|
|
87
|
+
testConfig.logger?.info(`Created and started ${clients.length} P2P clients at ports ${ports.join(',')}`, {
|
|
88
|
+
ports,
|
|
89
|
+
peerEnrs,
|
|
90
|
+
peerIdPrivateKeys
|
|
91
|
+
});
|
|
92
|
+
return clients.map((client, index)=>{
|
|
93
|
+
return {
|
|
94
|
+
client,
|
|
95
|
+
peerPrivateKey: peerIdPrivateKeys[index],
|
|
96
|
+
port: ports[index],
|
|
97
|
+
enr: peerEnrs[index]
|
|
98
|
+
};
|
|
99
|
+
});
|
|
100
|
+
}
|
|
49
101
|
/**
|
|
50
102
|
* Creates a number of P2P clients for testing purposes.
|
|
51
103
|
* @param numberOfPeers - The number of clients to create.
|
|
@@ -54,7 +106,15 @@ import { AlwaysFalseCircuitVerifier, AlwaysTrueCircuitVerifier } from './reqresp
|
|
|
54
106
|
*/ export async function makeTestP2PClients(numberOfPeers, testConfig) {
|
|
55
107
|
const clients = [];
|
|
56
108
|
const peerIdPrivateKeys = generatePeerIdPrivateKeys(numberOfPeers);
|
|
57
|
-
|
|
109
|
+
let ports = [];
|
|
110
|
+
while(true){
|
|
111
|
+
try {
|
|
112
|
+
ports = await getPorts(numberOfPeers);
|
|
113
|
+
break;
|
|
114
|
+
} catch {
|
|
115
|
+
await sleep(1000);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
58
118
|
const peerEnrs = await makeEnrs(peerIdPrivateKeys, ports, testConfig.p2pBaseConfig);
|
|
59
119
|
for(let i = 0; i < numberOfPeers; i++){
|
|
60
120
|
const client = await makeTestP2PClient(peerIdPrivateKeys[i], ports[i], peerEnrs, {
|
|
@@ -63,6 +123,16 @@ import { AlwaysFalseCircuitVerifier, AlwaysTrueCircuitVerifier } from './reqresp
|
|
|
63
123
|
});
|
|
64
124
|
clients.push(client);
|
|
65
125
|
}
|
|
66
|
-
|
|
67
|
-
|
|
126
|
+
return clients.map((client, index)=>{
|
|
127
|
+
return {
|
|
128
|
+
client,
|
|
129
|
+
peerPrivateKey: peerIdPrivateKeys[index],
|
|
130
|
+
port: ports[index],
|
|
131
|
+
enr: peerEnrs[index]
|
|
132
|
+
};
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
export async function startTestP2PClients(clients) {
|
|
136
|
+
await Promise.all(clients.map((c)=>c.start()));
|
|
137
|
+
await retryUntil(()=>clients.every((c)=>c.isReady()), 'p2p clients started', 10, 0.5);
|
|
68
138
|
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { P2PClientType } from '@aztec/stdlib/p2p';
|
|
2
|
+
import type { GossipsubEvents, GossipsubMessage } from '@chainsafe/libp2p-gossipsub';
|
|
3
|
+
import type { MsgIdStr, PeerIdStr, PublishOpts, TopicStr } from '@chainsafe/libp2p-gossipsub/types';
|
|
4
|
+
import { type Libp2pStatus, type PeerId, type PublishResult, type TopicValidatorResult, TypedEventEmitter } from '@libp2p/interface';
|
|
5
|
+
import { LibP2PService } from '../services/index.js';
|
|
6
|
+
import type { PubSubLibp2p } from '../util.js';
|
|
7
|
+
type GossipSubService = PubSubLibp2p['services']['pubsub'];
|
|
8
|
+
/**
|
|
9
|
+
* Given a mock gossip sub network, returns a factory function that creates an instance LibP2PService connected to it.
|
|
10
|
+
* Designed to be used in tests in P2PClientDeps.p2pServiceFactory.
|
|
11
|
+
*/
|
|
12
|
+
export declare function getMockPubSubP2PServiceFactory<T extends P2PClientType>(network: MockGossipSubNetwork): (...args: Parameters<(typeof LibP2PService<T>)['new']>) => Promise<LibP2PService<T>>;
|
|
13
|
+
/**
|
|
14
|
+
* Implementation of PubSub services that relies on a mock gossip sub network.
|
|
15
|
+
* This is used in tests to simulate a gossip sub network without needing a real P2P network.
|
|
16
|
+
* All messages are sent to the mock network which then distributes them to subscribed peers.
|
|
17
|
+
*/
|
|
18
|
+
export declare class MockPubSub implements PubSubLibp2p {
|
|
19
|
+
peerId: PeerId;
|
|
20
|
+
status: Libp2pStatus;
|
|
21
|
+
private gossipSub;
|
|
22
|
+
constructor(peerId: PeerId, network: MockGossipSubNetwork);
|
|
23
|
+
get services(): {
|
|
24
|
+
pubsub: Pick<import("@chainsafe/libp2p-gossipsub").GossipSub, "addEventListener" | "removeEventListener" | "publish" | "subscribe" | "reportMessageValidationResult" | "direct"> & {
|
|
25
|
+
score: Pick<import("@chainsafe/libp2p-gossipsub").GossipSub["score"], "score">;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
start(): void | Promise<void>;
|
|
29
|
+
stop(): void | Promise<void>;
|
|
30
|
+
}
|
|
31
|
+
declare class MockGossipSubService extends TypedEventEmitter<GossipsubEvents> implements GossipSubService {
|
|
32
|
+
peerId: PeerId;
|
|
33
|
+
private network;
|
|
34
|
+
private logger;
|
|
35
|
+
subscribedTopics: Set<TopicStr>;
|
|
36
|
+
readonly direct: Set<string>;
|
|
37
|
+
constructor(peerId: PeerId, network: MockGossipSubNetwork);
|
|
38
|
+
score: {
|
|
39
|
+
score: (_peerId: PeerIdStr) => number;
|
|
40
|
+
};
|
|
41
|
+
publish(topic: TopicStr, data: Uint8Array, _opts?: PublishOpts): Promise<PublishResult>;
|
|
42
|
+
receive(msg: GossipsubMessage): void;
|
|
43
|
+
subscribe(topic: TopicStr): void;
|
|
44
|
+
reportMessageValidationResult(msgId: MsgIdStr, propagationSource: PeerIdStr, acceptance: TopicValidatorResult): void;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Mock gossip sub network used for testing.
|
|
48
|
+
* All instances of MockGossipSubService connected to the same network will instantly receive the same messages.
|
|
49
|
+
*/
|
|
50
|
+
export declare class MockGossipSubNetwork {
|
|
51
|
+
private peers;
|
|
52
|
+
private nextMsgId;
|
|
53
|
+
private logger;
|
|
54
|
+
getPeers(): PeerId[];
|
|
55
|
+
registerPeer(peer: MockGossipSubService): void;
|
|
56
|
+
publishToPeers(topic: TopicStr, data: Uint8Array, sender: PeerId): void;
|
|
57
|
+
}
|
|
58
|
+
export {};
|
|
59
|
+
//# sourceMappingURL=mock-pubsub.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-pubsub.d.ts","sourceRoot":"","sources":["../../src/test-helpers/mock-pubsub.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AACpG,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAA6D,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGhH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,KAAK,gBAAgB,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;AAE3D;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,CAAC,SAAS,aAAa,EACpE,OAAO,EAAE,oBAAoB,GAC5B,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAwCtF;AAED;;;;GAIG;AACH,qBAAa,UAAW,YAAW,YAAY;IAMpC,MAAM,EAAE,MAAM;IALhB,MAAM,EAAE,YAAY,CAAa;IAExC,OAAO,CAAC,SAAS,CAAmB;gBAG3B,MAAM,EAAE,MAAM,EACrB,OAAO,EAAE,oBAAoB;IAK/B,IAAI,QAAQ;;;;MAIX;IAED,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7B,IAAI,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAI7B;AAED,cAAM,oBAAqB,SAAQ,iBAAiB,CAAC,eAAe,CAAE,YAAW,gBAAgB;IAMtF,MAAM,EAAE,MAAM;IACrB,OAAO,CAAC,OAAO;IANjB,OAAO,CAAC,MAAM,CAA2C;IAClD,gBAAgB,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAa;IACnD,SAAgB,MAAM,cAAqB;gBAGlC,MAAM,EAAE,MAAM,EACb,OAAO,EAAE,oBAAoB;IAMvC,KAAK;yBACc,SAAS;MAC1B;IAEF,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAMvF,OAAO,CAAC,GAAG,EAAE,gBAAgB;IAQ7B,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAKhC,6BAA6B,CAAC,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,oBAAoB,GAAG,IAAI;CAMrH;AAED;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,SAAS,CAAK;IAEtB,OAAO,CAAC,MAAM,CAAmD;IAE1D,QAAQ,IAAI,MAAM,EAAE;IAIpB,YAAY,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI;IAI9C,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAgB/E"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
+
import { TypedEventEmitter } from '@libp2p/interface';
|
|
3
|
+
import { DummyPeerDiscoveryService, DummyPeerManager, DummyReqResp, LibP2PService } from '../services/index.js';
|
|
4
|
+
import { GossipSubEvent } from '../types/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* Given a mock gossip sub network, returns a factory function that creates an instance LibP2PService connected to it.
|
|
7
|
+
* Designed to be used in tests in P2PClientDeps.p2pServiceFactory.
|
|
8
|
+
*/ export function getMockPubSubP2PServiceFactory(network) {
|
|
9
|
+
return (clientType, config, peerId, deps)=>{
|
|
10
|
+
deps.logger.verbose('Creating mock PubSub service');
|
|
11
|
+
const libp2p = new MockPubSub(peerId, network);
|
|
12
|
+
const peerManager = new DummyPeerManager(peerId, network);
|
|
13
|
+
const reqresp = new DummyReqResp();
|
|
14
|
+
const peerDiscoveryService = new DummyPeerDiscoveryService();
|
|
15
|
+
const service = new LibP2PService(clientType, config, libp2p, peerDiscoveryService, reqresp, peerManager, deps.mempools, deps.l2BlockSource, deps.epochCache, deps.proofVerifier, deps.worldStateSynchronizer, deps.telemetry, deps.logger);
|
|
16
|
+
return Promise.resolve(service);
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Implementation of PubSub services that relies on a mock gossip sub network.
|
|
21
|
+
* This is used in tests to simulate a gossip sub network without needing a real P2P network.
|
|
22
|
+
* All messages are sent to the mock network which then distributes them to subscribed peers.
|
|
23
|
+
*/ export class MockPubSub {
|
|
24
|
+
peerId;
|
|
25
|
+
status;
|
|
26
|
+
gossipSub;
|
|
27
|
+
constructor(peerId, network){
|
|
28
|
+
this.peerId = peerId;
|
|
29
|
+
this.status = 'stopped';
|
|
30
|
+
this.gossipSub = new MockGossipSubService(peerId, network);
|
|
31
|
+
}
|
|
32
|
+
get services() {
|
|
33
|
+
return {
|
|
34
|
+
pubsub: this.gossipSub
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
start() {
|
|
38
|
+
this.status = 'started';
|
|
39
|
+
return Promise.resolve();
|
|
40
|
+
}
|
|
41
|
+
stop() {
|
|
42
|
+
this.status = 'stopped';
|
|
43
|
+
return Promise.resolve();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
class MockGossipSubService extends TypedEventEmitter {
|
|
47
|
+
peerId;
|
|
48
|
+
network;
|
|
49
|
+
logger;
|
|
50
|
+
subscribedTopics;
|
|
51
|
+
direct;
|
|
52
|
+
constructor(peerId, network){
|
|
53
|
+
super(), this.peerId = peerId, this.network = network, this.logger = createLogger('p2p:test:mock-gossipsub'), this.subscribedTopics = new Set(), this.direct = new Set(), this.score = {
|
|
54
|
+
score: (_peerId)=>0
|
|
55
|
+
};
|
|
56
|
+
network.registerPeer(this);
|
|
57
|
+
}
|
|
58
|
+
score;
|
|
59
|
+
publish(topic, data, _opts) {
|
|
60
|
+
this.logger.debug(`Publishing message on topic ${topic}`, {
|
|
61
|
+
topic,
|
|
62
|
+
sender: this.peerId.toString()
|
|
63
|
+
});
|
|
64
|
+
this.network.publishToPeers(topic, data, this.peerId);
|
|
65
|
+
return Promise.resolve({
|
|
66
|
+
recipients: this.network.getPeers().filter((peer)=>!this.peerId.equals(peer))
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
receive(msg) {
|
|
70
|
+
if (msg.propagationSource.equals(this.peerId)) {
|
|
71
|
+
return; // Ignore messages from self
|
|
72
|
+
}
|
|
73
|
+
this.logger.debug(`Received message on topic ${msg.msg.topic}`, {
|
|
74
|
+
...msg
|
|
75
|
+
});
|
|
76
|
+
this.safeDispatchEvent(GossipSubEvent.MESSAGE, {
|
|
77
|
+
detail: msg
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
subscribe(topic) {
|
|
81
|
+
this.logger.debug(`Subscribed to topic ${topic}`, {
|
|
82
|
+
topic
|
|
83
|
+
});
|
|
84
|
+
this.subscribedTopics.add(topic);
|
|
85
|
+
}
|
|
86
|
+
reportMessageValidationResult(msgId, propagationSource, acceptance) {
|
|
87
|
+
this.logger.debug(`Reported message validation result ${acceptance} for msgId ${msgId} from source ${propagationSource}`, {
|
|
88
|
+
msgId,
|
|
89
|
+
propagationSource,
|
|
90
|
+
acceptance
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Mock gossip sub network used for testing.
|
|
96
|
+
* All instances of MockGossipSubService connected to the same network will instantly receive the same messages.
|
|
97
|
+
*/ export class MockGossipSubNetwork {
|
|
98
|
+
peers = [];
|
|
99
|
+
nextMsgId = 0;
|
|
100
|
+
logger = createLogger('p2p:test:mock-gossipsub-network');
|
|
101
|
+
getPeers() {
|
|
102
|
+
return this.peers.map((peer)=>peer.peerId);
|
|
103
|
+
}
|
|
104
|
+
registerPeer(peer) {
|
|
105
|
+
this.peers.push(peer);
|
|
106
|
+
}
|
|
107
|
+
publishToPeers(topic, data, sender) {
|
|
108
|
+
const msgId = (this.nextMsgId++).toString();
|
|
109
|
+
this.logger.debug(`Network is distributing message on topic ${topic}`, {
|
|
110
|
+
topic,
|
|
111
|
+
size: data.length,
|
|
112
|
+
sender: sender.toString(),
|
|
113
|
+
msgId
|
|
114
|
+
});
|
|
115
|
+
const gossipSubMsg = {
|
|
116
|
+
msgId,
|
|
117
|
+
msg: {
|
|
118
|
+
type: 'unsigned',
|
|
119
|
+
topic,
|
|
120
|
+
data
|
|
121
|
+
},
|
|
122
|
+
propagationSource: sender
|
|
123
|
+
};
|
|
124
|
+
for (const peer of this.peers){
|
|
125
|
+
if (peer.subscribedTopics.has(topic)) {
|
|
126
|
+
peer.receive(gossipSubMsg);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Tx } from '@aztec/stdlib/tx';
|
|
2
|
+
import type { P2PConfig } from '../config.js';
|
|
3
|
+
/**
|
|
4
|
+
* Helper function to create mock transactions with the correct metadata values
|
|
5
|
+
* that will pass validation when sent over the p2p network.
|
|
6
|
+
*
|
|
7
|
+
* @param config - The P2P configuration containing chainId and rollupVersion
|
|
8
|
+
* @param seed - Optional seed for the mock transaction
|
|
9
|
+
* @returns A mock transaction with valid metadata for p2p network transmission
|
|
10
|
+
*/
|
|
11
|
+
export declare const createMockTxWithMetadata: (config: P2PConfig, seed?: number) => Promise<Tx>;
|
|
12
|
+
//# sourceMappingURL=mock-tx-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-tx-helpers.d.ts","sourceRoot":"","sources":["../../src/test-helpers/mock-tx-helpers.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,GAAI,QAAQ,SAAS,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,EAAE,CAOrF,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
3
|
+
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
4
|
+
import { mockTx } from '@aztec/stdlib/testing';
|
|
5
|
+
/**
|
|
6
|
+
* Helper function to create mock transactions with the correct metadata values
|
|
7
|
+
* that will pass validation when sent over the p2p network.
|
|
8
|
+
*
|
|
9
|
+
* @param config - The P2P configuration containing chainId and rollupVersion
|
|
10
|
+
* @param seed - Optional seed for the mock transaction
|
|
11
|
+
* @returns A mock transaction with valid metadata for p2p network transmission
|
|
12
|
+
*/ export const createMockTxWithMetadata = (config, seed)=>{
|
|
13
|
+
return mockTx(seed, {
|
|
14
|
+
chainId: new Fr(config.l1ChainId),
|
|
15
|
+
version: new Fr(config.rollupVersion),
|
|
16
|
+
vkTreeRoot: getVKTreeRoot(),
|
|
17
|
+
protocolContractsHash
|
|
18
|
+
});
|
|
19
|
+
};
|
|
@@ -1,33 +1,35 @@
|
|
|
1
1
|
import type { EpochCache } from '@aztec/epoch-cache';
|
|
2
2
|
import type { L2BlockSource } from '@aztec/stdlib/block';
|
|
3
3
|
import { type ChainConfig } from '@aztec/stdlib/config';
|
|
4
|
-
import type {
|
|
4
|
+
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
5
|
+
import type { ClientProtocolCircuitVerifier, IVCProofVerificationResult, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
5
6
|
import type { P2PClientType } from '@aztec/stdlib/p2p';
|
|
6
7
|
import type { Tx } from '@aztec/stdlib/tx';
|
|
7
8
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
8
|
-
import { SignableENR } from '@chainsafe/enr';
|
|
9
9
|
import type { PeerId } from '@libp2p/interface';
|
|
10
|
+
import { SignableENR } from '@nethermindeth/enr';
|
|
10
11
|
import { type Libp2p } from 'libp2p';
|
|
11
12
|
import { BootstrapNode } from '../bootstrap/bootstrap.js';
|
|
12
13
|
import type { BootnodeConfig } from '../config.js';
|
|
13
14
|
import type { MemPools } from '../mem_pools/interface.js';
|
|
14
15
|
import { LibP2PService } from '../services/libp2p/libp2p_service.js';
|
|
15
|
-
import
|
|
16
|
-
import { type ReqRespSubProtocolHandlers, type ReqRespSubProtocolValidators } from '../services/reqresp/interface.js';
|
|
16
|
+
import { PeerScoring } from '../services/peer-manager/peer_scoring.js';
|
|
17
|
+
import { type ReqRespSubProtocolHandlers, type ReqRespSubProtocolRateLimits, type ReqRespSubProtocolValidators } from '../services/reqresp/interface.js';
|
|
17
18
|
import { ReqResp } from '../services/reqresp/reqresp.js';
|
|
19
|
+
import { type FullLibp2p } from '../util.js';
|
|
18
20
|
/**
|
|
19
21
|
* Creates a libp2p node, pre configured.
|
|
20
22
|
* @param boostrapAddrs - an optional list of bootstrap addresses
|
|
21
23
|
* @returns Lip2p node
|
|
22
24
|
*/
|
|
23
|
-
export declare function createLibp2pNode(boostrapAddrs?: string[], peerId?: PeerId, port?: number, enableGossipSub?: boolean, start?: boolean): Promise<
|
|
25
|
+
export declare function createLibp2pNode(boostrapAddrs?: string[], peerId?: PeerId, port?: number, enableGossipSub?: boolean, start?: boolean): Promise<FullLibp2p>;
|
|
24
26
|
/**
|
|
25
27
|
* Test Libp2p service
|
|
26
28
|
* P2P functionality is operational, however everything else is default
|
|
27
29
|
*
|
|
28
30
|
*
|
|
29
31
|
*/
|
|
30
|
-
export declare function createTestLibP2PService<T extends P2PClientType>(clientType: T, boostrapAddrs: string[] | undefined,
|
|
32
|
+
export declare function createTestLibP2PService<T extends P2PClientType>(clientType: T, boostrapAddrs: string[] | undefined, archiver: L2BlockSource & ContractDataSource, worldStateSynchronizer: WorldStateSynchronizer, epochCache: EpochCache, mempools: MemPools<T>, telemetry: TelemetryClient, port?: number, peerId?: PeerId, chainConfig?: ChainConfig): Promise<LibP2PService<T>>;
|
|
31
33
|
/**
|
|
32
34
|
* A p2p / req resp node pairing the req node will always contain the p2p node.
|
|
33
35
|
* they are provided as a pair to allow access the p2p node directly
|
|
@@ -42,16 +44,18 @@ export declare const MOCK_SUB_PROTOCOL_VALIDATORS: ReqRespSubProtocolValidators;
|
|
|
42
44
|
* @param numberOfNodes - the number of nodes to create
|
|
43
45
|
* @returns An array of the created nodes
|
|
44
46
|
*/
|
|
45
|
-
export declare const createNodes: (peerScoring: PeerScoring, numberOfNodes: number) => Promise<ReqRespNode[]>;
|
|
47
|
+
export declare const createNodes: (peerScoring: PeerScoring, numberOfNodes: number, rateLimits?: Partial<ReqRespSubProtocolRateLimits>) => Promise<ReqRespNode[]>;
|
|
46
48
|
export declare const startNodes: (nodes: ReqRespNode[], subProtocolHandlers?: ReqRespSubProtocolHandlers, subProtocolValidators?: ReqRespSubProtocolValidators) => Promise<void>;
|
|
47
49
|
export declare const stopNodes: (nodes: ReqRespNode[]) => Promise<void>;
|
|
48
|
-
export declare const createReqResp: (peerScoring: PeerScoring) => Promise<ReqRespNode>;
|
|
50
|
+
export declare const createReqResp: (peerScoring: PeerScoring, rateLimits?: Partial<ReqRespSubProtocolRateLimits>) => Promise<ReqRespNode>;
|
|
49
51
|
export declare const connectToPeers: (nodes: ReqRespNode[]) => Promise<void>;
|
|
50
52
|
export declare class AlwaysTrueCircuitVerifier implements ClientProtocolCircuitVerifier {
|
|
51
|
-
|
|
53
|
+
stop(): Promise<void>;
|
|
54
|
+
verifyProof(_tx: Tx): Promise<IVCProofVerificationResult>;
|
|
52
55
|
}
|
|
53
56
|
export declare class AlwaysFalseCircuitVerifier implements ClientProtocolCircuitVerifier {
|
|
54
|
-
|
|
57
|
+
stop(): Promise<void>;
|
|
58
|
+
verifyProof(_tx: Tx): Promise<IVCProofVerificationResult>;
|
|
55
59
|
}
|
|
56
60
|
export declare function createBootstrapNodeConfig(privateKey: string, port: number, chainConfig: ChainConfig): BootnodeConfig;
|
|
57
61
|
export declare function createBootstrapNodeFromPrivateKey(privateKey: string, port: number, telemetry?: TelemetryClient, chainConfig?: ChainConfig): Promise<BootstrapNode>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reqresp-nodes.d.ts","sourceRoot":"","sources":["../../src/test-helpers/reqresp-nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"reqresp-nodes.d.ts","sourceRoot":"","sources":["../../src/test-helpers/reqresp-nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAMrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAAoB,MAAM,sBAAsB,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EACV,6BAA6B,EAC7B,0BAA0B,EAC1B,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAOnF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAIhD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,KAAK,MAAM,EAAoC,MAAM,QAAQ,CAAC;AAEvE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,cAAc,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAErE,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAEvE,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,EAElC,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,KAAK,UAAU,EAA2E,MAAM,YAAY,CAAC;AAGtH;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,aAAa,GAAE,MAAM,EAAO,EAC5B,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EACb,eAAe,GAAE,OAAe,EAChC,KAAK,GAAE,OAAc,GACpB,OAAO,CAAC,UAAU,CAAC,CAqCrB;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,CAAC,SAAS,aAAa,EACnE,UAAU,EAAE,CAAC,EACb,aAAa,EAAE,MAAM,EAAE,YAAK,EAC5B,QAAQ,EAAE,aAAa,GAAG,kBAAkB,EAC5C,sBAAsB,EAAE,sBAAsB,EAC9C,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EACrB,SAAS,EAAE,eAAe,EAC1B,IAAI,GAAE,MAAU,EAChB,MAAM,CAAC,EAAE,MAAM,EACf,WAAW,GAAE,WAA8B,6BAwD5C;AAED;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,OAAO,CAAC;CACd,CAAC;AAGF,eAAO,MAAM,0BAA0B,EAAE,0BAQxC,CAAC;AAIF,eAAO,MAAM,4BAA4B,EAAE,4BAQ1C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,GACtB,aAAa,WAAW,EACxB,eAAe,MAAM,EACrB,aAAY,OAAO,CAAC,4BAA4B,CAAM,KACrD,OAAO,CAAC,WAAW,EAAE,CAEvB,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,OAAO,WAAW,EAAE,EACpB,gDAAgD,EAChD,oDAAoD,kBAKrD,CAAC;AAEF,eAAO,MAAM,SAAS,GAAU,OAAO,WAAW,EAAE,KAAG,OAAO,CAAC,IAAI,CAGlE,CAAC;AAGF,eAAO,MAAM,aAAa,GACxB,aAAa,WAAW,EACxB,aAAY,OAAO,CAAC,4BAA4B,CAAM,KACrD,OAAO,CAAC,WAAW,CAUrB,CAAC;AAGF,eAAO,MAAM,cAAc,GAAU,OAAO,WAAW,EAAE,KAAG,OAAO,CAAC,IAAI,CAUvE,CAAC;AAGF,qBAAa,yBAA0B,YAAW,6BAA6B;IAC7E,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAGrB,WAAW,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,0BAA0B,CAAC;CAG1D;AACD,qBAAa,0BAA2B,YAAW,6BAA6B;IAC9E,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAGrB,WAAW,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,0BAA0B,CAAC;CAG1D;AAGD,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,cAAc,CAYpH;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,eAAsC,EACjD,WAAW,GAAE,WAA8B,GAC1C,OAAO,CAAC,aAAa,CAAC,CAGxB;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,wBAOzE;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,eAAsC,EACjD,WAAW,GAAE,WAA8B,GAC1C,OAAO,CAAC,aAAa,CAAC,CAKxB"}
|