@aztec/p2p 0.0.1-commit.9d2bcf6d → 0.0.1-commit.9ebd450e8
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 +129 -3
- package/dest/client/factory.d.ts +12 -11
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +55 -16
- package/dest/client/interface.d.ts +54 -34
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +41 -52
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +179 -226
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +24 -11
- package/dest/config.d.ts +133 -92
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +109 -40
- 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/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 +2 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +106 -88
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.js +448 -3
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
- 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 +353 -87
- package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
- package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/index.js +1 -2
- 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 +2 -2
- package/dest/mem_pools/index.d.ts +3 -3
- package/dest/mem_pools/index.d.ts.map +1 -1
- package/dest/mem_pools/index.js +1 -1
- package/dest/mem_pools/instrumentation.d.ts +4 -2
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +16 -14
- package/dest/mem_pools/interface.d.ts +5 -5
- package/dest/mem_pools/interface.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
- package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
- package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
- package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +94 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +11 -0
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/index.js +12 -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 +62 -0
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +180 -0
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
- package/dest/mem_pools/{tx_pool → tx_pool_v2}/eviction/invalid_txs_after_mining_rule.js +16 -35
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +75 -0
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
- package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
- package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/index.js +5 -0
- 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 +218 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.js +10 -0
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +137 -0
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_metadata.js +223 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +337 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +62 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +167 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +78 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +924 -0
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +5 -2
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +20 -11
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +5 -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 +2 -2
- package/dest/msg_validators/clock_tolerance.d.ts +12 -1
- package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
- package/dest/msg_validators/clock_tolerance.js +54 -3
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +7 -4
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +7 -4
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +15 -8
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator.js +67 -47
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
- 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 +24 -20
- 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/block_header_validator.d.ts +16 -3
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
- 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 +1 -1
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +35 -2
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +13 -3
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.js +4 -4
- package/dest/msg_validators/tx_validator/factory.d.ts +133 -6
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/factory.js +247 -60
- 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 +99 -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 +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/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 +20 -4
- 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/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/dummy_service.d.ts +17 -6
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +16 -5
- package/dest/services/encoding.d.ts +7 -3
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +18 -11
- package/dest/services/gossipsub/index.d.ts +3 -0
- package/dest/services/gossipsub/index.d.ts.map +1 -0
- package/dest/services/gossipsub/index.js +2 -0
- package/dest/services/gossipsub/scoring.d.ts +21 -3
- package/dest/services/gossipsub/scoring.d.ts.map +1 -1
- package/dest/services/gossipsub/scoring.js +24 -7
- package/dest/services/gossipsub/topic_score_params.d.ts +184 -0
- package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
- package/dest/services/gossipsub/topic_score_params.js +363 -0
- 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 +95 -51
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +566 -442
- 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 +6 -2
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +39 -11
- package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
- package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_scoring.js +57 -12
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +14 -10
- 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 +89 -112
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts +4 -7
- 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.js +2 -2
- package/dest/services/reqresp/config.d.ts +3 -3
- package/dest/services/reqresp/config.d.ts.map +1 -1
- package/dest/services/reqresp/interface.d.ts +23 -9
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +23 -10
- 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/block_txs_handler.d.ts +7 -5
- 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 +16 -11
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +21 -10
- 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 +27 -11
- 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 +7 -1
- package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/tx.js +21 -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 +0 -10
- package/dest/services/reqresp/reqresp.d.ts +4 -2
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +40 -15
- package/dest/services/service.d.ts +43 -4
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +22 -4
- package/dest/services/tx_collection/config.d.ts.map +1 -1
- package/dest/services/tx_collection/config.js +49 -3
- package/dest/services/tx_collection/fast_tx_collection.d.ts +6 -8
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/fast_tx_collection.js +88 -88
- package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
- package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
- package/dest/services/tx_collection/file_store_tx_source.d.ts +38 -0
- package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
- package/dest/services/tx_collection/file_store_tx_source.js +100 -0
- package/dest/services/tx_collection/index.d.ts +3 -2
- package/dest/services/tx_collection/index.d.ts.map +1 -1
- package/dest/services/tx_collection/index.js +1 -0
- 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 +2 -1
- package/dest/services/tx_collection/proposal_tx_collector.d.ts +15 -15
- package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
- package/dest/services/tx_collection/proposal_tx_collector.js +6 -6
- 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/slow_tx_collection.d.ts +7 -3
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/slow_tx_collection.js +60 -26
- package/dest/services/tx_collection/tx_collection.d.ts +23 -13
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection.js +75 -3
- package/dest/services/tx_collection/tx_collection_sink.d.ts +18 -8
- package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection_sink.js +26 -29
- 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 +26 -7
- package/dest/services/tx_file_store/config.d.ts +1 -3
- package/dest/services/tx_file_store/config.d.ts.map +1 -1
- package/dest/services/tx_file_store/config.js +0 -4
- package/dest/services/tx_file_store/tx_file_store.d.ts +4 -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 +9 -6
- package/dest/services/tx_provider.d.ts +4 -4
- package/dest/services/tx_provider.d.ts.map +1 -1
- package/dest/services/tx_provider.js +9 -8
- package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.js +4 -2
- package/dest/test-helpers/mock-pubsub.d.ts +40 -6
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.js +139 -13
- package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +8 -5
- package/dest/test-helpers/testbench-utils.d.ts +43 -38
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
- package/dest/test-helpers/testbench-utils.js +150 -61
- package/dest/testbench/p2p_client_testbench_worker.d.ts +2 -2
- package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +85 -28
- package/dest/testbench/worker_client_manager.d.ts +10 -1
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +55 -3
- package/dest/util.d.ts +3 -3
- package/dest/util.d.ts.map +1 -1
- package/package.json +14 -14
- package/src/client/factory.ts +110 -29
- package/src/client/interface.ts +65 -35
- package/src/client/p2p_client.ts +216 -272
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +36 -15
- package/src/config.ts +172 -46
- package/src/errors/p2p-service.error.ts +11 -0
- package/src/errors/tx-pool.error.ts +12 -0
- package/src/index.ts +1 -1
- package/src/mem_pools/attestation_pool/attestation_pool.ts +501 -91
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +442 -102
- package/src/mem_pools/attestation_pool/index.ts +9 -2
- package/src/mem_pools/attestation_pool/mocks.ts +2 -1
- package/src/mem_pools/index.ts +2 -2
- package/src/mem_pools/instrumentation.ts +17 -13
- package/src/mem_pools/interface.ts +4 -4
- package/src/mem_pools/tx_pool_v2/README.md +283 -0
- package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
- package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
- package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
- package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +122 -0
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
- package/src/mem_pools/tx_pool_v2/eviction/index.ts +28 -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 +219 -0
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +99 -0
- package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +32 -0
- package/src/mem_pools/tx_pool_v2/index.ts +12 -0
- package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
- package/src/mem_pools/tx_pool_v2/interfaces.ts +250 -0
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +349 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +430 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +238 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1107 -0
- package/src/msg_validators/attestation_validator/README.md +49 -0
- package/src/msg_validators/attestation_validator/attestation_validator.ts +21 -9
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +6 -3
- package/src/msg_validators/clock_tolerance.ts +72 -3
- package/src/msg_validators/proposal_validator/README.md +123 -0
- package/src/msg_validators/proposal_validator/block_proposal_validator.ts +17 -4
- package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +23 -7
- package/src/msg_validators/proposal_validator/proposal_validator.ts +79 -49
- package/src/msg_validators/tx_validator/README.md +127 -0
- package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +5 -5
- 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/block_header_validator.ts +15 -3
- package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
- package/src/msg_validators/tx_validator/data_validator.ts +42 -1
- package/src/msg_validators/tx_validator/double_spend_validator.ts +11 -6
- package/src/msg_validators/tx_validator/factory.ts +396 -78
- package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
- package/src/msg_validators/tx_validator/gas_validator.ts +199 -54
- package/src/msg_validators/tx_validator/index.ts +2 -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 +23 -18
- package/src/services/data_store.ts +5 -13
- package/src/services/dummy_service.ts +25 -7
- package/src/services/encoding.ts +18 -10
- package/src/services/gossipsub/README.md +641 -0
- package/src/services/gossipsub/index.ts +2 -0
- package/src/services/gossipsub/scoring.ts +29 -5
- package/src/services/gossipsub/topic_score_params.ts +519 -0
- package/src/services/libp2p/instrumentation.ts +14 -0
- package/src/services/libp2p/libp2p_service.ts +593 -477
- package/src/services/peer-manager/metrics.ts +7 -0
- package/src/services/peer-manager/peer_manager.ts +45 -11
- package/src/services/peer-manager/peer_scoring.ts +52 -5
- package/src/services/reqresp/README.md +229 -0
- package/src/services/reqresp/batch-tx-requester/README.md +53 -14
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +89 -122
- package/src/services/reqresp/batch-tx-requester/interface.ts +3 -6
- 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 +2 -2
- package/src/services/reqresp/config.ts +2 -2
- package/src/services/reqresp/interface.ts +45 -10
- package/src/services/reqresp/metrics.ts +0 -1
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +23 -14
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +38 -15
- package/src/services/reqresp/protocols/index.ts +0 -1
- package/src/services/reqresp/protocols/tx.ts +23 -3
- package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
- package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
- package/src/services/reqresp/reqresp.ts +53 -16
- package/src/services/service.ts +57 -3
- package/src/services/tx_collection/config.ts +74 -6
- package/src/services/tx_collection/fast_tx_collection.ts +94 -97
- package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
- package/src/services/tx_collection/file_store_tx_source.ts +129 -0
- package/src/services/tx_collection/index.ts +2 -1
- package/src/services/tx_collection/instrumentation.ts +7 -1
- package/src/services/tx_collection/proposal_tx_collector.ts +21 -27
- package/src/services/tx_collection/request_tracker.ts +127 -0
- package/src/services/tx_collection/slow_tx_collection.ts +66 -33
- package/src/services/tx_collection/tx_collection.ts +114 -19
- package/src/services/tx_collection/tx_collection_sink.ts +30 -34
- package/src/services/tx_collection/tx_source.ts +28 -8
- package/src/services/tx_file_store/config.ts +0 -6
- package/src/services/tx_file_store/tx_file_store.ts +10 -8
- package/src/services/tx_provider.ts +10 -9
- package/src/test-helpers/make-test-p2p-clients.ts +6 -6
- package/src/test-helpers/mock-pubsub.ts +180 -14
- package/src/test-helpers/reqresp-nodes.ts +9 -9
- package/src/test-helpers/testbench-utils.ts +157 -74
- package/src/testbench/p2p_client_testbench_worker.ts +94 -31
- package/src/testbench/worker_client_manager.ts +68 -6
- package/src/util.ts +8 -2
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
- 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_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/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/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/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
- 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/proposal_validator/proposal_validator_test_suite.ts +0 -230
- package/src/services/reqresp/protocols/block.ts +0 -37
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { EpochCacheInterface } from '@aztec/epoch-cache';
|
|
2
|
-
import {
|
|
2
|
+
import { EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
3
3
|
import type { Logger } from '@aztec/foundation/log';
|
|
4
|
+
import type { L2Block, L2BlockId } from '@aztec/stdlib/block';
|
|
4
5
|
import type { WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
5
6
|
import type {
|
|
6
7
|
BlockProposal,
|
|
@@ -12,15 +13,17 @@ import { type BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
|
|
|
12
13
|
|
|
13
14
|
import EventEmitter from 'events';
|
|
14
15
|
|
|
15
|
-
import type {
|
|
16
|
-
import type {
|
|
16
|
+
import type { TryAddResult } from '../mem_pools/attestation_pool/attestation_pool.js';
|
|
17
|
+
import type { AddTxsResult, TxPoolV2, TxPoolV2Config } from '../mem_pools/tx_pool_v2/interfaces.js';
|
|
18
|
+
import type { TxState } from '../mem_pools/tx_pool_v2/tx_metadata.js';
|
|
17
19
|
import { RateLimitStatus } from '../services/reqresp/rate-limiter/rate_limiter.js';
|
|
18
20
|
|
|
19
21
|
/**
|
|
20
22
|
* In-memory TxPool implementation for testing.
|
|
21
23
|
* Provides basic tx storage without persistence.
|
|
24
|
+
* Implements TxPoolV2 interface with stub implementations for testing.
|
|
22
25
|
*/
|
|
23
|
-
export class InMemoryTxPool extends EventEmitter implements
|
|
26
|
+
export class InMemoryTxPool extends EventEmitter implements TxPoolV2 {
|
|
24
27
|
private txsByHash = new Map<string, Tx>();
|
|
25
28
|
private logger: Logger | null = null;
|
|
26
29
|
|
|
@@ -54,133 +57,189 @@ export class InMemoryTxPool extends EventEmitter implements TxPool {
|
|
|
54
57
|
this.removeAllListeners();
|
|
55
58
|
}
|
|
56
59
|
|
|
57
|
-
|
|
60
|
+
// === Core Operations (TxPoolV2) ===
|
|
61
|
+
|
|
62
|
+
addPendingTxs(txs: Tx[], opts?: { source?: string; feeComparisonOnly?: boolean }): Promise<AddTxsResult> {
|
|
63
|
+
const accepted: TxHash[] = [];
|
|
58
64
|
const newTxs: Tx[] = [];
|
|
59
|
-
let added = 0;
|
|
60
65
|
for (const tx of txs) {
|
|
61
66
|
const key = tx.getTxHash().toString();
|
|
62
67
|
if (!this.txsByHash.has(key)) {
|
|
63
68
|
newTxs.push(tx);
|
|
64
|
-
|
|
69
|
+
accepted.push(tx.getTxHash());
|
|
65
70
|
}
|
|
66
71
|
this.txsByHash.set(key, tx);
|
|
67
72
|
}
|
|
68
73
|
if (newTxs.length > 0) {
|
|
69
74
|
this.emit('txs-added', { txs: newTxs, source: opts?.source });
|
|
70
75
|
}
|
|
71
|
-
return Promise.resolve(
|
|
76
|
+
return Promise.resolve({ accepted, ignored: [], rejected: [] });
|
|
72
77
|
}
|
|
73
78
|
|
|
74
|
-
|
|
75
|
-
|
|
79
|
+
canAddPendingTx(tx: Tx): Promise<'accepted' | 'ignored'> {
|
|
80
|
+
const key = tx.getTxHash().toString();
|
|
81
|
+
if (this.txsByHash.has(key)) {
|
|
82
|
+
return Promise.resolve('ignored');
|
|
83
|
+
}
|
|
84
|
+
return Promise.resolve('accepted');
|
|
76
85
|
}
|
|
77
86
|
|
|
78
|
-
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
87
|
+
addProtectedTxs(txs: Tx[], _block: BlockHeader, opts?: { source?: string }): Promise<void> {
|
|
88
|
+
for (const tx of txs) {
|
|
89
|
+
const key = tx.getTxHash().toString();
|
|
90
|
+
this.txsByHash.set(key, tx);
|
|
91
|
+
}
|
|
92
|
+
if (txs.length > 0) {
|
|
93
|
+
this.emit('txs-added', { txs, source: opts?.source });
|
|
94
|
+
}
|
|
95
|
+
return Promise.resolve();
|
|
83
96
|
}
|
|
84
97
|
|
|
85
|
-
|
|
86
|
-
|
|
98
|
+
protectTxs(txHashes: TxHash[], _block: BlockHeader): Promise<TxHash[]> {
|
|
99
|
+
const notFound: TxHash[] = [];
|
|
100
|
+
for (const txHash of txHashes) {
|
|
101
|
+
if (!this.txsByHash.has(txHash.toString())) {
|
|
102
|
+
notFound.push(txHash);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return Promise.resolve(notFound);
|
|
87
106
|
}
|
|
88
107
|
|
|
89
|
-
|
|
90
|
-
|
|
108
|
+
addMinedTxs(txs: Tx[], _block: BlockHeader, _opts?: { source?: string }): Promise<void> {
|
|
109
|
+
for (const tx of txs) {
|
|
110
|
+
const key = tx.getTxHash().toString();
|
|
111
|
+
this.txsByHash.set(key, tx);
|
|
112
|
+
}
|
|
113
|
+
return Promise.resolve();
|
|
91
114
|
}
|
|
92
115
|
|
|
93
|
-
|
|
94
|
-
|
|
116
|
+
// === State Transition Handlers (TxPoolV2) ===
|
|
117
|
+
|
|
118
|
+
handleMinedBlock(_block: L2Block): Promise<void> {
|
|
119
|
+
return Promise.resolve();
|
|
95
120
|
}
|
|
96
121
|
|
|
97
|
-
|
|
122
|
+
prepareForSlot(_slotNumber: SlotNumber): Promise<void> {
|
|
123
|
+
return Promise.resolve();
|
|
124
|
+
}
|
|
98
125
|
|
|
99
|
-
|
|
126
|
+
handlePrunedBlocks(_latestBlock: L2BlockId, _options?: { deleteAllTxs?: boolean }): Promise<void> {
|
|
127
|
+
return Promise.resolve();
|
|
128
|
+
}
|
|
100
129
|
|
|
101
|
-
|
|
130
|
+
handleFailedExecution(txHashes: TxHash[]): Promise<void> {
|
|
102
131
|
for (const txHash of txHashes) {
|
|
103
132
|
this.txsByHash.delete(txHash.toString());
|
|
104
133
|
}
|
|
105
134
|
return Promise.resolve();
|
|
106
135
|
}
|
|
107
136
|
|
|
108
|
-
|
|
109
|
-
return Promise.resolve(
|
|
137
|
+
handleFinalizedBlock(_block: BlockHeader): Promise<void> {
|
|
138
|
+
return Promise.resolve();
|
|
110
139
|
}
|
|
111
140
|
|
|
112
|
-
|
|
113
|
-
|
|
141
|
+
// === Query Operations (TxPoolV2) ===
|
|
142
|
+
|
|
143
|
+
getTxByHash(hash: TxHash): Promise<Tx | undefined> {
|
|
144
|
+
return Promise.resolve(this.txsByHash.get(hash.toString()));
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
getTxsByHash(hashes: TxHash[]): Promise<(Tx | undefined)[]> {
|
|
148
|
+
const result = hashes.map(h => this.txsByHash.get(h.toString()));
|
|
149
|
+
const found = result.filter(tx => tx !== undefined).length;
|
|
150
|
+
this.logger?.debug(`[TxPool] getTxsByHash: requested ${hashes.length}, found ${found}`);
|
|
151
|
+
return Promise.resolve(result);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
hasTxs(hashes: TxHash[]): Promise<boolean[]> {
|
|
155
|
+
return Promise.resolve(hashes.map(h => this.txsByHash.has(h.toString())));
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
getArchivedTxByHash(_hash: TxHash): Promise<Tx | undefined> {
|
|
159
|
+
return Promise.resolve(undefined);
|
|
114
160
|
}
|
|
115
161
|
|
|
116
162
|
getPendingTxHashes(): Promise<TxHash[]> {
|
|
117
163
|
return Promise.resolve([...this.txsByHash.keys()].map(key => TxHash.fromString(key)));
|
|
118
164
|
}
|
|
119
165
|
|
|
166
|
+
getEligiblePendingTxHashes(): Promise<TxHash[]> {
|
|
167
|
+
return this.getPendingTxHashes();
|
|
168
|
+
}
|
|
169
|
+
|
|
120
170
|
getPendingTxCount(): Promise<number> {
|
|
121
171
|
return Promise.resolve(this.txsByHash.size);
|
|
122
172
|
}
|
|
123
173
|
|
|
124
|
-
getMinedTxHashes(): Promise<[
|
|
174
|
+
getMinedTxHashes(): Promise<[TxHash, L2BlockId][]> {
|
|
125
175
|
return Promise.resolve([]);
|
|
126
176
|
}
|
|
127
177
|
|
|
128
|
-
|
|
129
|
-
return Promise.resolve(
|
|
178
|
+
getMinedTxCount(): Promise<number> {
|
|
179
|
+
return Promise.resolve(0);
|
|
130
180
|
}
|
|
131
181
|
|
|
132
|
-
|
|
182
|
+
getTxStatus(hash: TxHash): Promise<TxState | 'deleted' | undefined> {
|
|
183
|
+
return Promise.resolve(this.txsByHash.has(hash.toString()) ? 'pending' : undefined);
|
|
184
|
+
}
|
|
133
185
|
|
|
134
186
|
isEmpty(): Promise<boolean> {
|
|
135
187
|
return Promise.resolve(this.txsByHash.size === 0);
|
|
136
188
|
}
|
|
137
189
|
|
|
138
|
-
|
|
190
|
+
getLowestPriorityPending(_limit: number): Promise<TxHash[]> {
|
|
191
|
+
return Promise.resolve([]);
|
|
192
|
+
}
|
|
139
193
|
|
|
140
|
-
|
|
194
|
+
// === Configuration (TxPoolV2) ===
|
|
141
195
|
|
|
142
|
-
|
|
143
|
-
return Promise.resolve(
|
|
196
|
+
updateConfig(_config: Partial<TxPoolV2Config>): Promise<void> {
|
|
197
|
+
return Promise.resolve();
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// === Lifecycle (TxPoolV2) ===
|
|
201
|
+
|
|
202
|
+
start(): Promise<void> {
|
|
203
|
+
return Promise.resolve();
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
stop(): Promise<void> {
|
|
207
|
+
return Promise.resolve();
|
|
144
208
|
}
|
|
145
209
|
}
|
|
146
210
|
|
|
147
211
|
/**
|
|
148
|
-
* In-memory AttestationPool
|
|
212
|
+
* In-memory AttestationPool mock for testing/benchmarking.
|
|
213
|
+
* Provides minimal implementation without persistence.
|
|
149
214
|
*/
|
|
150
|
-
export class InMemoryAttestationPool
|
|
215
|
+
export class InMemoryAttestationPool {
|
|
151
216
|
private proposals = new Map<string, BlockProposal>();
|
|
152
217
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
218
|
+
tryAddBlockProposal(blockProposal: BlockProposal): Promise<TryAddResult> {
|
|
219
|
+
const id = blockProposal.archive.toString();
|
|
220
|
+
const alreadyExists = this.proposals.has(id);
|
|
221
|
+
if (alreadyExists) {
|
|
222
|
+
return Promise.resolve({ added: false, alreadyExists: true, count: 1 });
|
|
223
|
+
}
|
|
224
|
+
this.proposals.set(id, blockProposal);
|
|
225
|
+
return Promise.resolve({ added: true, alreadyExists: false, count: 1 });
|
|
156
226
|
}
|
|
157
227
|
|
|
158
228
|
getBlockProposal(id: string): Promise<BlockProposal | undefined> {
|
|
159
229
|
return Promise.resolve(this.proposals.get(id));
|
|
160
230
|
}
|
|
161
231
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
return Promise.resolve(this.proposals.has(id));
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
canAddProposal(_block: BlockProposal): Promise<boolean> {
|
|
168
|
-
return Promise.resolve(true);
|
|
232
|
+
tryAddCheckpointProposal(_proposal: CheckpointProposal): Promise<TryAddResult> {
|
|
233
|
+
return Promise.resolve({ added: true, alreadyExists: false, count: 1 });
|
|
169
234
|
}
|
|
170
235
|
|
|
171
|
-
async addCheckpointProposal(_proposal: CheckpointProposal): Promise<void> {}
|
|
172
|
-
|
|
173
236
|
getCheckpointProposal(_id: string): Promise<CheckpointProposalCore | undefined> {
|
|
174
237
|
return Promise.resolve(undefined);
|
|
175
238
|
}
|
|
176
239
|
|
|
177
|
-
|
|
178
|
-
return Promise.resolve(false);
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
async addCheckpointAttestations(_attestations: CheckpointAttestation[]): Promise<void> {}
|
|
240
|
+
async addOwnCheckpointAttestations(_attestations: CheckpointAttestation[]): Promise<void> {}
|
|
182
241
|
|
|
183
|
-
async
|
|
242
|
+
async deleteOlderThan(_slot: SlotNumber): Promise<void> {}
|
|
184
243
|
|
|
185
244
|
getCheckpointAttestationsForSlot(_slot: SlotNumber): Promise<CheckpointAttestation[]> {
|
|
186
245
|
return Promise.resolve([]);
|
|
@@ -193,23 +252,11 @@ export class InMemoryAttestationPool implements AttestationPool {
|
|
|
193
252
|
return Promise.resolve([]);
|
|
194
253
|
}
|
|
195
254
|
|
|
196
|
-
|
|
197
|
-
return Promise.resolve(false);
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
canAddCheckpointProposal(_proposal: CheckpointProposal): Promise<boolean> {
|
|
201
|
-
return Promise.resolve(true);
|
|
255
|
+
tryAddCheckpointAttestation(_attestation: CheckpointAttestation): Promise<TryAddResult> {
|
|
256
|
+
return Promise.resolve({ added: true, alreadyExists: false, count: 1 });
|
|
202
257
|
}
|
|
203
258
|
|
|
204
|
-
|
|
205
|
-
return Promise.resolve(true);
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
hasReachedCheckpointProposalCap(_slot: SlotNumber): Promise<boolean> {
|
|
209
|
-
return Promise.resolve(false);
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
hasReachedCheckpointAttestationCap(_slot: SlotNumber, _proposalId: string, _committeeSize: number): Promise<boolean> {
|
|
259
|
+
hasBlockProposalsForSlot(_slot: SlotNumber): Promise<boolean> {
|
|
213
260
|
return Promise.resolve(false);
|
|
214
261
|
}
|
|
215
262
|
|
|
@@ -226,18 +273,54 @@ export class InMemoryAttestationPool implements AttestationPool {
|
|
|
226
273
|
* Creates a mock EpochCache for testing.
|
|
227
274
|
*/
|
|
228
275
|
export function createMockEpochCache(): EpochCacheInterface {
|
|
229
|
-
|
|
276
|
+
const cache: EpochCacheInterface = {
|
|
230
277
|
getCommittee: () => Promise.resolve({ committee: [], seed: 1n, epoch: EpochNumber.ZERO, isEscapeHatchOpen: false }),
|
|
231
278
|
getProposerIndexEncoding: () => '0x' as `0x${string}`,
|
|
232
|
-
|
|
279
|
+
getSlotNow: () => SlotNumber.ZERO,
|
|
280
|
+
getTargetSlot: () => SlotNumber.ZERO,
|
|
281
|
+
getEpochNow: () => EpochNumber.ZERO,
|
|
282
|
+
getTargetEpoch: () => EpochNumber.ZERO,
|
|
283
|
+
getEpochAndSlotNow: () => ({
|
|
284
|
+
epoch: EpochNumber.ZERO,
|
|
285
|
+
slot: SlotNumber.ZERO,
|
|
286
|
+
ts: 0n,
|
|
287
|
+
nowMs: 0n,
|
|
288
|
+
}),
|
|
289
|
+
isProposerPipeliningEnabled: () => false,
|
|
290
|
+
pipeliningOffset: () => 0,
|
|
233
291
|
computeProposerIndex: () => 0n,
|
|
234
292
|
getCurrentAndNextSlot: () => ({ currentSlot: SlotNumber.ZERO, nextSlot: SlotNumber.ZERO }),
|
|
293
|
+
getTargetAndNextSlot: () => ({ targetSlot: SlotNumber.ZERO, nextSlot: SlotNumber.ZERO }),
|
|
235
294
|
getProposerAttesterAddressInSlot: () => Promise.resolve(undefined),
|
|
236
|
-
getEpochAndSlotInNextL1Slot: () => ({
|
|
295
|
+
getEpochAndSlotInNextL1Slot: () => ({
|
|
296
|
+
epoch: EpochNumber.ZERO,
|
|
297
|
+
slot: SlotNumber.ZERO,
|
|
298
|
+
ts: 0n,
|
|
299
|
+
nowSeconds: 0n,
|
|
300
|
+
}),
|
|
301
|
+
getTargetEpochAndSlotInNextL1Slot: () => ({
|
|
302
|
+
epoch: EpochNumber.ZERO,
|
|
303
|
+
slot: SlotNumber.ZERO,
|
|
304
|
+
ts: 0n,
|
|
305
|
+
nowSeconds: 0n,
|
|
306
|
+
}),
|
|
237
307
|
isInCommittee: () => Promise.resolve(false),
|
|
238
308
|
getRegisteredValidators: () => Promise.resolve([]),
|
|
239
309
|
filterInCommittee: () => Promise.resolve([]),
|
|
310
|
+
isEscapeHatchOpen: () => Promise.resolve(false),
|
|
311
|
+
isEscapeHatchOpenAtSlot: () => Promise.resolve(false),
|
|
312
|
+
getL1Constants: () => ({
|
|
313
|
+
l1StartBlock: 0n,
|
|
314
|
+
l1GenesisTime: 0n,
|
|
315
|
+
epochDuration: 1,
|
|
316
|
+
slotDuration: 1,
|
|
317
|
+
ethereumSlotDuration: 1,
|
|
318
|
+
proofSubmissionEpochs: 1,
|
|
319
|
+
targetCommitteeSize: 48,
|
|
320
|
+
rollupManaLimit: Number.MAX_SAFE_INTEGER,
|
|
321
|
+
}),
|
|
240
322
|
};
|
|
323
|
+
return cache;
|
|
241
324
|
}
|
|
242
325
|
|
|
243
326
|
/**
|
|
@@ -12,14 +12,15 @@ import { Fr } from '@aztec/foundation/curves/bn254';
|
|
|
12
12
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
13
13
|
import { sleep } from '@aztec/foundation/sleep';
|
|
14
14
|
import { DateProvider, Timer } from '@aztec/foundation/timer';
|
|
15
|
-
import type { DataStoreConfig } from '@aztec/kv-store/config';
|
|
16
15
|
import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
|
|
17
16
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
18
17
|
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
19
18
|
import type { L2BlockSource } from '@aztec/stdlib/block';
|
|
20
19
|
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
20
|
+
import { GasFees } from '@aztec/stdlib/gas';
|
|
21
21
|
import type { ClientProtocolCircuitVerifier, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
22
|
-
import
|
|
22
|
+
import type { DataStoreConfig } from '@aztec/stdlib/kv-store';
|
|
23
|
+
import { type BlockProposal, P2PMessage } from '@aztec/stdlib/p2p';
|
|
23
24
|
import { ChonkProof } from '@aztec/stdlib/proofs';
|
|
24
25
|
import { makeAztecAddress, makeBlockHeader, makeBlockProposal, mockTx } from '@aztec/stdlib/testing';
|
|
25
26
|
import { Tx, TxHash, type TxValidationResult } from '@aztec/stdlib/tx';
|
|
@@ -29,22 +30,19 @@ import type { Message, PeerId } from '@libp2p/interface';
|
|
|
29
30
|
import { TopicValidatorResult } from '@libp2p/interface';
|
|
30
31
|
import { peerIdFromString } from '@libp2p/peer-id';
|
|
31
32
|
|
|
32
|
-
import type { P2PClient } from '../client/
|
|
33
|
+
import type { P2PClient } from '../client/index.js';
|
|
33
34
|
import type { P2PConfig } from '../config.js';
|
|
34
35
|
import { createP2PClient } from '../index.js';
|
|
35
|
-
import type { MemPools } from '../mem_pools/
|
|
36
|
-
import { LibP2PService } from '../services/
|
|
36
|
+
import type { MemPools } from '../mem_pools/index.js';
|
|
37
|
+
import { BatchTxRequesterCollector, LibP2PService, SendBatchRequestCollector } from '../services/index.js';
|
|
37
38
|
import type { PeerManager } from '../services/peer-manager/peer_manager.js';
|
|
38
39
|
import type { BatchTxRequesterLibP2PService } from '../services/reqresp/batch-tx-requester/interface.js';
|
|
39
40
|
import type { IBatchRequestTxValidator } from '../services/reqresp/batch-tx-requester/tx_validator.js';
|
|
40
41
|
import { RateLimitStatus } from '../services/reqresp/rate-limiter/rate_limiter.js';
|
|
41
42
|
import type { ReqResp } from '../services/reqresp/reqresp.js';
|
|
42
43
|
import type { PeerDiscoveryService } from '../services/service.js';
|
|
43
|
-
import {
|
|
44
|
-
|
|
45
|
-
SendBatchRequestCollector,
|
|
46
|
-
} from '../services/tx_collection/proposal_tx_collector.js';
|
|
47
|
-
import { AlwaysTrueCircuitVerifier } from '../test-helpers/reqresp-nodes.js';
|
|
44
|
+
import { RequestTracker } from '../services/tx_collection/request_tracker.js';
|
|
45
|
+
import { AlwaysTrueCircuitVerifier } from '../test-helpers/index.js';
|
|
48
46
|
import {
|
|
49
47
|
BENCHMARK_CONSTANTS,
|
|
50
48
|
type CollectorType,
|
|
@@ -55,7 +53,7 @@ import {
|
|
|
55
53
|
createMockEpochCache,
|
|
56
54
|
createMockWorldStateSynchronizer,
|
|
57
55
|
filterTxsByDistribution,
|
|
58
|
-
} from '../test-helpers/
|
|
56
|
+
} from '../test-helpers/index.js';
|
|
59
57
|
import type { PubSubLibp2p } from '../util.js';
|
|
60
58
|
|
|
61
59
|
export type { DistributionPattern, CollectorType } from '../test-helpers/testbench-utils.js';
|
|
@@ -89,12 +87,11 @@ export interface BenchReadyMessage {
|
|
|
89
87
|
}
|
|
90
88
|
const txCache = new Map<number, Tx[]>();
|
|
91
89
|
|
|
92
|
-
class TestLibP2PService
|
|
90
|
+
class TestLibP2PService extends LibP2PService {
|
|
93
91
|
private disableTxValidation: boolean;
|
|
94
92
|
private gossipMessageCount = 0;
|
|
95
93
|
|
|
96
94
|
constructor(
|
|
97
|
-
clientType: T,
|
|
98
95
|
config: P2PConfig,
|
|
99
96
|
node: PubSubLibp2p,
|
|
100
97
|
peerDiscoveryService: PeerDiscoveryService,
|
|
@@ -110,7 +107,6 @@ class TestLibP2PService<T extends P2PClientType = P2PClientType.Full> extends Li
|
|
|
110
107
|
disableTxValidation = true,
|
|
111
108
|
) {
|
|
112
109
|
super(
|
|
113
|
-
clientType,
|
|
114
110
|
config,
|
|
115
111
|
node,
|
|
116
112
|
peerDiscoveryService,
|
|
@@ -121,6 +117,7 @@ class TestLibP2PService<T extends P2PClientType = P2PClientType.Full> extends Li
|
|
|
121
117
|
epochCache,
|
|
122
118
|
proofVerifier,
|
|
123
119
|
worldStateSynchronizer,
|
|
120
|
+
{ getCurrentMinFees: () => Promise.resolve(GasFees.empty()) },
|
|
124
121
|
telemetry,
|
|
125
122
|
logger,
|
|
126
123
|
);
|
|
@@ -144,7 +141,7 @@ class TestLibP2PService<T extends P2PClientType = P2PClientType.Full> extends Li
|
|
|
144
141
|
const txHash = tx.getTxHash();
|
|
145
142
|
const txHashString = txHash.toString();
|
|
146
143
|
this.logger.verbose(`Received tx ${txHashString} from external peer ${source.toString()}.`);
|
|
147
|
-
await this.mempools.txPool.
|
|
144
|
+
await this.mempools.txPool.addPendingTxs([tx]);
|
|
148
145
|
} else {
|
|
149
146
|
await super.handleGossipedTx(payload, msgId, source);
|
|
150
147
|
}
|
|
@@ -166,7 +163,7 @@ async function generateDeterministicTxs(txCount: number, seed: number, config: P
|
|
|
166
163
|
return cached.slice(0, txCount);
|
|
167
164
|
}
|
|
168
165
|
|
|
169
|
-
const
|
|
166
|
+
const expirationTimestampBase = BigInt(seed);
|
|
170
167
|
for (let i = cached.length; i < txCount; i++) {
|
|
171
168
|
const txSeed = seed * 10000 + i;
|
|
172
169
|
const tx = await mockTx(txSeed, {
|
|
@@ -182,7 +179,7 @@ async function generateDeterministicTxs(txCount: number, seed: number, config: P
|
|
|
182
179
|
hasPublicTeardownCallRequest: false,
|
|
183
180
|
publicCalldataSize: 0,
|
|
184
181
|
});
|
|
185
|
-
tx.data.
|
|
182
|
+
tx.data.expirationTimestamp = expirationTimestampBase + BigInt(i);
|
|
186
183
|
await tx.recomputeHash();
|
|
187
184
|
cached.push(tx);
|
|
188
185
|
}
|
|
@@ -209,6 +206,25 @@ function installUnlimitedRateLimits(client: P2PClient): void {
|
|
|
209
206
|
rateLimiter.allow = () => RateLimitStatus.Allowed;
|
|
210
207
|
}
|
|
211
208
|
|
|
209
|
+
/** Resets peer scores to prevent cross-case contamination in benchmarks. */
|
|
210
|
+
function resetPeerScores(client: P2PClient): void {
|
|
211
|
+
const peerManager = (client as any).p2pService.peerManager;
|
|
212
|
+
const peerScoring = peerManager?.peerScoring;
|
|
213
|
+
if (peerScoring?.resetAllScores) {
|
|
214
|
+
peerScoring.resetAllScores();
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/** Returns the number of connected peers for connectivity checks. */
|
|
219
|
+
function getConnectedPeerCount(client: P2PClient): number {
|
|
220
|
+
const p2pService = (client as any).p2pService;
|
|
221
|
+
const connectionSampler = p2pService?.reqresp?.getConnectionSampler?.();
|
|
222
|
+
if (connectionSampler?.getPeerListSortedByConnectionCountAsc) {
|
|
223
|
+
return connectionSampler.getPeerListSortedByConnectionCountAsc().length;
|
|
224
|
+
}
|
|
225
|
+
return 0;
|
|
226
|
+
}
|
|
227
|
+
|
|
212
228
|
async function runAggregatorBenchmark(
|
|
213
229
|
client: P2PClient,
|
|
214
230
|
blockProposal: BlockProposal,
|
|
@@ -277,7 +293,11 @@ async function runAggregatorBenchmark(
|
|
|
277
293
|
new DateProvider(),
|
|
278
294
|
noopTxValidator,
|
|
279
295
|
);
|
|
280
|
-
const fetchedTxs = await collector.collectTxs(
|
|
296
|
+
const fetchedTxs = await collector.collectTxs(
|
|
297
|
+
RequestTracker.create(txHashes, new Date(Date.now() + timeoutMs)),
|
|
298
|
+
blockProposal,
|
|
299
|
+
pinnedPeer,
|
|
300
|
+
);
|
|
281
301
|
const durationMs = timer.ms();
|
|
282
302
|
return {
|
|
283
303
|
type: 'BENCH_RESULT',
|
|
@@ -292,7 +312,11 @@ async function runAggregatorBenchmark(
|
|
|
292
312
|
BENCHMARK_CONSTANTS.FIXED_MAX_PEERS,
|
|
293
313
|
BENCHMARK_CONSTANTS.FIXED_MAX_RETRY_ATTEMPTS,
|
|
294
314
|
);
|
|
295
|
-
const fetchedTxs = await collector.collectTxs(
|
|
315
|
+
const fetchedTxs = await collector.collectTxs(
|
|
316
|
+
RequestTracker.create(txHashes, new Date(Date.now() + timeoutMs)),
|
|
317
|
+
blockProposal,
|
|
318
|
+
pinnedPeer,
|
|
319
|
+
);
|
|
296
320
|
const durationMs = timer.ms();
|
|
297
321
|
return {
|
|
298
322
|
type: 'BENCH_RESULT',
|
|
@@ -318,6 +342,37 @@ let workerConfig: P2PConfig | null = null;
|
|
|
318
342
|
let workerLogger: Logger | null = null;
|
|
319
343
|
let kvStore: Awaited<ReturnType<typeof openTmpStore>> | null = null;
|
|
320
344
|
|
|
345
|
+
async function stopWorker() {
|
|
346
|
+
try {
|
|
347
|
+
if (workerClient) {
|
|
348
|
+
await workerClient.stop();
|
|
349
|
+
workerClient = null;
|
|
350
|
+
}
|
|
351
|
+
} catch (e) {
|
|
352
|
+
workerLogger?.error('Error stopping worker client', e);
|
|
353
|
+
}
|
|
354
|
+
try {
|
|
355
|
+
if (kvStore?.close) {
|
|
356
|
+
await kvStore.close();
|
|
357
|
+
kvStore = null;
|
|
358
|
+
}
|
|
359
|
+
} catch (e) {
|
|
360
|
+
workerLogger?.error('Error closing kv store', e);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
function gracefulExit(code: number = 0) {
|
|
365
|
+
try {
|
|
366
|
+
if (process.connected) {
|
|
367
|
+
process.disconnect();
|
|
368
|
+
}
|
|
369
|
+
} catch {
|
|
370
|
+
// IPC channel already closed
|
|
371
|
+
}
|
|
372
|
+
// Safety fallback if lingering handles prevent the event loop from draining
|
|
373
|
+
setTimeout(() => process.exit(code), 5000).unref();
|
|
374
|
+
}
|
|
375
|
+
|
|
321
376
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
322
377
|
process.on('message', async msg => {
|
|
323
378
|
const {
|
|
@@ -335,6 +390,7 @@ process.on('message', async msg => {
|
|
|
335
390
|
const config: P2PConfig = {
|
|
336
391
|
...rawConfig,
|
|
337
392
|
peerIdPrivateKey: rawConfig.peerIdPrivateKey ? new SecretValue(rawConfig.peerIdPrivateKey) : undefined,
|
|
393
|
+
priceBumpPercentage: 10n,
|
|
338
394
|
} as P2PConfig;
|
|
339
395
|
|
|
340
396
|
workerConfig = config;
|
|
@@ -358,12 +414,12 @@ process.on('message', async msg => {
|
|
|
358
414
|
};
|
|
359
415
|
|
|
360
416
|
const client = await createP2PClient(
|
|
361
|
-
P2PClientType.Full,
|
|
362
417
|
config as P2PConfig & DataStoreConfig,
|
|
363
418
|
l2BlockSource,
|
|
364
419
|
proofVerifier as ClientProtocolCircuitVerifier,
|
|
365
420
|
worldState,
|
|
366
421
|
epochCache,
|
|
422
|
+
{ getCurrentMinFees: () => Promise.resolve(GasFees.empty()) },
|
|
367
423
|
'test-p2p-bench-worker',
|
|
368
424
|
undefined,
|
|
369
425
|
telemetry as TelemetryClient,
|
|
@@ -371,7 +427,6 @@ process.on('message', async msg => {
|
|
|
371
427
|
);
|
|
372
428
|
|
|
373
429
|
const testService = new TestLibP2PService(
|
|
374
|
-
P2PClientType.Full,
|
|
375
430
|
config,
|
|
376
431
|
(client as any).p2pService.node,
|
|
377
432
|
(client as any).p2pService.peerDiscoveryService,
|
|
@@ -408,13 +463,8 @@ process.on('message', async msg => {
|
|
|
408
463
|
const cmd = msg as any;
|
|
409
464
|
switch (cmd.type) {
|
|
410
465
|
case 'STOP':
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
}
|
|
414
|
-
if (kvStore?.close) {
|
|
415
|
-
await kvStore.close();
|
|
416
|
-
}
|
|
417
|
-
process.exit(0);
|
|
466
|
+
await stopWorker();
|
|
467
|
+
gracefulExit(0);
|
|
418
468
|
break;
|
|
419
469
|
|
|
420
470
|
case 'SEND_TX':
|
|
@@ -424,6 +474,13 @@ process.on('message', async msg => {
|
|
|
424
474
|
}
|
|
425
475
|
break;
|
|
426
476
|
|
|
477
|
+
case 'GET_PEER_COUNT':
|
|
478
|
+
process.send!({
|
|
479
|
+
type: 'PEER_COUNT',
|
|
480
|
+
count: workerClient ? getConnectedPeerCount(workerClient) : 0,
|
|
481
|
+
});
|
|
482
|
+
break;
|
|
483
|
+
|
|
427
484
|
case 'BENCH_REQRESP': {
|
|
428
485
|
const benchCmd = cmd as BenchReqRespCommand;
|
|
429
486
|
if (!workerClient || !workerTxPool || !workerAttestationPool || !workerConfig || !workerLogger) {
|
|
@@ -440,6 +497,7 @@ process.on('message', async msg => {
|
|
|
440
497
|
// Reset state before each benchmark run to avoid cross-run contamination
|
|
441
498
|
workerTxPool.resetState();
|
|
442
499
|
workerAttestationPool.resetState();
|
|
500
|
+
resetPeerScores(workerClient);
|
|
443
501
|
|
|
444
502
|
installUnlimitedRateLimits(workerClient);
|
|
445
503
|
|
|
@@ -447,7 +505,7 @@ process.on('message', async msg => {
|
|
|
447
505
|
const txHashes = allTxs.map(tx => tx.getTxHash());
|
|
448
506
|
const blockProposal = await createBlockProposal(benchCmd.blockNumber, txHashes, benchCmd.seed);
|
|
449
507
|
|
|
450
|
-
await workerAttestationPool.
|
|
508
|
+
await workerAttestationPool.tryAddBlockProposal(blockProposal);
|
|
451
509
|
workerLogger.debug(
|
|
452
510
|
`[BENCH] Added block proposal with archive ${blockProposal.archive.toString().slice(0, 10)}...`,
|
|
453
511
|
);
|
|
@@ -491,7 +549,12 @@ process.on('message', async msg => {
|
|
|
491
549
|
}
|
|
492
550
|
}
|
|
493
551
|
} catch (err: any) {
|
|
494
|
-
|
|
495
|
-
|
|
552
|
+
try {
|
|
553
|
+
process.send!({ type: 'ERROR', error: err.message });
|
|
554
|
+
} catch {
|
|
555
|
+
// IPC channel may be closed
|
|
556
|
+
}
|
|
557
|
+
await stopWorker();
|
|
558
|
+
gracefulExit(1);
|
|
496
559
|
}
|
|
497
560
|
});
|