@aztec/p2p 0.0.1-commit.6d3c34e → 0.0.1-commit.7ac86ea28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/bootstrap/bootstrap.d.ts +4 -3
- package/dest/bootstrap/bootstrap.d.ts.map +1 -1
- package/dest/bootstrap/bootstrap.js +4 -4
- package/dest/client/factory.d.ts +7 -6
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +52 -14
- package/dest/client/interface.d.ts +43 -23
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +40 -42
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +157 -146
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +2 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +1 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +305 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +73 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +1 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +8 -0
- package/dest/config.d.ts +34 -3
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +23 -4
- 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 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -0
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +104 -88
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.js +441 -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 +373 -96
- 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 +4 -2
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +8 -5
- package/dest/mem_pools/index.d.ts +3 -2
- 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 +1 -1
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +2 -2
- 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/aztec_kv_tx_pool.d.ts +15 -10
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +91 -50
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +19 -5
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +59 -3
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +79 -5
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +47 -0
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +16 -0
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +122 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +2 -2
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +3 -3
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +4 -4
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +2 -0
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +2 -2
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
- 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 +93 -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 +95 -0
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -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 +11 -0
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +174 -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_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
- 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 +74 -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 +73 -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 +209 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.js +8 -0
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +97 -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 +152 -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 +355 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +60 -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 +161 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +77 -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 +878 -0
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +3 -3
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +41 -10
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +5 -5
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +18 -6
- package/dest/msg_validators/clock_tolerance.d.ts +21 -0
- package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
- package/dest/msg_validators/clock_tolerance.js +37 -0
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +3 -3
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator.js +55 -31
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +3 -3
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +93 -64
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +3 -3
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
- package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts +20 -6
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.js +4 -3
- package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +4 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -4
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.js +7 -6
- package/dest/msg_validators/tx_validator/factory.d.ts +8 -3
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/factory.js +21 -11
- package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
- package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/fee_payer_balance.js +20 -0
- package/dest/msg_validators/tx_validator/gas_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/gas_validator.js +11 -16
- package/dest/msg_validators/tx_validator/index.d.ts +2 -1
- package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/index.js +1 -0
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.js +2 -2
- package/dest/msg_validators/tx_validator/phases_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/phases_validator.js +3 -3
- package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
- package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/size_validator.js +23 -0
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +22 -5
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/timestamp_validator.js +8 -8
- package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
- 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 -2
- 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 +10 -6
- package/dest/services/discv5/discV5_service.js +1 -1
- package/dest/services/dummy_service.d.ts +24 -3
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +48 -0
- package/dest/services/encoding.d.ts +2 -2
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +6 -6
- 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 +173 -0
- package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
- package/dest/services/gossipsub/topic_score_params.js +346 -0
- package/dest/services/index.d.ts +2 -1
- package/dest/services/index.d.ts.map +1 -1
- package/dest/services/index.js +1 -0
- package/dest/services/libp2p/instrumentation.d.ts +1 -1
- package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
- package/dest/services/libp2p/instrumentation.js +19 -8
- package/dest/services/libp2p/libp2p_service.d.ts +92 -36
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +413 -305
- package/dest/services/peer-manager/metrics.d.ts +2 -2
- package/dest/services/peer-manager/metrics.d.ts.map +1 -1
- package/dest/services/peer-manager/metrics.js +20 -5
- package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
- package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_scoring.js +33 -4
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +48 -0
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +562 -0
- package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
- package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts +46 -0
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +34 -0
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/missing_txs.js +130 -0
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +54 -0
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/peer_collection.js +139 -0
- package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
- package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +22 -3
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +63 -4
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
- package/dest/services/reqresp/constants.d.ts +12 -0
- package/dest/services/reqresp/constants.d.ts.map +1 -0
- package/dest/services/reqresp/constants.js +7 -0
- package/dest/services/reqresp/interface.d.ts +12 -1
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +15 -1
- package/dest/services/reqresp/metrics.d.ts +6 -5
- package/dest/services/reqresp/metrics.d.ts.map +1 -1
- package/dest/services/reqresp/metrics.js +17 -5
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/bitvector.js +12 -0
- 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 +27 -9
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +29 -6
- 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 +59 -13
- package/dest/services/reqresp/protocols/status.d.ts +1 -1
- package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/status.js +2 -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 +20 -0
- package/dest/services/reqresp/reqresp.d.ts +6 -1
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +69 -26
- package/dest/services/service.d.ts +41 -2
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +22 -1
- package/dest/services/tx_collection/config.d.ts.map +1 -1
- package/dest/services/tx_collection/config.js +55 -1
- package/dest/services/tx_collection/fast_tx_collection.d.ts +7 -4
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/fast_tx_collection.js +71 -44
- 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 +37 -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 +90 -0
- package/dest/services/tx_collection/index.d.ts +3 -1
- package/dest/services/tx_collection/index.d.ts.map +1 -1
- package/dest/services/tx_collection/index.js +2 -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 +10 -2
- package/dest/services/tx_collection/missing_txs_tracker.d.ts +32 -0
- package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +1 -0
- package/dest/services/tx_collection/missing_txs_tracker.js +27 -0
- package/dest/services/tx_collection/proposal_tx_collector.d.ts +49 -0
- package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
- package/dest/services/tx_collection/proposal_tx_collector.js +50 -0
- package/dest/services/tx_collection/slow_tx_collection.d.ts +9 -5
- 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 +29 -16
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection.js +79 -7
- 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 +8 -3
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_source.js +19 -2
- package/dest/services/tx_file_store/config.d.ts +16 -0
- package/dest/services/tx_file_store/config.d.ts.map +1 -0
- package/dest/services/tx_file_store/config.js +22 -0
- package/dest/services/tx_file_store/index.d.ts +4 -0
- package/dest/services/tx_file_store/index.d.ts.map +1 -0
- package/dest/services/tx_file_store/index.js +3 -0
- package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
- package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
- package/dest/services/tx_file_store/instrumentation.js +29 -0
- package/dest/services/tx_file_store/tx_file_store.d.ts +48 -0
- package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
- package/dest/services/tx_file_store/tx_file_store.js +152 -0
- package/dest/services/tx_provider.d.ts +5 -5
- package/dest/services/tx_provider.d.ts.map +1 -1
- package/dest/services/tx_provider.js +5 -4
- package/dest/services/tx_provider_instrumentation.d.ts +1 -1
- package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
- package/dest/services/tx_provider_instrumentation.js +5 -5
- package/dest/test-helpers/index.d.ts +3 -1
- package/dest/test-helpers/index.d.ts.map +1 -1
- package/dest/test-helpers/index.js +2 -0
- package/dest/test-helpers/make-test-p2p-clients.d.ts +3 -3
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.d.ts +29 -2
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.js +103 -2
- package/dest/test-helpers/reqresp-nodes.d.ts +1 -1
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +2 -1
- package/dest/test-helpers/test_tx_provider.d.ts +40 -0
- package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
- package/dest/test-helpers/test_tx_provider.js +41 -0
- package/dest/test-helpers/testbench-utils.d.ts +163 -0
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
- package/dest/test-helpers/testbench-utils.js +366 -0
- package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
- package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +215 -135
- package/dest/testbench/worker_client_manager.d.ts +51 -6
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +226 -44
- package/dest/util.d.ts +2 -2
- package/dest/util.d.ts.map +1 -1
- package/package.json +16 -16
- package/src/bootstrap/bootstrap.ts +7 -4
- package/src/client/factory.ts +95 -24
- package/src/client/interface.ts +59 -23
- package/src/client/p2p_client.ts +201 -172
- package/src/client/test/tx_proposal_collector/README.md +227 -0
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +346 -0
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
- package/src/config.ts +48 -4
- package/src/errors/tx-pool.error.ts +12 -0
- package/src/index.ts +1 -0
- package/src/mem_pools/attestation_pool/attestation_pool.ts +496 -91
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +460 -112
- package/src/mem_pools/attestation_pool/index.ts +9 -2
- package/src/mem_pools/attestation_pool/mocks.ts +7 -4
- package/src/mem_pools/index.ts +4 -1
- package/src/mem_pools/instrumentation.ts +2 -1
- package/src/mem_pools/interface.ts +4 -4
- package/src/mem_pools/tx_pool/README.md +29 -14
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +130 -75
- package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +66 -5
- package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +119 -4
- package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +162 -0
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +3 -3
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +4 -2
- package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
- package/src/mem_pools/tx_pool_v2/README.md +275 -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 +121 -0
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +122 -0
- package/src/mem_pools/tx_pool_v2/eviction/index.ts +27 -0
- package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +209 -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 +87 -0
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +90 -0
- package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +31 -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 +239 -0
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +242 -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 +444 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +223 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1052 -0
- package/src/msg_validators/attestation_validator/attestation_validator.ts +26 -14
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +16 -10
- package/src/msg_validators/clock_tolerance.ts +51 -0
- package/src/msg_validators/proposal_validator/proposal_validator.ts +31 -31
- package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +91 -67
- package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +2 -2
- package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
- package/src/msg_validators/tx_validator/block_header_validator.ts +21 -8
- package/src/msg_validators/tx_validator/data_validator.ts +6 -2
- package/src/msg_validators/tx_validator/double_spend_validator.ts +15 -9
- package/src/msg_validators/tx_validator/factory.ts +64 -23
- package/src/msg_validators/tx_validator/fee_payer_balance.ts +40 -0
- package/src/msg_validators/tx_validator/gas_validator.ts +17 -28
- package/src/msg_validators/tx_validator/index.ts +1 -0
- package/src/msg_validators/tx_validator/metadata_validator.ts +6 -3
- package/src/msg_validators/tx_validator/phases_validator.ts +5 -3
- package/src/msg_validators/tx_validator/size_validator.ts +22 -0
- package/src/msg_validators/tx_validator/timestamp_validator.ts +29 -21
- package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
- package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
- package/src/services/data_store.ts +10 -7
- package/src/services/discv5/discV5_service.ts +1 -1
- package/src/services/dummy_service.ts +62 -1
- package/src/services/encoding.ts +6 -6
- 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 +487 -0
- package/src/services/index.ts +1 -0
- package/src/services/libp2p/instrumentation.ts +20 -7
- package/src/services/libp2p/libp2p_service.ts +442 -316
- package/src/services/peer-manager/metrics.ts +21 -4
- package/src/services/peer-manager/peer_scoring.ts +29 -1
- package/src/services/reqresp/batch-tx-requester/README.md +305 -0
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +706 -0
- package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
- package/src/services/reqresp/batch-tx-requester/interface.ts +53 -0
- package/src/services/reqresp/batch-tx-requester/missing_txs.ts +161 -0
- package/src/services/reqresp/batch-tx-requester/peer_collection.ts +205 -0
- package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
- package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +65 -4
- package/src/services/reqresp/connection-sampler/connection_sampler.ts +16 -0
- package/src/services/reqresp/constants.ts +14 -0
- package/src/services/reqresp/interface.ts +29 -1
- package/src/services/reqresp/metrics.ts +34 -9
- package/src/services/reqresp/protocols/block_txs/bitvector.ts +16 -0
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +35 -12
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +74 -9
- package/src/services/reqresp/protocols/status.ts +5 -3
- package/src/services/reqresp/protocols/tx.ts +22 -0
- package/src/services/reqresp/reqresp.ts +79 -22
- package/src/services/service.ts +54 -1
- package/src/services/tx_collection/config.ts +83 -1
- package/src/services/tx_collection/fast_tx_collection.ts +93 -47
- package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
- package/src/services/tx_collection/file_store_tx_source.ts +117 -0
- package/src/services/tx_collection/index.ts +6 -0
- package/src/services/tx_collection/instrumentation.ts +17 -2
- package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
- package/src/services/tx_collection/proposal_tx_collector.ts +113 -0
- package/src/services/tx_collection/slow_tx_collection.ts +68 -35
- package/src/services/tx_collection/tx_collection.ts +121 -24
- package/src/services/tx_collection/tx_collection_sink.ts +30 -34
- package/src/services/tx_collection/tx_source.ts +22 -3
- package/src/services/tx_file_store/config.ts +37 -0
- package/src/services/tx_file_store/index.ts +3 -0
- package/src/services/tx_file_store/instrumentation.ts +36 -0
- package/src/services/tx_file_store/tx_file_store.ts +175 -0
- package/src/services/tx_provider.ts +10 -9
- package/src/services/tx_provider_instrumentation.ts +11 -5
- package/src/test-helpers/index.ts +2 -0
- package/src/test-helpers/make-test-p2p-clients.ts +3 -3
- package/src/test-helpers/mock-pubsub.ts +143 -3
- package/src/test-helpers/reqresp-nodes.ts +2 -1
- package/src/test-helpers/test_tx_provider.ts +64 -0
- package/src/test-helpers/testbench-utils.ts +430 -0
- package/src/testbench/p2p_client_testbench_worker.ts +332 -130
- package/src/testbench/worker_client_manager.ts +304 -47
- package/src/util.ts +7 -1
- 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/eviction/insufficient_fee_payer_balance_rule.d.ts +0 -15
- package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.js +0 -88
- 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/eviction/insufficient_fee_payer_balance_rule.ts +0 -108
|
@@ -372,8 +372,9 @@ function _apply_decs_2203_r(targetClass, memberDecs, classDecs, parentClass) {
|
|
|
372
372
|
}
|
|
373
373
|
var _dec, _dec1, _initProto;
|
|
374
374
|
import { GENESIS_BLOCK_HEADER_HASH } from '@aztec/constants';
|
|
375
|
-
import { BlockNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
375
|
+
import { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
376
376
|
import { createLogger } from '@aztec/foundation/log';
|
|
377
|
+
import { RunningPromise } from '@aztec/foundation/promise';
|
|
377
378
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
378
379
|
import { L2TipsKVStore } from '@aztec/kv-store/stores';
|
|
379
380
|
import { L2BlockStream } from '@aztec/stdlib/block';
|
|
@@ -381,6 +382,7 @@ import { getTimestampForSlot } from '@aztec/stdlib/epoch-helpers';
|
|
|
381
382
|
import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
382
383
|
import { Attributes, WithTracer, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
383
384
|
import { getP2PDefaultConfig } from '../config.js';
|
|
385
|
+
import { TxPoolError } from '../errors/tx-pool.error.js';
|
|
384
386
|
import { ReqRespSubProtocol } from '../services/reqresp/interface.js';
|
|
385
387
|
import { chunkTxHashesRequest } from '../services/reqresp/protocols/tx.js';
|
|
386
388
|
import { TxProvider } from '../services/tx_provider.js';
|
|
@@ -401,6 +403,8 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
401
403
|
l2BlockSource;
|
|
402
404
|
p2pService;
|
|
403
405
|
txCollection;
|
|
406
|
+
txFileStore;
|
|
407
|
+
epochCache;
|
|
404
408
|
_dateProvider;
|
|
405
409
|
telemetry;
|
|
406
410
|
log;
|
|
@@ -433,15 +437,10 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
433
437
|
blockStream;
|
|
434
438
|
txProvider;
|
|
435
439
|
validatorAddresses;
|
|
436
|
-
/**
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
* @param txPool - The client's instance of a transaction pool. Defaults to in-memory implementation.
|
|
441
|
-
* @param p2pService - The concrete instance of p2p networking to use.
|
|
442
|
-
* @param log - A logger.
|
|
443
|
-
*/ constructor(_clientType, store, l2BlockSource, mempools, p2pService, txCollection, config = {}, _dateProvider = new DateProvider(), telemetry = getTelemetryClient(), log = createLogger('p2p')){
|
|
444
|
-
super(telemetry, 'P2PClient'), this.store = store, this.l2BlockSource = l2BlockSource, this.p2pService = p2pService, this.txCollection = txCollection, 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 = [];
|
|
440
|
+
/** Tracks the last slot for which we called prepareForSlot */ lastSlotProcessed;
|
|
441
|
+
/** Polls for slot changes and calls prepareForSlot on the tx pool */ slotMonitor;
|
|
442
|
+
constructor(_clientType, store, l2BlockSource, mempools, p2pService, txCollection, txFileStore, epochCache, config = {}, _dateProvider = new DateProvider(), telemetry = getTelemetryClient(), log = createLogger('p2p')){
|
|
443
|
+
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;
|
|
445
444
|
this.config = {
|
|
446
445
|
...getP2PDefaultConfig(),
|
|
447
446
|
...config
|
|
@@ -493,13 +492,15 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
493
492
|
getPeers(includePending) {
|
|
494
493
|
return Promise.resolve(this.p2pService.getPeers(includePending));
|
|
495
494
|
}
|
|
495
|
+
getGossipMeshPeerCount(topicType) {
|
|
496
|
+
return Promise.resolve(this.p2pService.getGossipMeshPeerCount(topicType));
|
|
497
|
+
}
|
|
496
498
|
getL2BlockHash(number) {
|
|
497
499
|
return this.l2Tips.getL2BlockHash(number);
|
|
498
500
|
}
|
|
499
|
-
updateP2PConfig(config) {
|
|
500
|
-
this.txPool.updateConfig(config);
|
|
501
|
+
async updateP2PConfig(config) {
|
|
502
|
+
await this.txPool.updateConfig(config);
|
|
501
503
|
this.p2pService.updateConfig(config);
|
|
502
|
-
return Promise.resolve();
|
|
503
504
|
}
|
|
504
505
|
getL2Tips() {
|
|
505
506
|
return this.l2Tips.getL2Tips();
|
|
@@ -517,7 +518,7 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
517
518
|
const limit = event.block.number - from + 1;
|
|
518
519
|
if (limit > 0) {
|
|
519
520
|
const oldBlocks = await this.l2BlockSource.getBlocks(from, limit);
|
|
520
|
-
await this.handleFinalizedL2Blocks(oldBlocks
|
|
521
|
+
await this.handleFinalizedL2Blocks(oldBlocks);
|
|
521
522
|
}
|
|
522
523
|
break;
|
|
523
524
|
}
|
|
@@ -526,7 +527,7 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
526
527
|
break;
|
|
527
528
|
case 'chain-pruned':
|
|
528
529
|
this.txCollection.stopCollectingForBlocksAfter(event.block.number);
|
|
529
|
-
await this.handlePruneL2Blocks(event.block.
|
|
530
|
+
await this.handlePruneL2Blocks(event.block, event.checkpoint);
|
|
530
531
|
break;
|
|
531
532
|
case 'chain-checkpointed':
|
|
532
533
|
break;
|
|
@@ -541,7 +542,6 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
541
542
|
await this.startServiceIfSynched();
|
|
542
543
|
}
|
|
543
544
|
#assertIsReady() {
|
|
544
|
-
// this.log.info('Checking if p2p client is ready, current state: ', this.currentState);
|
|
545
545
|
if (!this.isReady()) {
|
|
546
546
|
throw new Error('P2P client not ready');
|
|
547
547
|
}
|
|
@@ -556,6 +556,8 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
556
556
|
if (this.currentState !== P2PClientState.IDLE) {
|
|
557
557
|
return this.syncPromise;
|
|
558
558
|
}
|
|
559
|
+
// Start the tx pool first, as it needs to hydrate state from persistence
|
|
560
|
+
await this.txPool.start();
|
|
559
561
|
// get the current latest block numbers
|
|
560
562
|
const latestBlockNumbers = await this.l2BlockSource.getL2Tips();
|
|
561
563
|
this.latestBlockNumberAtStart = latestBlockNumbers.proposed.number;
|
|
@@ -598,6 +600,10 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
598
600
|
}
|
|
599
601
|
this.blockStream.start();
|
|
600
602
|
await this.txCollection.start();
|
|
603
|
+
this.txFileStore?.start();
|
|
604
|
+
// Start slot monitor to call prepareForSlot when the slot changes
|
|
605
|
+
this.slotMonitor = new RunningPromise(()=>this.maybeCallPrepareForSlot(), this.log, this.config.slotCheckIntervalMS);
|
|
606
|
+
this.slotMonitor.start();
|
|
601
607
|
return this.syncPromise;
|
|
602
608
|
}
|
|
603
609
|
addReqRespSubProtocol(subProtocol, handler, validator) {
|
|
@@ -618,12 +624,18 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
618
624
|
* 'ready' will now return 'false' and the running promise that keeps the client synced is interrupted.
|
|
619
625
|
*/ async stop() {
|
|
620
626
|
this.log.debug('Stopping p2p client...');
|
|
627
|
+
await this.slotMonitor?.stop();
|
|
628
|
+
this.log.debug('Stopped slot monitor');
|
|
621
629
|
await tryStop(this.txCollection);
|
|
622
630
|
this.log.debug('Stopped tx collection service');
|
|
631
|
+
await this.txFileStore?.stop();
|
|
632
|
+
this.log.debug('Stopped tx file store');
|
|
623
633
|
await this.p2pService.stop();
|
|
624
634
|
this.log.debug('Stopped p2p service');
|
|
625
635
|
await this.blockStream?.stop();
|
|
626
636
|
this.log.debug('Stopped block downloader');
|
|
637
|
+
await this.txPool.stop();
|
|
638
|
+
this.log.debug('Stopped tx pool');
|
|
627
639
|
await this.runningPromise;
|
|
628
640
|
this.setCurrentState(P2PClientState.STOPPED);
|
|
629
641
|
this.log.info('P2P client stopped');
|
|
@@ -632,12 +644,30 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
632
644
|
this.initBlockStream();
|
|
633
645
|
await this.blockStream.sync();
|
|
634
646
|
}
|
|
635
|
-
broadcastProposal(proposal) {
|
|
647
|
+
async broadcastProposal(proposal) {
|
|
636
648
|
this.log.verbose(`Broadcasting proposal for slot ${proposal.slotNumber} to peers`);
|
|
649
|
+
// Store our own proposal so we can respond to req/resp requests for it
|
|
650
|
+
const { count } = await this.attestationPool.tryAddBlockProposal(proposal);
|
|
651
|
+
if (count > 1) {
|
|
652
|
+
if (this.config.broadcastEquivocatedProposals) {
|
|
653
|
+
this.log.warn(`Broadcasting equivocated block proposal for slot ${proposal.slotNumber}`, {
|
|
654
|
+
slot: proposal.slotNumber,
|
|
655
|
+
archive: proposal.archive.toString(),
|
|
656
|
+
count
|
|
657
|
+
});
|
|
658
|
+
} else {
|
|
659
|
+
throw new Error(`Attempted to broadcast a duplicate block proposal for slot ${proposal.slotNumber}`);
|
|
660
|
+
}
|
|
661
|
+
}
|
|
637
662
|
return this.p2pService.propagate(proposal);
|
|
638
663
|
}
|
|
639
|
-
broadcastCheckpointProposal(proposal) {
|
|
664
|
+
async broadcastCheckpointProposal(proposal) {
|
|
640
665
|
this.log.verbose(`Broadcasting checkpoint proposal for slot ${proposal.slotNumber} to peers`);
|
|
666
|
+
const blockProposal = proposal.getBlockProposal();
|
|
667
|
+
if (blockProposal) {
|
|
668
|
+
// Store our own last-block proposal so we can respond to req/resp requests for it.
|
|
669
|
+
await this.attestationPool.tryAddBlockProposal(blockProposal);
|
|
670
|
+
}
|
|
641
671
|
return this.p2pService.propagate(proposal);
|
|
642
672
|
}
|
|
643
673
|
async broadcastCheckpointAttestations(attestations) {
|
|
@@ -647,8 +677,11 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
647
677
|
async getCheckpointAttestationsForSlot(slot, proposalId) {
|
|
648
678
|
return await (proposalId ? this.attestationPool.getCheckpointAttestationsForSlotAndProposal(slot, proposalId) : this.attestationPool.getCheckpointAttestationsForSlot(slot));
|
|
649
679
|
}
|
|
650
|
-
|
|
651
|
-
return this.attestationPool.
|
|
680
|
+
addOwnCheckpointAttestations(attestations) {
|
|
681
|
+
return this.attestationPool.addOwnCheckpointAttestations(attestations);
|
|
682
|
+
}
|
|
683
|
+
hasBlockProposalsForSlot(slot) {
|
|
684
|
+
return this.attestationPool.hasBlockProposalsForSlot(slot);
|
|
652
685
|
}
|
|
653
686
|
// REVIEW: https://github.com/AztecProtocol/aztec-packages/issues/7963
|
|
654
687
|
// ^ This pattern is not my favorite (md)
|
|
@@ -658,6 +691,12 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
658
691
|
registerCheckpointProposalHandler(handler) {
|
|
659
692
|
this.p2pService.registerCheckpointReceivedCallback(handler);
|
|
660
693
|
}
|
|
694
|
+
registerDuplicateProposalCallback(callback) {
|
|
695
|
+
this.p2pService.registerDuplicateProposalCallback(callback);
|
|
696
|
+
}
|
|
697
|
+
registerDuplicateAttestationCallback(callback) {
|
|
698
|
+
this.p2pService.registerDuplicateAttestationCallback(callback);
|
|
699
|
+
}
|
|
661
700
|
/**
|
|
662
701
|
* Uses the batched Request Response protocol to request a set of transactions from the network.
|
|
663
702
|
*/ async requestTxsByHash(txHashes, pinnedPeerId) {
|
|
@@ -668,15 +707,30 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
668
707
|
const txBatches = await this.p2pService.sendBatchRequest(ReqRespSubProtocol.TX, requests, pinnedPeerId, timeoutMs, maxPeers, maxRetryAttempts);
|
|
669
708
|
const txs = txBatches.flat();
|
|
670
709
|
if (txs.length > 0) {
|
|
671
|
-
await this.txPool.
|
|
710
|
+
await this.txPool.addPendingTxs(txs);
|
|
672
711
|
}
|
|
673
712
|
const txHashesStr = txHashes.map((tx)=>tx.toString()).join(', ');
|
|
674
713
|
this.log.debug(`Requested txs ${txHashesStr} (${txs.length} / ${txHashes.length}) from peers`);
|
|
675
714
|
// We return all transactions, even the not found ones to the caller, such they can handle missing items themselves.
|
|
676
715
|
return txs;
|
|
677
716
|
}
|
|
678
|
-
getPendingTxs(limit, after) {
|
|
679
|
-
|
|
717
|
+
async getPendingTxs(limit, after) {
|
|
718
|
+
if (limit !== undefined && limit <= 0) {
|
|
719
|
+
throw new TypeError('limit must be greater than 0');
|
|
720
|
+
}
|
|
721
|
+
let txHashes = await this.txPool.getPendingTxHashes();
|
|
722
|
+
let startIndex = 0;
|
|
723
|
+
if (after) {
|
|
724
|
+
startIndex = txHashes.findIndex((txHash)=>after.equals(txHash));
|
|
725
|
+
if (startIndex === -1) {
|
|
726
|
+
return [];
|
|
727
|
+
}
|
|
728
|
+
startIndex++;
|
|
729
|
+
}
|
|
730
|
+
const endIndex = limit !== undefined ? startIndex + limit : undefined;
|
|
731
|
+
txHashes = txHashes.slice(startIndex, endIndex);
|
|
732
|
+
const maybeTxs = await Promise.all(txHashes.map((txHash)=>this.txPool.getTxByHash(txHash)));
|
|
733
|
+
return maybeTxs.filter((tx)=>!!tx);
|
|
680
734
|
}
|
|
681
735
|
getPendingTxCount() {
|
|
682
736
|
return this.txPool.getPendingTxCount();
|
|
@@ -689,52 +743,13 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
689
743
|
}
|
|
690
744
|
}
|
|
691
745
|
}
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
* @returns An array of Txs.
|
|
698
|
-
*/ async getTxs(filter, limit, after) {
|
|
699
|
-
if (limit !== undefined && limit <= 0) {
|
|
700
|
-
throw new TypeError('limit must be greater than 0');
|
|
701
|
-
}
|
|
702
|
-
let txs = undefined;
|
|
703
|
-
let txHashes;
|
|
704
|
-
if (filter === 'all') {
|
|
705
|
-
txs = await this.txPool.getAllTxs();
|
|
706
|
-
txHashes = await Promise.all(txs.map((tx)=>tx.getTxHash()));
|
|
707
|
-
} else if (filter === 'mined') {
|
|
708
|
-
const minedTxHashes = await this.txPool.getMinedTxHashes();
|
|
709
|
-
txHashes = minedTxHashes.map(([txHash])=>txHash);
|
|
710
|
-
} else if (filter === 'pending') {
|
|
711
|
-
txHashes = await this.txPool.getPendingTxHashes();
|
|
712
|
-
} else {
|
|
713
|
-
const _ = filter;
|
|
714
|
-
throw new Error(`Unknown filter ${filter}`);
|
|
715
|
-
}
|
|
716
|
-
let startIndex = 0;
|
|
717
|
-
let endIndex = undefined;
|
|
718
|
-
if (after) {
|
|
719
|
-
startIndex = txHashes.findIndex((txHash)=>after.equals(txHash));
|
|
720
|
-
// if we can't find the last tx in our set then return an empty array as pagination is no longer valid.
|
|
721
|
-
if (startIndex === -1) {
|
|
722
|
-
return [];
|
|
746
|
+
async *iterateEligiblePendingTxs() {
|
|
747
|
+
for (const txHash of (await this.txPool.getEligiblePendingTxHashes())){
|
|
748
|
+
const tx = await this.txPool.getTxByHash(txHash);
|
|
749
|
+
if (tx) {
|
|
750
|
+
yield tx;
|
|
723
751
|
}
|
|
724
|
-
// increment by one because we don't want to return the same tx again
|
|
725
|
-
startIndex++;
|
|
726
|
-
}
|
|
727
|
-
if (limit !== undefined) {
|
|
728
|
-
endIndex = startIndex + limit;
|
|
729
|
-
}
|
|
730
|
-
txHashes = txHashes.slice(startIndex, endIndex);
|
|
731
|
-
if (txs) {
|
|
732
|
-
txs = txs.slice(startIndex, endIndex);
|
|
733
|
-
} else {
|
|
734
|
-
const maybeTxs = await Promise.all(txHashes.map((txHash)=>this.txPool.getTxByHash(txHash)));
|
|
735
|
-
txs = maybeTxs.filter((tx)=>!!tx);
|
|
736
752
|
}
|
|
737
|
-
return txs;
|
|
738
753
|
}
|
|
739
754
|
/**
|
|
740
755
|
* Returns a transaction in the transaction pool by its hash.
|
|
@@ -797,31 +812,35 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
797
812
|
return this.txPool.getArchivedTxByHash(txHash);
|
|
798
813
|
}
|
|
799
814
|
/**
|
|
800
|
-
*
|
|
801
|
-
* @param tx - The tx to
|
|
815
|
+
* Accepts a transaction, adds it to local tx pool and forwards it to other peers.
|
|
816
|
+
* @param tx - The tx to send.
|
|
802
817
|
* @returns Empty promise.
|
|
803
818
|
**/ async sendTx(tx) {
|
|
804
|
-
|
|
819
|
+
this.#assertIsReady();
|
|
820
|
+
const result = await this.txPool.addPendingTxs([
|
|
805
821
|
tx
|
|
806
|
-
]
|
|
807
|
-
|
|
808
|
-
|
|
822
|
+
], {
|
|
823
|
+
feeComparisonOnly: true
|
|
824
|
+
});
|
|
825
|
+
if (result.accepted.length === 1) {
|
|
809
826
|
await this.p2pService.propagate(tx);
|
|
827
|
+
return;
|
|
810
828
|
}
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
829
|
+
const txHashStr = tx.getTxHash().toString();
|
|
830
|
+
const reason = result.errors?.get(txHashStr);
|
|
831
|
+
if (reason) {
|
|
832
|
+
this.log.warn(`Tx ${txHashStr} not added to pool: ${reason.message}`);
|
|
833
|
+
throw new TxPoolError(reason);
|
|
834
|
+
}
|
|
835
|
+
this.log.warn(`Tx ${txHashStr} not propagated: accepted=${result.accepted.length} ignored=${result.ignored.length} rejected=${result.rejected.length}`);
|
|
818
836
|
}
|
|
819
837
|
/**
|
|
820
838
|
* Returns whether the given tx hash is flagged as pending or mined.
|
|
821
839
|
* @param txHash - Hash of the tx to query.
|
|
822
840
|
* @returns Pending or mined depending on its status, or undefined if not found.
|
|
823
|
-
*/ getTxStatus(txHash) {
|
|
824
|
-
|
|
841
|
+
*/ async getTxStatus(txHash) {
|
|
842
|
+
const status = await this.txPool.getTxStatus(txHash);
|
|
843
|
+
return status === 'protected' ? 'pending' : status;
|
|
825
844
|
}
|
|
826
845
|
getEnr() {
|
|
827
846
|
return this.p2pService.getEnr();
|
|
@@ -830,13 +849,11 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
830
849
|
return Promise.resolve(this.p2pService.getEnr()?.encodeTxt());
|
|
831
850
|
}
|
|
832
851
|
/**
|
|
833
|
-
*
|
|
834
|
-
*
|
|
835
|
-
|
|
836
|
-
* @returns Empty promise.
|
|
837
|
-
**/ async deleteTxs(txHashes) {
|
|
852
|
+
* Handles failed transaction execution by removing txs from the pool.
|
|
853
|
+
* @param txHashes - Hashes of the transactions that failed execution.
|
|
854
|
+
**/ async handleFailedExecution(txHashes) {
|
|
838
855
|
this.#assertIsReady();
|
|
839
|
-
await this.txPool.
|
|
856
|
+
await this.txPool.handleFailedExecution(txHashes);
|
|
840
857
|
}
|
|
841
858
|
/**
|
|
842
859
|
* Public function to check if the p2p client is fully synced and ready to receive txs.
|
|
@@ -880,13 +897,12 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
880
897
|
};
|
|
881
898
|
}
|
|
882
899
|
/**
|
|
883
|
-
*
|
|
900
|
+
* Handles mined blocks by marking the txs in them as mined.
|
|
884
901
|
* @param blocks - A list of existing blocks with txs that the P2P client needs to ensure the tx pool is reconciled with.
|
|
885
902
|
* @returns Empty promise.
|
|
886
|
-
*/ async
|
|
903
|
+
*/ async handleMinedBlocks(blocks) {
|
|
887
904
|
for (const block of blocks){
|
|
888
|
-
|
|
889
|
-
await this.txPool.markAsMined(txHashes, block.header);
|
|
905
|
+
await this.txPool.handleMinedBlock(block);
|
|
890
906
|
}
|
|
891
907
|
}
|
|
892
908
|
/**
|
|
@@ -895,14 +911,13 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
895
911
|
* @returns Empty promise.
|
|
896
912
|
*/ async handleLatestL2Blocks(blocks) {
|
|
897
913
|
if (!blocks.length) {
|
|
898
|
-
return
|
|
914
|
+
return;
|
|
899
915
|
}
|
|
900
|
-
await this.
|
|
901
|
-
await this.
|
|
916
|
+
await this.handleMinedBlocks(blocks);
|
|
917
|
+
await this.maybeCallPrepareForSlot();
|
|
902
918
|
await this.startCollectingMissingTxs(blocks);
|
|
903
919
|
const lastBlock = blocks.at(-1);
|
|
904
920
|
await this.synchedLatestSlot.set(BigInt(lastBlock.header.getSlot()));
|
|
905
|
-
this.log.verbose(`Synched to latest block ${lastBlock.number}`);
|
|
906
921
|
}
|
|
907
922
|
/** Request txs for unproven blocks so the prover node has more chances to get them. */ async startCollectingMissingTxs(blocks) {
|
|
908
923
|
try {
|
|
@@ -936,59 +951,45 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
936
951
|
* @returns Empty promise.
|
|
937
952
|
*/ async handleFinalizedL2Blocks(blocks) {
|
|
938
953
|
if (!blocks.length) {
|
|
939
|
-
return
|
|
954
|
+
return;
|
|
940
955
|
}
|
|
941
|
-
|
|
942
|
-
const
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
this.log.debug(`Deleting ${txHashes.length} txs from pool from finalized blocks up to ${lastBlockNum}`);
|
|
946
|
-
await this.txPool.deleteTxs(txHashes, {
|
|
947
|
-
permanently: true
|
|
948
|
-
});
|
|
949
|
-
await this.txPool.cleanupDeletedMinedTxs(lastBlockNum);
|
|
950
|
-
await this.attestationPool.deleteCheckpointAttestationsOlderThan(lastBlockSlot);
|
|
951
|
-
this.log.debug(`Synched to finalized block ${lastBlockNum} at slot ${lastBlockSlot}`);
|
|
956
|
+
// Finalization is monotonic, so we only need to call with the last block
|
|
957
|
+
const lastBlock = blocks.at(-1);
|
|
958
|
+
await this.txPool.handleFinalizedBlock(lastBlock.header);
|
|
959
|
+
await this.attestationPool.deleteOlderThan(lastBlock.header.getSlot());
|
|
952
960
|
}
|
|
953
961
|
/**
|
|
954
962
|
* Updates the tx pool after a chain prune.
|
|
955
|
-
*
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
if (tx.data.constants.anchorBlockHeader.globalVariables.blockNumber > latestBlock) {
|
|
963
|
-
const txHash = tx.getTxHash();
|
|
964
|
-
txsToDelete.set(txHash.toString(), txHash);
|
|
965
|
-
}
|
|
966
|
-
}
|
|
967
|
-
this.log.info(`Detected chain prune. Removing ${txsToDelete.size} txs built against pruned blocks.`, {
|
|
968
|
-
newLatestBlock: latestBlock,
|
|
969
|
-
previousLatestBlock: await this.getSyncedLatestBlockNum(),
|
|
970
|
-
txsToDelete: Array.from(txsToDelete.keys())
|
|
963
|
+
* Detects epoch prunes (checkpoint number changed) and deletes all txs in that case.
|
|
964
|
+
* @param latestBlock - The block ID the chain was pruned to.
|
|
965
|
+
* @param newCheckpoint - The checkpoint ID after the prune.
|
|
966
|
+
*/ async handlePruneL2Blocks(latestBlock, newCheckpoint) {
|
|
967
|
+
const deleteAllTxs = this.config.txPoolDeleteTxsAfterReorg && await this.isEpochPrune(newCheckpoint);
|
|
968
|
+
await this.txPool.handlePrunedBlocks(latestBlock, {
|
|
969
|
+
deleteAllTxs
|
|
971
970
|
});
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
const
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
if (blockNumber > latestBlock && !txsToDelete.has(txHash.toString())) {
|
|
983
|
-
minedTxsFromReorg.push(txHash);
|
|
984
|
-
}
|
|
971
|
+
}
|
|
972
|
+
/**
|
|
973
|
+
* Returns true if the prune crossed a checkpoint boundary.
|
|
974
|
+
* If the old and new checkpoint numbers are the same, the prune is within a single checkpoint.
|
|
975
|
+
* If they differ, the prune spans across checkpoints (epoch prune).
|
|
976
|
+
*/ async isEpochPrune(newCheckpoint) {
|
|
977
|
+
const tips = await this.l2Tips.getL2Tips();
|
|
978
|
+
const oldCheckpointNumber = tips.checkpointed.checkpoint.number;
|
|
979
|
+
if (oldCheckpointNumber <= CheckpointNumber.ZERO) {
|
|
980
|
+
return false;
|
|
985
981
|
}
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
982
|
+
const isEpochPrune = oldCheckpointNumber !== newCheckpoint.number;
|
|
983
|
+
this.log.info(`Detected epoch prune: ${isEpochPrune}. Old checkpoint: ${oldCheckpointNumber}, new checkpoint: ${newCheckpoint.number}`);
|
|
984
|
+
return isEpochPrune;
|
|
985
|
+
}
|
|
986
|
+
/** Checks if the slot has changed and calls prepareForSlot if so. */ async maybeCallPrepareForSlot() {
|
|
987
|
+
const { currentSlot } = this.epochCache.getCurrentAndNextSlot();
|
|
988
|
+
if (currentSlot <= this.lastSlotProcessed) {
|
|
989
|
+
return;
|
|
991
990
|
}
|
|
991
|
+
this.lastSlotProcessed = currentSlot;
|
|
992
|
+
await this.txPool.prepareForSlot(currentSlot);
|
|
992
993
|
}
|
|
993
994
|
async startServiceIfSynched() {
|
|
994
995
|
if (this.currentState !== P2PClientState.SYNCHING) {
|
|
@@ -1023,10 +1024,20 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
1023
1024
|
return this.p2pService.validate(txs);
|
|
1024
1025
|
}
|
|
1025
1026
|
/**
|
|
1026
|
-
*
|
|
1027
|
-
*
|
|
1028
|
-
|
|
1029
|
-
|
|
1027
|
+
* Protects existing transactions by hash for a given slot.
|
|
1028
|
+
* Returns hashes of transactions that weren't found in the pool.
|
|
1029
|
+
* @param txHashes - Hashes of the transactions to protect.
|
|
1030
|
+
* @param blockHeader - The block header providing slot context.
|
|
1031
|
+
* @returns Hashes of transactions not found in the pool.
|
|
1032
|
+
*/ protectTxs(txHashes, blockHeader) {
|
|
1033
|
+
return this.txPool.protectTxs(txHashes, blockHeader);
|
|
1034
|
+
}
|
|
1035
|
+
/**
|
|
1036
|
+
* Prepares the pool for a new slot.
|
|
1037
|
+
* Unprotects transactions from earlier slots and validates them.
|
|
1038
|
+
* @param slotNumber - The slot number to prepare for
|
|
1039
|
+
*/ async prepareForSlot(slotNumber) {
|
|
1040
|
+
await this.txPool.prepareForSlot(slotNumber);
|
|
1030
1041
|
}
|
|
1031
1042
|
handleAuthRequestFromPeer(authRequest, peerId) {
|
|
1032
1043
|
return this.p2pService.handleAuthRequestFromPeer(authRequest, peerId);
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcG9zYWxfdHhfY29sbGVjdG9yX3dvcmtlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NsaWVudC90ZXN0L3R4X3Byb3Bvc2FsX2NvbGxlY3Rvci9wcm9wb3NhbF90eF9jb2xsZWN0b3Jfd29ya2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposal_tx_collector_worker.d.ts","sourceRoot":"","sources":["../../../../src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts"],"names":[],"mappings":""}
|