@aztec/p2p 0.0.1-commit.3fd054f6 → 0.0.1-commit.431c48d
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/README.md +7 -6
- package/dest/bootstrap/bootstrap.d.ts +1 -1
- package/dest/bootstrap/bootstrap.d.ts.map +1 -1
- package/dest/bootstrap/bootstrap.js +22 -6
- package/dest/client/factory.d.ts +4 -3
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +35 -25
- package/dest/client/interface.d.ts +52 -12
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +36 -20
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +127 -54
- package/dest/config.d.ts +150 -107
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +77 -26
- package/dest/errors/p2p-service.error.d.ts +9 -0
- package/dest/errors/p2p-service.error.d.ts.map +1 -0
- package/dest/errors/p2p-service.error.js +10 -0
- package/dest/errors/reqresp.error.d.ts +9 -16
- package/dest/errors/reqresp.error.d.ts.map +1 -1
- package/dest/errors/reqresp.error.js +10 -17
- package/dest/index.d.ts +1 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +0 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +98 -56
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.js +269 -196
- 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 +218 -59
- package/dest/mem_pools/attestation_pool/mocks.d.ts +1 -1
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +6 -4
- package/dest/mem_pools/index.d.ts +1 -2
- package/dest/mem_pools/index.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.d.ts +9 -4
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +28 -9
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +10 -5
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +29 -20
- package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +3 -3
- package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/deleted_pool.js +6 -6
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +3 -3
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +3 -1
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +2 -1
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/index.js +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
- package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +64 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +3 -4
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +6 -7
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +6 -5
- package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +11 -1
- package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/instrumentation.js +24 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +33 -5
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/interfaces.js +2 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +5 -2
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.js +13 -6
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +15 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +31 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +16 -3
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +83 -32
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +50 -6
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +243 -127
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +10 -3
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +38 -16
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +7 -3
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +4 -5
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +8 -3
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/block_proposal_validator.js +2 -2
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +8 -3
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +8 -2
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +25 -3
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator.js +85 -15
- 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/aggregate_tx_validator.js +8 -15
- package/dest/msg_validators/tx_validator/allowed_public_setup.js +3 -3
- package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
- package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts +15 -0
- package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/cached_tx_validator.js +19 -0
- package/dest/msg_validators/tx_validator/data_validator.d.ts +2 -1
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +1 -0
- package/dest/msg_validators/tx_validator/factory.d.ts +14 -15
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/factory.js +29 -16
- package/dest/msg_validators/tx_validator/gas_validator.d.ts +47 -10
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/gas_validator.js +65 -48
- package/dest/msg_validators/tx_validator/index.d.ts +3 -1
- package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/index.js +2 -0
- package/dest/msg_validators/tx_validator/phases_validator.js +2 -2
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +2 -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 +2 -0
- package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts +48 -0
- package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/tx_validation_cache.js +68 -0
- package/dest/services/data_store.d.ts +1 -1
- package/dest/services/data_store.d.ts.map +1 -1
- package/dest/services/data_store.js +5 -5
- package/dest/services/discv5/discV5_service.d.ts +13 -2
- package/dest/services/discv5/discV5_service.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.js +119 -23
- package/dest/services/discv5/persisted_enr_store.d.ts +38 -0
- package/dest/services/discv5/persisted_enr_store.d.ts.map +1 -0
- package/dest/services/discv5/persisted_enr_store.js +145 -0
- package/dest/services/dummy_service.d.ts +18 -16
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +21 -16
- package/dest/services/encoding.d.ts +19 -6
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +25 -15
- package/dest/services/gossipsub/topic_score_params.d.ts +6 -12
- package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
- package/dest/services/gossipsub/topic_score_params.js +4 -14
- package/dest/services/libp2p/instrumentation.d.ts +6 -1
- package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
- package/dest/services/libp2p/instrumentation.js +21 -0
- package/dest/services/libp2p/libp2p_service.d.ts +49 -44
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +388 -279
- package/dest/services/peer-manager/peer_manager.d.ts +31 -3
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +121 -23
- package/dest/services/peer-manager/peer_scoring.d.ts +34 -2
- package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_scoring.js +102 -13
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +1 -8
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +35 -44
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts +8 -5
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +5 -14
- package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/tx_validator.js +6 -20
- package/dest/services/reqresp/config.d.ts +15 -3
- package/dest/services/reqresp/config.d.ts.map +1 -1
- package/dest/services/reqresp/config.js +11 -0
- package/dest/services/reqresp/interface.d.ts +16 -18
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +10 -20
- package/dest/services/reqresp/metrics.d.ts +1 -1
- package/dest/services/reqresp/metrics.d.ts.map +1 -1
- package/dest/services/reqresp/metrics.js +0 -1
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +4 -3
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/bitvector.js +3 -2
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +1 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +31 -28
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +12 -7
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +42 -24
- package/dest/services/reqresp/protocols/index.d.ts +1 -2
- package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/index.js +0 -1
- package/dest/services/reqresp/protocols/tx.d.ts +1 -1
- package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/tx.js +1 -3
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
- 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 +3 -13
- package/dest/services/reqresp/reqresp.d.ts +7 -29
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +59 -209
- package/dest/services/service.d.ts +43 -18
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +2 -23
- package/dest/services/tx_collection/config.d.ts.map +1 -1
- package/dest/services/tx_collection/config.js +2 -55
- package/dest/services/tx_collection/file_store_tx_collection.d.ts +12 -28
- package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/file_store_tx_collection.js +43 -83
- package/dest/services/tx_collection/file_store_tx_source.d.ts +5 -4
- package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
- package/dest/services/tx_collection/file_store_tx_source.js +39 -29
- package/dest/services/tx_collection/index.d.ts +2 -3
- package/dest/services/tx_collection/index.d.ts.map +1 -1
- package/dest/services/tx_collection/index.js +0 -1
- package/dest/services/tx_collection/instrumentation.d.ts +1 -1
- package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
- package/dest/services/tx_collection/instrumentation.js +0 -2
- package/dest/services/tx_collection/tx_collection.d.ts +35 -51
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection.js +275 -119
- package/dest/services/tx_collection/tx_collection_sink.d.ts +1 -1
- package/dest/services/tx_collection/tx_collection_sink.js +2 -2
- package/dest/services/tx_collection/tx_source.d.ts +6 -5
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_source.js +13 -8
- package/dest/services/tx_file_store/tx_file_store.d.ts +1 -3
- package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
- package/dest/services/tx_file_store/tx_file_store.js +4 -14
- package/dest/services/tx_provider.d.ts +3 -1
- package/dest/services/tx_provider.d.ts.map +1 -1
- package/dest/services/tx_provider.js +3 -0
- package/dest/test-helpers/make-test-p2p-clients.d.ts +1 -1
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.js +5 -2
- package/dest/test-helpers/mock-pubsub.d.ts +33 -9
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.js +57 -44
- package/dest/test-helpers/reqresp-nodes.d.ts +4 -5
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +16 -18
- package/dest/test-helpers/test_tx_provider.d.ts +3 -1
- package/dest/test-helpers/test_tx_provider.d.ts.map +1 -1
- package/dest/test-helpers/test_tx_provider.js +3 -0
- package/dest/test-helpers/testbench-utils.d.ts +15 -14
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
- package/dest/test-helpers/testbench-utils.js +28 -13
- package/dest/testbench/p2p_client_testbench_worker.d.ts +3 -5
- package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +101 -39
- package/dest/testbench/worker_client_manager.d.ts +10 -6
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +51 -9
- package/dest/util.d.ts +11 -6
- package/dest/util.d.ts.map +1 -1
- package/dest/util.js +35 -14
- package/dest/versioning.d.ts +3 -6
- package/dest/versioning.d.ts.map +1 -1
- package/dest/versioning.js +3 -24
- package/package.json +17 -17
- package/src/bootstrap/bootstrap.ts +17 -3
- package/src/client/factory.ts +53 -24
- package/src/client/interface.ts +48 -18
- package/src/client/p2p_client.ts +144 -86
- package/src/client/test/{tx_proposal_collector/README.md → p2p_client.batch_tx_requester.bench.README.md} +23 -53
- package/src/config.ts +159 -34
- package/src/errors/p2p-service.error.ts +11 -0
- package/src/errors/reqresp.error.ts +13 -19
- package/src/index.ts +0 -1
- package/src/mem_pools/attestation_pool/attestation_pool.ts +324 -239
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +238 -63
- package/src/mem_pools/attestation_pool/mocks.ts +13 -8
- package/src/mem_pools/index.ts +0 -3
- package/src/mem_pools/instrumentation.ts +18 -12
- package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +30 -20
- package/src/mem_pools/tx_pool_v2/deleted_pool.ts +7 -7
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +2 -4
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +3 -2
- package/src/mem_pools/tx_pool_v2/eviction/index.ts +1 -0
- package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +67 -0
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +1 -3
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +5 -7
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +5 -6
- package/src/mem_pools/tx_pool_v2/instrumentation.ts +27 -0
- package/src/mem_pools/tx_pool_v2/interfaces.ts +31 -4
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +20 -8
- package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +35 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +94 -31
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +270 -133
- package/src/msg_validators/attestation_validator/attestation_validator.ts +46 -15
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +15 -7
- package/src/msg_validators/proposal_validator/README.md +1 -1
- package/src/msg_validators/proposal_validator/block_proposal_validator.ts +15 -3
- package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +26 -3
- package/src/msg_validators/proposal_validator/proposal_validator.ts +94 -12
- package/src/msg_validators/tx_validator/README.md +13 -3
- package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +3 -12
- package/src/msg_validators/tx_validator/allowed_public_setup.ts +3 -3
- package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
- package/src/msg_validators/tx_validator/cached_tx_validator.ts +31 -0
- package/src/msg_validators/tx_validator/data_validator.ts +2 -0
- package/src/msg_validators/tx_validator/factory.ts +37 -20
- package/src/msg_validators/tx_validator/gas_validator.ts +99 -54
- package/src/msg_validators/tx_validator/index.ts +2 -0
- package/src/msg_validators/tx_validator/phases_validator.ts +2 -2
- package/src/msg_validators/tx_validator/tx_proof_validator.ts +2 -0
- package/src/msg_validators/tx_validator/tx_validation_cache.ts +101 -0
- package/src/services/data_store.ts +5 -13
- package/src/services/discv5/discV5_service.ts +126 -14
- package/src/services/discv5/persisted_enr_store.ts +158 -0
- package/src/services/dummy_service.ts +26 -40
- package/src/services/encoding.ts +28 -20
- package/src/services/gossipsub/README.md +33 -11
- package/src/services/gossipsub/topic_score_params.ts +9 -18
- package/src/services/libp2p/instrumentation.ts +22 -0
- package/src/services/libp2p/libp2p_service.ts +456 -305
- package/src/services/peer-manager/peer_manager.ts +133 -22
- package/src/services/peer-manager/peer_scoring.ts +102 -8
- package/src/services/reqresp/README.md +2 -37
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +39 -52
- package/src/services/reqresp/batch-tx-requester/interface.ts +11 -4
- package/src/services/reqresp/batch-tx-requester/tx_validator.ts +12 -25
- package/src/services/reqresp/config.ts +19 -2
- package/src/services/reqresp/interface.ts +21 -47
- package/src/services/reqresp/metrics.ts +0 -1
- package/src/services/reqresp/protocols/block_txs/bitvector.ts +3 -2
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +34 -30
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +47 -20
- package/src/services/reqresp/protocols/index.ts +0 -1
- package/src/services/reqresp/protocols/tx.ts +1 -3
- package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
- package/src/services/reqresp/rate-limiter/rate_limits.ts +3 -13
- package/src/services/reqresp/reqresp.ts +69 -252
- package/src/services/service.ts +51 -35
- package/src/services/tx_collection/config.ts +3 -80
- package/src/services/tx_collection/file_store_tx_collection.ts +54 -103
- package/src/services/tx_collection/file_store_tx_source.ts +43 -31
- package/src/services/tx_collection/index.ts +1 -6
- package/src/services/tx_collection/instrumentation.ts +1 -7
- package/src/services/tx_collection/tx_collection.ts +330 -173
- package/src/services/tx_collection/tx_collection_sink.ts +2 -2
- package/src/services/tx_collection/tx_source.ts +10 -8
- package/src/services/tx_file_store/tx_file_store.ts +5 -17
- package/src/services/tx_provider.ts +5 -0
- package/src/test-helpers/make-test-p2p-clients.ts +3 -0
- package/src/test-helpers/mock-pubsub.ts +61 -60
- package/src/test-helpers/reqresp-nodes.ts +12 -22
- package/src/test-helpers/test_tx_provider.ts +5 -0
- package/src/test-helpers/testbench-utils.ts +35 -26
- package/src/testbench/p2p_client_testbench_worker.ts +108 -53
- package/src/testbench/worker_client_manager.ts +59 -20
- package/src/util.ts +32 -17
- package/src/versioning.ts +3 -33
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +0 -2
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +0 -1
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +0 -304
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +0 -73
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +0 -1
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +0 -8
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -123
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +0 -84
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
- package/dest/mem_pools/tx_pool/index.d.ts +0 -3
- package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/index.js +0 -2
- package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
- package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/priority.js +0 -15
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
- package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -402
- package/dest/msg_validators/clock_tolerance.d.ts +0 -21
- package/dest/msg_validators/clock_tolerance.d.ts.map +0 -1
- package/dest/msg_validators/clock_tolerance.js +0 -38
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +0 -64
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +0 -1
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +0 -151
- package/dest/services/reqresp/protocols/block.d.ts +0 -9
- package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
- package/dest/services/reqresp/protocols/block.js +0 -32
- package/dest/services/tx_collection/fast_tx_collection.d.ts +0 -51
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +0 -1
- package/dest/services/tx_collection/fast_tx_collection.js +0 -311
- package/dest/services/tx_collection/proposal_tx_collector.d.ts +0 -48
- package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +0 -1
- package/dest/services/tx_collection/proposal_tx_collector.js +0 -50
- package/dest/services/tx_collection/slow_tx_collection.d.ts +0 -57
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +0 -1
- package/dest/services/tx_collection/slow_tx_collection.js +0 -211
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +0 -343
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +0 -43
- package/src/mem_pools/tx_pool/README.md +0 -270
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
- package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
- package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
- package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -163
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
- package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
- package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
- package/src/mem_pools/tx_pool/index.ts +0 -2
- package/src/mem_pools/tx_pool/priority.ts +0 -20
- package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -321
- package/src/msg_validators/clock_tolerance.ts +0 -52
- package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +0 -161
- package/src/services/reqresp/protocols/block.ts +0 -37
- package/src/services/tx_collection/fast_tx_collection.ts +0 -361
- package/src/services/tx_collection/proposal_tx_collector.ts +0 -108
- package/src/services/tx_collection/slow_tx_collection.ts +0 -266
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import type { EpochCacheInterface } from '@aztec/epoch-cache';
|
|
2
|
-
import { BlockNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { BlockNumber, type CheckpointProposalHash, SlotNumber } from '@aztec/foundation/branded-types';
|
|
3
3
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
4
4
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
5
|
-
import { type EthAddress, type L2BlockSource, type L2BlockStreamEvent, type
|
|
5
|
+
import { type BlockHash, type EthAddress, type L2BlockSource, type L2BlockStreamEvent, type LocalL2Tips } from '@aztec/stdlib/block';
|
|
6
6
|
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
7
|
-
import { type PeerInfo } from '@aztec/stdlib/interfaces/server';
|
|
7
|
+
import { type GetTxByHashOptions, type P2PConnectivity, type PeerInfo } from '@aztec/stdlib/interfaces/server';
|
|
8
8
|
import { type BlockProposal, CheckpointAttestation, type CheckpointProposal, type TopicType } from '@aztec/stdlib/p2p';
|
|
9
9
|
import type { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
|
|
10
10
|
import { type TelemetryClient, WithTracer } from '@aztec/telemetry-client';
|
|
11
11
|
import type { PeerId } from '@libp2p/interface';
|
|
12
12
|
import type { ENR } from '@nethermindeth/enr';
|
|
13
13
|
import { type P2PConfig } from '../config.js';
|
|
14
|
+
import type { ProposalsForSlot } from '../mem_pools/attestation_pool/attestation_pool.js';
|
|
14
15
|
import type { MemPools } from '../mem_pools/interface.js';
|
|
15
16
|
import type { AuthRequest, StatusMessage } from '../services/index.js';
|
|
16
|
-
import { ReqRespSubProtocol, type ReqRespSubProtocolHandler
|
|
17
|
-
import type { DuplicateAttestationInfo, DuplicateProposalInfo, P2PBlockReceivedCallback, P2PCheckpointReceivedCallback, P2PService } from '../services/service.js';
|
|
17
|
+
import { ReqRespSubProtocol, type ReqRespSubProtocolHandler } from '../services/reqresp/interface.js';
|
|
18
|
+
import type { DuplicateAttestationInfo, DuplicateProposalInfo, OversizedProposalInfo, P2PBlockReceivedCallback, P2PCheckpointReceivedCallback, P2PService } from '../services/service.js';
|
|
18
19
|
import { TxCollection } from '../services/tx_collection/tx_collection.js';
|
|
19
20
|
import type { TxFileStore } from '../services/tx_file_store/tx_file_store.js';
|
|
20
21
|
import { TxProvider } from '../services/tx_provider.js';
|
|
@@ -37,7 +38,7 @@ export declare class P2PClient extends WithTracer implements P2P {
|
|
|
37
38
|
private runningPromise;
|
|
38
39
|
private currentState;
|
|
39
40
|
private syncPromise;
|
|
40
|
-
private
|
|
41
|
+
private syncResolvers?;
|
|
41
42
|
private latestBlockNumberAtStart;
|
|
42
43
|
private provenBlockNumberAtStart;
|
|
43
44
|
private finalizedBlockNumberAtStart;
|
|
@@ -51,25 +52,24 @@ export declare class P2PClient extends WithTracer implements P2P {
|
|
|
51
52
|
private validatorAddresses;
|
|
52
53
|
/** Tracks the last slot for which we called prepareForSlot */
|
|
53
54
|
private lastSlotProcessed;
|
|
54
|
-
|
|
55
|
-
private slotMonitor;
|
|
56
|
-
constructor(store: AztecAsyncKVStore, l2BlockSource: L2BlockSource & ContractDataSource, mempools: MemPools, p2pService: P2PService, txCollection: TxCollection, txFileStore: TxFileStore | undefined, epochCache: EpochCacheInterface, config?: Partial<P2PConfig>, _dateProvider?: DateProvider, telemetry?: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
|
|
55
|
+
constructor(store: AztecAsyncKVStore, l2BlockSource: L2BlockSource & ContractDataSource, mempools: MemPools, p2pService: P2PService, txCollection: TxCollection, txFileStore: TxFileStore | undefined, epochCache: EpochCacheInterface, config: Partial<P2PConfig> | undefined, _dateProvider: DateProvider | undefined, telemetry: TelemetryClient | undefined, log: import("@aztec/foundation/log").Logger | undefined, initialBlockHash: BlockHash);
|
|
57
56
|
registerThisValidatorAddresses(addresses: EthAddress[]): void;
|
|
58
57
|
clear(): Promise<void>;
|
|
59
58
|
isP2PClient(): true;
|
|
60
59
|
getTxProvider(): TxProvider;
|
|
61
60
|
getPeers(includePending?: boolean): Promise<PeerInfo[]>;
|
|
61
|
+
getP2PConnectivity(): Promise<P2PConnectivity>;
|
|
62
62
|
getGossipMeshPeerCount(topicType: TopicType): Promise<number>;
|
|
63
63
|
getL2BlockHash(number: BlockNumber): Promise<string | undefined>;
|
|
64
64
|
updateP2PConfig(config: Partial<P2PConfig>): Promise<void>;
|
|
65
|
-
getL2Tips(): Promise<
|
|
65
|
+
getL2Tips(): Promise<LocalL2Tips>;
|
|
66
66
|
handleBlockStreamEvent(event: L2BlockStreamEvent): Promise<void>;
|
|
67
67
|
/**
|
|
68
68
|
* Starts the P2P client.
|
|
69
69
|
* @returns An empty promise signalling the synching process.
|
|
70
70
|
*/
|
|
71
71
|
start(): Promise<void>;
|
|
72
|
-
addReqRespSubProtocol(subProtocol: ReqRespSubProtocol, handler: ReqRespSubProtocolHandler
|
|
72
|
+
addReqRespSubProtocol(subProtocol: ReqRespSubProtocol, handler: ReqRespSubProtocolHandler): Promise<void>;
|
|
73
73
|
private initBlockStream;
|
|
74
74
|
/**
|
|
75
75
|
* Allows consumers to stop the instance of the P2P client.
|
|
@@ -81,29 +81,45 @@ export declare class P2PClient extends WithTracer implements P2P {
|
|
|
81
81
|
broadcastProposal(proposal: BlockProposal): Promise<void>;
|
|
82
82
|
broadcastCheckpointProposal(proposal: CheckpointProposal): Promise<void>;
|
|
83
83
|
broadcastCheckpointAttestations(attestations: CheckpointAttestation[]): Promise<void>;
|
|
84
|
-
getCheckpointAttestationsForSlot(slot: SlotNumber,
|
|
84
|
+
getCheckpointAttestationsForSlot(slot: SlotNumber, proposalPayloadHash?: CheckpointProposalHash): Promise<CheckpointAttestation[]>;
|
|
85
85
|
addOwnCheckpointAttestations(attestations: CheckpointAttestation[]): Promise<void>;
|
|
86
|
+
getProposalsForSlot(slot: SlotNumber): Promise<ProposalsForSlot>;
|
|
86
87
|
hasBlockProposalsForSlot(slot: SlotNumber): Promise<boolean>;
|
|
88
|
+
hasCheckpointProposalForSlot(slot: SlotNumber): Promise<boolean>;
|
|
87
89
|
registerBlockProposalHandler(handler: P2PBlockReceivedCallback): void;
|
|
88
|
-
|
|
90
|
+
registerValidatorCheckpointProposalHandler(handler: P2PCheckpointReceivedCallback): void;
|
|
91
|
+
registerAllNodesCheckpointProposalHandler(handler: P2PCheckpointReceivedCallback): void;
|
|
89
92
|
registerDuplicateProposalCallback(callback: (info: DuplicateProposalInfo) => void): void;
|
|
93
|
+
registerOversizedProposalCallback(callback: (info: OversizedProposalInfo) => void): void;
|
|
90
94
|
registerDuplicateAttestationCallback(callback: (info: DuplicateAttestationInfo) => void): void;
|
|
91
|
-
|
|
95
|
+
registerCheckpointAttestationCallback(callback: (attestation: CheckpointAttestation) => void): void;
|
|
96
|
+
getPendingTxs(limit?: number, after?: TxHash, options?: GetTxByHashOptions): Promise<Tx[]>;
|
|
92
97
|
getPendingTxCount(): Promise<number>;
|
|
93
|
-
|
|
94
|
-
|
|
98
|
+
hasEligiblePendingTxs(minCount: number): Promise<boolean>;
|
|
99
|
+
iteratePendingTxs(opts?: {
|
|
100
|
+
includeProof?: boolean;
|
|
101
|
+
}): AsyncIterableIterator<Tx>;
|
|
102
|
+
iterateEligiblePendingTxs(opts?: {
|
|
103
|
+
includeProof?: boolean;
|
|
104
|
+
}): AsyncIterableIterator<Tx>;
|
|
95
105
|
/**
|
|
96
106
|
* Returns a transaction in the transaction pool by its hash.
|
|
97
107
|
* @param txHash - Hash of the transaction to look for in the pool.
|
|
108
|
+
* @param opts - Set `includeProof: false` to skip loading the tx proof from the DB.
|
|
98
109
|
* @returns A single tx or undefined.
|
|
99
110
|
*/
|
|
100
|
-
getTxByHashFromPool(txHash: TxHash
|
|
111
|
+
getTxByHashFromPool(txHash: TxHash, opts?: {
|
|
112
|
+
includeProof?: boolean;
|
|
113
|
+
}): Promise<Tx | undefined>;
|
|
101
114
|
/**
|
|
102
115
|
* Returns transactions in the transaction pool by hash.
|
|
103
116
|
* @param txHashes - Hashes of the transactions to look for.
|
|
117
|
+
* @param opts - Set `includeProof: false` to skip loading tx proofs from the DB.
|
|
104
118
|
* @returns The txs found, in the same order as the requested hashes. If a tx is not found, it will be undefined.
|
|
105
119
|
*/
|
|
106
|
-
getTxsByHashFromPool(txHashes: TxHash[]
|
|
120
|
+
getTxsByHashFromPool(txHashes: TxHash[], opts?: {
|
|
121
|
+
includeProof?: boolean;
|
|
122
|
+
}): Promise<(Tx | undefined)[]>;
|
|
107
123
|
hasTxsInPool(txHashes: TxHash[]): Promise<boolean[]>;
|
|
108
124
|
/**
|
|
109
125
|
* Returns an archived transaction in the transaction pool by its hash.
|
|
@@ -155,7 +171,7 @@ export declare class P2PClient extends WithTracer implements P2P {
|
|
|
155
171
|
getStatus(): Promise<P2PSyncState>;
|
|
156
172
|
private handleMinedBlocks;
|
|
157
173
|
private handleLatestL2Blocks;
|
|
158
|
-
private
|
|
174
|
+
private collectingMissingTxs;
|
|
159
175
|
private handleFinalizedL2Blocks;
|
|
160
176
|
private handlePruneL2Blocks;
|
|
161
177
|
private isEpochPrune;
|
|
@@ -183,4 +199,4 @@ export declare class P2PClient extends WithTracer implements P2P {
|
|
|
183
199
|
prepareForSlot(slotNumber: SlotNumber): Promise<void>;
|
|
184
200
|
handleAuthRequestFromPeer(authRequest: AuthRequest, peerId: PeerId): Promise<StatusMessage>;
|
|
185
201
|
}
|
|
186
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJwX2NsaWVudC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9wMnBfY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUNMLFdBQVcsRUFFWCxLQUFLLHNCQUFzQixFQUMzQixVQUFVLEVBQ1gsTUFBTSxpQ0FBaUMsQ0FBQztBQUd6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQXVCLE1BQU0saUJBQWlCLENBQUM7QUFFOUUsT0FBTyxFQUVMLEtBQUssU0FBUyxFQUVkLEtBQUssVUFBVSxFQUlmLEtBQUssYUFBYSxFQUNsQixLQUFLLGtCQUFrQixFQUV2QixLQUFLLFdBQVcsRUFDakIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpFLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUFFLEtBQUssZUFBZSxFQUFFLEtBQUssUUFBUSxFQUFXLE1BQU0saUNBQWlDLENBQUM7QUFDeEgsT0FBTyxFQUFFLEtBQUssYUFBYSxFQUFFLHFCQUFxQixFQUFFLEtBQUssa0JBQWtCLEVBQUUsS0FBSyxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2SCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hFLE9BQU8sRUFBYyxLQUFLLGVBQWUsRUFBRSxVQUFVLEVBQWlDLE1BQU0seUJBQXlCLENBQUM7QUFFdEgsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFOUMs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"p2p_client.d.ts","sourceRoot":"","sources":["../../src/client/p2p_client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"p2p_client.d.ts","sourceRoot":"","sources":["../../src/client/p2p_client.ts"],"names":[],"mappings":"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"}
|
|
@@ -371,13 +371,13 @@ function _apply_decs_2203_r(targetClass, memberDecs, classDecs, parentClass) {
|
|
|
371
371
|
return (_apply_decs_2203_r = applyDecs2203RFactory())(targetClass, memberDecs, classDecs, parentClass);
|
|
372
372
|
}
|
|
373
373
|
var _dec, _dec1, _initProto;
|
|
374
|
-
import { GENESIS_BLOCK_HEADER_HASH } from '@aztec/constants';
|
|
375
374
|
import { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
376
375
|
import { createLogger } from '@aztec/foundation/log';
|
|
377
|
-
import {
|
|
376
|
+
import { promiseWithResolvers } from '@aztec/foundation/promise';
|
|
378
377
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
379
378
|
import { L2TipsKVStore } from '@aztec/kv-store/stores';
|
|
380
|
-
import {
|
|
379
|
+
import { EventDrivenL2BlockStream } from '@aztec/stdlib/block';
|
|
380
|
+
import { getTimestampForSlot } from '@aztec/stdlib/epoch-helpers';
|
|
381
381
|
import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
382
382
|
import { Attributes, WithTracer, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
383
383
|
import { getP2PDefaultConfig } from '../config.js';
|
|
@@ -422,7 +422,7 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
422
422
|
/** The JS promise that will be running to keep the client's data in sync. Can be interrupted if the client is stopped. */ runningPromise;
|
|
423
423
|
currentState;
|
|
424
424
|
syncPromise;
|
|
425
|
-
|
|
425
|
+
syncResolvers;
|
|
426
426
|
latestBlockNumberAtStart;
|
|
427
427
|
provenBlockNumberAtStart;
|
|
428
428
|
finalizedBlockNumberAtStart;
|
|
@@ -435,9 +435,8 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
435
435
|
txProvider;
|
|
436
436
|
validatorAddresses;
|
|
437
437
|
/** Tracks the last slot for which we called prepareForSlot */ lastSlotProcessed;
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
super(telemetry, 'P2PClient'), this.store = store, this.l2BlockSource = l2BlockSource, this.p2pService = p2pService, this.txCollection = txCollection, this.txFileStore = txFileStore, this.epochCache = epochCache, this._dateProvider = _dateProvider, this.telemetry = telemetry, this.log = log, this.currentState = (_initProto(this), P2PClientState.IDLE), this.syncPromise = Promise.resolve(), this.syncResolve = undefined, this.latestBlockNumberAtStart = -1, this.provenBlockNumberAtStart = -1, this.finalizedBlockNumberAtStart = -1, this.validatorAddresses = [], this.lastSlotProcessed = SlotNumber.ZERO;
|
|
438
|
+
constructor(store, l2BlockSource, mempools, p2pService, txCollection, txFileStore, epochCache, config = {}, _dateProvider = new DateProvider(), telemetry = getTelemetryClient(), log = createLogger('p2p'), initialBlockHash){
|
|
439
|
+
super(telemetry, 'P2PClient'), this.store = store, this.l2BlockSource = l2BlockSource, this.p2pService = p2pService, this.txCollection = txCollection, this.txFileStore = txFileStore, this.epochCache = epochCache, this._dateProvider = _dateProvider, this.telemetry = telemetry, this.log = log, this.currentState = (_initProto(this), P2PClientState.IDLE), this.syncPromise = Promise.resolve(), this.syncResolvers = undefined, this.latestBlockNumberAtStart = -1, this.provenBlockNumberAtStart = -1, this.finalizedBlockNumberAtStart = -1, this.validatorAddresses = [], this.lastSlotProcessed = SlotNumber.ZERO;
|
|
441
440
|
this.config = {
|
|
442
441
|
...getP2PDefaultConfig(),
|
|
443
442
|
...config
|
|
@@ -445,7 +444,7 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
445
444
|
this.txPool = mempools.txPool;
|
|
446
445
|
this.attestationPool = mempools.attestationPool;
|
|
447
446
|
this.txProvider = new TxProvider(this.txCollection, this.txPool, this, this.log.createChild('tx-provider'), this.telemetry);
|
|
448
|
-
this.l2Tips = new L2TipsKVStore(store, 'p2p_client');
|
|
447
|
+
this.l2Tips = new L2TipsKVStore(store, 'p2p_client', initialBlockHash);
|
|
449
448
|
this.synchedLatestSlot = store.openSingleton('p2p_pool_last_l2_slot');
|
|
450
449
|
}
|
|
451
450
|
registerThisValidatorAddresses(addresses) {
|
|
@@ -466,6 +465,9 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
466
465
|
getPeers(includePending) {
|
|
467
466
|
return Promise.resolve(this.p2pService.getPeers(includePending));
|
|
468
467
|
}
|
|
468
|
+
getP2PConnectivity() {
|
|
469
|
+
return Promise.resolve(this.p2pService.getP2PConnectivity());
|
|
470
|
+
}
|
|
469
471
|
getGossipMeshPeerCount(topicType) {
|
|
470
472
|
return Promise.resolve(this.p2pService.getGossipMeshPeerCount(topicType));
|
|
471
473
|
}
|
|
@@ -491,7 +493,10 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
491
493
|
const from = BlockNumber(oldFinalizedBlockNum + 1);
|
|
492
494
|
const limit = event.block.number - from + 1;
|
|
493
495
|
if (limit > 0) {
|
|
494
|
-
const oldBlocks = await this.l2BlockSource.
|
|
496
|
+
const oldBlocks = await this.l2BlockSource.getBlocksData({
|
|
497
|
+
from,
|
|
498
|
+
limit
|
|
499
|
+
});
|
|
495
500
|
await this.handleFinalizedL2Blocks(oldBlocks);
|
|
496
501
|
}
|
|
497
502
|
break;
|
|
@@ -501,10 +506,12 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
501
506
|
break;
|
|
502
507
|
case 'chain-pruned':
|
|
503
508
|
this.txCollection.stopCollectingForBlocksAfter(event.block.number);
|
|
504
|
-
await this.handlePruneL2Blocks(event.block, event.checkpoint);
|
|
509
|
+
await this.handlePruneL2Blocks(event.block, event.checkpointed.checkpoint);
|
|
505
510
|
break;
|
|
506
511
|
case 'chain-checkpointed':
|
|
507
512
|
break;
|
|
513
|
+
case 'chain-proposed':
|
|
514
|
+
break;
|
|
508
515
|
default:
|
|
509
516
|
{
|
|
510
517
|
const _ = event;
|
|
@@ -552,9 +559,8 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
552
559
|
// this gets resolved on `startServiceIfSynched`
|
|
553
560
|
this.initBlockStream();
|
|
554
561
|
this.setCurrentState(P2PClientState.SYNCHING);
|
|
555
|
-
this.
|
|
556
|
-
|
|
557
|
-
});
|
|
562
|
+
this.syncResolvers = promiseWithResolvers();
|
|
563
|
+
this.syncPromise = this.syncResolvers.promise;
|
|
558
564
|
this.log.info(`Initiating p2p sync from ${syncedLatestBlock}`, {
|
|
559
565
|
syncedLatestBlock,
|
|
560
566
|
syncedProvenBlock,
|
|
@@ -572,21 +578,21 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
572
578
|
syncedFinalizedBlock
|
|
573
579
|
});
|
|
574
580
|
}
|
|
581
|
+
// Should never happen: all branches above call initBlockStream()
|
|
582
|
+
if (!this.blockStream) {
|
|
583
|
+
throw new Error('Block stream not initialized');
|
|
584
|
+
}
|
|
575
585
|
this.blockStream.start();
|
|
576
|
-
await this.txCollection.start();
|
|
577
586
|
this.txFileStore?.start();
|
|
578
|
-
// Start slot monitor to call prepareForSlot when the slot changes
|
|
579
|
-
this.slotMonitor = new RunningPromise(()=>this.maybeCallPrepareForSlot(), this.log, this.config.slotCheckIntervalMS);
|
|
580
|
-
this.slotMonitor.start();
|
|
581
587
|
return this.syncPromise;
|
|
582
588
|
}
|
|
583
|
-
addReqRespSubProtocol(subProtocol, handler
|
|
584
|
-
return this.p2pService.addReqRespSubProtocol(subProtocol, handler
|
|
589
|
+
addReqRespSubProtocol(subProtocol, handler) {
|
|
590
|
+
return this.p2pService.addReqRespSubProtocol(subProtocol, handler);
|
|
585
591
|
}
|
|
586
592
|
initBlockStream(startingBlock) {
|
|
587
593
|
if (!this.blockStream) {
|
|
588
594
|
const { blockRequestBatchSize: batchSize, blockCheckIntervalMS: pollIntervalMS } = this.config;
|
|
589
|
-
this.blockStream = new
|
|
595
|
+
this.blockStream = new EventDrivenL2BlockStream(this.l2BlockSource, this, this, createLogger(`${this.log.module}:l2-block-stream`), {
|
|
590
596
|
batchSize,
|
|
591
597
|
pollIntervalMS,
|
|
592
598
|
startingBlock
|
|
@@ -598,8 +604,6 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
598
604
|
* 'ready' will now return 'false' and the running promise that keeps the client synced is interrupted.
|
|
599
605
|
*/ async stop() {
|
|
600
606
|
this.log.debug('Stopping p2p client...');
|
|
601
|
-
await this.slotMonitor?.stop();
|
|
602
|
-
this.log.debug('Stopped slot monitor');
|
|
603
607
|
await tryStop(this.txCollection);
|
|
604
608
|
this.log.debug('Stopped tx collection service');
|
|
605
609
|
await this.txFileStore?.stop();
|
|
@@ -616,6 +620,10 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
616
620
|
}
|
|
617
621
|
/** Triggers a sync to the archiver. Used for testing. */ async sync() {
|
|
618
622
|
this.initBlockStream();
|
|
623
|
+
// Should never happen: initBlockStream() creates blockStream if absent
|
|
624
|
+
if (!this.blockStream) {
|
|
625
|
+
throw new Error('Block stream not initialized');
|
|
626
|
+
}
|
|
619
627
|
await this.blockStream.sync();
|
|
620
628
|
}
|
|
621
629
|
async broadcastProposal(proposal) {
|
|
@@ -642,36 +650,64 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
642
650
|
// Store our own last-block proposal so we can respond to req/resp requests for it.
|
|
643
651
|
await this.attestationPool.tryAddBlockProposal(blockProposal);
|
|
644
652
|
}
|
|
653
|
+
const checkpointCore = proposal.toCore();
|
|
654
|
+
const { count } = await this.attestationPool.tryAddCheckpointProposal(checkpointCore);
|
|
655
|
+
if (count > 1) {
|
|
656
|
+
if (this.config.broadcastEquivocatedProposals) {
|
|
657
|
+
this.log.warn(`Broadcasting equivocated checkpoint proposal for slot ${proposal.slotNumber}`, {
|
|
658
|
+
slot: proposal.slotNumber,
|
|
659
|
+
archive: proposal.archive.toString(),
|
|
660
|
+
count
|
|
661
|
+
});
|
|
662
|
+
} else {
|
|
663
|
+
throw new Error(`Attempted to broadcast a duplicate checkpoint proposal for slot ${proposal.slotNumber}`);
|
|
664
|
+
}
|
|
665
|
+
}
|
|
645
666
|
return this.p2pService.propagate(proposal);
|
|
646
667
|
}
|
|
647
668
|
async broadcastCheckpointAttestations(attestations) {
|
|
648
669
|
this.log.verbose(`Broadcasting ${attestations.length} checkpoint attestations to peers`);
|
|
649
670
|
await Promise.all(attestations.map((att)=>this.p2pService.propagate(att)));
|
|
650
671
|
}
|
|
651
|
-
async getCheckpointAttestationsForSlot(slot,
|
|
652
|
-
return await (
|
|
672
|
+
async getCheckpointAttestationsForSlot(slot, proposalPayloadHash) {
|
|
673
|
+
return await (proposalPayloadHash ? this.attestationPool.getCheckpointAttestationsForSlotAndProposal(slot, proposalPayloadHash) : this.attestationPool.getCheckpointAttestationsForSlot(slot));
|
|
653
674
|
}
|
|
654
675
|
addOwnCheckpointAttestations(attestations) {
|
|
655
676
|
return this.attestationPool.addOwnCheckpointAttestations(attestations);
|
|
656
677
|
}
|
|
678
|
+
getProposalsForSlot(slot) {
|
|
679
|
+
return this.attestationPool.getProposalsForSlot(slot);
|
|
680
|
+
}
|
|
657
681
|
hasBlockProposalsForSlot(slot) {
|
|
658
682
|
return this.attestationPool.hasBlockProposalsForSlot(slot);
|
|
659
683
|
}
|
|
684
|
+
hasCheckpointProposalForSlot(slot) {
|
|
685
|
+
return this.attestationPool.hasCheckpointProposalForSlot(slot);
|
|
686
|
+
}
|
|
660
687
|
// REVIEW: https://github.com/AztecProtocol/aztec-packages/issues/7963
|
|
661
688
|
// ^ This pattern is not my favorite (md)
|
|
662
689
|
registerBlockProposalHandler(handler) {
|
|
663
690
|
this.p2pService.registerBlockReceivedCallback(handler);
|
|
664
691
|
}
|
|
665
|
-
|
|
666
|
-
this.p2pService.
|
|
692
|
+
registerValidatorCheckpointProposalHandler(handler) {
|
|
693
|
+
this.p2pService.registerValidatorCheckpointReceivedCallback(handler);
|
|
694
|
+
}
|
|
695
|
+
registerAllNodesCheckpointProposalHandler(handler) {
|
|
696
|
+
this.p2pService.registerAllNodesCheckpointReceivedCallback(handler);
|
|
667
697
|
}
|
|
668
698
|
registerDuplicateProposalCallback(callback) {
|
|
669
699
|
this.p2pService.registerDuplicateProposalCallback(callback);
|
|
670
700
|
}
|
|
701
|
+
registerOversizedProposalCallback(callback) {
|
|
702
|
+
this.p2pService.registerOversizedProposalCallback(callback);
|
|
703
|
+
}
|
|
671
704
|
registerDuplicateAttestationCallback(callback) {
|
|
672
705
|
this.p2pService.registerDuplicateAttestationCallback(callback);
|
|
673
706
|
}
|
|
674
|
-
|
|
707
|
+
registerCheckpointAttestationCallback(callback) {
|
|
708
|
+
this.p2pService.registerCheckpointAttestationCallback(callback);
|
|
709
|
+
}
|
|
710
|
+
async getPendingTxs(limit, after, options) {
|
|
675
711
|
if (limit !== undefined && limit <= 0) {
|
|
676
712
|
throw new TypeError('limit must be greater than 0');
|
|
677
713
|
}
|
|
@@ -686,23 +722,30 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
686
722
|
}
|
|
687
723
|
const endIndex = limit !== undefined ? startIndex + limit : undefined;
|
|
688
724
|
txHashes = txHashes.slice(startIndex, endIndex);
|
|
689
|
-
|
|
725
|
+
// This is a public-facing API (exposed via both the node and the p2p RPC), so proofs are opt-in.
|
|
726
|
+
const includeProof = !!options?.includeProof;
|
|
727
|
+
const maybeTxs = await Promise.all(txHashes.map((txHash)=>this.txPool.getTxByHash(txHash, {
|
|
728
|
+
includeProof
|
|
729
|
+
})));
|
|
690
730
|
return maybeTxs.filter((tx)=>!!tx);
|
|
691
731
|
}
|
|
692
732
|
getPendingTxCount() {
|
|
693
733
|
return this.txPool.getPendingTxCount();
|
|
694
734
|
}
|
|
695
|
-
|
|
735
|
+
hasEligiblePendingTxs(minCount) {
|
|
736
|
+
return this.txPool.hasEligiblePendingTxs(minCount);
|
|
737
|
+
}
|
|
738
|
+
async *iteratePendingTxs(opts) {
|
|
696
739
|
for (const txHash of (await this.txPool.getPendingTxHashes())){
|
|
697
|
-
const tx = await this.txPool.getTxByHash(txHash);
|
|
740
|
+
const tx = await this.txPool.getTxByHash(txHash, opts);
|
|
698
741
|
if (tx) {
|
|
699
742
|
yield tx;
|
|
700
743
|
}
|
|
701
744
|
}
|
|
702
745
|
}
|
|
703
|
-
async *iterateEligiblePendingTxs() {
|
|
746
|
+
async *iterateEligiblePendingTxs(opts) {
|
|
704
747
|
for (const txHash of (await this.txPool.getEligiblePendingTxHashes())){
|
|
705
|
-
const tx = await this.txPool.getTxByHash(txHash);
|
|
748
|
+
const tx = await this.txPool.getTxByHash(txHash, opts);
|
|
706
749
|
if (tx) {
|
|
707
750
|
yield tx;
|
|
708
751
|
}
|
|
@@ -711,16 +754,18 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
711
754
|
/**
|
|
712
755
|
* Returns a transaction in the transaction pool by its hash.
|
|
713
756
|
* @param txHash - Hash of the transaction to look for in the pool.
|
|
757
|
+
* @param opts - Set `includeProof: false` to skip loading the tx proof from the DB.
|
|
714
758
|
* @returns A single tx or undefined.
|
|
715
|
-
*/ getTxByHashFromPool(txHash) {
|
|
716
|
-
return this.txPool.getTxByHash(txHash);
|
|
759
|
+
*/ getTxByHashFromPool(txHash, opts) {
|
|
760
|
+
return this.txPool.getTxByHash(txHash, opts);
|
|
717
761
|
}
|
|
718
762
|
/**
|
|
719
763
|
* Returns transactions in the transaction pool by hash.
|
|
720
764
|
* @param txHashes - Hashes of the transactions to look for.
|
|
765
|
+
* @param opts - Set `includeProof: false` to skip loading tx proofs from the DB.
|
|
721
766
|
* @returns The txs found, in the same order as the requested hashes. If a tx is not found, it will be undefined.
|
|
722
|
-
*/ getTxsByHashFromPool(txHashes) {
|
|
723
|
-
return this.txPool.getTxsByHash(txHashes);
|
|
767
|
+
*/ getTxsByHashFromPool(txHashes, opts) {
|
|
768
|
+
return this.txPool.getTxsByHash(txHashes, opts);
|
|
724
769
|
}
|
|
725
770
|
hasTxsInPool(txHashes) {
|
|
726
771
|
return this.txPool.hasTxs(txHashes);
|
|
@@ -808,7 +853,9 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
808
853
|
* @returns Information about p2p client status: state & syncedToBlockNum.
|
|
809
854
|
*/ async getStatus() {
|
|
810
855
|
const blockNumber = await this.getSyncedLatestBlockNum();
|
|
811
|
-
const blockHash =
|
|
856
|
+
const blockHash = await this.l2BlockSource.getBlockData({
|
|
857
|
+
number: blockNumber
|
|
858
|
+
}).then((data)=>data?.header.hash()).then((hash)=>hash?.toString());
|
|
812
859
|
return {
|
|
813
860
|
state: this.currentState,
|
|
814
861
|
syncedToL2Block: {
|
|
@@ -834,13 +881,17 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
834
881
|
if (!blocks.length) {
|
|
835
882
|
return;
|
|
836
883
|
}
|
|
837
|
-
await this.handleMinedBlocks(blocks);
|
|
838
|
-
await this.maybeCallPrepareForSlot();
|
|
839
|
-
await this.startCollectingMissingTxs(blocks);
|
|
840
884
|
const lastBlock = blocks.at(-1);
|
|
841
|
-
|
|
885
|
+
const lastSlot = lastBlock.header.getSlot();
|
|
886
|
+
// Mark txs mined before releasing protections: a block landing at this slot supersedes any
|
|
887
|
+
// protection for txs it includes, so mined-marking must run first to keep just-landed txs from
|
|
888
|
+
// being unprotected into pending where they could be evicted before they are recorded as mined.
|
|
889
|
+
await this.handleMinedBlocks(blocks);
|
|
890
|
+
await this.maybeCallPrepareForSlot(lastSlot);
|
|
891
|
+
await this.collectingMissingTxs(blocks);
|
|
892
|
+
await this.synchedLatestSlot.set(BigInt(lastSlot));
|
|
842
893
|
}
|
|
843
|
-
/** Request txs for unproven blocks so the prover node
|
|
894
|
+
/** Request txs for unproven blocks so the prover node can prove. */ async collectingMissingTxs(blocks) {
|
|
844
895
|
try {
|
|
845
896
|
// TODO(#15435): If the archiver has lagged behind L1, the reported proven block number may
|
|
846
897
|
// be much lower than the actual one, and it does not update until the pending chain is
|
|
@@ -848,7 +899,9 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
848
899
|
// are already proven, but the archiver has not yet updated its state. Until this is properly
|
|
849
900
|
// fixed, it is mitigated by the expiration date of collection requests, which depends on
|
|
850
901
|
// the slot number of the block.
|
|
851
|
-
const provenBlockNumber = await this.l2BlockSource.
|
|
902
|
+
const provenBlockNumber = await this.l2BlockSource.getBlockNumber({
|
|
903
|
+
tag: 'proven'
|
|
904
|
+
}) ?? BlockNumber.ZERO;
|
|
852
905
|
const unprovenBlocks = blocks.filter((block)=>block.number > provenBlockNumber);
|
|
853
906
|
for (const block of unprovenBlocks){
|
|
854
907
|
const txHashes = block.body.txEffects.map((txEffect)=>txEffect.txHash);
|
|
@@ -859,7 +912,19 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
859
912
|
blockNumber: block.number,
|
|
860
913
|
blockHash: await block.hash().then((h)=>h.toString())
|
|
861
914
|
});
|
|
862
|
-
|
|
915
|
+
// Both `slashDataWithholdingToleranceSlots` and `p2pMissingTxCollectionDeadlineSlots`
|
|
916
|
+
// count *full slots after the block slot* — value N means collection runs until
|
|
917
|
+
// `slotStart(block.slot + N + 1)`. Take the larger of the two so collection never
|
|
918
|
+
// gives up before the data-withholding slash verdict is rendered.
|
|
919
|
+
const blockSlot = block.header.getSlot();
|
|
920
|
+
const toleranceSlots = this.config.slashDataWithholdingToleranceSlots;
|
|
921
|
+
const configuredSlots = this.config.p2pMissingTxCollectionDeadlineSlots ?? 0;
|
|
922
|
+
const deadlineSlot = SlotNumber(blockSlot + Math.max(toleranceSlots, configuredSlots) + 1);
|
|
923
|
+
const deadlineSeconds = getTimestampForSlot(deadlineSlot, this.epochCache.getL1Constants());
|
|
924
|
+
const deadline = new Date(Number(deadlineSeconds) * 1000);
|
|
925
|
+
await this.txCollection.collectFastForBlock(block, missingTxHashes, {
|
|
926
|
+
deadline
|
|
927
|
+
});
|
|
863
928
|
}
|
|
864
929
|
}
|
|
865
930
|
} catch (err) {
|
|
@@ -914,15 +979,12 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
914
979
|
}
|
|
915
980
|
return isEpochPrune;
|
|
916
981
|
}
|
|
917
|
-
/**
|
|
918
|
-
|
|
919
|
-
// Knowledege of pending checkpoints is in the PR above
|
|
920
|
-
const { targetSlot } = this.epochCache.getTargetAndNextSlot();
|
|
921
|
-
if (targetSlot <= this.lastSlotProcessed) {
|
|
982
|
+
/** Calls prepareForSlot for the given slot if it advances past the last slot we prepared for. */ async maybeCallPrepareForSlot(slot) {
|
|
983
|
+
if (slot <= this.lastSlotProcessed) {
|
|
922
984
|
return;
|
|
923
985
|
}
|
|
924
|
-
this.lastSlotProcessed =
|
|
925
|
-
await this.txPool.prepareForSlot(
|
|
986
|
+
this.lastSlotProcessed = slot;
|
|
987
|
+
await this.txPool.prepareForSlot(slot);
|
|
926
988
|
}
|
|
927
989
|
async startServiceIfSynched() {
|
|
928
990
|
if (this.currentState !== P2PClientState.SYNCHING) {
|
|
@@ -939,9 +1001,20 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
939
1001
|
syncedFinalizedBlock
|
|
940
1002
|
});
|
|
941
1003
|
this.setCurrentState(P2PClientState.RUNNING);
|
|
942
|
-
if (this.
|
|
943
|
-
|
|
944
|
-
|
|
1004
|
+
if (this.syncResolvers !== undefined) {
|
|
1005
|
+
// A throw here would be swallowed by the block stream event handler, so we reject the promise returned by
|
|
1006
|
+
// start instead, which makes node startup fail rather than run on with a dead p2p stack.
|
|
1007
|
+
try {
|
|
1008
|
+
await this.p2pService.start();
|
|
1009
|
+
} catch (err) {
|
|
1010
|
+
this.log.fatal(`Failed to start p2p service`, {
|
|
1011
|
+
err,
|
|
1012
|
+
syncedLatestBlock
|
|
1013
|
+
});
|
|
1014
|
+
this.syncResolvers.reject(err);
|
|
1015
|
+
return;
|
|
1016
|
+
}
|
|
1017
|
+
this.syncResolvers.resolve();
|
|
945
1018
|
}
|
|
946
1019
|
}
|
|
947
1020
|
}
|