@aztec/p2p 0.0.1-commit.4d79d1f2d → 0.0.1-commit.4d9804df
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 +130 -3
- 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 +9 -8
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +50 -34
- package/dest/client/interface.d.ts +59 -27
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +40 -34
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +162 -135
- package/dest/config.d.ts +164 -100
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +149 -49
- 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/errors/tx-pool.error.d.ts +8 -0
- package/dest/errors/tx-pool.error.d.ts.map +1 -0
- package/dest/errors/tx-pool.error.js +9 -0
- 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 +103 -59
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.js +278 -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 +224 -65
- package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +7 -5
- 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 +12 -5
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +38 -17
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +1 -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 +1 -7
- package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +32 -15
- package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/deleted_pool.js +95 -24
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +3 -3
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +18 -9
- 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 +8 -4
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +3 -3
- 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 +12 -4
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +3 -2
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/index.js +2 -1
- 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 +62 -0
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +54 -5
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +8 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +7 -5
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +9 -7
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +2 -2
- 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 +14 -6
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +4 -4
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +16 -4
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +3 -3
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +3 -3
- package/dest/mem_pools/tx_pool_v2/index.d.ts +2 -2
- package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/index.js +1 -1
- package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
- package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +60 -14
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/interfaces.js +6 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +59 -15
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.js +116 -20
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +26 -3
- 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 +79 -43
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +20 -7
- 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 +34 -12
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +29 -7
- 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 +473 -211
- 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 -15
- 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 +12 -5
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/block_proposal_validator.js +11 -3
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +12 -5
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +23 -3
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +36 -9
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator.js +130 -48
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +2 -2
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +11 -18
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/allowed_public_setup.js +25 -21
- package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
- package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
- 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/contract_instance_validator.d.ts +9 -0
- package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -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 +36 -2
- package/dest/msg_validators/tx_validator/factory.d.ts +133 -7
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/factory.js +261 -61
- package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
- package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
- package/dest/msg_validators/tx_validator/gas_validator.d.ts +104 -3
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/gas_validator.js +137 -53
- package/dest/msg_validators/tx_validator/index.d.ts +5 -1
- package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/index.js +4 -0
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
- package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
- package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
- package/dest/msg_validators/tx_validator/phases_validator.d.ts +22 -2
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/phases_validator.js +72 -24
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +2 -2
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
- 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 -18
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +19 -20
- package/dest/services/encoding.d.ts +23 -6
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +41 -24
- package/dest/services/gossipsub/topic_score_params.d.ts +23 -17
- package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
- package/dest/services/gossipsub/topic_score_params.js +36 -24
- package/dest/services/libp2p/instrumentation.d.ts +3 -1
- package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
- package/dest/services/libp2p/instrumentation.js +14 -0
- package/dest/services/libp2p/libp2p_service.d.ts +57 -56
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +483 -373
- package/dest/services/peer-manager/metrics.d.ts +3 -1
- package/dest/services/peer-manager/metrics.d.ts.map +1 -1
- package/dest/services/peer-manager/metrics.js +6 -0
- package/dest/services/peer-manager/peer_manager.d.ts +20 -3
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +83 -26
- 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 +5 -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 +95 -127
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts +11 -11
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +11 -13
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/missing_txs.js +31 -46
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +19 -11
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/peer_collection.js +52 -15
- 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 +75 -216
- package/dest/services/service.d.ts +29 -14
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +8 -17
- package/dest/services/tx_collection/config.d.ts.map +1 -1
- package/dest/services/tx_collection/config.js +17 -40
- package/dest/services/tx_collection/file_store_tx_collection.d.ts +25 -32
- package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/file_store_tx_collection.js +96 -87
- package/dest/services/tx_collection/file_store_tx_source.d.ts +17 -6
- package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
- package/dest/services/tx_collection/file_store_tx_source.js +53 -10
- 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.js +1 -2
- package/dest/services/tx_collection/request_tracker.d.ts +53 -0
- package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
- package/dest/services/tx_collection/request_tracker.js +84 -0
- package/dest/services/tx_collection/tx_collection.d.ts +39 -55
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection.js +280 -108
- package/dest/services/tx_collection/tx_collection_sink.d.ts +7 -6
- package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection_sink.js +15 -24
- package/dest/services/tx_collection/tx_source.d.ts +13 -7
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_source.js +29 -7
- package/dest/services/tx_file_store/tx_file_store.d.ts +3 -4
- package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
- package/dest/services/tx_file_store/tx_file_store.js +13 -20
- package/dest/services/tx_provider.d.ts +5 -3
- package/dest/services/tx_provider.d.ts.map +1 -1
- package/dest/services/tx_provider.js +7 -4
- package/dest/test-helpers/make-test-p2p-clients.d.ts +5 -6
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.js +5 -3
- package/dest/test-helpers/mock-pubsub.d.ts +26 -12
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.js +51 -45
- package/dest/test-helpers/reqresp-nodes.d.ts +5 -7
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +17 -19
- 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 +22 -16
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
- package/dest/test-helpers/testbench-utils.js +56 -16
- 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 +111 -48
- package/dest/testbench/worker_client_manager.d.ts +12 -6
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +57 -11
- package/dest/util.d.ts +13 -8
- 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 +16 -16
- package/src/bootstrap/bootstrap.ts +17 -3
- package/src/client/factory.ts +95 -51
- package/src/client/interface.ts +59 -35
- package/src/client/p2p_client.ts +186 -196
- package/src/client/test/{tx_proposal_collector/README.md → p2p_client.batch_tx_requester.bench.README.md} +23 -53
- package/src/config.ts +259 -57
- package/src/errors/p2p-service.error.ts +11 -0
- package/src/errors/reqresp.error.ts +13 -19
- package/src/errors/tx-pool.error.ts +12 -0
- package/src/index.ts +0 -1
- package/src/mem_pools/attestation_pool/attestation_pool.ts +336 -242
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +244 -69
- package/src/mem_pools/attestation_pool/mocks.ts +14 -8
- package/src/mem_pools/index.ts +0 -3
- package/src/mem_pools/instrumentation.ts +27 -17
- package/src/mem_pools/tx_pool_v2/README.md +52 -28
- package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +1 -9
- package/src/mem_pools/tx_pool_v2/deleted_pool.ts +114 -27
- package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +21 -8
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +8 -4
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +18 -4
- package/src/mem_pools/tx_pool_v2/eviction/index.ts +5 -0
- package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +65 -0
- package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +59 -4
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +5 -5
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +8 -8
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +14 -9
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +33 -6
- package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +4 -3
- package/src/mem_pools/tx_pool_v2/index.ts +1 -1
- package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
- package/src/mem_pools/tx_pool_v2/interfaces.ts +61 -14
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +170 -28
- package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +91 -43
- package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +54 -14
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +527 -207
- package/src/msg_validators/attestation_validator/README.md +49 -0
- package/src/msg_validators/attestation_validator/attestation_validator.ts +46 -14
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +15 -7
- package/src/msg_validators/proposal_validator/README.md +123 -0
- package/src/msg_validators/proposal_validator/block_proposal_validator.ts +26 -4
- package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +43 -7
- package/src/msg_validators/proposal_validator/proposal_validator.ts +155 -49
- package/src/msg_validators/tx_validator/README.md +129 -0
- package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +6 -15
- package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
- package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
- 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/contract_instance_validator.ts +56 -0
- package/src/msg_validators/tx_validator/data_validator.ts +44 -1
- package/src/msg_validators/tx_validator/factory.ts +413 -80
- package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
- package/src/msg_validators/tx_validator/gas_validator.ts +195 -54
- package/src/msg_validators/tx_validator/index.ts +4 -0
- package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
- package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
- package/src/msg_validators/tx_validator/phases_validator.ts +82 -27
- package/src/msg_validators/tx_validator/timestamp_validator.ts +7 -7
- 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 -45
- package/src/services/encoding.ts +40 -24
- package/src/services/gossipsub/README.md +59 -22
- package/src/services/gossipsub/topic_score_params.ts +58 -31
- package/src/services/libp2p/instrumentation.ts +14 -0
- package/src/services/libp2p/libp2p_service.ts +554 -428
- package/src/services/peer-manager/metrics.ts +7 -0
- package/src/services/peer-manager/peer_manager.ts +91 -25
- package/src/services/peer-manager/peer_scoring.ts +102 -8
- package/src/services/reqresp/README.md +194 -0
- package/src/services/reqresp/batch-tx-requester/README.md +46 -7
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +92 -138
- package/src/services/reqresp/batch-tx-requester/interface.ts +14 -10
- package/src/services/reqresp/batch-tx-requester/missing_txs.ts +30 -71
- package/src/services/reqresp/batch-tx-requester/peer_collection.ts +68 -24
- 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 +87 -260
- package/src/services/service.ts +42 -30
- package/src/services/tx_collection/config.ts +24 -59
- package/src/services/tx_collection/file_store_tx_collection.ts +108 -107
- package/src/services/tx_collection/file_store_tx_source.ts +69 -10
- package/src/services/tx_collection/index.ts +1 -6
- package/src/services/tx_collection/instrumentation.ts +1 -1
- package/src/services/tx_collection/request_tracker.ts +127 -0
- package/src/services/tx_collection/tx_collection.ts +342 -156
- package/src/services/tx_collection/tx_collection_sink.ts +17 -31
- package/src/services/tx_collection/tx_source.ts +29 -8
- package/src/services/tx_file_store/tx_file_store.ts +11 -21
- package/src/services/tx_provider.ts +7 -2
- package/src/test-helpers/make-test-p2p-clients.ts +4 -3
- package/src/test-helpers/mock-pubsub.ts +59 -66
- package/src/test-helpers/reqresp-nodes.ts +15 -28
- package/src/test-helpers/test_tx_provider.ts +5 -0
- package/src/test-helpers/testbench-utils.ts +74 -31
- package/src/testbench/p2p_client_testbench_worker.ts +120 -63
- package/src/testbench/worker_client_manager.ts +72 -25
- package/src/util.ts +40 -19
- 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 -305
- 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 -122
- 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 -400
- 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 -37
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
- 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 -54
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +0 -1
- package/dest/services/tx_collection/fast_tx_collection.js +0 -321
- 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 -49
- package/dest/services/tx_collection/slow_tx_collection.d.ts +0 -55
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +0 -1
- package/dest/services/tx_collection/slow_tx_collection.js +0 -206
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +0 -336
- 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 -162
- 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 -319
- package/src/msg_validators/clock_tolerance.ts +0 -51
- package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
- 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 -366
- package/src/services/tx_collection/proposal_tx_collector.ts +0 -112
- package/src/services/tx_collection/slow_tx_collection.ts +0 -262
|
@@ -371,19 +371,16 @@ 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 {
|
|
375
|
-
import { BlockNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
374
|
+
import { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
376
375
|
import { createLogger } from '@aztec/foundation/log';
|
|
377
|
-
import { RunningPromise } from '@aztec/foundation/promise';
|
|
378
376
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
379
377
|
import { L2TipsKVStore } from '@aztec/kv-store/stores';
|
|
380
|
-
import {
|
|
378
|
+
import { EventDrivenL2BlockStream } from '@aztec/stdlib/block';
|
|
381
379
|
import { getTimestampForSlot } from '@aztec/stdlib/epoch-helpers';
|
|
382
380
|
import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
383
381
|
import { Attributes, WithTracer, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
384
382
|
import { getP2PDefaultConfig } from '../config.js';
|
|
385
|
-
import {
|
|
386
|
-
import { chunkTxHashesRequest } from '../services/reqresp/protocols/tx.js';
|
|
383
|
+
import { TxPoolError } from '../errors/tx-pool.error.js';
|
|
387
384
|
import { TxProvider } from '../services/tx_provider.js';
|
|
388
385
|
import { P2PClientState } from './interface.js';
|
|
389
386
|
_dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
@@ -437,8 +434,7 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
437
434
|
txProvider;
|
|
438
435
|
validatorAddresses;
|
|
439
436
|
/** Tracks the last slot for which we called prepareForSlot */ lastSlotProcessed;
|
|
440
|
-
|
|
441
|
-
constructor(_clientType, store, l2BlockSource, mempools, p2pService, txCollection, txFileStore, epochCache, config = {}, _dateProvider = new DateProvider(), telemetry = getTelemetryClient(), log = createLogger('p2p')){
|
|
437
|
+
constructor(store, l2BlockSource, mempools, p2pService, txCollection, txFileStore, epochCache, config = {}, _dateProvider = new DateProvider(), telemetry = getTelemetryClient(), log = createLogger('p2p'), initialBlockHash){
|
|
442
438
|
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;
|
|
443
439
|
this.config = {
|
|
444
440
|
...getP2PDefaultConfig(),
|
|
@@ -447,30 +443,7 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
447
443
|
this.txPool = mempools.txPool;
|
|
448
444
|
this.attestationPool = mempools.attestationPool;
|
|
449
445
|
this.txProvider = new TxProvider(this.txCollection, this.txPool, this, this.log.createChild('tx-provider'), this.telemetry);
|
|
450
|
-
|
|
451
|
-
// This can be overridden by the validator client to validate, and it will call getTxsForBlockProposal on its own
|
|
452
|
-
// Note: Validators do NOT attest to individual blocks - attestations are only for checkpoint proposals.
|
|
453
|
-
// TODO(palla/txs): We should not trigger a request for txs on a proposal before fully validating it. We need to bring
|
|
454
|
-
// validator-client code into here so we can validate a proposal is reasonable.
|
|
455
|
-
this.registerBlockProposalHandler(async (block, sender)=>{
|
|
456
|
-
this.log.debug(`Received block proposal from ${sender.toString()}`);
|
|
457
|
-
// TODO(palla/txs): Need to subtract validatorReexecuteDeadlineMs from this deadline (see ValidatorClient.getReexecutionDeadline)
|
|
458
|
-
const constants = this.txCollection.getConstants();
|
|
459
|
-
const nextSlotTimestampSeconds = Number(getTimestampForSlot(SlotNumber(block.slotNumber + 1), constants));
|
|
460
|
-
const deadline = new Date(nextSlotTimestampSeconds * 1000);
|
|
461
|
-
const parentBlock = await this.l2BlockSource.getBlockHeaderByArchive(block.blockHeader.lastArchive.root);
|
|
462
|
-
if (!parentBlock) {
|
|
463
|
-
this.log.debug(`Cannot collect txs for proposal as parent block not found`);
|
|
464
|
-
return false;
|
|
465
|
-
}
|
|
466
|
-
const blockNumber = BlockNumber(parentBlock.getBlockNumber() + 1);
|
|
467
|
-
await this.txProvider.getTxsForBlockProposal(block, blockNumber, {
|
|
468
|
-
pinnedPeer: sender,
|
|
469
|
-
deadline
|
|
470
|
-
});
|
|
471
|
-
return true;
|
|
472
|
-
});
|
|
473
|
-
this.l2Tips = new L2TipsKVStore(store, 'p2p_client');
|
|
446
|
+
this.l2Tips = new L2TipsKVStore(store, 'p2p_client', initialBlockHash);
|
|
474
447
|
this.synchedLatestSlot = store.openSingleton('p2p_pool_last_l2_slot');
|
|
475
448
|
}
|
|
476
449
|
registerThisValidatorAddresses(addresses) {
|
|
@@ -491,6 +464,9 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
491
464
|
getPeers(includePending) {
|
|
492
465
|
return Promise.resolve(this.p2pService.getPeers(includePending));
|
|
493
466
|
}
|
|
467
|
+
getGossipMeshPeerCount(topicType) {
|
|
468
|
+
return Promise.resolve(this.p2pService.getGossipMeshPeerCount(topicType));
|
|
469
|
+
}
|
|
494
470
|
getL2BlockHash(number) {
|
|
495
471
|
return this.l2Tips.getL2BlockHash(number);
|
|
496
472
|
}
|
|
@@ -513,7 +489,10 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
513
489
|
const from = BlockNumber(oldFinalizedBlockNum + 1);
|
|
514
490
|
const limit = event.block.number - from + 1;
|
|
515
491
|
if (limit > 0) {
|
|
516
|
-
const oldBlocks = await this.l2BlockSource.
|
|
492
|
+
const oldBlocks = await this.l2BlockSource.getBlocksData({
|
|
493
|
+
from,
|
|
494
|
+
limit
|
|
495
|
+
});
|
|
517
496
|
await this.handleFinalizedL2Blocks(oldBlocks);
|
|
518
497
|
}
|
|
519
498
|
break;
|
|
@@ -523,10 +502,12 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
523
502
|
break;
|
|
524
503
|
case 'chain-pruned':
|
|
525
504
|
this.txCollection.stopCollectingForBlocksAfter(event.block.number);
|
|
526
|
-
await this.handlePruneL2Blocks(event.block);
|
|
505
|
+
await this.handlePruneL2Blocks(event.block, event.checkpointed.checkpoint);
|
|
527
506
|
break;
|
|
528
507
|
case 'chain-checkpointed':
|
|
529
508
|
break;
|
|
509
|
+
case 'chain-proposed':
|
|
510
|
+
break;
|
|
530
511
|
default:
|
|
531
512
|
{
|
|
532
513
|
const _ = event;
|
|
@@ -594,21 +575,21 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
594
575
|
syncedFinalizedBlock
|
|
595
576
|
});
|
|
596
577
|
}
|
|
578
|
+
// Should never happen: all branches above call initBlockStream()
|
|
579
|
+
if (!this.blockStream) {
|
|
580
|
+
throw new Error('Block stream not initialized');
|
|
581
|
+
}
|
|
597
582
|
this.blockStream.start();
|
|
598
|
-
await this.txCollection.start();
|
|
599
583
|
this.txFileStore?.start();
|
|
600
|
-
// Start slot monitor to call prepareForSlot when the slot changes
|
|
601
|
-
this.slotMonitor = new RunningPromise(()=>this.maybeCallPrepareForSlot(), this.log, this.config.slotCheckIntervalMS);
|
|
602
|
-
this.slotMonitor.start();
|
|
603
584
|
return this.syncPromise;
|
|
604
585
|
}
|
|
605
|
-
addReqRespSubProtocol(subProtocol, handler
|
|
606
|
-
return this.p2pService.addReqRespSubProtocol(subProtocol, handler
|
|
586
|
+
addReqRespSubProtocol(subProtocol, handler) {
|
|
587
|
+
return this.p2pService.addReqRespSubProtocol(subProtocol, handler);
|
|
607
588
|
}
|
|
608
589
|
initBlockStream(startingBlock) {
|
|
609
590
|
if (!this.blockStream) {
|
|
610
591
|
const { blockRequestBatchSize: batchSize, blockCheckIntervalMS: pollIntervalMS } = this.config;
|
|
611
|
-
this.blockStream = new
|
|
592
|
+
this.blockStream = new EventDrivenL2BlockStream(this.l2BlockSource, this, this, createLogger(`${this.log.module}:l2-block-stream`), {
|
|
612
593
|
batchSize,
|
|
613
594
|
pollIntervalMS,
|
|
614
595
|
startingBlock
|
|
@@ -620,8 +601,6 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
620
601
|
* 'ready' will now return 'false' and the running promise that keeps the client synced is interrupted.
|
|
621
602
|
*/ async stop() {
|
|
622
603
|
this.log.debug('Stopping p2p client...');
|
|
623
|
-
await this.slotMonitor?.stop();
|
|
624
|
-
this.log.debug('Stopped slot monitor');
|
|
625
604
|
await tryStop(this.txCollection);
|
|
626
605
|
this.log.debug('Stopped tx collection service');
|
|
627
606
|
await this.txFileStore?.stop();
|
|
@@ -638,6 +617,10 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
638
617
|
}
|
|
639
618
|
/** Triggers a sync to the archiver. Used for testing. */ async sync() {
|
|
640
619
|
this.initBlockStream();
|
|
620
|
+
// Should never happen: initBlockStream() creates blockStream if absent
|
|
621
|
+
if (!this.blockStream) {
|
|
622
|
+
throw new Error('Block stream not initialized');
|
|
623
|
+
}
|
|
641
624
|
await this.blockStream.sync();
|
|
642
625
|
}
|
|
643
626
|
async broadcastProposal(proposal) {
|
|
@@ -664,50 +647,64 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
664
647
|
// Store our own last-block proposal so we can respond to req/resp requests for it.
|
|
665
648
|
await this.attestationPool.tryAddBlockProposal(blockProposal);
|
|
666
649
|
}
|
|
650
|
+
const checkpointCore = proposal.toCore();
|
|
651
|
+
const { count } = await this.attestationPool.tryAddCheckpointProposal(checkpointCore);
|
|
652
|
+
if (count > 1) {
|
|
653
|
+
if (this.config.broadcastEquivocatedProposals) {
|
|
654
|
+
this.log.warn(`Broadcasting equivocated checkpoint proposal for slot ${proposal.slotNumber}`, {
|
|
655
|
+
slot: proposal.slotNumber,
|
|
656
|
+
archive: proposal.archive.toString(),
|
|
657
|
+
count
|
|
658
|
+
});
|
|
659
|
+
} else {
|
|
660
|
+
throw new Error(`Attempted to broadcast a duplicate checkpoint proposal for slot ${proposal.slotNumber}`);
|
|
661
|
+
}
|
|
662
|
+
}
|
|
667
663
|
return this.p2pService.propagate(proposal);
|
|
668
664
|
}
|
|
669
665
|
async broadcastCheckpointAttestations(attestations) {
|
|
670
666
|
this.log.verbose(`Broadcasting ${attestations.length} checkpoint attestations to peers`);
|
|
671
667
|
await Promise.all(attestations.map((att)=>this.p2pService.propagate(att)));
|
|
672
668
|
}
|
|
673
|
-
async getCheckpointAttestationsForSlot(slot,
|
|
674
|
-
return await (
|
|
669
|
+
async getCheckpointAttestationsForSlot(slot, proposalPayloadHash) {
|
|
670
|
+
return await (proposalPayloadHash ? this.attestationPool.getCheckpointAttestationsForSlotAndProposal(slot, proposalPayloadHash) : this.attestationPool.getCheckpointAttestationsForSlot(slot));
|
|
675
671
|
}
|
|
676
672
|
addOwnCheckpointAttestations(attestations) {
|
|
677
673
|
return this.attestationPool.addOwnCheckpointAttestations(attestations);
|
|
678
674
|
}
|
|
675
|
+
getProposalsForSlot(slot) {
|
|
676
|
+
return this.attestationPool.getProposalsForSlot(slot);
|
|
677
|
+
}
|
|
678
|
+
hasBlockProposalsForSlot(slot) {
|
|
679
|
+
return this.attestationPool.hasBlockProposalsForSlot(slot);
|
|
680
|
+
}
|
|
681
|
+
hasCheckpointProposalForSlot(slot) {
|
|
682
|
+
return this.attestationPool.hasCheckpointProposalForSlot(slot);
|
|
683
|
+
}
|
|
679
684
|
// REVIEW: https://github.com/AztecProtocol/aztec-packages/issues/7963
|
|
680
685
|
// ^ This pattern is not my favorite (md)
|
|
681
686
|
registerBlockProposalHandler(handler) {
|
|
682
687
|
this.p2pService.registerBlockReceivedCallback(handler);
|
|
683
688
|
}
|
|
684
|
-
|
|
685
|
-
this.p2pService.
|
|
689
|
+
registerValidatorCheckpointProposalHandler(handler) {
|
|
690
|
+
this.p2pService.registerValidatorCheckpointReceivedCallback(handler);
|
|
691
|
+
}
|
|
692
|
+
registerAllNodesCheckpointProposalHandler(handler) {
|
|
693
|
+
this.p2pService.registerAllNodesCheckpointReceivedCallback(handler);
|
|
686
694
|
}
|
|
687
695
|
registerDuplicateProposalCallback(callback) {
|
|
688
696
|
this.p2pService.registerDuplicateProposalCallback(callback);
|
|
689
697
|
}
|
|
698
|
+
registerOversizedProposalCallback(callback) {
|
|
699
|
+
this.p2pService.registerOversizedProposalCallback(callback);
|
|
700
|
+
}
|
|
690
701
|
registerDuplicateAttestationCallback(callback) {
|
|
691
702
|
this.p2pService.registerDuplicateAttestationCallback(callback);
|
|
692
703
|
}
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
const maxRetryAttempts = 10; // Keep retrying within the timeout
|
|
698
|
-
const requests = chunkTxHashesRequest(txHashes);
|
|
699
|
-
const maxPeers = Math.min(Math.ceil(requests.length / 3), 10);
|
|
700
|
-
const txBatches = await this.p2pService.sendBatchRequest(ReqRespSubProtocol.TX, requests, pinnedPeerId, timeoutMs, maxPeers, maxRetryAttempts);
|
|
701
|
-
const txs = txBatches.flat();
|
|
702
|
-
if (txs.length > 0) {
|
|
703
|
-
await this.txPool.addPendingTxs(txs);
|
|
704
|
-
}
|
|
705
|
-
const txHashesStr = txHashes.map((tx)=>tx.toString()).join(', ');
|
|
706
|
-
this.log.debug(`Requested txs ${txHashesStr} (${txs.length} / ${txHashes.length}) from peers`);
|
|
707
|
-
// We return all transactions, even the not found ones to the caller, such they can handle missing items themselves.
|
|
708
|
-
return txs;
|
|
709
|
-
}
|
|
710
|
-
async getPendingTxs(limit, after) {
|
|
704
|
+
registerCheckpointAttestationCallback(callback) {
|
|
705
|
+
this.p2pService.registerCheckpointAttestationCallback(callback);
|
|
706
|
+
}
|
|
707
|
+
async getPendingTxs(limit, after, options) {
|
|
711
708
|
if (limit !== undefined && limit <= 0) {
|
|
712
709
|
throw new TypeError('limit must be greater than 0');
|
|
713
710
|
}
|
|
@@ -722,15 +719,30 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
722
719
|
}
|
|
723
720
|
const endIndex = limit !== undefined ? startIndex + limit : undefined;
|
|
724
721
|
txHashes = txHashes.slice(startIndex, endIndex);
|
|
725
|
-
|
|
722
|
+
// This is a public-facing API (exposed via both the node and the p2p RPC), so proofs are opt-in.
|
|
723
|
+
const includeProof = !!options?.includeProof;
|
|
724
|
+
const maybeTxs = await Promise.all(txHashes.map((txHash)=>this.txPool.getTxByHash(txHash, {
|
|
725
|
+
includeProof
|
|
726
|
+
})));
|
|
726
727
|
return maybeTxs.filter((tx)=>!!tx);
|
|
727
728
|
}
|
|
728
729
|
getPendingTxCount() {
|
|
729
730
|
return this.txPool.getPendingTxCount();
|
|
730
731
|
}
|
|
731
|
-
|
|
732
|
+
hasEligiblePendingTxs(minCount) {
|
|
733
|
+
return this.txPool.hasEligiblePendingTxs(minCount);
|
|
734
|
+
}
|
|
735
|
+
async *iteratePendingTxs(opts) {
|
|
732
736
|
for (const txHash of (await this.txPool.getPendingTxHashes())){
|
|
733
|
-
const tx = await this.txPool.getTxByHash(txHash);
|
|
737
|
+
const tx = await this.txPool.getTxByHash(txHash, opts);
|
|
738
|
+
if (tx) {
|
|
739
|
+
yield tx;
|
|
740
|
+
}
|
|
741
|
+
}
|
|
742
|
+
}
|
|
743
|
+
async *iterateEligiblePendingTxs(opts) {
|
|
744
|
+
for (const txHash of (await this.txPool.getEligiblePendingTxHashes())){
|
|
745
|
+
const tx = await this.txPool.getTxByHash(txHash, opts);
|
|
734
746
|
if (tx) {
|
|
735
747
|
yield tx;
|
|
736
748
|
}
|
|
@@ -739,57 +751,23 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
739
751
|
/**
|
|
740
752
|
* Returns a transaction in the transaction pool by its hash.
|
|
741
753
|
* @param txHash - Hash of the transaction to look for in the pool.
|
|
754
|
+
* @param opts - Set `includeProof: false` to skip loading the tx proof from the DB.
|
|
742
755
|
* @returns A single tx or undefined.
|
|
743
|
-
*/ getTxByHashFromPool(txHash) {
|
|
744
|
-
return this.txPool.getTxByHash(txHash);
|
|
756
|
+
*/ getTxByHashFromPool(txHash, opts) {
|
|
757
|
+
return this.txPool.getTxByHash(txHash, opts);
|
|
745
758
|
}
|
|
746
759
|
/**
|
|
747
760
|
* Returns transactions in the transaction pool by hash.
|
|
748
761
|
* @param txHashes - Hashes of the transactions to look for.
|
|
762
|
+
* @param opts - Set `includeProof: false` to skip loading tx proofs from the DB.
|
|
749
763
|
* @returns The txs found, in the same order as the requested hashes. If a tx is not found, it will be undefined.
|
|
750
|
-
*/ getTxsByHashFromPool(txHashes) {
|
|
751
|
-
return this.txPool.getTxsByHash(txHashes);
|
|
764
|
+
*/ getTxsByHashFromPool(txHashes, opts) {
|
|
765
|
+
return this.txPool.getTxsByHash(txHashes, opts);
|
|
752
766
|
}
|
|
753
767
|
hasTxsInPool(txHashes) {
|
|
754
768
|
return this.txPool.hasTxs(txHashes);
|
|
755
769
|
}
|
|
756
770
|
/**
|
|
757
|
-
* Returns transactions in the transaction pool by hash.
|
|
758
|
-
* If a transaction is not in the pool, it will be requested from the network.
|
|
759
|
-
* @param txHashes - Hashes of the transactions to look for.
|
|
760
|
-
* @returns The txs found, or undefined if not found in the order requested.
|
|
761
|
-
*/ async getTxsByHash(txHashes, pinnedPeerId) {
|
|
762
|
-
const txs = await Promise.all(txHashes.map((txHash)=>this.txPool.getTxByHash(txHash)));
|
|
763
|
-
const missingTxHashes = txs.map((tx, index)=>[
|
|
764
|
-
tx,
|
|
765
|
-
index
|
|
766
|
-
]).filter(([tx, _index])=>!tx).map(([_tx, index])=>txHashes[index]);
|
|
767
|
-
if (missingTxHashes.length === 0) {
|
|
768
|
-
return txs;
|
|
769
|
-
}
|
|
770
|
-
const missingTxs = await this.requestTxsByHash(missingTxHashes, pinnedPeerId);
|
|
771
|
-
// TODO: optimize
|
|
772
|
-
// Merge the found txs in order
|
|
773
|
-
const mergingTxs = txHashes.map((txHash)=>{
|
|
774
|
-
// Is it in the txs list from the mempool?
|
|
775
|
-
for (const tx of txs){
|
|
776
|
-
if (tx !== undefined && tx.getTxHash().equals(txHash)) {
|
|
777
|
-
return tx;
|
|
778
|
-
}
|
|
779
|
-
}
|
|
780
|
-
// Is it in the fetched missing txs?
|
|
781
|
-
// Note: this is an O(n^2) operation, but we expect the number of missing txs to be small.
|
|
782
|
-
for (const tx of missingTxs){
|
|
783
|
-
if (tx.getTxHash().equals(txHash)) {
|
|
784
|
-
return tx;
|
|
785
|
-
}
|
|
786
|
-
}
|
|
787
|
-
// Otherwise return undefined
|
|
788
|
-
return undefined;
|
|
789
|
-
});
|
|
790
|
-
return mergingTxs;
|
|
791
|
-
}
|
|
792
|
-
/**
|
|
793
771
|
* Returns an archived transaction in the transaction pool by its hash.
|
|
794
772
|
* @param txHash - Hash of the archived transaction to look for.
|
|
795
773
|
* @returns A single tx or undefined.
|
|
@@ -804,19 +782,20 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
804
782
|
this.#assertIsReady();
|
|
805
783
|
const result = await this.txPool.addPendingTxs([
|
|
806
784
|
tx
|
|
807
|
-
]
|
|
785
|
+
], {
|
|
786
|
+
feeComparisonOnly: true
|
|
787
|
+
});
|
|
808
788
|
if (result.accepted.length === 1) {
|
|
809
789
|
await this.p2pService.propagate(tx);
|
|
810
|
-
|
|
811
|
-
this.log.warn(`Tx ${tx.getTxHash()} not propagated: accepted=${result.accepted.length} ignored=${result.ignored.length} rejected=${result.rejected.length}`);
|
|
790
|
+
return;
|
|
812
791
|
}
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
792
|
+
const txHashStr = tx.getTxHash().toString();
|
|
793
|
+
const reason = result.errors?.get(txHashStr);
|
|
794
|
+
if (reason) {
|
|
795
|
+
this.log.warn(`Tx ${txHashStr} not added to pool: ${reason.message}`);
|
|
796
|
+
throw new TxPoolError(reason);
|
|
797
|
+
}
|
|
798
|
+
this.log.warn(`Tx ${txHashStr} not propagated: accepted=${result.accepted.length} ignored=${result.ignored.length} rejected=${result.rejected.length}`);
|
|
820
799
|
}
|
|
821
800
|
/**
|
|
822
801
|
* Returns whether the given tx hash is flagged as pending or mined.
|
|
@@ -871,7 +850,9 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
871
850
|
* @returns Information about p2p client status: state & syncedToBlockNum.
|
|
872
851
|
*/ async getStatus() {
|
|
873
852
|
const blockNumber = await this.getSyncedLatestBlockNum();
|
|
874
|
-
const blockHash =
|
|
853
|
+
const blockHash = await this.l2BlockSource.getBlockData({
|
|
854
|
+
number: blockNumber
|
|
855
|
+
}).then((data)=>data?.header.hash()).then((hash)=>hash?.toString());
|
|
875
856
|
return {
|
|
876
857
|
state: this.currentState,
|
|
877
858
|
syncedToL2Block: {
|
|
@@ -897,13 +878,17 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
897
878
|
if (!blocks.length) {
|
|
898
879
|
return;
|
|
899
880
|
}
|
|
900
|
-
await this.handleMinedBlocks(blocks);
|
|
901
|
-
await this.maybeCallPrepareForSlot();
|
|
902
|
-
await this.startCollectingMissingTxs(blocks);
|
|
903
881
|
const lastBlock = blocks.at(-1);
|
|
904
|
-
|
|
882
|
+
const lastSlot = lastBlock.header.getSlot();
|
|
883
|
+
// Mark txs mined before releasing protections: a block landing at this slot supersedes any
|
|
884
|
+
// protection for txs it includes, so mined-marking must run first to keep just-landed txs from
|
|
885
|
+
// being unprotected into pending where they could be evicted before they are recorded as mined.
|
|
886
|
+
await this.handleMinedBlocks(blocks);
|
|
887
|
+
await this.maybeCallPrepareForSlot(lastSlot);
|
|
888
|
+
await this.collectingMissingTxs(blocks);
|
|
889
|
+
await this.synchedLatestSlot.set(BigInt(lastSlot));
|
|
905
890
|
}
|
|
906
|
-
/** Request txs for unproven blocks so the prover node
|
|
891
|
+
/** Request txs for unproven blocks so the prover node can prove. */ async collectingMissingTxs(blocks) {
|
|
907
892
|
try {
|
|
908
893
|
// TODO(#15435): If the archiver has lagged behind L1, the reported proven block number may
|
|
909
894
|
// be much lower than the actual one, and it does not update until the pending chain is
|
|
@@ -911,7 +896,9 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
911
896
|
// are already proven, but the archiver has not yet updated its state. Until this is properly
|
|
912
897
|
// fixed, it is mitigated by the expiration date of collection requests, which depends on
|
|
913
898
|
// the slot number of the block.
|
|
914
|
-
const provenBlockNumber = await this.l2BlockSource.
|
|
899
|
+
const provenBlockNumber = await this.l2BlockSource.getBlockNumber({
|
|
900
|
+
tag: 'proven'
|
|
901
|
+
}) ?? BlockNumber.ZERO;
|
|
915
902
|
const unprovenBlocks = blocks.filter((block)=>block.number > provenBlockNumber);
|
|
916
903
|
for (const block of unprovenBlocks){
|
|
917
904
|
const txHashes = block.body.txEffects.map((txEffect)=>txEffect.txHash);
|
|
@@ -922,7 +909,19 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
922
909
|
blockNumber: block.number,
|
|
923
910
|
blockHash: await block.hash().then((h)=>h.toString())
|
|
924
911
|
});
|
|
925
|
-
|
|
912
|
+
// Both `slashDataWithholdingToleranceSlots` and `p2pMissingTxCollectionDeadlineSlots`
|
|
913
|
+
// count *full slots after the block slot* — value N means collection runs until
|
|
914
|
+
// `slotStart(block.slot + N + 1)`. Take the larger of the two so collection never
|
|
915
|
+
// gives up before the data-withholding slash verdict is rendered.
|
|
916
|
+
const blockSlot = block.header.getSlot();
|
|
917
|
+
const toleranceSlots = this.config.slashDataWithholdingToleranceSlots;
|
|
918
|
+
const configuredSlots = this.config.p2pMissingTxCollectionDeadlineSlots ?? 0;
|
|
919
|
+
const deadlineSlot = SlotNumber(blockSlot + Math.max(toleranceSlots, configuredSlots) + 1);
|
|
920
|
+
const deadlineSeconds = getTimestampForSlot(deadlineSlot, this.epochCache.getL1Constants());
|
|
921
|
+
const deadline = new Date(Number(deadlineSeconds) * 1000);
|
|
922
|
+
await this.txCollection.collectFastForBlock(block, missingTxHashes, {
|
|
923
|
+
deadline
|
|
924
|
+
});
|
|
926
925
|
}
|
|
927
926
|
}
|
|
928
927
|
} catch (err) {
|
|
@@ -944,17 +943,45 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
944
943
|
}
|
|
945
944
|
/**
|
|
946
945
|
* Updates the tx pool after a chain prune.
|
|
946
|
+
* Detects epoch prunes (checkpoint number changed) and deletes all txs in that case.
|
|
947
947
|
* @param latestBlock - The block ID the chain was pruned to.
|
|
948
|
-
|
|
949
|
-
|
|
948
|
+
* @param newCheckpoint - The checkpoint ID after the prune.
|
|
949
|
+
*/ async handlePruneL2Blocks(latestBlock, newCheckpoint) {
|
|
950
|
+
const deleteAllTxs = this.config.txPoolDeleteTxsAfterReorg && await this.isEpochPrune(newCheckpoint);
|
|
951
|
+
await this.txPool.handlePrunedBlocks(latestBlock, {
|
|
952
|
+
deleteAllTxs
|
|
953
|
+
});
|
|
954
|
+
}
|
|
955
|
+
/**
|
|
956
|
+
* Returns true if the prune is an epoch prune (new checkpoint number is less than old).
|
|
957
|
+
* If the checkpoint number stays the same or increases, the prune is within a checkpoint.
|
|
958
|
+
*/ async isEpochPrune(newCheckpoint) {
|
|
959
|
+
const tips = await this.l2Tips.getL2Tips();
|
|
960
|
+
const oldCheckpointNumber = tips.checkpointed.checkpoint.number;
|
|
961
|
+
if (oldCheckpointNumber <= CheckpointNumber.INITIAL) {
|
|
962
|
+
return false;
|
|
963
|
+
}
|
|
964
|
+
const newCheckpointNumber = newCheckpoint.number;
|
|
965
|
+
// We check that the new checkpoint number is less than the old checkpoint number in order to consider it an epoch prune.
|
|
966
|
+
// To be more certain that it is an epoch prune, we will check that at least 2 checkpoints were removed.
|
|
967
|
+
// This means we should avoid thinking checkpoints removed by L1 re-orgs are epoch prunes
|
|
968
|
+
const thresholdForEpochPrune = CheckpointNumber(oldCheckpointNumber - 2);
|
|
969
|
+
const isEpochPrune = newCheckpointNumber <= thresholdForEpochPrune;
|
|
970
|
+
if (isEpochPrune) {
|
|
971
|
+
this.log.info(`Detected epoch prune to ${newCheckpointNumber}`, {
|
|
972
|
+
oldCheckpointNumber,
|
|
973
|
+
newCheckpointNumber,
|
|
974
|
+
thresholdForEpochPrune
|
|
975
|
+
});
|
|
976
|
+
}
|
|
977
|
+
return isEpochPrune;
|
|
950
978
|
}
|
|
951
|
-
/**
|
|
952
|
-
|
|
953
|
-
if (currentSlot <= this.lastSlotProcessed) {
|
|
979
|
+
/** Calls prepareForSlot for the given slot if it advances past the last slot we prepared for. */ async maybeCallPrepareForSlot(slot) {
|
|
980
|
+
if (slot <= this.lastSlotProcessed) {
|
|
954
981
|
return;
|
|
955
982
|
}
|
|
956
|
-
this.lastSlotProcessed =
|
|
957
|
-
await this.txPool.prepareForSlot(
|
|
983
|
+
this.lastSlotProcessed = slot;
|
|
984
|
+
await this.txPool.prepareForSlot(slot);
|
|
958
985
|
}
|
|
959
986
|
async startServiceIfSynched() {
|
|
960
987
|
if (this.currentState !== P2PClientState.SYNCHING) {
|
|
@@ -985,8 +1012,8 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
985
1012
|
this.currentState = newState;
|
|
986
1013
|
this.log.debug(`Moved from state ${P2PClientState[oldState]} to ${P2PClientState[this.currentState]}`);
|
|
987
1014
|
}
|
|
988
|
-
|
|
989
|
-
return this.p2pService.
|
|
1015
|
+
validateTxsReceivedInBlockProposal(txs) {
|
|
1016
|
+
return this.p2pService.validateTxsReceivedInBlockProposal(txs);
|
|
990
1017
|
}
|
|
991
1018
|
/**
|
|
992
1019
|
* Protects existing transactions by hash for a given slot.
|