@aztec/p2p 0.0.0-test.1 → 0.0.1-commit.21caa21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/bootstrap/bootstrap.d.ts +1 -1
- package/dest/bootstrap/bootstrap.d.ts.map +1 -1
- package/dest/bootstrap/bootstrap.js +22 -9
- package/dest/client/factory.d.ts +14 -4
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +60 -24
- package/dest/client/index.d.ts +2 -1
- package/dest/client/index.d.ts.map +1 -1
- package/dest/client/index.js +1 -0
- package/dest/client/interface.d.ts +157 -0
- package/dest/client/interface.d.ts.map +1 -0
- package/dest/client/interface.js +9 -0
- package/dest/client/p2p_client.d.ts +72 -187
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +373 -177
- package/dest/config.d.ts +151 -125
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +183 -34
- package/dest/enr/generate-enr.d.ts +11 -3
- package/dest/enr/generate-enr.d.ts.map +1 -1
- package/dest/enr/generate-enr.js +27 -5
- package/dest/enr/index.d.ts +1 -1
- package/dest/errors/attestation-pool.error.d.ts +7 -0
- package/dest/errors/attestation-pool.error.d.ts.map +1 -0
- package/dest/errors/attestation-pool.error.js +12 -0
- package/dest/errors/reqresp.error.d.ts +1 -1
- package/dest/errors/reqresp.error.d.ts.map +1 -1
- package/dest/index.d.ts +4 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +2 -0
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +68 -8
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +214 -63
- package/dest/mem_pools/attestation_pool/index.d.ts +1 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +21 -6
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +126 -25
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +19 -6
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +111 -21
- package/dest/mem_pools/attestation_pool/mocks.d.ts +225 -5
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +9 -15
- package/dest/mem_pools/index.d.ts +1 -1
- package/dest/mem_pools/instrumentation.d.ts +10 -12
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +35 -38
- package/dest/mem_pools/interface.d.ts +1 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +62 -13
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +469 -97
- package/dest/mem_pools/tx_pool/index.d.ts +1 -1
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +34 -10
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/memory_tx_pool.js +133 -36
- package/dest/mem_pools/tx_pool/priority.d.ts +1 -1
- package/dest/mem_pools/tx_pool/priority.js +1 -1
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +65 -9
- package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +264 -39
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +4 -2
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +45 -9
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +20 -0
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -0
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +67 -0
- package/dest/msg_validators/attestation_validator/index.d.ts +2 -1
- package/dest/msg_validators/attestation_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/index.js +1 -0
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +6 -2
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +73 -12
- package/dest/msg_validators/block_proposal_validator/index.d.ts +1 -1
- package/dest/msg_validators/index.d.ts +1 -1
- package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts +10 -0
- package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts.map +1 -0
- package/dest/msg_validators/msg_seen_validator/msg_seen_validator.js +36 -0
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +3 -0
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/allowed_public_setup.js +27 -0
- package/dest/msg_validators/tx_validator/archive_cache.d.ts +14 -0
- package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/archive_cache.js +22 -0
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.js +4 -4
- package/dest/msg_validators/tx_validator/data_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +56 -86
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +1 -3
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.js +21 -27
- package/dest/msg_validators/tx_validator/factory.d.ts +15 -0
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/factory.js +74 -0
- package/dest/msg_validators/tx_validator/gas_validator.d.ts +11 -0
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/gas_validator.js +115 -0
- package/dest/msg_validators/tx_validator/index.d.ts +8 -1
- package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/index.js +7 -0
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts +8 -4
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.js +39 -20
- package/dest/msg_validators/tx_validator/phases_validator.d.ts +14 -0
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/phases_validator.js +93 -0
- package/dest/msg_validators/tx_validator/test_utils.d.ts +17 -0
- package/dest/msg_validators/tx_validator/test_utils.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/test_utils.js +22 -0
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +12 -0
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/timestamp_validator.js +32 -0
- package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +8 -0
- package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/tx_permitted_validator.js +24 -0
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/tx_proof_validator.js +6 -5
- package/dest/services/data_store.d.ts +1 -1
- package/dest/services/data_store.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.d.ts +10 -9
- package/dest/services/discv5/discV5_service.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.js +63 -36
- package/dest/services/dummy_service.d.ts +50 -11
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +88 -5
- package/dest/services/encoding.d.ts +26 -7
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +73 -5
- package/dest/services/gossipsub/scoring.d.ts +1 -1
- package/dest/services/index.d.ts +5 -1
- package/dest/services/index.d.ts.map +1 -1
- package/dest/services/index.js +4 -0
- package/dest/services/libp2p/instrumentation.d.ts +20 -0
- package/dest/services/libp2p/instrumentation.d.ts.map +1 -0
- package/dest/services/libp2p/instrumentation.js +164 -0
- package/dest/services/libp2p/libp2p_service.d.ts +78 -89
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +698 -246
- package/dest/services/peer-manager/interface.d.ts +23 -0
- package/dest/services/peer-manager/interface.d.ts.map +1 -0
- package/dest/services/peer-manager/interface.js +1 -0
- package/dest/services/peer-manager/metrics.d.ts +6 -2
- package/dest/services/peer-manager/metrics.d.ts.map +1 -1
- package/dest/services/peer-manager/metrics.js +22 -2
- package/dest/services/peer-manager/peer_manager.d.ts +102 -22
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +549 -72
- package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
- package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_scoring.js +40 -2
- package/dest/services/reqresp/config.d.ts +11 -9
- package/dest/services/reqresp/config.d.ts.map +1 -1
- package/dest/services/reqresp/config.js +18 -4
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +2 -2
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +10 -6
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +31 -17
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.js +142 -84
- package/dest/services/reqresp/index.d.ts +3 -2
- package/dest/services/reqresp/index.d.ts.map +1 -1
- package/dest/services/reqresp/index.js +2 -1
- package/dest/services/reqresp/interface.d.ts +73 -24
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +45 -26
- package/dest/services/reqresp/metrics.d.ts +1 -1
- package/dest/services/reqresp/metrics.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/auth.d.ts +43 -0
- package/dest/services/reqresp/protocols/auth.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/auth.js +71 -0
- package/dest/services/reqresp/protocols/block.d.ts +6 -1
- package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block.js +28 -5
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +30 -0
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/bitvector.js +75 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +11 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +39 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +47 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +75 -0
- package/dest/services/reqresp/protocols/block_txs/index.d.ts +4 -0
- package/dest/services/reqresp/protocols/block_txs/index.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/index.js +3 -0
- package/dest/services/reqresp/protocols/goodbye.d.ts +3 -5
- package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/goodbye.js +7 -7
- package/dest/services/reqresp/protocols/index.d.ts +3 -1
- package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/index.js +2 -0
- package/dest/services/reqresp/protocols/ping.d.ts +1 -3
- package/dest/services/reqresp/protocols/ping.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/status.d.ts +39 -7
- package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/status.js +72 -5
- package/dest/services/reqresp/protocols/tx.d.ts +13 -2
- package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/tx.js +34 -6
- package/dest/services/reqresp/rate-limiter/index.d.ts +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +6 -4
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -2
- package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limits.js +21 -1
- package/dest/services/reqresp/reqresp.d.ts +24 -66
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +298 -207
- package/dest/services/reqresp/status.d.ts +10 -4
- package/dest/services/reqresp/status.d.ts.map +1 -1
- package/dest/services/reqresp/status.js +9 -2
- package/dest/services/service.d.ts +23 -19
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +25 -0
- package/dest/services/tx_collection/config.d.ts.map +1 -0
- package/dest/services/tx_collection/config.js +58 -0
- package/dest/services/tx_collection/fast_tx_collection.d.ts +50 -0
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/fast_tx_collection.js +300 -0
- package/dest/services/tx_collection/index.d.ts +3 -0
- package/dest/services/tx_collection/index.d.ts.map +1 -0
- package/dest/services/tx_collection/index.js +2 -0
- package/dest/services/tx_collection/instrumentation.d.ts +10 -0
- package/dest/services/tx_collection/instrumentation.d.ts.map +1 -0
- package/dest/services/tx_collection/instrumentation.js +34 -0
- package/dest/services/tx_collection/slow_tx_collection.d.ts +52 -0
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/slow_tx_collection.js +177 -0
- package/dest/services/tx_collection/tx_collection.d.ts +109 -0
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_collection.js +128 -0
- package/dest/services/tx_collection/tx_collection_sink.d.ts +30 -0
- package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_collection_sink.js +111 -0
- package/dest/services/tx_collection/tx_source.d.ts +18 -0
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_source.js +31 -0
- package/dest/services/tx_provider.d.ts +49 -0
- package/dest/services/tx_provider.d.ts.map +1 -0
- package/dest/services/tx_provider.js +210 -0
- package/dest/services/tx_provider_instrumentation.d.ts +13 -0
- package/dest/services/tx_provider_instrumentation.d.ts.map +1 -0
- package/dest/services/tx_provider_instrumentation.js +34 -0
- package/dest/test-helpers/generate-peer-id-private-keys.d.ts +1 -1
- package/dest/test-helpers/get-ports.d.ts +1 -1
- package/dest/test-helpers/get-ports.d.ts.map +1 -1
- package/dest/test-helpers/index.d.ts +2 -1
- package/dest/test-helpers/index.d.ts.map +1 -1
- package/dest/test-helpers/index.js +1 -0
- package/dest/test-helpers/make-enrs.d.ts +1 -1
- package/dest/test-helpers/make-enrs.d.ts.map +1 -1
- package/dest/test-helpers/make-enrs.js +4 -5
- package/dest/test-helpers/make-test-p2p-clients.d.ts +33 -5
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.js +86 -16
- package/dest/test-helpers/mock-pubsub.d.ts +59 -0
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -0
- package/dest/test-helpers/mock-pubsub.js +130 -0
- package/dest/test-helpers/mock-tx-helpers.d.ts +12 -0
- package/dest/test-helpers/mock-tx-helpers.d.ts.map +1 -0
- package/dest/test-helpers/mock-tx-helpers.js +19 -0
- package/dest/test-helpers/reqresp-nodes.d.ts +15 -11
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +62 -28
- package/dest/testbench/p2p_client_testbench_worker.d.ts +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +103 -29
- package/dest/testbench/parse_log_file.d.ts +1 -1
- package/dest/testbench/parse_log_file.js +4 -4
- package/dest/testbench/testbench.d.ts +1 -1
- package/dest/testbench/testbench.js +4 -4
- package/dest/testbench/worker_client_manager.d.ts +1 -6
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +11 -19
- package/dest/types/index.d.ts +4 -2
- package/dest/types/index.d.ts.map +1 -1
- package/dest/types/index.js +2 -0
- package/dest/util.d.ts +24 -16
- package/dest/util.d.ts.map +1 -1
- package/dest/util.js +75 -69
- package/dest/versioning.d.ts +4 -4
- package/dest/versioning.d.ts.map +1 -1
- package/dest/versioning.js +8 -3
- package/package.json +32 -27
- package/src/bootstrap/bootstrap.ts +27 -11
- package/src/client/factory.ts +136 -45
- package/src/client/index.ts +1 -0
- package/src/client/interface.ts +198 -0
- package/src/client/p2p_client.ts +469 -330
- package/src/config.ts +305 -134
- package/src/enr/generate-enr.ts +39 -6
- package/src/errors/attestation-pool.error.ts +13 -0
- package/src/index.ts +4 -0
- package/src/mem_pools/attestation_pool/attestation_pool.ts +75 -7
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +264 -65
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +173 -34
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +156 -30
- package/src/mem_pools/attestation_pool/mocks.ts +11 -10
- package/src/mem_pools/instrumentation.ts +43 -44
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +549 -108
- package/src/mem_pools/tx_pool/memory_tx_pool.ts +153 -44
- package/src/mem_pools/tx_pool/priority.ts +1 -1
- package/src/mem_pools/tx_pool/tx_pool.ts +67 -8
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +217 -34
- package/src/msg_validators/attestation_validator/attestation_validator.ts +54 -11
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +91 -0
- package/src/msg_validators/attestation_validator/index.ts +1 -0
- package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +82 -14
- package/src/msg_validators/msg_seen_validator/msg_seen_validator.ts +36 -0
- package/src/msg_validators/tx_validator/allowed_public_setup.ts +35 -0
- package/src/msg_validators/tx_validator/archive_cache.ts +28 -0
- package/src/msg_validators/tx_validator/block_header_validator.ts +4 -4
- package/src/msg_validators/tx_validator/data_validator.ts +81 -69
- package/src/msg_validators/tx_validator/double_spend_validator.ts +19 -17
- package/src/msg_validators/tx_validator/factory.ts +109 -0
- package/src/msg_validators/tx_validator/gas_validator.ts +134 -0
- package/src/msg_validators/tx_validator/index.ts +7 -0
- package/src/msg_validators/tx_validator/metadata_validator.ts +58 -21
- package/src/msg_validators/tx_validator/phases_validator.ts +116 -0
- package/src/msg_validators/tx_validator/test_utils.ts +43 -0
- package/src/msg_validators/tx_validator/timestamp_validator.ts +46 -0
- package/src/msg_validators/tx_validator/tx_permitted_validator.ts +17 -0
- package/src/msg_validators/tx_validator/tx_proof_validator.ts +6 -5
- package/src/services/discv5/discV5_service.ts +84 -38
- package/src/services/dummy_service.ts +147 -9
- package/src/services/encoding.ts +80 -5
- package/src/services/index.ts +4 -0
- package/src/services/libp2p/instrumentation.ts +167 -0
- package/src/services/libp2p/libp2p_service.ts +866 -294
- package/src/services/peer-manager/interface.ts +29 -0
- package/src/services/peer-manager/metrics.ts +26 -1
- package/src/services/peer-manager/peer_manager.ts +654 -78
- package/src/services/peer-manager/peer_scoring.ts +46 -3
- package/src/services/reqresp/config.ts +26 -9
- package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +12 -6
- package/src/services/reqresp/connection-sampler/connection_sampler.ts +148 -95
- package/src/services/reqresp/index.ts +2 -0
- package/src/services/reqresp/interface.ts +91 -36
- package/src/services/reqresp/metrics.ts +4 -1
- package/src/services/reqresp/protocols/auth.ts +83 -0
- package/src/services/reqresp/protocols/block.ts +24 -3
- package/src/services/reqresp/protocols/block_txs/bitvector.ts +90 -0
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +53 -0
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +79 -0
- package/src/services/reqresp/protocols/block_txs/index.ts +3 -0
- package/src/services/reqresp/protocols/goodbye.ts +9 -7
- package/src/services/reqresp/protocols/index.ts +2 -0
- package/src/services/reqresp/protocols/status.ts +117 -5
- package/src/services/reqresp/protocols/tx.ts +35 -6
- package/src/services/reqresp/rate-limiter/rate_limiter.ts +12 -3
- package/src/services/reqresp/rate-limiter/rate_limits.ts +21 -1
- package/src/services/reqresp/reqresp.ts +387 -256
- package/src/services/reqresp/status.ts +12 -3
- package/src/services/service.ts +45 -21
- package/src/services/tx_collection/config.ts +84 -0
- package/src/services/tx_collection/fast_tx_collection.ts +340 -0
- package/src/services/tx_collection/index.ts +2 -0
- package/src/services/tx_collection/instrumentation.ts +43 -0
- package/src/services/tx_collection/slow_tx_collection.ts +233 -0
- package/src/services/tx_collection/tx_collection.ts +215 -0
- package/src/services/tx_collection/tx_collection_sink.ts +129 -0
- package/src/services/tx_collection/tx_source.ts +37 -0
- package/src/services/tx_provider.ts +216 -0
- package/src/services/tx_provider_instrumentation.ts +44 -0
- package/src/test-helpers/index.ts +1 -0
- package/src/test-helpers/make-enrs.ts +4 -5
- package/src/test-helpers/make-test-p2p-clients.ts +111 -21
- package/src/test-helpers/mock-pubsub.ts +188 -0
- package/src/test-helpers/mock-tx-helpers.ts +24 -0
- package/src/test-helpers/reqresp-nodes.ts +86 -35
- package/src/testbench/p2p_client_testbench_worker.ts +151 -25
- package/src/testbench/parse_log_file.ts +4 -4
- package/src/testbench/testbench.ts +4 -4
- package/src/testbench/worker_client_manager.ts +17 -23
- package/src/types/index.ts +2 -0
- package/src/util.ts +105 -91
- package/src/versioning.ts +11 -4
package/dest/util.d.ts
CHANGED
|
@@ -1,18 +1,27 @@
|
|
|
1
|
+
import { SecretValue } from '@aztec/foundation/config';
|
|
2
|
+
import type { Logger } from '@aztec/foundation/log';
|
|
1
3
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
2
4
|
import type { DataStoreConfig } from '@aztec/kv-store/config';
|
|
3
5
|
import type { GossipSub } from '@chainsafe/libp2p-gossipsub';
|
|
6
|
+
import type { Identify } from '@libp2p/identify';
|
|
4
7
|
import type { PeerId } from '@libp2p/interface';
|
|
5
8
|
import type { ConnectionManager } from '@libp2p/interface-internal';
|
|
6
9
|
import type { Libp2p } from 'libp2p';
|
|
7
10
|
import type { P2PConfig } from './config.js';
|
|
8
|
-
export interface PubSubLibp2p extends Libp2p {
|
|
11
|
+
export interface PubSubLibp2p extends Pick<Libp2p, 'status' | 'start' | 'stop' | 'peerId'> {
|
|
9
12
|
services: {
|
|
10
|
-
pubsub: GossipSub
|
|
11
|
-
|
|
12
|
-
connectionManager: ConnectionManager;
|
|
13
|
+
pubsub: Pick<GossipSub, 'addEventListener' | 'removeEventListener' | 'publish' | 'subscribe' | 'reportMessageValidationResult' | 'direct'> & {
|
|
14
|
+
score: Pick<GossipSub['score'], 'score'>;
|
|
13
15
|
};
|
|
14
16
|
};
|
|
15
17
|
}
|
|
18
|
+
export type FullLibp2p = Libp2p<{
|
|
19
|
+
identify: Identify;
|
|
20
|
+
pubsub: GossipSub;
|
|
21
|
+
components: {
|
|
22
|
+
connectionManager: ConnectionManager;
|
|
23
|
+
};
|
|
24
|
+
}>;
|
|
16
25
|
/**
|
|
17
26
|
* Converts an address string to a multiaddr string.
|
|
18
27
|
* Example usage:
|
|
@@ -21,33 +30,32 @@ export interface PubSubLibp2p extends Libp2p {
|
|
|
21
30
|
* @param address - The address string to convert. Has to be in the format <addr>:<port>.
|
|
22
31
|
* @param protocol - The protocol to use in the multiaddr string.
|
|
23
32
|
* @returns A multiaddr compliant string. */
|
|
24
|
-
export declare function convertToMultiaddr(address: string, protocol: 'tcp' | 'udp'): string;
|
|
25
|
-
/**
|
|
26
|
-
* Splits an <address>:<port> string into its components.
|
|
27
|
-
* @returns The ip6 or ip4 address & port separately
|
|
28
|
-
*/
|
|
29
|
-
export declare function splitAddressPort(address: string, allowEmptyAddress: boolean): [string, string];
|
|
33
|
+
export declare function convertToMultiaddr(address: string, port: number, protocol: 'tcp' | 'udp'): string;
|
|
30
34
|
/**
|
|
31
35
|
* Queries the public IP address of the machine.
|
|
32
36
|
*/
|
|
33
37
|
export declare function getPublicIp(): Promise<string>;
|
|
34
|
-
export declare function
|
|
38
|
+
export declare function isValidIpAddress(address: string): boolean;
|
|
39
|
+
export declare function resolveAddressIfNecessary(address: string, port: string): Promise<string>;
|
|
35
40
|
export declare function configureP2PClientAddresses(_config: P2PConfig & DataStoreConfig): Promise<P2PConfig & DataStoreConfig>;
|
|
36
41
|
/**
|
|
37
42
|
* Get the peer id private key
|
|
38
43
|
*
|
|
39
44
|
* 1. Check if we have a peer id private key in the config
|
|
40
|
-
* 2. If not, check we have a peer id private key persisted in
|
|
41
|
-
* 3. If
|
|
45
|
+
* 2. If not, check if we have a peer id private key persisted in a file
|
|
46
|
+
* 3. If no file path or data directory is provided, check if we have a peer id private key in the node's store
|
|
47
|
+
* 4. If not, create a new one, then persist it in a file if a file path or data directory is provided or in the node's store otherwise
|
|
42
48
|
*
|
|
43
49
|
*/
|
|
44
50
|
export declare function getPeerIdPrivateKey(config: {
|
|
45
|
-
peerIdPrivateKey?: string
|
|
46
|
-
|
|
51
|
+
peerIdPrivateKey?: SecretValue<string>;
|
|
52
|
+
peerIdPrivateKeyPath?: string;
|
|
53
|
+
dataDirectory?: string;
|
|
54
|
+
}, store: AztecAsyncKVStore, logger: Logger): Promise<SecretValue<string>>;
|
|
47
55
|
/**
|
|
48
56
|
* Create a libp2p peer ID from the private key.
|
|
49
57
|
* @param privateKey - peer ID private key as hex string
|
|
50
58
|
* @returns The peer ID.
|
|
51
59
|
*/
|
|
52
60
|
export declare function createLibP2PPeerIdFromPrivateKey(privateKey: string): Promise<PeerId>;
|
|
53
|
-
//# sourceMappingURL=
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUF1QixNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTdELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBYyxNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJcEUsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBSXJDLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUk3QyxNQUFNLFdBQVcsWUFBYSxTQUFRLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxHQUFHLE9BQU8sR0FBRyxNQUFNLEdBQUcsUUFBUSxDQUFDO0lBQ3hGLFFBQVEsRUFBRTtRQUNSLE1BQU0sRUFBRSxJQUFJLENBQ1YsU0FBUyxFQUNULGtCQUFrQixHQUFHLHFCQUFxQixHQUFHLFNBQVMsR0FBRyxXQUFXLEdBQUcsK0JBQStCLEdBQUcsUUFBUSxDQUNsSCxHQUFHO1lBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUE7U0FBRSxDQUFDO0tBQ2xELENBQUM7Q0FDSDtBQUVELE1BQU0sTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDO0lBQzlCLFFBQVEsRUFBRSxRQUFRLENBQUM7SUFDbkIsTUFBTSxFQUFFLFNBQVMsQ0FBQztJQUNsQixVQUFVLEVBQUU7UUFDVixpQkFBaUIsRUFBRSxpQkFBaUIsQ0FBQztLQUN0QyxDQUFDO0NBQ0gsQ0FBQyxDQUFDO0FBRUg7Ozs7Ozs7NkNBTzZDO0FBQzdDLHdCQUFnQixrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssR0FBRyxLQUFLLEdBQUcsTUFBTSxDQU9qRztBQUVEOztHQUVHO0FBQ0gsd0JBQXNCLFdBQVcsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBUW5EO0FBRUQsd0JBQWdCLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUd6RDtBQUVELHdCQUFzQix5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQVc5RjtBQWNELHdCQUFzQiwyQkFBMkIsQ0FDL0MsT0FBTyxFQUFFLFNBQVMsR0FBRyxlQUFlLEdBQ25DLE9BQU8sQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDLENBbUJ0QztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQXNCLG1CQUFtQixDQUN2QyxNQUFNLEVBQUU7SUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUFDLG9CQUFvQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQUMsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFBO0NBQUUsRUFDekcsS0FBSyxFQUFFLGlCQUFpQixFQUN4QixNQUFNLEVBQUUsTUFBTSxHQUNiLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0EyRDlCO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFzQixnQ0FBZ0MsQ0FBQyxVQUFVLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FTMUYifQ==
|
package/dest/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAuB,MAAM,iBAAiB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAIpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IACxF,QAAQ,EAAE;QACR,MAAM,EAAE,IAAI,CACV,SAAS,EACT,kBAAkB,GAAG,qBAAqB,GAAG,SAAS,GAAG,WAAW,GAAG,+BAA+B,GAAG,QAAQ,CAClH,GAAG;YAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAA;SAAE,CAAC;KAClD,CAAC;CACH;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE;QACV,iBAAiB,EAAE,iBAAiB,CAAC;KACtC,CAAC;CACH,CAAC,CAAC;AAEH;;;;;;;6CAO6C;AAC7C,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAOjG;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAQnD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGzD;AAED,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAW9F;AAcD,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,SAAS,GAAG,eAAe,GACnC,OAAO,CAAC,SAAS,GAAG,eAAe,CAAC,CAmBtC;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE;IAAE,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,EACzG,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CA2D9B;AAED;;;;GAIG;AACH,wBAAsB,gCAAgC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS1F"}
|
package/dest/util.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
|
+
import { SecretValue } from '@aztec/foundation/config';
|
|
1
2
|
import { generateKeyPair, marshalPrivateKey, unmarshalPrivateKey } from '@libp2p/crypto/keys';
|
|
2
3
|
import { createFromPrivKey } from '@libp2p/peer-id-factory';
|
|
3
4
|
import { resolve } from 'dns/promises';
|
|
5
|
+
import { promises as fs } from 'fs';
|
|
6
|
+
import net from 'net';
|
|
7
|
+
import path from 'path';
|
|
8
|
+
const PEER_ID_DATA_DIR_FILE = 'p2p-private-key';
|
|
4
9
|
/**
|
|
5
10
|
* Converts an address string to a multiaddr string.
|
|
6
11
|
* Example usage:
|
|
@@ -8,53 +13,34 @@ import { resolve } from 'dns/promises';
|
|
|
8
13
|
* const udpAddr = '[2001:db8::1]:8080' -> /ip6/2001:db8::1/udp/8080
|
|
9
14
|
* @param address - The address string to convert. Has to be in the format <addr>:<port>.
|
|
10
15
|
* @param protocol - The protocol to use in the multiaddr string.
|
|
11
|
-
* @returns A multiaddr compliant string. */ export function convertToMultiaddr(address, protocol) {
|
|
12
|
-
const
|
|
13
|
-
const multiaddrPrefix = addressToMultiAddressType(addr);
|
|
16
|
+
* @returns A multiaddr compliant string. */ export function convertToMultiaddr(address, port, protocol) {
|
|
17
|
+
const multiaddrPrefix = addressToMultiAddressType(address);
|
|
14
18
|
if (multiaddrPrefix === 'dns') {
|
|
15
19
|
throw new Error('Invalid address format. Expected an IPv4 or IPv6 address.');
|
|
16
20
|
}
|
|
17
|
-
return `/${multiaddrPrefix}/${
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Splits an <address>:<port> string into its components.
|
|
21
|
-
* @returns The ip6 or ip4 address & port separately
|
|
22
|
-
*/ export function splitAddressPort(address, allowEmptyAddress) {
|
|
23
|
-
let addr;
|
|
24
|
-
let port;
|
|
25
|
-
if (address.startsWith('[')) {
|
|
26
|
-
// IPv6 address enclosed in square brackets
|
|
27
|
-
const match = address.match(/^\[([^\]]+)\]:(\d+)$/);
|
|
28
|
-
if (!match) {
|
|
29
|
-
throw new Error(`Invalid IPv6 address format:${address}. Expected format: [<addr>]:<port>`);
|
|
30
|
-
}
|
|
31
|
-
[, addr, port] = match;
|
|
32
|
-
} else {
|
|
33
|
-
// IPv4 address
|
|
34
|
-
[addr, port] = address.split(':');
|
|
35
|
-
if (!addr && !allowEmptyAddress || !port) {
|
|
36
|
-
throw new Error(`Invalid address format: ${address}. Expected format: <addr>:<port>`);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
return [
|
|
40
|
-
addr,
|
|
41
|
-
port
|
|
42
|
-
];
|
|
21
|
+
return `/${multiaddrPrefix}/${address}/${protocol}/${port}`;
|
|
43
22
|
}
|
|
44
23
|
/**
|
|
45
24
|
* Queries the public IP address of the machine.
|
|
46
25
|
*/ export async function getPublicIp() {
|
|
47
|
-
const resp = await fetch('
|
|
26
|
+
const resp = await fetch('https://checkip.amazonaws.com/');
|
|
48
27
|
const text = await resp.text();
|
|
49
|
-
|
|
28
|
+
const address = text.trim();
|
|
29
|
+
if (!isValidIpAddress(address)) {
|
|
30
|
+
throw new Error(`Received invalid IP address from checkip service: ${address}`);
|
|
31
|
+
}
|
|
32
|
+
return address;
|
|
33
|
+
}
|
|
34
|
+
export function isValidIpAddress(address) {
|
|
35
|
+
const netType = net.isIP(address);
|
|
36
|
+
return netType === 4;
|
|
50
37
|
}
|
|
51
|
-
export async function resolveAddressIfNecessary(address) {
|
|
52
|
-
const
|
|
53
|
-
const multiaddrPrefix = addressToMultiAddressType(addr);
|
|
38
|
+
export async function resolveAddressIfNecessary(address, port) {
|
|
39
|
+
const multiaddrPrefix = addressToMultiAddressType(address);
|
|
54
40
|
if (multiaddrPrefix === 'dns') {
|
|
55
|
-
const resolvedAddresses = await resolve(
|
|
41
|
+
const resolvedAddresses = await resolve(address);
|
|
56
42
|
if (resolvedAddresses.length === 0) {
|
|
57
|
-
throw new Error(`Could not resolve address: ${
|
|
43
|
+
throw new Error(`Could not resolve address: ${address}`);
|
|
58
44
|
}
|
|
59
45
|
return `${resolvedAddresses[0]}:${port}`;
|
|
60
46
|
} else {
|
|
@@ -76,56 +62,76 @@ export async function configureP2PClientAddresses(_config) {
|
|
|
76
62
|
const config = {
|
|
77
63
|
..._config
|
|
78
64
|
};
|
|
79
|
-
const {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
65
|
+
const { p2pIp, queryForIp, p2pBroadcastPort, p2pPort } = config;
|
|
66
|
+
// If no broadcast port is provided, use the given p2p port as the broadcast port
|
|
67
|
+
if (!p2pBroadcastPort) {
|
|
68
|
+
config.p2pBroadcastPort = p2pPort;
|
|
69
|
+
}
|
|
84
70
|
// check if no announce IP was provided
|
|
85
|
-
|
|
86
|
-
if (splitTcpAnnounceAddress.length == 2 && splitTcpAnnounceAddress[0] === '') {
|
|
71
|
+
if (!p2pIp) {
|
|
87
72
|
if (queryForIp) {
|
|
88
|
-
publicIp = await getPublicIp();
|
|
89
|
-
|
|
90
|
-
config.tcpAnnounceAddress = tcpAnnounceAddress;
|
|
91
|
-
} else {
|
|
92
|
-
throw new Error(`Invalid announceTcpAddress provided: ${configTcpAnnounceAddress}. Expected format: <addr>:<port>`);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
const splitUdpAnnounceAddress = splitAddressPort(configUdpAnnounceAddress || '', true);
|
|
96
|
-
if (splitUdpAnnounceAddress.length == 2 && splitUdpAnnounceAddress[0] === '') {
|
|
97
|
-
// If announceUdpAddress is not provided, use announceTcpAddress
|
|
98
|
-
if (!queryForIp && config.tcpAnnounceAddress) {
|
|
99
|
-
config.udpAnnounceAddress = config.tcpAnnounceAddress;
|
|
100
|
-
} else if (queryForIp) {
|
|
101
|
-
const udpPublicIp = publicIp || await getPublicIp();
|
|
102
|
-
const udpAnnounceAddress = `${udpPublicIp}:${splitUdpAnnounceAddress[1]}`;
|
|
103
|
-
config.udpAnnounceAddress = udpAnnounceAddress;
|
|
73
|
+
const publicIp = await getPublicIp();
|
|
74
|
+
config.p2pIp = publicIp;
|
|
104
75
|
}
|
|
105
76
|
}
|
|
77
|
+
// TODO(md): guard against setting a local ip address as the announce ip
|
|
106
78
|
return config;
|
|
107
79
|
}
|
|
108
80
|
/**
|
|
109
81
|
* Get the peer id private key
|
|
110
82
|
*
|
|
111
83
|
* 1. Check if we have a peer id private key in the config
|
|
112
|
-
* 2. If not, check we have a peer id private key persisted in
|
|
113
|
-
* 3. If
|
|
84
|
+
* 2. If not, check if we have a peer id private key persisted in a file
|
|
85
|
+
* 3. If no file path or data directory is provided, check if we have a peer id private key in the node's store
|
|
86
|
+
* 4. If not, create a new one, then persist it in a file if a file path or data directory is provided or in the node's store otherwise
|
|
114
87
|
*
|
|
115
|
-
*/ export async function getPeerIdPrivateKey(config, store) {
|
|
116
|
-
const
|
|
117
|
-
|
|
118
|
-
|
|
88
|
+
*/ export async function getPeerIdPrivateKey(config, store, logger) {
|
|
89
|
+
const peerIdPrivateKeyFilePath = config.peerIdPrivateKeyPath ?? (config.dataDirectory ? path.join(config.dataDirectory, PEER_ID_DATA_DIR_FILE) : undefined);
|
|
90
|
+
let peerIdPrivateKeySingleton;
|
|
91
|
+
const writePrivateKeyToFile = async (filePath, privateKey)=>{
|
|
92
|
+
await fs.mkdir(path.dirname(filePath), {
|
|
93
|
+
recursive: true
|
|
94
|
+
});
|
|
95
|
+
await fs.writeFile(filePath, privateKey);
|
|
96
|
+
};
|
|
97
|
+
// If the peerIdPrivateKey is provided in the config, we use it and persist it in either a file or the node's store
|
|
98
|
+
if (config.peerIdPrivateKey && config.peerIdPrivateKey.getValue().trim()) {
|
|
99
|
+
if (peerIdPrivateKeyFilePath) {
|
|
100
|
+
await writePrivateKeyToFile(peerIdPrivateKeyFilePath, config.peerIdPrivateKey.getValue());
|
|
101
|
+
} else {
|
|
102
|
+
peerIdPrivateKeySingleton = store.openSingleton('peerIdPrivateKey');
|
|
103
|
+
await peerIdPrivateKeySingleton.set(config.peerIdPrivateKey.getValue());
|
|
104
|
+
}
|
|
119
105
|
return config.peerIdPrivateKey;
|
|
120
106
|
}
|
|
121
|
-
|
|
107
|
+
// Check to see if we have a peer id private key stored in a file or the node's store
|
|
108
|
+
let storedPeerIdPrivateKey;
|
|
109
|
+
const privateKeyFileExists = peerIdPrivateKeyFilePath && await fs.access(peerIdPrivateKeyFilePath).then(()=>true).catch(()=>false);
|
|
110
|
+
if (peerIdPrivateKeyFilePath && privateKeyFileExists) {
|
|
111
|
+
await fs.access(peerIdPrivateKeyFilePath);
|
|
112
|
+
storedPeerIdPrivateKey = await fs.readFile(peerIdPrivateKeyFilePath, 'utf8');
|
|
113
|
+
} else {
|
|
114
|
+
peerIdPrivateKeySingleton = store.openSingleton('peerIdPrivateKey');
|
|
115
|
+
storedPeerIdPrivateKey = await peerIdPrivateKeySingleton.getAsync();
|
|
116
|
+
}
|
|
122
117
|
if (storedPeerIdPrivateKey) {
|
|
123
|
-
|
|
118
|
+
if (peerIdPrivateKeyFilePath && !privateKeyFileExists) {
|
|
119
|
+
logger.verbose(`Peer ID private key found in the node's store, persisting it to ${peerIdPrivateKeyFilePath}`);
|
|
120
|
+
await writePrivateKeyToFile(peerIdPrivateKeyFilePath, storedPeerIdPrivateKey);
|
|
121
|
+
}
|
|
122
|
+
return new SecretValue(storedPeerIdPrivateKey);
|
|
124
123
|
}
|
|
124
|
+
// Generate and persist a new private key
|
|
125
125
|
const newPeerIdPrivateKey = await generateKeyPair('secp256k1');
|
|
126
126
|
const privateKeyString = Buffer.from(marshalPrivateKey(newPeerIdPrivateKey)).toString('hex');
|
|
127
|
-
|
|
128
|
-
|
|
127
|
+
if (peerIdPrivateKeyFilePath) {
|
|
128
|
+
logger.verbose(`Creating new peer ID private key and persisting it to ${peerIdPrivateKeyFilePath}`);
|
|
129
|
+
await writePrivateKeyToFile(peerIdPrivateKeyFilePath, privateKeyString);
|
|
130
|
+
} else {
|
|
131
|
+
logger.warn('Creating new peer ID private key and persisting it to the lmdb store. Key will be lost on rollup upgrade, specify the peer id private key path and restart the node to persist the peer id private key to a file');
|
|
132
|
+
await peerIdPrivateKeySingleton.set(privateKeyString);
|
|
133
|
+
}
|
|
134
|
+
return new SecretValue(privateKeyString);
|
|
129
135
|
}
|
|
130
136
|
/**
|
|
131
137
|
* Create a libp2p peer ID from the private key.
|
package/dest/versioning.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
3
1
|
import type { ChainConfig } from '@aztec/stdlib/config';
|
|
4
2
|
import { type ComponentsVersions } from '@aztec/stdlib/versioning';
|
|
5
|
-
import type { SignableENR } from '@
|
|
3
|
+
import type { SignableENR } from '@nethermindeth/enr';
|
|
6
4
|
/** Returns the component versions based on config and this build. */
|
|
7
5
|
export declare function getVersions(config: ChainConfig): ComponentsVersions;
|
|
8
6
|
/** Sets the aztec key on the ENR record with versioning info. */
|
|
9
7
|
export declare function setAztecEnrKey(enr: SignableENR, config: ChainConfig, useXxHash?: boolean): ComponentsVersions;
|
|
8
|
+
/** Sets the Aztec client version on ENR record **/
|
|
9
|
+
export declare function setAztecClientVersionEnrKey(enr: SignableENR, clientVersion: string): void;
|
|
10
10
|
/** Checks the given value from an ENR record against the expected versions. */
|
|
11
11
|
export declare function checkAztecEnrVersion(enrValue: Buffer, expectedVersions: ComponentsVersions): void;
|
|
12
|
-
//# sourceMappingURL=
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbmluZy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3ZlcnNpb25pbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUNMLEtBQUssa0JBQWtCLEVBSXhCLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFTdEQscUVBQXFFO0FBQ3JFLHdCQUFnQixXQUFXLENBQUMsTUFBTSxFQUFFLFdBQVcsc0JBRTlDO0FBRUQsaUVBQWlFO0FBQ2pFLHdCQUFnQixjQUFjLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsVUFBYyxzQkFLNUY7QUFFRCxtREFBbUQ7QUFDbkQsd0JBQWdCLDJCQUEyQixDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sUUFJbEY7QUFFRCwrRUFBK0U7QUFDL0Usd0JBQWdCLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLFFBVTFGIn0=
|
package/dest/versioning.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versioning.d.ts","sourceRoot":"","sources":["../src/versioning.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"versioning.d.ts","sourceRoot":"","sources":["../src/versioning.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAStD,qEAAqE;AACrE,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,sBAE9C;AAED,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,UAAc,sBAK5F;AAED,mDAAmD;AACnD,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,QAIlF;AAED,+EAA+E;AAC/E,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,kBAAkB,QAU1F"}
|
package/dest/versioning.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { toBufferBE } from '@aztec/foundation/bigint-buffer';
|
|
2
2
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
3
|
-
import {
|
|
3
|
+
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
4
4
|
import { checkCompressedComponentVersion, compressComponentVersions, getComponentsVersionsFromConfig } from '@aztec/stdlib/versioning';
|
|
5
5
|
import xxhashFactory from 'xxhash-wasm';
|
|
6
|
-
import { AZTEC_ENR_KEY } from './types/index.js';
|
|
6
|
+
import { AZTEC_ENR_CLIENT_VERSION_KEY, AZTEC_ENR_KEY } from './types/index.js';
|
|
7
7
|
const USE_XX_HASH = false; // Enable to reduce the size of the ENR record for production
|
|
8
8
|
const XX_HASH_LEN = 8;
|
|
9
9
|
const xxhash = await xxhashFactory();
|
|
10
10
|
/** Returns the component versions based on config and this build. */ export function getVersions(config) {
|
|
11
|
-
return getComponentsVersionsFromConfig(config,
|
|
11
|
+
return getComponentsVersionsFromConfig(config, protocolContractsHash, getVKTreeRoot());
|
|
12
12
|
}
|
|
13
13
|
/** Sets the aztec key on the ENR record with versioning info. */ export function setAztecEnrKey(enr, config, useXxHash = USE_XX_HASH) {
|
|
14
14
|
const versions = getVersions(config);
|
|
@@ -16,6 +16,11 @@ const xxhash = await xxhashFactory();
|
|
|
16
16
|
enr.set(AZTEC_ENR_KEY, value);
|
|
17
17
|
return versions;
|
|
18
18
|
}
|
|
19
|
+
/** Sets the Aztec client version on ENR record **/ export function setAztecClientVersionEnrKey(enr, clientVersion) {
|
|
20
|
+
if (clientVersion) {
|
|
21
|
+
enr.set(AZTEC_ENR_CLIENT_VERSION_KEY, Buffer.from(clientVersion));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
19
24
|
/** Checks the given value from an ENR record against the expected versions. */ export function checkAztecEnrVersion(enrValue, expectedVersions) {
|
|
20
25
|
if (enrValue.length === XX_HASH_LEN) {
|
|
21
26
|
const expected = versionsToEnrValue(expectedVersions, true);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/p2p",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.1-commit.21caa21",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -19,14 +19,12 @@
|
|
|
19
19
|
"tsconfig": "./tsconfig.json"
|
|
20
20
|
},
|
|
21
21
|
"scripts": {
|
|
22
|
-
"build": "yarn clean &&
|
|
23
|
-
"build:dev": "
|
|
22
|
+
"build": "yarn clean && tsgo -b",
|
|
23
|
+
"build:dev": "tsgo -b --watch",
|
|
24
24
|
"clean": "rm -rf ./dest .tsbuildinfo",
|
|
25
|
-
"formatting": "run -T prettier --check ./src && run -T eslint ./src",
|
|
26
|
-
"formatting:fix": "run -T eslint --fix ./src && run -T prettier -w ./src",
|
|
27
25
|
"test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}",
|
|
28
26
|
"start": "node ./dest",
|
|
29
|
-
"start:dev": "
|
|
27
|
+
"start:dev": "concurrently -k \"tsgo -b -w\" \"nodemon --watch dest --exec yarn start\""
|
|
30
28
|
},
|
|
31
29
|
"inherits": [
|
|
32
30
|
"../package.common.json"
|
|
@@ -62,19 +60,24 @@
|
|
|
62
60
|
"testTimeout": 120000,
|
|
63
61
|
"setupFiles": [
|
|
64
62
|
"../../foundation/src/jest/setup.mjs"
|
|
63
|
+
],
|
|
64
|
+
"testEnvironment": "../../foundation/src/jest/env.mjs",
|
|
65
|
+
"setupFilesAfterEnv": [
|
|
66
|
+
"../../foundation/src/jest/setupAfterEnv.mjs"
|
|
65
67
|
]
|
|
66
68
|
},
|
|
67
69
|
"dependencies": {
|
|
68
|
-
"@aztec/constants": "0.0.
|
|
69
|
-
"@aztec/epoch-cache": "0.0.
|
|
70
|
-
"@aztec/
|
|
71
|
-
"@aztec/
|
|
72
|
-
"@aztec/
|
|
73
|
-
"@aztec/
|
|
74
|
-
"@aztec/
|
|
75
|
-
"@aztec/
|
|
76
|
-
"@
|
|
77
|
-
"@
|
|
70
|
+
"@aztec/constants": "0.0.1-commit.21caa21",
|
|
71
|
+
"@aztec/epoch-cache": "0.0.1-commit.21caa21",
|
|
72
|
+
"@aztec/ethereum": "0.0.1-commit.21caa21",
|
|
73
|
+
"@aztec/foundation": "0.0.1-commit.21caa21",
|
|
74
|
+
"@aztec/kv-store": "0.0.1-commit.21caa21",
|
|
75
|
+
"@aztec/noir-contracts.js": "0.0.1-commit.21caa21",
|
|
76
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.21caa21",
|
|
77
|
+
"@aztec/protocol-contracts": "0.0.1-commit.21caa21",
|
|
78
|
+
"@aztec/simulator": "0.0.1-commit.21caa21",
|
|
79
|
+
"@aztec/stdlib": "0.0.1-commit.21caa21",
|
|
80
|
+
"@aztec/telemetry-client": "0.0.1-commit.21caa21",
|
|
78
81
|
"@chainsafe/libp2p-gossipsub": "13.0.0",
|
|
79
82
|
"@chainsafe/libp2p-noise": "^15.0.0",
|
|
80
83
|
"@chainsafe/libp2p-yamux": "^6.0.2",
|
|
@@ -82,7 +85,6 @@
|
|
|
82
85
|
"@libp2p/crypto": "4.0.3",
|
|
83
86
|
"@libp2p/identify": "1.0.18",
|
|
84
87
|
"@libp2p/interface": "1.3.1",
|
|
85
|
-
"@libp2p/kad-dht": "10.0.4",
|
|
86
88
|
"@libp2p/mplex": "10.0.16",
|
|
87
89
|
"@libp2p/peer-id": "4.0.7",
|
|
88
90
|
"@libp2p/peer-id-factory": "4.1.1",
|
|
@@ -90,9 +92,10 @@
|
|
|
90
92
|
"@libp2p/prometheus-metrics": "^4.2.4",
|
|
91
93
|
"@libp2p/tcp": "9.0.24",
|
|
92
94
|
"@multiformats/multiaddr": "12.1.14",
|
|
95
|
+
"@nethermindeth/discv5": "9.0.0-backport-306-v4",
|
|
96
|
+
"@nethermindeth/enr": "3.0.0-backport-306-v4",
|
|
93
97
|
"interface-datastore": "^8.2.11",
|
|
94
98
|
"interface-store": "^5.1.8",
|
|
95
|
-
"it-pipe": "^3.0.1",
|
|
96
99
|
"libp2p": "1.5.0",
|
|
97
100
|
"semver": "^7.6.0",
|
|
98
101
|
"sha3": "^2.1.4",
|
|
@@ -101,19 +104,21 @@
|
|
|
101
104
|
"xxhash-wasm": "^1.1.0"
|
|
102
105
|
},
|
|
103
106
|
"devDependencies": {
|
|
104
|
-
"@aztec/archiver": "0.0.
|
|
105
|
-
"@
|
|
106
|
-
"@
|
|
107
|
-
"@types/
|
|
107
|
+
"@aztec/archiver": "0.0.1-commit.21caa21",
|
|
108
|
+
"@aztec/world-state": "0.0.1-commit.21caa21",
|
|
109
|
+
"@jest/globals": "^30.0.0",
|
|
110
|
+
"@types/jest": "^30.0.0",
|
|
111
|
+
"@types/node": "^22.15.17",
|
|
112
|
+
"@typescript/native-preview": "7.0.0-dev.20251126.1",
|
|
108
113
|
"get-port": "^7.1.0",
|
|
109
114
|
"it-drain": "^3.0.5",
|
|
110
115
|
"it-length": "^3.0.6",
|
|
111
|
-
"jest": "^
|
|
112
|
-
"jest-mock-extended": "^
|
|
116
|
+
"jest": "^30.0.0",
|
|
117
|
+
"jest-mock-extended": "^4.0.0",
|
|
113
118
|
"ts-node": "^10.9.1",
|
|
114
|
-
"typescript": "^5.
|
|
119
|
+
"typescript": "^5.3.3",
|
|
115
120
|
"uint8arrays": "^5.0.3",
|
|
116
|
-
"viem": "2.
|
|
121
|
+
"viem": "npm:@aztec/viem@2.38.2"
|
|
117
122
|
},
|
|
118
123
|
"files": [
|
|
119
124
|
"dest",
|
|
@@ -122,6 +127,6 @@
|
|
|
122
127
|
],
|
|
123
128
|
"types": "./dest/index.d.ts",
|
|
124
129
|
"engines": {
|
|
125
|
-
"node": ">=
|
|
130
|
+
"node": ">=20.10"
|
|
126
131
|
}
|
|
127
132
|
}
|
|
@@ -3,20 +3,20 @@ import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
|
3
3
|
import type { P2PBootstrapApi } from '@aztec/stdlib/interfaces/server';
|
|
4
4
|
import { OtelMetricsAdapter, type TelemetryClient } from '@aztec/telemetry-client';
|
|
5
5
|
|
|
6
|
-
import { Discv5, type Discv5EventEmitter } from '@chainsafe/discv5';
|
|
7
|
-
import { ENR, type SignableENR } from '@chainsafe/enr';
|
|
8
6
|
import type { PeerId } from '@libp2p/interface';
|
|
9
7
|
import { type Multiaddr, multiaddr } from '@multiformats/multiaddr';
|
|
8
|
+
import { Discv5, type Discv5EventEmitter } from '@nethermindeth/discv5';
|
|
9
|
+
import { ENR, type SignableENR } from '@nethermindeth/enr';
|
|
10
10
|
|
|
11
11
|
import type { BootnodeConfig } from '../config.js';
|
|
12
12
|
import { createBootnodeENRandPeerId } from '../enr/generate-enr.js';
|
|
13
|
-
import { convertToMultiaddr, getPeerIdPrivateKey } from '../util.js';
|
|
13
|
+
import { convertToMultiaddr, getPeerIdPrivateKey, getPublicIp } from '../util.js';
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* Encapsulates a 'Bootstrap' node, used for the purpose of assisting new joiners in acquiring peers.
|
|
17
17
|
*/
|
|
18
18
|
export class BootstrapNode implements P2PBootstrapApi {
|
|
19
|
-
private node?:
|
|
19
|
+
private node?: Discv5EventEmitter = undefined;
|
|
20
20
|
private peerId?: PeerId;
|
|
21
21
|
|
|
22
22
|
constructor(
|
|
@@ -31,18 +31,34 @@ export class BootstrapNode implements P2PBootstrapApi {
|
|
|
31
31
|
* @returns An empty promise.
|
|
32
32
|
*/
|
|
33
33
|
public async start(config: BootnodeConfig) {
|
|
34
|
-
const {
|
|
35
|
-
|
|
34
|
+
const { p2pPort, listenAddress, p2pBroadcastPort, queryForIp } = config;
|
|
35
|
+
let p2pIp = config.p2pIp;
|
|
36
|
+
this.logger.info(`Starting bootstrap node with config: ${JSON.stringify(config)}`);
|
|
37
|
+
if (!p2pIp) {
|
|
38
|
+
if (queryForIp) {
|
|
39
|
+
this.logger.info('Querying for public IP address...');
|
|
40
|
+
const publicIp = await getPublicIp();
|
|
41
|
+
p2pIp = publicIp;
|
|
42
|
+
this.logger.info(`Found public IP address: ${publicIp}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
36
45
|
|
|
37
|
-
if (!
|
|
38
|
-
throw new Error('You need to provide a
|
|
46
|
+
if (!p2pIp) {
|
|
47
|
+
throw new Error('You need to provide a P2P IP address.');
|
|
39
48
|
}
|
|
40
49
|
|
|
41
|
-
|
|
50
|
+
if (!p2pBroadcastPort) {
|
|
51
|
+
config.p2pBroadcastPort = p2pPort;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const listenAddrUdp = multiaddr(convertToMultiaddr(listenAddress, config.p2pBroadcastPort!, 'udp'));
|
|
55
|
+
|
|
56
|
+
const peerIdPrivateKey = await getPeerIdPrivateKey(config, this.store, this.logger);
|
|
42
57
|
|
|
43
58
|
const { enr: ourEnr, peerId } = await createBootnodeENRandPeerId(
|
|
44
|
-
peerIdPrivateKey,
|
|
45
|
-
|
|
59
|
+
peerIdPrivateKey.getValue(),
|
|
60
|
+
p2pIp,
|
|
61
|
+
config.p2pBroadcastPort!,
|
|
46
62
|
config.l1ChainId,
|
|
47
63
|
);
|
|
48
64
|
this.peerId = peerId;
|