@aztec/p2p 0.0.1-commit.c80b6263 → 0.0.1-commit.cf93bcc56
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 +7 -6
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +47 -10
- package/dest/client/interface.d.ts +40 -22
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +37 -41
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +134 -145
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +2 -2
- package/dest/config.d.ts +28 -4
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +19 -2
- 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 +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 +207 -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 +58 -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 +75 -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 +871 -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 +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 +18 -5
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.js +2 -2
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +13 -3
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.js +4 -4
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +20 -4
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
- package/dest/services/data_store.d.ts +1 -1
- package/dest/services/data_store.d.ts.map +1 -1
- package/dest/services/data_store.js +10 -6
- package/dest/services/dummy_service.d.ts +10 -2
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +6 -0
- package/dest/services/encoding.d.ts +2 -2
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +4 -3
- 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 +161 -0
- package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
- package/dest/services/gossipsub/topic_score_params.js +324 -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/libp2p_service.d.ts +84 -35
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +375 -280
- 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 +4 -4
- 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 +9 -9
- 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 +17 -12
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +25 -14
- 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 +40 -24
- 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 +11 -4
- package/dest/services/service.d.ts +35 -1
- 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 +27 -17
- 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 +165 -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 +79 -0
- package/dest/services/tx_collection/index.d.ts +3 -2
- package/dest/services/tx_collection/index.d.ts.map +1 -1
- package/dest/services/tx_collection/index.js +1 -0
- package/dest/services/tx_collection/instrumentation.d.ts +1 -1
- package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
- package/dest/services/tx_collection/instrumentation.js +2 -1
- package/dest/services/tx_collection/proposal_tx_collector.d.ts +12 -12
- package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
- package/dest/services/tx_collection/proposal_tx_collector.js +4 -5
- package/dest/services/tx_collection/slow_tx_collection.d.ts +6 -2
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/slow_tx_collection.js +55 -23
- package/dest/services/tx_collection/tx_collection.d.ts +19 -7
- 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 +15 -6
- package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection_sink.js +13 -7
- 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 +3 -3
- package/dest/services/tx_provider.d.ts.map +1 -1
- package/dest/services/tx_provider.js +5 -4
- 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 +27 -1
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.js +97 -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/testbench-utils.d.ts +43 -38
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
- package/dest/test-helpers/testbench-utils.js +130 -60
- package/dest/testbench/p2p_client_testbench_worker.js +5 -5
- package/package.json +14 -14
- package/src/client/factory.ts +89 -14
- package/src/client/interface.ts +49 -22
- package/src/client/p2p_client.ts +170 -168
- package/src/client/test/tx_proposal_collector/README.md +4 -4
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +2 -2
- package/src/config.ts +41 -2
- 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 +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 +1042 -0
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +2 -2
- 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 +18 -8
- package/src/msg_validators/tx_validator/double_spend_validator.ts +11 -6
- package/src/msg_validators/tx_validator/timestamp_validator.ts +23 -18
- package/src/services/data_store.ts +10 -7
- package/src/services/dummy_service.ts +12 -0
- package/src/services/encoding.ts +4 -3
- package/src/services/gossipsub/README.md +626 -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 +451 -0
- package/src/services/index.ts +1 -0
- package/src/services/libp2p/libp2p_service.ts +377 -282
- package/src/services/peer-manager/peer_scoring.ts +25 -0
- package/src/services/reqresp/batch-tx-requester/README.md +14 -14
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +12 -12
- package/src/services/reqresp/interface.ts +26 -1
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +24 -15
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +47 -24
- package/src/services/reqresp/protocols/tx.ts +22 -0
- package/src/services/reqresp/reqresp.ts +13 -3
- package/src/services/service.ts +40 -0
- package/src/services/tx_collection/config.ts +74 -6
- package/src/services/tx_collection/fast_tx_collection.ts +28 -26
- package/src/services/tx_collection/file_store_tx_collection.ts +198 -0
- package/src/services/tx_collection/file_store_tx_source.ts +104 -0
- package/src/services/tx_collection/index.ts +2 -1
- package/src/services/tx_collection/instrumentation.ts +7 -1
- package/src/services/tx_collection/proposal_tx_collector.ts +12 -14
- package/src/services/tx_collection/slow_tx_collection.ts +64 -30
- package/src/services/tx_collection/tx_collection.ts +109 -13
- package/src/services/tx_collection/tx_collection_sink.ts +17 -7
- 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 +8 -7
- package/src/test-helpers/make-test-p2p-clients.ts +3 -3
- package/src/test-helpers/mock-pubsub.ts +133 -3
- package/src/test-helpers/reqresp-nodes.ts +2 -1
- package/src/test-helpers/testbench-utils.ts +129 -71
- package/src/testbench/p2p_client_testbench_worker.ts +5 -5
- 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
|
@@ -374,6 +374,7 @@ var _dec, _dec1, _initProto;
|
|
|
374
374
|
import { GENESIS_BLOCK_HEADER_HASH } from '@aztec/constants';
|
|
375
375
|
import { BlockNumber, 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
|
|
@@ -496,10 +495,9 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
496
495
|
getL2BlockHash(number) {
|
|
497
496
|
return this.l2Tips.getL2BlockHash(number);
|
|
498
497
|
}
|
|
499
|
-
updateP2PConfig(config) {
|
|
500
|
-
this.txPool.updateConfig(config);
|
|
498
|
+
async updateP2PConfig(config) {
|
|
499
|
+
await this.txPool.updateConfig(config);
|
|
501
500
|
this.p2pService.updateConfig(config);
|
|
502
|
-
return Promise.resolve();
|
|
503
501
|
}
|
|
504
502
|
getL2Tips() {
|
|
505
503
|
return this.l2Tips.getL2Tips();
|
|
@@ -526,7 +524,7 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
526
524
|
break;
|
|
527
525
|
case 'chain-pruned':
|
|
528
526
|
this.txCollection.stopCollectingForBlocksAfter(event.block.number);
|
|
529
|
-
await this.handlePruneL2Blocks(event.block
|
|
527
|
+
await this.handlePruneL2Blocks(event.block);
|
|
530
528
|
break;
|
|
531
529
|
case 'chain-checkpointed':
|
|
532
530
|
break;
|
|
@@ -541,7 +539,6 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
541
539
|
await this.startServiceIfSynched();
|
|
542
540
|
}
|
|
543
541
|
#assertIsReady() {
|
|
544
|
-
// this.log.info('Checking if p2p client is ready, current state: ', this.currentState);
|
|
545
542
|
if (!this.isReady()) {
|
|
546
543
|
throw new Error('P2P client not ready');
|
|
547
544
|
}
|
|
@@ -556,6 +553,8 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
556
553
|
if (this.currentState !== P2PClientState.IDLE) {
|
|
557
554
|
return this.syncPromise;
|
|
558
555
|
}
|
|
556
|
+
// Start the tx pool first, as it needs to hydrate state from persistence
|
|
557
|
+
await this.txPool.start();
|
|
559
558
|
// get the current latest block numbers
|
|
560
559
|
const latestBlockNumbers = await this.l2BlockSource.getL2Tips();
|
|
561
560
|
this.latestBlockNumberAtStart = latestBlockNumbers.proposed.number;
|
|
@@ -598,6 +597,10 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
598
597
|
}
|
|
599
598
|
this.blockStream.start();
|
|
600
599
|
await this.txCollection.start();
|
|
600
|
+
this.txFileStore?.start();
|
|
601
|
+
// Start slot monitor to call prepareForSlot when the slot changes
|
|
602
|
+
this.slotMonitor = new RunningPromise(()=>this.maybeCallPrepareForSlot(), this.log, this.config.slotCheckIntervalMS);
|
|
603
|
+
this.slotMonitor.start();
|
|
601
604
|
return this.syncPromise;
|
|
602
605
|
}
|
|
603
606
|
addReqRespSubProtocol(subProtocol, handler, validator) {
|
|
@@ -618,12 +621,18 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
618
621
|
* 'ready' will now return 'false' and the running promise that keeps the client synced is interrupted.
|
|
619
622
|
*/ async stop() {
|
|
620
623
|
this.log.debug('Stopping p2p client...');
|
|
624
|
+
await this.slotMonitor?.stop();
|
|
625
|
+
this.log.debug('Stopped slot monitor');
|
|
621
626
|
await tryStop(this.txCollection);
|
|
622
627
|
this.log.debug('Stopped tx collection service');
|
|
628
|
+
await this.txFileStore?.stop();
|
|
629
|
+
this.log.debug('Stopped tx file store');
|
|
623
630
|
await this.p2pService.stop();
|
|
624
631
|
this.log.debug('Stopped p2p service');
|
|
625
632
|
await this.blockStream?.stop();
|
|
626
633
|
this.log.debug('Stopped block downloader');
|
|
634
|
+
await this.txPool.stop();
|
|
635
|
+
this.log.debug('Stopped tx pool');
|
|
627
636
|
await this.runningPromise;
|
|
628
637
|
this.setCurrentState(P2PClientState.STOPPED);
|
|
629
638
|
this.log.info('P2P client stopped');
|
|
@@ -632,12 +641,30 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
632
641
|
this.initBlockStream();
|
|
633
642
|
await this.blockStream.sync();
|
|
634
643
|
}
|
|
635
|
-
broadcastProposal(proposal) {
|
|
644
|
+
async broadcastProposal(proposal) {
|
|
636
645
|
this.log.verbose(`Broadcasting proposal for slot ${proposal.slotNumber} to peers`);
|
|
646
|
+
// Store our own proposal so we can respond to req/resp requests for it
|
|
647
|
+
const { count } = await this.attestationPool.tryAddBlockProposal(proposal);
|
|
648
|
+
if (count > 1) {
|
|
649
|
+
if (this.config.broadcastEquivocatedProposals) {
|
|
650
|
+
this.log.warn(`Broadcasting equivocated block proposal for slot ${proposal.slotNumber}`, {
|
|
651
|
+
slot: proposal.slotNumber,
|
|
652
|
+
archive: proposal.archive.toString(),
|
|
653
|
+
count
|
|
654
|
+
});
|
|
655
|
+
} else {
|
|
656
|
+
throw new Error(`Attempted to broadcast a duplicate block proposal for slot ${proposal.slotNumber}`);
|
|
657
|
+
}
|
|
658
|
+
}
|
|
637
659
|
return this.p2pService.propagate(proposal);
|
|
638
660
|
}
|
|
639
|
-
broadcastCheckpointProposal(proposal) {
|
|
661
|
+
async broadcastCheckpointProposal(proposal) {
|
|
640
662
|
this.log.verbose(`Broadcasting checkpoint proposal for slot ${proposal.slotNumber} to peers`);
|
|
663
|
+
const blockProposal = proposal.getBlockProposal();
|
|
664
|
+
if (blockProposal) {
|
|
665
|
+
// Store our own last-block proposal so we can respond to req/resp requests for it.
|
|
666
|
+
await this.attestationPool.tryAddBlockProposal(blockProposal);
|
|
667
|
+
}
|
|
641
668
|
return this.p2pService.propagate(proposal);
|
|
642
669
|
}
|
|
643
670
|
async broadcastCheckpointAttestations(attestations) {
|
|
@@ -647,8 +674,11 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
647
674
|
async getCheckpointAttestationsForSlot(slot, proposalId) {
|
|
648
675
|
return await (proposalId ? this.attestationPool.getCheckpointAttestationsForSlotAndProposal(slot, proposalId) : this.attestationPool.getCheckpointAttestationsForSlot(slot));
|
|
649
676
|
}
|
|
650
|
-
|
|
651
|
-
return this.attestationPool.
|
|
677
|
+
addOwnCheckpointAttestations(attestations) {
|
|
678
|
+
return this.attestationPool.addOwnCheckpointAttestations(attestations);
|
|
679
|
+
}
|
|
680
|
+
hasBlockProposalsForSlot(slot) {
|
|
681
|
+
return this.attestationPool.hasBlockProposalsForSlot(slot);
|
|
652
682
|
}
|
|
653
683
|
// REVIEW: https://github.com/AztecProtocol/aztec-packages/issues/7963
|
|
654
684
|
// ^ This pattern is not my favorite (md)
|
|
@@ -658,6 +688,12 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
658
688
|
registerCheckpointProposalHandler(handler) {
|
|
659
689
|
this.p2pService.registerCheckpointReceivedCallback(handler);
|
|
660
690
|
}
|
|
691
|
+
registerDuplicateProposalCallback(callback) {
|
|
692
|
+
this.p2pService.registerDuplicateProposalCallback(callback);
|
|
693
|
+
}
|
|
694
|
+
registerDuplicateAttestationCallback(callback) {
|
|
695
|
+
this.p2pService.registerDuplicateAttestationCallback(callback);
|
|
696
|
+
}
|
|
661
697
|
/**
|
|
662
698
|
* Uses the batched Request Response protocol to request a set of transactions from the network.
|
|
663
699
|
*/ async requestTxsByHash(txHashes, pinnedPeerId) {
|
|
@@ -668,15 +704,30 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
668
704
|
const txBatches = await this.p2pService.sendBatchRequest(ReqRespSubProtocol.TX, requests, pinnedPeerId, timeoutMs, maxPeers, maxRetryAttempts);
|
|
669
705
|
const txs = txBatches.flat();
|
|
670
706
|
if (txs.length > 0) {
|
|
671
|
-
await this.txPool.
|
|
707
|
+
await this.txPool.addPendingTxs(txs);
|
|
672
708
|
}
|
|
673
709
|
const txHashesStr = txHashes.map((tx)=>tx.toString()).join(', ');
|
|
674
710
|
this.log.debug(`Requested txs ${txHashesStr} (${txs.length} / ${txHashes.length}) from peers`);
|
|
675
711
|
// We return all transactions, even the not found ones to the caller, such they can handle missing items themselves.
|
|
676
712
|
return txs;
|
|
677
713
|
}
|
|
678
|
-
getPendingTxs(limit, after) {
|
|
679
|
-
|
|
714
|
+
async getPendingTxs(limit, after) {
|
|
715
|
+
if (limit !== undefined && limit <= 0) {
|
|
716
|
+
throw new TypeError('limit must be greater than 0');
|
|
717
|
+
}
|
|
718
|
+
let txHashes = await this.txPool.getPendingTxHashes();
|
|
719
|
+
let startIndex = 0;
|
|
720
|
+
if (after) {
|
|
721
|
+
startIndex = txHashes.findIndex((txHash)=>after.equals(txHash));
|
|
722
|
+
if (startIndex === -1) {
|
|
723
|
+
return [];
|
|
724
|
+
}
|
|
725
|
+
startIndex++;
|
|
726
|
+
}
|
|
727
|
+
const endIndex = limit !== undefined ? startIndex + limit : undefined;
|
|
728
|
+
txHashes = txHashes.slice(startIndex, endIndex);
|
|
729
|
+
const maybeTxs = await Promise.all(txHashes.map((txHash)=>this.txPool.getTxByHash(txHash)));
|
|
730
|
+
return maybeTxs.filter((tx)=>!!tx);
|
|
680
731
|
}
|
|
681
732
|
getPendingTxCount() {
|
|
682
733
|
return this.txPool.getPendingTxCount();
|
|
@@ -689,52 +740,13 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
689
740
|
}
|
|
690
741
|
}
|
|
691
742
|
}
|
|
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 [];
|
|
743
|
+
async *iterateEligiblePendingTxs() {
|
|
744
|
+
for (const txHash of (await this.txPool.getEligiblePendingTxHashes())){
|
|
745
|
+
const tx = await this.txPool.getTxByHash(txHash);
|
|
746
|
+
if (tx) {
|
|
747
|
+
yield tx;
|
|
723
748
|
}
|
|
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
749
|
}
|
|
737
|
-
return txs;
|
|
738
750
|
}
|
|
739
751
|
/**
|
|
740
752
|
* Returns a transaction in the transaction pool by its hash.
|
|
@@ -797,31 +809,35 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
797
809
|
return this.txPool.getArchivedTxByHash(txHash);
|
|
798
810
|
}
|
|
799
811
|
/**
|
|
800
|
-
*
|
|
801
|
-
* @param tx - The tx to
|
|
812
|
+
* Accepts a transaction, adds it to local tx pool and forwards it to other peers.
|
|
813
|
+
* @param tx - The tx to send.
|
|
802
814
|
* @returns Empty promise.
|
|
803
815
|
**/ async sendTx(tx) {
|
|
804
|
-
|
|
816
|
+
this.#assertIsReady();
|
|
817
|
+
const result = await this.txPool.addPendingTxs([
|
|
805
818
|
tx
|
|
806
|
-
]
|
|
807
|
-
|
|
808
|
-
|
|
819
|
+
], {
|
|
820
|
+
feeComparisonOnly: true
|
|
821
|
+
});
|
|
822
|
+
if (result.accepted.length === 1) {
|
|
809
823
|
await this.p2pService.propagate(tx);
|
|
824
|
+
return;
|
|
810
825
|
}
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
826
|
+
const txHashStr = tx.getTxHash().toString();
|
|
827
|
+
const reason = result.errors?.get(txHashStr);
|
|
828
|
+
if (reason) {
|
|
829
|
+
this.log.warn(`Tx ${txHashStr} not added to pool: ${reason.message}`);
|
|
830
|
+
throw new TxPoolError(reason);
|
|
831
|
+
}
|
|
832
|
+
this.log.warn(`Tx ${txHashStr} not propagated: accepted=${result.accepted.length} ignored=${result.ignored.length} rejected=${result.rejected.length}`);
|
|
818
833
|
}
|
|
819
834
|
/**
|
|
820
835
|
* Returns whether the given tx hash is flagged as pending or mined.
|
|
821
836
|
* @param txHash - Hash of the tx to query.
|
|
822
837
|
* @returns Pending or mined depending on its status, or undefined if not found.
|
|
823
|
-
*/ getTxStatus(txHash) {
|
|
824
|
-
|
|
838
|
+
*/ async getTxStatus(txHash) {
|
|
839
|
+
const status = await this.txPool.getTxStatus(txHash);
|
|
840
|
+
return status === 'protected' ? 'pending' : status;
|
|
825
841
|
}
|
|
826
842
|
getEnr() {
|
|
827
843
|
return this.p2pService.getEnr();
|
|
@@ -830,13 +846,11 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
830
846
|
return Promise.resolve(this.p2pService.getEnr()?.encodeTxt());
|
|
831
847
|
}
|
|
832
848
|
/**
|
|
833
|
-
*
|
|
834
|
-
*
|
|
835
|
-
|
|
836
|
-
* @returns Empty promise.
|
|
837
|
-
**/ async deleteTxs(txHashes) {
|
|
849
|
+
* Handles failed transaction execution by removing txs from the pool.
|
|
850
|
+
* @param txHashes - Hashes of the transactions that failed execution.
|
|
851
|
+
**/ async handleFailedExecution(txHashes) {
|
|
838
852
|
this.#assertIsReady();
|
|
839
|
-
await this.txPool.
|
|
853
|
+
await this.txPool.handleFailedExecution(txHashes);
|
|
840
854
|
}
|
|
841
855
|
/**
|
|
842
856
|
* Public function to check if the p2p client is fully synced and ready to receive txs.
|
|
@@ -880,13 +894,12 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
880
894
|
};
|
|
881
895
|
}
|
|
882
896
|
/**
|
|
883
|
-
*
|
|
897
|
+
* Handles mined blocks by marking the txs in them as mined.
|
|
884
898
|
* @param blocks - A list of existing blocks with txs that the P2P client needs to ensure the tx pool is reconciled with.
|
|
885
899
|
* @returns Empty promise.
|
|
886
|
-
*/ async
|
|
900
|
+
*/ async handleMinedBlocks(blocks) {
|
|
887
901
|
for (const block of blocks){
|
|
888
|
-
|
|
889
|
-
await this.txPool.markAsMined(txHashes, block.header);
|
|
902
|
+
await this.txPool.handleMinedBlock(block);
|
|
890
903
|
}
|
|
891
904
|
}
|
|
892
905
|
/**
|
|
@@ -895,14 +908,13 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
895
908
|
* @returns Empty promise.
|
|
896
909
|
*/ async handleLatestL2Blocks(blocks) {
|
|
897
910
|
if (!blocks.length) {
|
|
898
|
-
return
|
|
911
|
+
return;
|
|
899
912
|
}
|
|
900
|
-
await this.
|
|
901
|
-
await this.
|
|
913
|
+
await this.handleMinedBlocks(blocks);
|
|
914
|
+
await this.maybeCallPrepareForSlot();
|
|
902
915
|
await this.startCollectingMissingTxs(blocks);
|
|
903
916
|
const lastBlock = blocks.at(-1);
|
|
904
917
|
await this.synchedLatestSlot.set(BigInt(lastBlock.header.getSlot()));
|
|
905
|
-
this.log.verbose(`Synched to latest block ${lastBlock.number}`);
|
|
906
918
|
}
|
|
907
919
|
/** Request txs for unproven blocks so the prover node has more chances to get them. */ async startCollectingMissingTxs(blocks) {
|
|
908
920
|
try {
|
|
@@ -936,59 +948,26 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
936
948
|
* @returns Empty promise.
|
|
937
949
|
*/ async handleFinalizedL2Blocks(blocks) {
|
|
938
950
|
if (!blocks.length) {
|
|
939
|
-
return
|
|
951
|
+
return;
|
|
940
952
|
}
|
|
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}`);
|
|
953
|
+
// Finalization is monotonic, so we only need to call with the last block
|
|
954
|
+
const lastBlock = blocks.at(-1);
|
|
955
|
+
await this.txPool.handleFinalizedBlock(lastBlock.header);
|
|
956
|
+
await this.attestationPool.deleteOlderThan(lastBlock.header.getSlot());
|
|
952
957
|
}
|
|
953
958
|
/**
|
|
954
959
|
* Updates the tx pool after a chain prune.
|
|
955
|
-
* @param latestBlock - The block
|
|
960
|
+
* @param latestBlock - The block ID the chain was pruned to.
|
|
956
961
|
*/ async handlePruneL2Blocks(latestBlock) {
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
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())
|
|
971
|
-
});
|
|
972
|
-
// delete invalid txs (both pending and mined)
|
|
973
|
-
await this.txPool.deleteTxs(Array.from(txsToDelete.values()));
|
|
974
|
-
// everything left in the mined set was built against a block on the proven chain so its still valid
|
|
975
|
-
// move back to pending the txs that were reorged out of the chain, unless txPoolDeleteTxsAfterReorg is set,
|
|
976
|
-
// in which case we clean them up to avoid potential reorg loops
|
|
977
|
-
// NOTE: we can't move _all_ txs back to pending because the tx pool could keep hold of mined txs for longer
|
|
978
|
-
// (see this.keepProvenTxsFor)
|
|
979
|
-
const minedTxsFromReorg = [];
|
|
980
|
-
for (const [txHash, blockNumber] of minedTxs){
|
|
981
|
-
// We keep the txsToDelete out of this list as they have already been deleted above
|
|
982
|
-
if (blockNumber > latestBlock && !txsToDelete.has(txHash.toString())) {
|
|
983
|
-
minedTxsFromReorg.push(txHash);
|
|
984
|
-
}
|
|
985
|
-
}
|
|
986
|
-
if (this.config.txPoolDeleteTxsAfterReorg) {
|
|
987
|
-
this.log.info(`Deleting ${minedTxsFromReorg.length} mined txs from reorg`);
|
|
988
|
-
await this.txPool.deleteTxs(minedTxsFromReorg);
|
|
989
|
-
} else {
|
|
990
|
-
await this.txPool.markMinedAsPending(minedTxsFromReorg, latestBlock);
|
|
962
|
+
await this.txPool.handlePrunedBlocks(latestBlock);
|
|
963
|
+
}
|
|
964
|
+
/** Checks if the slot has changed and calls prepareForSlot if so. */ async maybeCallPrepareForSlot() {
|
|
965
|
+
const { currentSlot } = this.epochCache.getCurrentAndNextSlot();
|
|
966
|
+
if (currentSlot <= this.lastSlotProcessed) {
|
|
967
|
+
return;
|
|
991
968
|
}
|
|
969
|
+
this.lastSlotProcessed = currentSlot;
|
|
970
|
+
await this.txPool.prepareForSlot(currentSlot);
|
|
992
971
|
}
|
|
993
972
|
async startServiceIfSynched() {
|
|
994
973
|
if (this.currentState !== P2PClientState.SYNCHING) {
|
|
@@ -1023,10 +1002,20 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
1023
1002
|
return this.p2pService.validate(txs);
|
|
1024
1003
|
}
|
|
1025
1004
|
/**
|
|
1026
|
-
*
|
|
1027
|
-
*
|
|
1028
|
-
|
|
1029
|
-
|
|
1005
|
+
* Protects existing transactions by hash for a given slot.
|
|
1006
|
+
* Returns hashes of transactions that weren't found in the pool.
|
|
1007
|
+
* @param txHashes - Hashes of the transactions to protect.
|
|
1008
|
+
* @param blockHeader - The block header providing slot context.
|
|
1009
|
+
* @returns Hashes of transactions not found in the pool.
|
|
1010
|
+
*/ protectTxs(txHashes, blockHeader) {
|
|
1011
|
+
return this.txPool.protectTxs(txHashes, blockHeader);
|
|
1012
|
+
}
|
|
1013
|
+
/**
|
|
1014
|
+
* Prepares the pool for a new slot.
|
|
1015
|
+
* Unprotects transactions from earlier slots and validates them.
|
|
1016
|
+
* @param slotNumber - The slot number to prepare for
|
|
1017
|
+
*/ async prepareForSlot(slotNumber) {
|
|
1018
|
+
await this.txPool.prepareForSlot(slotNumber);
|
|
1030
1019
|
}
|
|
1031
1020
|
handleAuthRequestFromPeer(authRequest, peerId) {
|
|
1032
1021
|
return this.p2pService.handleAuthRequestFromPeer(authRequest, peerId);
|
|
@@ -74,7 +74,7 @@ async function startClient(config, clientIndex) {
|
|
|
74
74
|
const worldState = createMockWorldStateSynchronizer();
|
|
75
75
|
const l2BlockSource = new MockL2BlockSource();
|
|
76
76
|
const proofVerifier = new AlwaysTrueCircuitVerifier();
|
|
77
|
-
kvStore = await openTmpStore(`proposal-bench-${clientIndex}
|
|
77
|
+
kvStore = await openTmpStore(`proposal-bench-${clientIndex}`, true, BENCHMARK_CONSTANTS.KV_STORE_MAP_SIZE_KB);
|
|
78
78
|
logger = createLogger(`p2p:proposal-bench:${clientIndex}`);
|
|
79
79
|
const telemetry = getTelemetryClient();
|
|
80
80
|
const deps = {
|
|
@@ -246,7 +246,7 @@ process.on('message', (msg)=>{
|
|
|
246
246
|
throw new Error('Attestation pool not initialized');
|
|
247
247
|
}
|
|
248
248
|
const proposal = deserializeBlockProposal(msg.blockProposal);
|
|
249
|
-
await attestationPool.
|
|
249
|
+
await attestationPool.tryAddBlockProposal(proposal);
|
|
250
250
|
await sendMessage({
|
|
251
251
|
type: 'BLOCK_PROPOSAL_SET',
|
|
252
252
|
requestId,
|
package/dest/config.d.ts
CHANGED
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
import { type ConfigMappingsType, SecretValue } from '@aztec/foundation/config';
|
|
2
2
|
import { type DataStoreConfig } from '@aztec/kv-store/config';
|
|
3
|
-
import { type AllowedElement, type ChainConfig } from '@aztec/stdlib/config';
|
|
3
|
+
import { type AllowedElement, type ChainConfig, type SequencerConfig } from '@aztec/stdlib/config';
|
|
4
4
|
import { type BatchTxRequesterConfig } from './services/reqresp/batch-tx-requester/config.js';
|
|
5
5
|
import { type P2PReqRespConfig } from './services/reqresp/config.js';
|
|
6
6
|
import { type TxCollectionConfig } from './services/tx_collection/config.js';
|
|
7
|
+
import { type TxFileStoreConfig } from './services/tx_file_store/config.js';
|
|
7
8
|
/**
|
|
8
9
|
* P2P client configuration values.
|
|
9
10
|
*/
|
|
10
|
-
export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, ChainConfig, TxCollectionConfig {
|
|
11
|
+
export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, ChainConfig, TxCollectionConfig, TxFileStoreConfig, Pick<SequencerConfig, 'blockDurationMs'> {
|
|
11
12
|
/** A flag dictating whether the P2P subsystem should be enabled. */
|
|
12
13
|
p2pEnabled: boolean;
|
|
13
14
|
/** The frequency in which to check for new L2 blocks. */
|
|
14
15
|
blockCheckIntervalMS: number;
|
|
16
|
+
/** The frequency in which to check for new L2 slots. */
|
|
17
|
+
slotCheckIntervalMS: number;
|
|
15
18
|
/** The number of blocks to fetch in a single batch. */
|
|
16
19
|
blockRequestBatchSize: number;
|
|
17
20
|
/** DEBUG: Disable colocation penalty - for testing purposes only */
|
|
@@ -106,6 +109,10 @@ export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, Cha
|
|
|
106
109
|
debugP2PInstrumentMessages: boolean;
|
|
107
110
|
/** Whether to run in fisherman mode: validates all proposals and attestations but does not broadcast attestations or participate in consensus */
|
|
108
111
|
fishermanMode: boolean;
|
|
112
|
+
/** Broadcast block proposals even when a conflicting proposal for the same slot already exists in the pool (for testing purposes only). */
|
|
113
|
+
broadcastEquivocatedProposals?: boolean;
|
|
114
|
+
/** Minimum age (ms) a transaction must have been in the pool before it's eligible for block building. */
|
|
115
|
+
minTxPoolAgeMs: number;
|
|
109
116
|
}
|
|
110
117
|
export declare const DEFAULT_P2P_PORT = 40400;
|
|
111
118
|
export declare const p2pConfigMappings: ConfigMappingsType<P2PConfig>;
|
|
@@ -126,10 +133,12 @@ export declare const bootnodeConfigMappings: ConfigMappingsType<Pick<{
|
|
|
126
133
|
batchTxRequesterSmartParallelWorkerCount: unknown;
|
|
127
134
|
batchTxRequesterTxBatchSize: unknown;
|
|
128
135
|
blockCheckIntervalMS: unknown;
|
|
136
|
+
blockDurationMs: unknown;
|
|
129
137
|
blockRequestBatchSize: unknown;
|
|
130
138
|
bootstrapNodeEnrVersionCheck: unknown;
|
|
131
139
|
bootstrapNodes: unknown;
|
|
132
140
|
bootstrapNodesAsFullPeers: unknown;
|
|
141
|
+
broadcastEquivocatedProposals: unknown;
|
|
133
142
|
dataDirectory: unknown;
|
|
134
143
|
dataStoreMapSizeKb: unknown;
|
|
135
144
|
debugDisableColocationPenalty: unknown;
|
|
@@ -159,6 +168,7 @@ export declare const bootnodeConfigMappings: ConfigMappingsType<Pick<{
|
|
|
159
168
|
listenAddress: unknown;
|
|
160
169
|
maxPeerCount: unknown;
|
|
161
170
|
maxPendingTxCount: unknown;
|
|
171
|
+
minTxPoolAgeMs: unknown;
|
|
162
172
|
overallRequestTimeoutMs: unknown;
|
|
163
173
|
p2pAllowOnlyValidators: unknown;
|
|
164
174
|
p2pBroadcastPort: unknown;
|
|
@@ -179,18 +189,32 @@ export declare const bootnodeConfigMappings: ConfigMappingsType<Pick<{
|
|
|
179
189
|
queryForIp: unknown;
|
|
180
190
|
rollupVersion: unknown;
|
|
181
191
|
seenMessageCacheSize: unknown;
|
|
192
|
+
slotCheckIntervalMS: unknown;
|
|
182
193
|
trustedPeers: unknown;
|
|
183
194
|
txCollectionDisableSlowDuringFastRequests: unknown;
|
|
184
195
|
txCollectionFastMaxParallelRequestsPerNode: unknown;
|
|
185
196
|
txCollectionFastNodeIntervalMs: unknown;
|
|
186
197
|
txCollectionFastNodesTimeoutBeforeReqRespMs: unknown;
|
|
198
|
+
txCollectionFileStoreFastBackoffBaseMs: unknown;
|
|
199
|
+
txCollectionFileStoreFastBackoffMaxMs: unknown;
|
|
200
|
+
txCollectionFileStoreFastDelayMs: unknown;
|
|
201
|
+
txCollectionFileStoreFastWorkerCount: unknown;
|
|
202
|
+
txCollectionFileStoreSlowBackoffBaseMs: unknown;
|
|
203
|
+
txCollectionFileStoreSlowBackoffMaxMs: unknown;
|
|
204
|
+
txCollectionFileStoreSlowDelayMs: unknown;
|
|
205
|
+
txCollectionFileStoreSlowWorkerCount: unknown;
|
|
206
|
+
txCollectionFileStoreUrls: unknown;
|
|
207
|
+
txCollectionMissingTxsCollectorType: unknown;
|
|
187
208
|
txCollectionNodeRpcMaxBatchSize: unknown;
|
|
188
209
|
txCollectionNodeRpcUrls: unknown;
|
|
189
|
-
txCollectionProposalTxCollectorType: unknown;
|
|
190
210
|
txCollectionReconcileIntervalMs: unknown;
|
|
191
211
|
txCollectionSlowNodesIntervalMs: unknown;
|
|
192
212
|
txCollectionSlowReqRespIntervalMs: unknown;
|
|
193
213
|
txCollectionSlowReqRespTimeoutMs: unknown;
|
|
214
|
+
txFileStoreEnabled: unknown;
|
|
215
|
+
txFileStoreMaxQueueSize: unknown;
|
|
216
|
+
txFileStoreUploadConcurrency: unknown;
|
|
217
|
+
txFileStoreUrl: unknown;
|
|
194
218
|
txPoolDeleteTxsAfterReorg: unknown;
|
|
195
219
|
txPublicSetupAllowList: unknown;
|
|
196
220
|
}, "bootstrapNodes" | "dataDirectory" | "dataStoreMapSizeKb" | "l1ChainId" | "listenAddress" | "p2pBroadcastPort" | "p2pIp" | "p2pPort" | "peerIdPrivateKey" | "peerIdPrivateKeyPath" | "queryForIp">>;
|
|
@@ -206,4 +230,4 @@ export declare const bootnodeConfigMappings: ConfigMappingsType<Pick<{
|
|
|
206
230
|
* @returns A list of allowed elements
|
|
207
231
|
*/
|
|
208
232
|
export declare function parseAllowList(value: string): AllowedElement[];
|
|
209
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
233
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQUN2QixXQUFXLEVBUVosTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXNCLE1BQU0sd0JBQXdCLENBQUM7QUFHbEYsT0FBTyxFQUNMLEtBQUssY0FBYyxFQUNuQixLQUFLLFdBQVcsRUFDaEIsS0FBSyxlQUFlLEVBR3JCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUNMLEtBQUssc0JBQXNCLEVBRTVCLE1BQU0saURBQWlELENBQUM7QUFDekQsT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQTRCLE1BQU0sOEJBQThCLENBQUM7QUFDL0YsT0FBTyxFQUFFLEtBQUssa0JBQWtCLEVBQThCLE1BQU0sb0NBQW9DLENBQUM7QUFDekcsT0FBTyxFQUFFLEtBQUssaUJBQWlCLEVBQTZCLE1BQU0sb0NBQW9DLENBQUM7QUFFdkc7O0dBRUc7QUFDSCxNQUFNLFdBQVcsU0FDZixTQUFRLGdCQUFnQixFQUN0QixzQkFBc0IsRUFDdEIsV0FBVyxFQUNYLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsSUFBSSxDQUFDLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQztJQUMxQyxvRUFBb0U7SUFDcEUsVUFBVSxFQUFFLE9BQU8sQ0FBQztJQUVwQix5REFBeUQ7SUFDekQsb0JBQW9CLEVBQUUsTUFBTSxDQUFDO0lBRTdCLHdEQUF3RDtJQUN4RCxtQkFBbUIsRUFBRSxNQUFNLENBQUM7SUFFNUIsdURBQXVEO0lBQ3ZELHFCQUFxQixFQUFFLE1BQU0sQ0FBQztJQUU5QixvRUFBb0U7SUFDcEUsNkJBQTZCLEVBQUUsT0FBTyxDQUFDO0lBRXZDLHFEQUFxRDtJQUNyRCxtQkFBbUIsRUFBRSxNQUFNLENBQUM7SUFFNUIsMkNBQTJDO0lBQzNDLFdBQVcsRUFB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
|
package/dest/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,WAAW,EAQZ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAGlF,OAAO,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|