@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
package/src/client/factory.ts
CHANGED
|
@@ -4,31 +4,39 @@ import { DateProvider } from '@aztec/foundation/timer';
|
|
|
4
4
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
5
5
|
import type { DataStoreConfig } from '@aztec/kv-store/config';
|
|
6
6
|
import { AztecLMDBStoreV2, createStore } from '@aztec/kv-store/lmdb-v2';
|
|
7
|
-
import type { L2BlockSource } from '@aztec/stdlib/block';
|
|
7
|
+
import type { BlockHash, L2BlockSource } from '@aztec/stdlib/block';
|
|
8
8
|
import type { ChainConfig } from '@aztec/stdlib/config';
|
|
9
9
|
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
10
|
-
import type { ClientProtocolCircuitVerifier, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
10
|
+
import type { AztecNode, ClientProtocolCircuitVerifier, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
11
11
|
import { P2PClientType } from '@aztec/stdlib/p2p';
|
|
12
|
+
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
12
13
|
import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
|
|
13
14
|
|
|
14
15
|
import { P2PClient } from '../client/p2p_client.js';
|
|
15
16
|
import type { P2PConfig } from '../config.js';
|
|
16
|
-
import
|
|
17
|
-
import { KvAttestationPool } from '../mem_pools/attestation_pool/kv_attestation_pool.js';
|
|
17
|
+
import { AttestationPool, type AttestationPoolApi } from '../mem_pools/attestation_pool/attestation_pool.js';
|
|
18
18
|
import type { MemPools } from '../mem_pools/interface.js';
|
|
19
|
-
import {
|
|
19
|
+
import type { TxPoolV2 } from '../mem_pools/tx_pool_v2/interfaces.js';
|
|
20
|
+
import type { TxMetaData } from '../mem_pools/tx_pool_v2/tx_metadata.js';
|
|
21
|
+
import { AztecKVTxPoolV2 } from '../mem_pools/tx_pool_v2/tx_pool_v2.js';
|
|
22
|
+
import { AggregateTxValidator } from '../msg_validators/tx_validator/aggregate_tx_validator.js';
|
|
23
|
+
import { BlockHeaderTxValidator } from '../msg_validators/tx_validator/block_header_validator.js';
|
|
24
|
+
import { DoubleSpendTxValidator } from '../msg_validators/tx_validator/double_spend_validator.js';
|
|
20
25
|
import { DummyP2PService } from '../services/dummy_service.js';
|
|
21
26
|
import { LibP2PService } from '../services/index.js';
|
|
27
|
+
import { createFileStoreTxSources } from '../services/tx_collection/file_store_tx_source.js';
|
|
22
28
|
import { TxCollection } from '../services/tx_collection/tx_collection.js';
|
|
23
|
-
import { type TxSource, createNodeRpcTxSources } from '../services/tx_collection/tx_source.js';
|
|
29
|
+
import { NodeRpcTxSource, type TxSource, createNodeRpcTxSources } from '../services/tx_collection/tx_source.js';
|
|
30
|
+
import { TxFileStore } from '../services/tx_file_store/tx_file_store.js';
|
|
24
31
|
import { configureP2PClientAddresses, createLibP2PPeerIdFromPrivateKey, getPeerIdPrivateKey } from '../util.js';
|
|
25
32
|
|
|
26
33
|
export type P2PClientDeps<T extends P2PClientType> = {
|
|
27
|
-
txPool?:
|
|
34
|
+
txPool?: TxPoolV2;
|
|
28
35
|
store?: AztecAsyncKVStore;
|
|
29
|
-
attestationPool?:
|
|
36
|
+
attestationPool?: AttestationPoolApi;
|
|
30
37
|
logger?: Logger;
|
|
31
38
|
txCollectionNodeSources?: TxSource[];
|
|
39
|
+
rpcTxProviders?: AztecNode[];
|
|
32
40
|
p2pServiceFactory?: (...args: Parameters<(typeof LibP2PService)['new']>) => Promise<LibP2PService<T>>;
|
|
33
41
|
};
|
|
34
42
|
|
|
@@ -69,14 +77,57 @@ export async function createP2PClient<T extends P2PClientType>(
|
|
|
69
77
|
const attestationStore = await createStore(P2P_ATTESTATION_STORE_NAME, 1, config, bindings);
|
|
70
78
|
const l1Constants = await archiver.getL1Constants();
|
|
71
79
|
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
80
|
+
const rollupAddress = inputConfig.l1Contracts.rollupAddress.toString().toLowerCase().replace(/^0x/, '');
|
|
81
|
+
const txFileStoreBasePath = `aztec-${inputConfig.l1ChainId}-${inputConfig.rollupVersion}-0x${rollupAddress}`;
|
|
82
|
+
|
|
83
|
+
/** Validator factory for pool re-validation (double-spend + block header only). */
|
|
84
|
+
const createPoolTxValidator = async () => {
|
|
85
|
+
await worldStateSynchronizer.syncImmediate();
|
|
86
|
+
return new AggregateTxValidator<TxMetaData>(
|
|
87
|
+
new DoubleSpendTxValidator<TxMetaData>(
|
|
88
|
+
{
|
|
89
|
+
nullifiersExist: async (nullifiers: Buffer[]) => {
|
|
90
|
+
const merkleTree = worldStateSynchronizer.getCommitted();
|
|
91
|
+
const indices = await merkleTree.findLeafIndices(MerkleTreeId.NULLIFIER_TREE, nullifiers);
|
|
92
|
+
return indices.map(index => index !== undefined);
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
bindings,
|
|
96
|
+
),
|
|
97
|
+
new BlockHeaderTxValidator<TxMetaData>(
|
|
98
|
+
{
|
|
99
|
+
getArchiveIndices: (archives: BlockHash[]) => {
|
|
100
|
+
const merkleTree = worldStateSynchronizer.getCommitted();
|
|
101
|
+
return merkleTree.findLeafIndices(MerkleTreeId.ARCHIVE, archives);
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
bindings,
|
|
105
|
+
),
|
|
106
|
+
);
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
const txPool =
|
|
110
|
+
deps.txPool ??
|
|
111
|
+
new AztecKVTxPoolV2(
|
|
112
|
+
store,
|
|
113
|
+
archive,
|
|
114
|
+
{
|
|
115
|
+
l2BlockSource: archiver,
|
|
116
|
+
worldStateSynchronizer,
|
|
117
|
+
createTxValidator: createPoolTxValidator,
|
|
118
|
+
},
|
|
119
|
+
telemetry,
|
|
120
|
+
{
|
|
76
121
|
maxPendingTxCount: config.maxPendingTxCount,
|
|
77
122
|
archivedTxLimit: config.archivedTxLimit,
|
|
78
|
-
|
|
79
|
-
|
|
123
|
+
minTxPoolAgeMs: config.minTxPoolAgeMs,
|
|
124
|
+
},
|
|
125
|
+
dateProvider,
|
|
126
|
+
);
|
|
127
|
+
|
|
128
|
+
const mempools: MemPools = {
|
|
129
|
+
txPool,
|
|
130
|
+
attestationPool: deps.attestationPool ?? new AttestationPool(attestationStore, telemetry),
|
|
80
131
|
};
|
|
81
132
|
|
|
82
133
|
const p2pService = await createP2PService<T>(
|
|
@@ -97,6 +148,7 @@ export async function createP2PClient<T extends P2PClientType>(
|
|
|
97
148
|
|
|
98
149
|
const nodeSources = [
|
|
99
150
|
...createNodeRpcTxSources(config.txCollectionNodeRpcUrls, config),
|
|
151
|
+
...(deps.rpcTxProviders ?? []).map((node, i) => new NodeRpcTxSource(node, `node-rpc-provider-${i}`)),
|
|
100
152
|
...(deps.txCollectionNodeSources ?? []),
|
|
101
153
|
];
|
|
102
154
|
if (nodeSources.length > 0) {
|
|
@@ -105,17 +157,38 @@ export async function createP2PClient<T extends P2PClientType>(
|
|
|
105
157
|
});
|
|
106
158
|
}
|
|
107
159
|
|
|
160
|
+
const fileStoreSources = await createFileStoreTxSources(
|
|
161
|
+
config.txCollectionFileStoreUrls,
|
|
162
|
+
txFileStoreBasePath,
|
|
163
|
+
logger.createChild('file-store-tx-source'),
|
|
164
|
+
telemetry,
|
|
165
|
+
);
|
|
166
|
+
if (fileStoreSources.length > 0) {
|
|
167
|
+
logger.info(`Using ${fileStoreSources.length} file store sources for tx collection.`, {
|
|
168
|
+
stores: fileStoreSources.map(s => s.getInfo()),
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
|
|
108
172
|
const txCollection = new TxCollection(
|
|
109
173
|
p2pService.getBatchTxRequesterService(),
|
|
110
174
|
nodeSources,
|
|
111
175
|
l1Constants,
|
|
112
176
|
mempools.txPool,
|
|
113
177
|
config,
|
|
178
|
+
fileStoreSources,
|
|
114
179
|
dateProvider,
|
|
115
180
|
telemetry,
|
|
116
181
|
logger.createChild('tx-collection'),
|
|
117
182
|
);
|
|
118
183
|
|
|
184
|
+
const txFileStore = await TxFileStore.create(
|
|
185
|
+
mempools.txPool,
|
|
186
|
+
config,
|
|
187
|
+
txFileStoreBasePath,
|
|
188
|
+
logger.createChild('tx-file-store'),
|
|
189
|
+
telemetry,
|
|
190
|
+
);
|
|
191
|
+
|
|
119
192
|
return new P2PClient(
|
|
120
193
|
clientType,
|
|
121
194
|
store,
|
|
@@ -123,6 +196,8 @@ export async function createP2PClient<T extends P2PClientType>(
|
|
|
123
196
|
mempools,
|
|
124
197
|
p2pService,
|
|
125
198
|
txCollection,
|
|
199
|
+
txFileStore,
|
|
200
|
+
epochCache,
|
|
126
201
|
config,
|
|
127
202
|
dateProvider,
|
|
128
203
|
telemetry,
|
package/src/client/interface.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import type { SlotNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import type { EthAddress, L2BlockId } from '@aztec/stdlib/block';
|
|
2
|
-
import type { P2PApiFull } from '@aztec/stdlib/interfaces/server';
|
|
3
|
+
import type { ITxProvider, P2PApiFull } from '@aztec/stdlib/interfaces/server';
|
|
3
4
|
import type { BlockProposal, CheckpointAttestation, CheckpointProposal, P2PClientType } from '@aztec/stdlib/p2p';
|
|
4
|
-
import type { Tx, TxHash } from '@aztec/stdlib/tx';
|
|
5
|
+
import type { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
|
|
5
6
|
|
|
6
7
|
import type { PeerId } from '@libp2p/interface';
|
|
7
8
|
import type { ENR } from '@nethermindeth/enr';
|
|
@@ -13,7 +14,12 @@ import type {
|
|
|
13
14
|
ReqRespSubProtocolHandler,
|
|
14
15
|
ReqRespSubProtocolValidators,
|
|
15
16
|
} from '../services/reqresp/interface.js';
|
|
16
|
-
import type {
|
|
17
|
+
import type {
|
|
18
|
+
DuplicateAttestationInfo,
|
|
19
|
+
DuplicateProposalInfo,
|
|
20
|
+
P2PBlockReceivedCallback,
|
|
21
|
+
P2PCheckpointReceivedCallback,
|
|
22
|
+
} from '../services/service.js';
|
|
17
23
|
|
|
18
24
|
/**
|
|
19
25
|
* Enum defining the possible states of the p2p client.
|
|
@@ -79,12 +85,21 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
|
|
|
79
85
|
registerCheckpointProposalHandler(callback: P2PCheckpointReceivedCallback): void;
|
|
80
86
|
|
|
81
87
|
/**
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
* @
|
|
88
|
+
* Registers a callback invoked when a duplicate proposal is detected (equivocation).
|
|
89
|
+
* The callback is triggered on the first duplicate (when count goes from 1 to 2).
|
|
90
|
+
*
|
|
91
|
+
* @param callback - Function called with info about the duplicate proposal
|
|
92
|
+
*/
|
|
93
|
+
registerDuplicateProposalCallback(callback: (info: DuplicateProposalInfo) => void): void;
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Registers a callback invoked when a duplicate attestation is detected (equivocation).
|
|
97
|
+
* A validator signing attestations for different proposals at the same slot.
|
|
98
|
+
* The callback is triggered on the first duplicate (when count goes from 1 to 2).
|
|
99
|
+
*
|
|
100
|
+
* @param callback - Function called with info about the duplicate attestation
|
|
86
101
|
*/
|
|
87
|
-
|
|
102
|
+
registerDuplicateAttestationCallback(callback: (info: DuplicateAttestationInfo) => void): void;
|
|
88
103
|
|
|
89
104
|
/**
|
|
90
105
|
* Verifies the 'tx' and, if valid, adds it to local tx pool and forwards it to other peers.
|
|
@@ -93,18 +108,10 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
|
|
|
93
108
|
sendTx(tx: Tx): Promise<void>;
|
|
94
109
|
|
|
95
110
|
/**
|
|
96
|
-
*
|
|
97
|
-
* @param
|
|
98
|
-
* @returns The number of txs added to the pool. Note if the transaction already exists, it will not be added again.
|
|
99
|
-
**/
|
|
100
|
-
addTxsToPool(txs: Tx[]): Promise<number>;
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* Deletes 'txs' from the pool, given hashes.
|
|
104
|
-
* NOT used if we use sendTx as reconcileTxPool will handle this.
|
|
105
|
-
* @param txHashes - Hashes to check.
|
|
111
|
+
* Handles failed transaction execution by removing txs from the pool.
|
|
112
|
+
* @param txHashes - Hashes of the transactions that failed execution.
|
|
106
113
|
**/
|
|
107
|
-
|
|
114
|
+
handleFailedExecution(txHashes: TxHash[]): Promise<void>;
|
|
108
115
|
|
|
109
116
|
/**
|
|
110
117
|
* Returns a transaction in the transaction pool by its hash.
|
|
@@ -152,14 +159,28 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
|
|
|
152
159
|
/** Returns an iterator over pending txs on the mempool. */
|
|
153
160
|
iteratePendingTxs(): AsyncIterableIterator<Tx>;
|
|
154
161
|
|
|
162
|
+
/** Returns an iterator over pending txs that have been in the pool long enough to be eligible for block building. */
|
|
163
|
+
iterateEligiblePendingTxs(): AsyncIterableIterator<Tx>;
|
|
164
|
+
|
|
155
165
|
/** Returns the number of pending txs in the mempool. */
|
|
156
166
|
getPendingTxCount(): Promise<number>;
|
|
157
167
|
|
|
158
168
|
/**
|
|
159
|
-
*
|
|
160
|
-
*
|
|
169
|
+
* Protects existing transactions by hash for a given slot.
|
|
170
|
+
* Returns hashes of transactions that weren't found in the pool.
|
|
171
|
+
* @param txHashes - Hashes of the transactions to protect.
|
|
172
|
+
* @param blockHeader - The block header providing slot context.
|
|
173
|
+
* @returns Hashes of transactions not found in the pool.
|
|
174
|
+
*/
|
|
175
|
+
protectTxs(txHashes: TxHash[], blockHeader: BlockHeader): Promise<TxHash[]>;
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Prepares the pool for a new slot.
|
|
179
|
+
* Unprotects transactions from earlier slots and validates them before
|
|
180
|
+
* returning to pending state.
|
|
181
|
+
* @param slotNumber - The slot number to prepare for
|
|
161
182
|
*/
|
|
162
|
-
|
|
183
|
+
prepareForSlot(slotNumber: SlotNumber): Promise<void>;
|
|
163
184
|
|
|
164
185
|
/**
|
|
165
186
|
* Starts the p2p client.
|
|
@@ -192,6 +213,9 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
|
|
|
192
213
|
/** Identifies a p2p client. */
|
|
193
214
|
isP2PClient(): true;
|
|
194
215
|
|
|
216
|
+
/** Returns the tx provider used for fetching transactions. */
|
|
217
|
+
getTxProvider(): ITxProvider;
|
|
218
|
+
|
|
195
219
|
updateP2PConfig(config: Partial<P2PConfig>): Promise<void>;
|
|
196
220
|
|
|
197
221
|
/** Validates a set of txs. */
|
|
@@ -208,6 +232,9 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
|
|
|
208
232
|
|
|
209
233
|
handleAuthRequestFromPeer(authRequest: AuthRequest, peerId: PeerId): Promise<StatusMessage>;
|
|
210
234
|
|
|
235
|
+
/** Checks if any block proposals exist for the given slot. */
|
|
236
|
+
hasBlockProposalsForSlot(slot: SlotNumber): Promise<boolean>;
|
|
237
|
+
|
|
211
238
|
/** If node running this P2P stack is validator, passes in validator address to P2P layer */
|
|
212
239
|
registerThisValidatorAddresses(address: EthAddress[]): void;
|
|
213
240
|
};
|