@aztec/p2p 0.0.1-commit.8afd444 → 0.0.1-commit.9117c5f5a
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/client/factory.d.ts +10 -10
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +39 -15
- package/dest/client/interface.d.ts +46 -33
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +39 -51
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +145 -200
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +7 -8
- package/dest/config.d.ts +25 -9
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +16 -6
- 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 +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 -2
- package/dest/mem_pools/index.d.ts.map +1 -1
- package/dest/mem_pools/index.js +1 -1
- 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/eviction/invalid_txs_after_mining_rule.js +3 -3
- 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 +97 -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 +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 +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 +211 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.js +9 -0
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +119 -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 +193 -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 +354 -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 +905 -0
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +3 -3
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
- 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/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/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 +114 -6
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/factory.js +219 -58
- package/dest/msg_validators/tx_validator/gas_validator.d.ts +58 -3
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/gas_validator.js +73 -36
- 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/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/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/dummy_service.d.ts +13 -5
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +10 -4
- package/dest/services/encoding.d.ts +3 -3
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +11 -10
- 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/libp2p/libp2p_service.d.ts +94 -42
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +420 -337
- 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 +25 -2
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +6 -5
- 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 +26 -53
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts +2 -6
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +10 -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 +25 -46
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +17 -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 +49 -15
- package/dest/services/reqresp/batch-tx-requester/tx_validator.js +2 -2
- package/dest/services/reqresp/interface.d.ts +10 -1
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +15 -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/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 +1 -1
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +13 -5
- package/dest/services/service.d.ts +39 -3
- 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 -5
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/fast_tx_collection.js +64 -48
- 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 -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/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 +15 -14
- 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/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 -10
- 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 +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 +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 +1 -2
- package/dest/test-helpers/mock-pubsub.d.ts +30 -4
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.js +105 -4
- 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 +4 -3
- 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 +128 -59
- 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 +15 -15
- package/dest/util.d.ts +2 -2
- package/dest/util.d.ts.map +1 -1
- package/package.json +14 -14
- package/src/client/factory.ts +74 -27
- package/src/client/interface.ts +56 -34
- package/src/client/p2p_client.ts +180 -247
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +20 -11
- package/src/config.ts +35 -11
- 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 +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 +4 -1
- package/src/mem_pools/interface.ts +4 -4
- package/src/mem_pools/tx_pool/README.md +1 -1
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +3 -3
- 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 +125 -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 +91 -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 +242 -0
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +297 -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 +1083 -0
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +2 -2
- package/src/msg_validators/tx_validator/README.md +115 -0
- package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +5 -5
- package/src/msg_validators/tx_validator/block_header_validator.ts +15 -3
- package/src/msg_validators/tx_validator/double_spend_validator.ts +11 -6
- package/src/msg_validators/tx_validator/factory.ts +353 -77
- package/src/msg_validators/tx_validator/gas_validator.ts +90 -27
- package/src/msg_validators/tx_validator/index.ts +1 -0
- package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
- package/src/msg_validators/tx_validator/timestamp_validator.ts +23 -18
- package/src/services/dummy_service.ts +18 -6
- package/src/services/encoding.ts +9 -9
- 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/libp2p/libp2p_service.ts +445 -360
- package/src/services/peer-manager/peer_scoring.ts +25 -0
- package/src/services/reqresp/batch-tx-requester/README.md +7 -7
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +31 -59
- package/src/services/reqresp/batch-tx-requester/interface.ts +1 -5
- package/src/services/reqresp/batch-tx-requester/missing_txs.ts +23 -71
- package/src/services/reqresp/batch-tx-requester/peer_collection.ts +63 -24
- package/src/services/reqresp/batch-tx-requester/tx_validator.ts +2 -2
- package/src/services/reqresp/interface.ts +26 -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/tx.ts +22 -0
- package/src/services/reqresp/reqresp.ts +16 -4
- package/src/services/service.ts +51 -2
- package/src/services/tx_collection/config.ts +74 -6
- package/src/services/tx_collection/fast_tx_collection.ts +74 -51
- 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 +2 -1
- package/src/services/tx_collection/instrumentation.ts +7 -1
- package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
- package/src/services/tx_collection/proposal_tx_collector.ts +20 -21
- package/src/services/tx_collection/slow_tx_collection.ts +66 -33
- package/src/services/tx_collection/tx_collection.ts +113 -16
- 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 +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 +3 -5
- package/src/test-helpers/mock-pubsub.ts +146 -9
- package/src/test-helpers/reqresp-nodes.ts +4 -6
- package/src/test-helpers/testbench-utils.ts +127 -71
- package/src/testbench/p2p_client_testbench_worker.ts +24 -21
- 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/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
|
@@ -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));
|
|
232
|
+
tryAddCheckpointProposal(_proposal: CheckpointProposal): Promise<TryAddResult> {
|
|
233
|
+
return Promise.resolve({ added: true, alreadyExists: false, count: 1 });
|
|
165
234
|
}
|
|
166
235
|
|
|
167
|
-
canAddProposal(_block: BlockProposal): Promise<boolean> {
|
|
168
|
-
return Promise.resolve(true);
|
|
169
|
-
}
|
|
170
|
-
|
|
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);
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
canAddCheckpointAttestation(_attestation: CheckpointAttestation, _committeeSize: number): Promise<boolean> {
|
|
205
|
-
return Promise.resolve(true);
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
hasReachedCheckpointProposalCap(_slot: SlotNumber): Promise<boolean> {
|
|
209
|
-
return Promise.resolve(false);
|
|
255
|
+
tryAddCheckpointAttestation(_attestation: CheckpointAttestation): Promise<TryAddResult> {
|
|
256
|
+
return Promise.resolve({ added: true, alreadyExists: false, count: 1 });
|
|
210
257
|
}
|
|
211
258
|
|
|
212
|
-
|
|
259
|
+
hasBlockProposalsForSlot(_slot: SlotNumber): Promise<boolean> {
|
|
213
260
|
return Promise.resolve(false);
|
|
214
261
|
}
|
|
215
262
|
|
|
@@ -237,6 +284,15 @@ export function createMockEpochCache(): EpochCacheInterface {
|
|
|
237
284
|
isInCommittee: () => Promise.resolve(false),
|
|
238
285
|
getRegisteredValidators: () => Promise.resolve([]),
|
|
239
286
|
filterInCommittee: () => Promise.resolve([]),
|
|
287
|
+
getL1Constants: () => ({
|
|
288
|
+
l1StartBlock: 0n,
|
|
289
|
+
l1GenesisTime: 0n,
|
|
290
|
+
epochDuration: 1,
|
|
291
|
+
slotDuration: 1,
|
|
292
|
+
ethereumSlotDuration: 1,
|
|
293
|
+
proofSubmissionEpochs: 1,
|
|
294
|
+
targetCommitteeSize: 48,
|
|
295
|
+
}),
|
|
240
296
|
};
|
|
241
297
|
}
|
|
242
298
|
|
|
@@ -19,7 +19,7 @@ import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
|
19
19
|
import type { L2BlockSource } from '@aztec/stdlib/block';
|
|
20
20
|
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
21
21
|
import type { ClientProtocolCircuitVerifier, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
22
|
-
import { type BlockProposal,
|
|
22
|
+
import { type BlockProposal, P2PMessage } from '@aztec/stdlib/p2p';
|
|
23
23
|
import { ChonkProof } from '@aztec/stdlib/proofs';
|
|
24
24
|
import { makeAztecAddress, makeBlockHeader, makeBlockProposal, mockTx } from '@aztec/stdlib/testing';
|
|
25
25
|
import { Tx, TxHash, type TxValidationResult } from '@aztec/stdlib/tx';
|
|
@@ -29,22 +29,19 @@ import type { Message, PeerId } from '@libp2p/interface';
|
|
|
29
29
|
import { TopicValidatorResult } from '@libp2p/interface';
|
|
30
30
|
import { peerIdFromString } from '@libp2p/peer-id';
|
|
31
31
|
|
|
32
|
-
import type { P2PClient } from '../client/
|
|
32
|
+
import type { P2PClient } from '../client/index.js';
|
|
33
33
|
import type { P2PConfig } from '../config.js';
|
|
34
34
|
import { createP2PClient } from '../index.js';
|
|
35
|
-
import type { MemPools } from '../mem_pools/
|
|
36
|
-
import { LibP2PService } from '../services/
|
|
35
|
+
import type { MemPools } from '../mem_pools/index.js';
|
|
36
|
+
import { BatchTxRequesterCollector, LibP2PService, SendBatchRequestCollector } from '../services/index.js';
|
|
37
37
|
import type { PeerManager } from '../services/peer-manager/peer_manager.js';
|
|
38
38
|
import type { BatchTxRequesterLibP2PService } from '../services/reqresp/batch-tx-requester/interface.js';
|
|
39
39
|
import type { IBatchRequestTxValidator } from '../services/reqresp/batch-tx-requester/tx_validator.js';
|
|
40
40
|
import { RateLimitStatus } from '../services/reqresp/rate-limiter/rate_limiter.js';
|
|
41
41
|
import type { ReqResp } from '../services/reqresp/reqresp.js';
|
|
42
42
|
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';
|
|
43
|
+
import { MissingTxsTracker } from '../services/tx_collection/missing_txs_tracker.js';
|
|
44
|
+
import { AlwaysTrueCircuitVerifier } from '../test-helpers/index.js';
|
|
48
45
|
import {
|
|
49
46
|
BENCHMARK_CONSTANTS,
|
|
50
47
|
type CollectorType,
|
|
@@ -55,7 +52,7 @@ import {
|
|
|
55
52
|
createMockEpochCache,
|
|
56
53
|
createMockWorldStateSynchronizer,
|
|
57
54
|
filterTxsByDistribution,
|
|
58
|
-
} from '../test-helpers/
|
|
55
|
+
} from '../test-helpers/index.js';
|
|
59
56
|
import type { PubSubLibp2p } from '../util.js';
|
|
60
57
|
|
|
61
58
|
export type { DistributionPattern, CollectorType } from '../test-helpers/testbench-utils.js';
|
|
@@ -89,12 +86,11 @@ export interface BenchReadyMessage {
|
|
|
89
86
|
}
|
|
90
87
|
const txCache = new Map<number, Tx[]>();
|
|
91
88
|
|
|
92
|
-
class TestLibP2PService
|
|
89
|
+
class TestLibP2PService extends LibP2PService {
|
|
93
90
|
private disableTxValidation: boolean;
|
|
94
91
|
private gossipMessageCount = 0;
|
|
95
92
|
|
|
96
93
|
constructor(
|
|
97
|
-
clientType: T,
|
|
98
94
|
config: P2PConfig,
|
|
99
95
|
node: PubSubLibp2p,
|
|
100
96
|
peerDiscoveryService: PeerDiscoveryService,
|
|
@@ -110,7 +106,6 @@ class TestLibP2PService<T extends P2PClientType = P2PClientType.Full> extends Li
|
|
|
110
106
|
disableTxValidation = true,
|
|
111
107
|
) {
|
|
112
108
|
super(
|
|
113
|
-
clientType,
|
|
114
109
|
config,
|
|
115
110
|
node,
|
|
116
111
|
peerDiscoveryService,
|
|
@@ -144,7 +139,7 @@ class TestLibP2PService<T extends P2PClientType = P2PClientType.Full> extends Li
|
|
|
144
139
|
const txHash = tx.getTxHash();
|
|
145
140
|
const txHashString = txHash.toString();
|
|
146
141
|
this.logger.verbose(`Received tx ${txHashString} from external peer ${source.toString()}.`);
|
|
147
|
-
await this.mempools.txPool.
|
|
142
|
+
await this.mempools.txPool.addPendingTxs([tx]);
|
|
148
143
|
} else {
|
|
149
144
|
await super.handleGossipedTx(payload, msgId, source);
|
|
150
145
|
}
|
|
@@ -166,7 +161,7 @@ async function generateDeterministicTxs(txCount: number, seed: number, config: P
|
|
|
166
161
|
return cached.slice(0, txCount);
|
|
167
162
|
}
|
|
168
163
|
|
|
169
|
-
const
|
|
164
|
+
const expirationTimestampBase = BigInt(seed);
|
|
170
165
|
for (let i = cached.length; i < txCount; i++) {
|
|
171
166
|
const txSeed = seed * 10000 + i;
|
|
172
167
|
const tx = await mockTx(txSeed, {
|
|
@@ -182,7 +177,7 @@ async function generateDeterministicTxs(txCount: number, seed: number, config: P
|
|
|
182
177
|
hasPublicTeardownCallRequest: false,
|
|
183
178
|
publicCalldataSize: 0,
|
|
184
179
|
});
|
|
185
|
-
tx.data.
|
|
180
|
+
tx.data.expirationTimestamp = expirationTimestampBase + BigInt(i);
|
|
186
181
|
await tx.recomputeHash();
|
|
187
182
|
cached.push(tx);
|
|
188
183
|
}
|
|
@@ -277,7 +272,12 @@ async function runAggregatorBenchmark(
|
|
|
277
272
|
new DateProvider(),
|
|
278
273
|
noopTxValidator,
|
|
279
274
|
);
|
|
280
|
-
const fetchedTxs = await collector.collectTxs(
|
|
275
|
+
const fetchedTxs = await collector.collectTxs(
|
|
276
|
+
MissingTxsTracker.fromArray(txHashes),
|
|
277
|
+
blockProposal,
|
|
278
|
+
pinnedPeer,
|
|
279
|
+
timeoutMs,
|
|
280
|
+
);
|
|
281
281
|
const durationMs = timer.ms();
|
|
282
282
|
return {
|
|
283
283
|
type: 'BENCH_RESULT',
|
|
@@ -292,7 +292,12 @@ async function runAggregatorBenchmark(
|
|
|
292
292
|
BENCHMARK_CONSTANTS.FIXED_MAX_PEERS,
|
|
293
293
|
BENCHMARK_CONSTANTS.FIXED_MAX_RETRY_ATTEMPTS,
|
|
294
294
|
);
|
|
295
|
-
const fetchedTxs = await collector.collectTxs(
|
|
295
|
+
const fetchedTxs = await collector.collectTxs(
|
|
296
|
+
MissingTxsTracker.fromArray(txHashes),
|
|
297
|
+
blockProposal,
|
|
298
|
+
pinnedPeer,
|
|
299
|
+
timeoutMs,
|
|
300
|
+
);
|
|
296
301
|
const durationMs = timer.ms();
|
|
297
302
|
return {
|
|
298
303
|
type: 'BENCH_RESULT',
|
|
@@ -358,7 +363,6 @@ process.on('message', async msg => {
|
|
|
358
363
|
};
|
|
359
364
|
|
|
360
365
|
const client = await createP2PClient(
|
|
361
|
-
P2PClientType.Full,
|
|
362
366
|
config as P2PConfig & DataStoreConfig,
|
|
363
367
|
l2BlockSource,
|
|
364
368
|
proofVerifier as ClientProtocolCircuitVerifier,
|
|
@@ -371,7 +375,6 @@ process.on('message', async msg => {
|
|
|
371
375
|
);
|
|
372
376
|
|
|
373
377
|
const testService = new TestLibP2PService(
|
|
374
|
-
P2PClientType.Full,
|
|
375
378
|
config,
|
|
376
379
|
(client as any).p2pService.node,
|
|
377
380
|
(client as any).p2pService.peerDiscoveryService,
|
|
@@ -447,7 +450,7 @@ process.on('message', async msg => {
|
|
|
447
450
|
const txHashes = allTxs.map(tx => tx.getTxHash());
|
|
448
451
|
const blockProposal = await createBlockProposal(benchCmd.blockNumber, txHashes, benchCmd.seed);
|
|
449
452
|
|
|
450
|
-
await workerAttestationPool.
|
|
453
|
+
await workerAttestationPool.tryAddBlockProposal(blockProposal);
|
|
451
454
|
workerLogger.debug(
|
|
452
455
|
`[BENCH] Added block proposal with archive ${blockProposal.archive.toString().slice(0, 10)}...`,
|
|
453
456
|
);
|
package/src/util.ts
CHANGED
|
@@ -23,7 +23,13 @@ export interface PubSubLibp2p extends Pick<Libp2p, 'status' | 'start' | 'stop' |
|
|
|
23
23
|
services: {
|
|
24
24
|
pubsub: Pick<
|
|
25
25
|
GossipSub,
|
|
26
|
-
|
|
26
|
+
| 'addEventListener'
|
|
27
|
+
| 'removeEventListener'
|
|
28
|
+
| 'publish'
|
|
29
|
+
| 'subscribe'
|
|
30
|
+
| 'reportMessageValidationResult'
|
|
31
|
+
| 'direct'
|
|
32
|
+
| 'getMeshPeers'
|
|
27
33
|
> & { score: Pick<GossipSub['score'], 'score'> };
|
|
28
34
|
};
|
|
29
35
|
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
2
|
-
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
3
|
-
import { BlockProposal, CheckpointAttestation, CheckpointProposal, type CheckpointProposalCore } from '@aztec/stdlib/p2p';
|
|
4
|
-
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
5
|
-
import type { AttestationPool } from './attestation_pool.js';
|
|
6
|
-
export declare const MAX_PROPOSALS_PER_SLOT = 5;
|
|
7
|
-
export declare const ATTESTATION_CAP_BUFFER = 10;
|
|
8
|
-
export declare class KvAttestationPool implements AttestationPool {
|
|
9
|
-
private store;
|
|
10
|
-
private log;
|
|
11
|
-
private metrics;
|
|
12
|
-
private proposals;
|
|
13
|
-
private checkpointAttestations;
|
|
14
|
-
private checkpointProposals;
|
|
15
|
-
private checkpointProposalsForSlot;
|
|
16
|
-
private checkpointAttestationsForProposal;
|
|
17
|
-
constructor(store: AztecAsyncKVStore, telemetry?: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
|
|
18
|
-
private poolStats;
|
|
19
|
-
isEmpty(): Promise<boolean>;
|
|
20
|
-
private getProposalKey;
|
|
21
|
-
private getAttestationKey;
|
|
22
|
-
addBlockProposal(blockProposal: BlockProposal): Promise<void>;
|
|
23
|
-
getBlockProposal(id: string): Promise<BlockProposal | undefined>;
|
|
24
|
-
hasBlockProposal(idOrProposal: string | BlockProposal): Promise<boolean>;
|
|
25
|
-
addCheckpointProposal(proposal: CheckpointProposal): Promise<void>;
|
|
26
|
-
getCheckpointProposal(id: string): Promise<CheckpointProposalCore | undefined>;
|
|
27
|
-
hasCheckpointProposal(idOrProposal: string | CheckpointProposal): Promise<boolean>;
|
|
28
|
-
addCheckpointAttestations(attestations: CheckpointAttestation[]): Promise<void>;
|
|
29
|
-
getCheckpointAttestationsForSlot(slot: SlotNumber): Promise<CheckpointAttestation[]>;
|
|
30
|
-
getCheckpointAttestationsForSlotAndProposal(slot: SlotNumber, proposalId: string): Promise<CheckpointAttestation[]>;
|
|
31
|
-
deleteCheckpointAttestationsOlderThan(oldestSlot: SlotNumber): Promise<void>;
|
|
32
|
-
private deleteCheckpointAttestationsForSlot;
|
|
33
|
-
hasCheckpointAttestation(attestation: CheckpointAttestation): Promise<boolean>;
|
|
34
|
-
canAddProposal(_block: BlockProposal): Promise<boolean>;
|
|
35
|
-
canAddCheckpointProposal(proposal: CheckpointProposal): Promise<boolean>;
|
|
36
|
-
canAddCheckpointAttestation(attestation: CheckpointAttestation, committeeSize: number): Promise<boolean>;
|
|
37
|
-
hasReachedCheckpointProposalCap(slot: SlotNumber): Promise<boolean>;
|
|
38
|
-
hasReachedCheckpointAttestationCap(slot: SlotNumber, proposalId: string, committeeSize: number): Promise<boolean>;
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3ZfYXR0ZXN0YXRpb25fcG9vbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21lbV9wb29scy9hdHRlc3RhdGlvbl9wb29sL2t2X2F0dGVzdGF0aW9uX3Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSTdELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFxQyxNQUFNLGlCQUFpQixDQUFDO0FBQzVGLE9BQU8sRUFDTCxhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLGtCQUFrQixFQUNsQixLQUFLLHNCQUFzQixFQUM1QixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUluRixPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU3RCxlQUFPLE1BQU0sc0JBQXNCLElBQUksQ0FBQztBQUN4QyxlQUFPLE1BQU0sc0JBQXNCLEtBQUssQ0FBQztBQUV6QyxxQkFBYSxpQkFBa0IsWUFBVyxlQUFlO0lBZXJELE9BQU8sQ0FBQyxLQUFLO0lBRWIsT0FBTyxDQUFDLEdBQUc7SUFoQmIsT0FBTyxDQUFDLE9BQU8sQ0FBNkM7SUFFNUQsT0FBTyxDQUFDLFNBQVMsQ0FHZjtJQUdGLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBZ0M7SUFDOUQsT0FBTyxDQUFDLG1CQUFtQixDQUFnQztJQUMzRCxPQUFPLENBQUMsMEJBQTBCLENBQXFDO0lBQ3ZFLE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBcUM7SUFFOUUsWUFDVSxLQUFLLEVBQUUsaUJBQWlCLEVBQ2hDLFNBQVMsR0FBRSxlQUFzQyxFQUN6QyxHQUFHLHlDQUF5QyxFQVdyRDtJQUVELE9BQU8sQ0FBQyxTQUFTLENBSWY7SUFFVyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQVF2QztJQUVELE9BQU8sQ0FBQyxjQUFjO0lBWXRCLE9BQU8sQ0FBQyxpQkFBaUI7SUFJWixnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsYUFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FNekU7SUFFWSxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLENBVzVFO0lBRVksZ0JBQWdCLENBQUMsWUFBWSxFQUFFLE1BQU0sR0FBRyxhQUFhLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUdwRjtJQUVZLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBNEI5RTtJQUVZLHFCQUFxQixDQUFDLEVBQUUsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixHQUFHLFNBQVMsQ0FBQyxDQVcxRjtJQUVZLHFCQUFxQixDQUFDLFlBQVksRUFBRSxNQUFNLEdBQUcsa0JBQWtCLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUc5RjtJQUVZLHlCQUF5QixDQUFDLFlBQVksRUFBRSxxQkFBcUIsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FzQzNGO0lBRVksZ0NBQWdDLENBQUMsSUFBSSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQVNoRztJQUVZLDJDQUEyQyxDQUN0RCxJQUFJLEVBQUUsVUFBVSxFQUNoQixVQUFVLEVBQUUsTUFBTSxHQUNqQixPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQWtCbEM7SUFFWSxxQ0FBcUMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FLeEY7WUFFYSxtQ0FBbUM7SUF3QnBDLHdCQUF3QixDQUFDLFdBQVcsRUFBRSxxQkFBcUIsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBYzFGO0lBRU0sY0FBYyxDQUFDLE1BQU0sRUFBRSxhQUFhLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUc3RDtJQUVZLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBTXBGO0lBRVksMkJBQTJCLENBQ3RDLFdBQVcsRUFBRSxxQkFBcUIsRUFDbEMsYUFBYSxFQUFFLE1BQU0sR0FDcEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQVNsQjtJQUVZLCtCQUErQixDQUFDLElBQUksRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUcvRTtJQUVZLGtDQUFrQyxDQUM3QyxJQUFJLEVBQUUsVUFBVSxFQUNoQixVQUFVLEVBQUUsTUFBTSxFQUNsQixhQUFhLEVBQUUsTUFBTSxHQUNwQixPQUFPLENBQUMsT0FBTyxDQUFDLENBS2xCO0NBQ0YifQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kv_attestation_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/kv_attestation_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAI7D,OAAO,KAAK,EAAE,iBAAiB,EAAqC,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,kBAAkB,EAClB,KAAK,sBAAsB,EAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAInF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,qBAAa,iBAAkB,YAAW,eAAe;IAerD,OAAO,CAAC,KAAK;IAEb,OAAO,CAAC,GAAG;IAhBb,OAAO,CAAC,OAAO,CAA6C;IAE5D,OAAO,CAAC,SAAS,CAGf;IAGF,OAAO,CAAC,sBAAsB,CAAgC;IAC9D,OAAO,CAAC,mBAAmB,CAAgC;IAC3D,OAAO,CAAC,0BAA0B,CAAqC;IACvE,OAAO,CAAC,iCAAiC,CAAqC;IAE9E,YACU,KAAK,EAAE,iBAAiB,EAChC,SAAS,GAAE,eAAsC,EACzC,GAAG,yCAAyC,EAWrD;IAED,OAAO,CAAC,SAAS,CAIf;IAEW,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAQvC;IAED,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,iBAAiB;IAIZ,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAMzE;IAEY,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAW5E;IAEY,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAGpF;IAEY,qBAAqB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B9E;IAEY,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAW1F;IAEY,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAG9F;IAEY,yBAAyB,CAAC,YAAY,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC3F;IAEY,gCAAgC,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAShG;IAEY,2CAA2C,CACtD,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAkBlC;IAEY,qCAAqC,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAKxF;YAEa,mCAAmC;IAwBpC,wBAAwB,CAAC,WAAW,EAAE,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,CAc1F;IAEM,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAG7D;IAEY,wBAAwB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAMpF;IAEY,2BAA2B,CACtC,WAAW,EAAE,qBAAqB,EAClC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,CAAC,CASlB;IAEY,+BAA+B,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAG/E;IAEY,kCAAkC,CAC7C,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,CAAC,CAKlB;CACF"}
|