@aztec/p2p 0.0.1-commit.6d3c34e → 0.0.1-commit.7cf39cb55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/bootstrap/bootstrap.d.ts +4 -3
- package/dest/bootstrap/bootstrap.d.ts.map +1 -1
- package/dest/bootstrap/bootstrap.js +4 -4
- package/dest/client/factory.d.ts +5 -5
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +50 -13
- package/dest/client/interface.d.ts +37 -15
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +37 -36
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +126 -139
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +2 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +1 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +305 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +73 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +1 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +8 -0
- package/dest/config.d.ts +33 -3
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +23 -4
- package/dest/index.d.ts +2 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -0
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +104 -88
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.js +441 -3
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +373 -96
- package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
- package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/index.js +1 -2
- package/dest/mem_pools/attestation_pool/mocks.d.ts +4 -2
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +8 -5
- package/dest/mem_pools/index.d.ts +3 -2
- package/dest/mem_pools/index.d.ts.map +1 -1
- package/dest/mem_pools/index.js +1 -1
- package/dest/mem_pools/instrumentation.d.ts +1 -1
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +2 -2
- package/dest/mem_pools/interface.d.ts +5 -5
- package/dest/mem_pools/interface.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +15 -10
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +91 -50
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +19 -5
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +59 -3
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +79 -5
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +47 -0
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +16 -0
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +122 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +2 -2
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +4 -4
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +2 -0
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +2 -2
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
- package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
- package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
- package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +102 -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 +242 -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 +119 -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 +89 -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 +131 -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 +17 -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 +72 -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 +63 -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/interfaces.d.ts +201 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.js +7 -0
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +95 -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 +128 -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 +105 -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 +345 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +57 -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 +160 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +71 -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 +780 -0
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +3 -3
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +41 -10
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +5 -5
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +18 -6
- package/dest/msg_validators/clock_tolerance.d.ts +21 -0
- package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
- package/dest/msg_validators/clock_tolerance.js +37 -0
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +3 -3
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator.js +55 -31
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +3 -3
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +93 -64
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +3 -3
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
- package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts +20 -6
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.js +4 -3
- package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +4 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -4
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.js +7 -6
- package/dest/msg_validators/tx_validator/factory.d.ts +8 -3
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/factory.js +21 -11
- package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
- package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/fee_payer_balance.js +20 -0
- package/dest/msg_validators/tx_validator/gas_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/gas_validator.js +11 -16
- package/dest/msg_validators/tx_validator/index.d.ts +2 -1
- package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/index.js +1 -0
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.js +2 -2
- package/dest/msg_validators/tx_validator/phases_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/phases_validator.js +3 -3
- package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
- package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/size_validator.js +23 -0
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +22 -5
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/timestamp_validator.js +4 -4
- package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
- package/dest/services/data_store.d.ts +1 -1
- package/dest/services/data_store.d.ts.map +1 -1
- package/dest/services/data_store.js +10 -6
- package/dest/services/discv5/discV5_service.js +1 -1
- package/dest/services/dummy_service.d.ts +22 -2
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +45 -0
- package/dest/services/encoding.d.ts +2 -2
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +4 -5
- 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/instrumentation.d.ts +1 -1
- package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
- package/dest/services/libp2p/instrumentation.js +19 -8
- package/dest/services/libp2p/libp2p_service.d.ts +91 -36
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +407 -303
- package/dest/services/peer-manager/metrics.d.ts +2 -2
- package/dest/services/peer-manager/metrics.d.ts.map +1 -1
- package/dest/services/peer-manager/metrics.js +20 -5
- package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
- package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_scoring.js +33 -4
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +47 -0
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +566 -0
- package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
- package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts +50 -0
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +37 -0
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/missing_txs.js +151 -0
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +54 -0
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/peer_collection.js +139 -0
- package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
- package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +22 -3
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +63 -4
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
- package/dest/services/reqresp/constants.d.ts +12 -0
- package/dest/services/reqresp/constants.d.ts.map +1 -0
- package/dest/services/reqresp/constants.js +7 -0
- package/dest/services/reqresp/interface.d.ts +12 -1
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +15 -1
- package/dest/services/reqresp/metrics.d.ts +6 -5
- package/dest/services/reqresp/metrics.d.ts.map +1 -1
- package/dest/services/reqresp/metrics.js +17 -5
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/bitvector.js +12 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +27 -9
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +29 -6
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +59 -13
- package/dest/services/reqresp/protocols/status.d.ts +1 -1
- package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/status.js +2 -1
- package/dest/services/reqresp/protocols/tx.d.ts +7 -1
- package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/tx.js +20 -0
- package/dest/services/reqresp/reqresp.d.ts +6 -1
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +69 -26
- package/dest/services/service.d.ts +38 -1
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +22 -1
- package/dest/services/tx_collection/config.d.ts.map +1 -1
- package/dest/services/tx_collection/config.js +55 -1
- package/dest/services/tx_collection/fast_tx_collection.d.ts +7 -4
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/fast_tx_collection.js +34 -13
- 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 +28 -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 +59 -0
- package/dest/services/tx_collection/index.d.ts +3 -1
- package/dest/services/tx_collection/index.d.ts.map +1 -1
- package/dest/services/tx_collection/index.js +2 -0
- package/dest/services/tx_collection/instrumentation.d.ts +1 -1
- package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
- package/dest/services/tx_collection/instrumentation.js +9 -2
- package/dest/services/tx_collection/proposal_tx_collector.d.ts +48 -0
- package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
- package/dest/services/tx_collection/proposal_tx_collector.js +49 -0
- package/dest/services/tx_collection/slow_tx_collection.d.ts +8 -4
- 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 +25 -13
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection.js +79 -7
- package/dest/services/tx_collection/tx_collection_sink.d.ts +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 +5 -5
- package/dest/services/tx_provider.d.ts.map +1 -1
- package/dest/services/tx_provider.js +5 -4
- package/dest/services/tx_provider_instrumentation.d.ts +1 -1
- package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
- package/dest/services/tx_provider_instrumentation.js +5 -5
- package/dest/test-helpers/index.d.ts +3 -1
- package/dest/test-helpers/index.d.ts.map +1 -1
- package/dest/test-helpers/index.js +2 -0
- package/dest/test-helpers/make-test-p2p-clients.d.ts +3 -3
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.d.ts +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/test_tx_provider.d.ts +40 -0
- package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
- package/dest/test-helpers/test_tx_provider.js +41 -0
- package/dest/test-helpers/testbench-utils.d.ts +160 -0
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
- package/dest/test-helpers/testbench-utils.js +366 -0
- package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
- package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +213 -133
- package/dest/testbench/worker_client_manager.d.ts +51 -6
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +226 -44
- package/package.json +16 -16
- package/src/bootstrap/bootstrap.ts +7 -4
- package/src/client/factory.ts +90 -22
- package/src/client/interface.ts +45 -14
- package/src/client/p2p_client.ts +168 -166
- package/src/client/test/tx_proposal_collector/README.md +227 -0
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +336 -0
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
- package/src/config.ts +48 -4
- package/src/index.ts +1 -0
- package/src/mem_pools/attestation_pool/attestation_pool.ts +496 -91
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +460 -112
- package/src/mem_pools/attestation_pool/index.ts +9 -2
- package/src/mem_pools/attestation_pool/mocks.ts +6 -4
- package/src/mem_pools/index.ts +4 -1
- package/src/mem_pools/instrumentation.ts +2 -1
- package/src/mem_pools/interface.ts +4 -4
- package/src/mem_pools/tx_pool/README.md +28 -13
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +130 -75
- package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +66 -5
- package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +119 -4
- package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +162 -0
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +4 -2
- package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
- package/src/mem_pools/tx_pool_v2/README.md +275 -0
- package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
- package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
- package/src/mem_pools/tx_pool_v2/deleted_pool.ts +310 -0
- package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +147 -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 +111 -0
- package/src/mem_pools/tx_pool_v2/eviction/index.ts +23 -0
- package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +164 -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 +88 -0
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +72 -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/interfaces.ts +233 -0
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +211 -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 +433 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +218 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +924 -0
- package/src/msg_validators/attestation_validator/attestation_validator.ts +26 -14
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +16 -10
- package/src/msg_validators/clock_tolerance.ts +51 -0
- package/src/msg_validators/proposal_validator/proposal_validator.ts +31 -31
- package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +91 -67
- package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +2 -2
- package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
- package/src/msg_validators/tx_validator/block_header_validator.ts +21 -8
- package/src/msg_validators/tx_validator/data_validator.ts +6 -2
- package/src/msg_validators/tx_validator/double_spend_validator.ts +15 -9
- package/src/msg_validators/tx_validator/factory.ts +64 -23
- package/src/msg_validators/tx_validator/fee_payer_balance.ts +40 -0
- package/src/msg_validators/tx_validator/gas_validator.ts +17 -28
- package/src/msg_validators/tx_validator/index.ts +1 -0
- package/src/msg_validators/tx_validator/metadata_validator.ts +6 -3
- package/src/msg_validators/tx_validator/phases_validator.ts +5 -3
- package/src/msg_validators/tx_validator/size_validator.ts +22 -0
- package/src/msg_validators/tx_validator/timestamp_validator.ts +25 -17
- package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
- package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
- package/src/services/data_store.ts +10 -7
- package/src/services/discv5/discV5_service.ts +1 -1
- package/src/services/dummy_service.ts +57 -0
- package/src/services/encoding.ts +4 -5
- 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/instrumentation.ts +20 -7
- package/src/services/libp2p/libp2p_service.ts +435 -314
- package/src/services/peer-manager/metrics.ts +21 -4
- package/src/services/peer-manager/peer_scoring.ts +29 -1
- package/src/services/reqresp/batch-tx-requester/README.md +305 -0
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +706 -0
- package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
- package/src/services/reqresp/batch-tx-requester/interface.ts +57 -0
- package/src/services/reqresp/batch-tx-requester/missing_txs.ts +209 -0
- package/src/services/reqresp/batch-tx-requester/peer_collection.ts +205 -0
- package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
- package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +65 -4
- package/src/services/reqresp/connection-sampler/connection_sampler.ts +16 -0
- package/src/services/reqresp/constants.ts +14 -0
- package/src/services/reqresp/interface.ts +29 -1
- package/src/services/reqresp/metrics.ts +34 -9
- package/src/services/reqresp/protocols/block_txs/bitvector.ts +16 -0
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +35 -12
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +74 -9
- package/src/services/reqresp/protocols/status.ts +5 -3
- package/src/services/reqresp/protocols/tx.ts +22 -0
- package/src/services/reqresp/reqresp.ts +79 -22
- package/src/services/service.ts +44 -0
- package/src/services/tx_collection/config.ts +83 -1
- package/src/services/tx_collection/fast_tx_collection.ts +44 -19
- package/src/services/tx_collection/file_store_tx_collection.ts +198 -0
- package/src/services/tx_collection/file_store_tx_source.ts +73 -0
- package/src/services/tx_collection/index.ts +6 -0
- package/src/services/tx_collection/instrumentation.ts +11 -2
- package/src/services/tx_collection/proposal_tx_collector.ts +112 -0
- package/src/services/tx_collection/slow_tx_collection.ts +66 -32
- package/src/services/tx_collection/tx_collection.ts +117 -21
- 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 +10 -9
- package/src/services/tx_provider_instrumentation.ts +11 -5
- package/src/test-helpers/index.ts +2 -0
- package/src/test-helpers/make-test-p2p-clients.ts +3 -3
- package/src/test-helpers/mock-pubsub.ts +133 -3
- package/src/test-helpers/reqresp-nodes.ts +2 -1
- package/src/test-helpers/test_tx_provider.ts +64 -0
- package/src/test-helpers/testbench-utils.ts +430 -0
- package/src/testbench/p2p_client_testbench_worker.ts +322 -127
- package/src/testbench/worker_client_manager.ts +304 -47
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
- package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts +0 -15
- package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.js +0 -88
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
- package/src/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.ts +0 -108
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
1
|
+
import { BlockNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
2
2
|
import { type Logger } from '@aztec/foundation/log';
|
|
3
3
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
4
|
-
import type {
|
|
4
|
+
import type { L2Block } from '@aztec/stdlib/block';
|
|
5
5
|
import { type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
6
6
|
import { type Tx, TxHash } from '@aztec/stdlib/tx';
|
|
7
7
|
import { type ReqRespInterface } from '../reqresp/interface.js';
|
|
@@ -30,7 +30,7 @@ export declare class SlowTxCollection {
|
|
|
30
30
|
stop(): Promise<void>;
|
|
31
31
|
trigger(): Promise<void>;
|
|
32
32
|
/** Starts collecting the given tx hashes for the given L2Block in the slow loop */
|
|
33
|
-
startCollecting(block:
|
|
33
|
+
startCollecting(block: L2Block, txHashes: TxHash[]): void;
|
|
34
34
|
private collectMissingTxsFromNode;
|
|
35
35
|
private collectMissingTxsViaReqResp;
|
|
36
36
|
/** Retrieves all missing txs for the slow collection process. This is, all missing txs that are not part of a fast request. */
|
|
@@ -47,7 +47,11 @@ export declare class SlowTxCollection {
|
|
|
47
47
|
* To be called when there is a chain prune and previously mined txs are no longer relevant.
|
|
48
48
|
*/
|
|
49
49
|
stopCollectingForBlocksAfter(blockNumber: BlockNumber): void;
|
|
50
|
+
/** Groups missing tx entries by block number. */
|
|
51
|
+
private groupByBlock;
|
|
50
52
|
/** Computes the proof submission deadline for a given slot, a tx mined in this slot is no longer interesting after this deadline */
|
|
51
53
|
private getDeadlineForSlot;
|
|
52
54
|
}
|
|
53
|
-
|
|
55
|
+
/** Computes the proof submission deadline for a given slot. A tx mined in this slot is no longer interesting after this deadline. */
|
|
56
|
+
export declare function getProofDeadlineForSlot(slotNumber: SlotNumber, constants: L1RollupConstants): Date;
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xvd190eF9jb2xsZWN0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfY29sbGVjdGlvbi9zbG93X3R4X2NvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBZSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUV2RixPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFHbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxLQUFLLGlCQUFpQixFQUE2QyxNQUFNLDZCQUE2QixDQUFDO0FBQ2hILE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUVwRixPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWhFLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0MscUJBQWEsZ0JBQWdCO0lBV3pCLE9BQU8sQ0FBQyxPQUFPO0lBQ2YsT0FBTyxDQUFDLEtBQUs7SUFDYixPQUFPLENBQUMsZ0JBQWdCO0lBQ3hCLE9BQU8sQ0FBQyxjQUFjO0lBQ3RCLE9BQU8sQ0FBQyxTQUFTO0lBQ2pCLE9BQU8sQ0FBQyxNQUFNO0lBQ2QsT0FBTyxDQUFDLFlBQVk7SUFDcEIsT0FBTyxDQUFDLEdBQUc7SUFqQmIsbUVBQW1FO0lBQ25FLE9BQU8sQ0FBQyxVQUFVLENBQXlDO0lBRTNELCtEQUErRDtJQUMvRCxPQUFPLENBQUMsd0JBQXdCLENBQW1CO0lBRW5ELHFFQUFxRTtJQUNyRSxPQUFPLENBQUMseUJBQXlCLENBQWlCO0lBRWxELFlBQ1UsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBa0IsQ0FBQyxFQUNuRCxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQ2pCLGdCQUFnQixFQUFFLGdCQUFnQixFQUNsQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLDJCQUEyQixDQUFDLEVBQ25FLFNBQVMsRUFBRSxpQkFBaUIsRUFDNUIsTUFBTSxFQUFFLGtCQUFrQixFQUMxQixZQUFZLEdBQUUsWUFBaUMsRUFDL0MsR0FBRyxHQUFFLE1BQWtELEVBZ0JoRTtJQUVNLGtCQUFrQixhQUV4QjtJQUVNLEtBQUssU0FHWDtJQUVZLElBQUksa0JBS2hCO0lBRVksT0FBTyxrQkFLbkI7SUFFRCxtRkFBbUY7SUFDNUUsZUFBZSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQXFCeEQ7WUFHYSx5QkFBeUI7WUF5Q3pCLDJCQUEyQjtJQTJDekMsK0hBQStIO0lBQy9ILE9BQU8sQ0FBQyw4QkFBOEI7SUFxQnRDLDhHQUE4RztJQUN2RyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FJL0I7SUFFRDs7O09BR0c7SUFDSSwyQkFBMkIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxHQUFHLElBQUksQ0FNakU7SUFFRDs7O09BR0c7SUFDSSw0QkFBNEIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxHQUFHLElBQUksQ0FNbEU7SUFFRCxpREFBaUQ7SUFDakQsT0FBTyxDQUFDLFlBQVk7SUFjcEIsb0lBQW9JO0lBQ3BJLE9BQU8sQ0FBQyxrQkFBa0I7Q0FHM0I7QUFFRCxxSUFBcUk7QUFDckksd0JBQWdCLHVCQUF1QixDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixHQUFHLElBQUksQ0FLbEcifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slow_tx_collection.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/slow_tx_collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"slow_tx_collection.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/slow_tx_collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAe,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAEvF,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,KAAK,iBAAiB,EAA6C,MAAM,6BAA6B,CAAC;AAChH,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,KAAK,gBAAgB,EAAsB,MAAM,yBAAyB,CAAC;AAEpF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,qBAAa,gBAAgB;IAWzB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,GAAG;IAjBb,mEAAmE;IACnE,OAAO,CAAC,UAAU,CAAyC;IAE3D,+DAA+D;IAC/D,OAAO,CAAC,wBAAwB,CAAmB;IAEnD,qEAAqE;IACrE,OAAO,CAAC,yBAAyB,CAAiB;IAElD,YACU,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,EACnD,KAAK,EAAE,QAAQ,EAAE,EACjB,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,IAAI,CAAC,gBAAgB,EAAE,2BAA2B,CAAC,EACnE,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,kBAAkB,EAC1B,YAAY,GAAE,YAAiC,EAC/C,GAAG,GAAE,MAAkD,EAgBhE;IAEM,kBAAkB,aAExB;IAEM,KAAK,SAGX;IAEY,IAAI,kBAKhB;IAEY,OAAO,kBAKnB;IAED,mFAAmF;IAC5E,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAqBxD;YAGa,yBAAyB;YAyCzB,2BAA2B;IA2CzC,+HAA+H;IAC/H,OAAO,CAAC,8BAA8B;IAqBtC,8GAA8G;IACvG,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,CAI/B;IAED;;;OAGG;IACI,2BAA2B,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAMjE;IAED;;;OAGG;IACI,4BAA4B,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAMlE;IAED,iDAAiD;IACjD,OAAO,CAAC,YAAY;IAcpB,oIAAoI;IACpI,OAAO,CAAC,kBAAkB;CAG3B;AAED,qIAAqI;AACrI,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAKlG"}
|
|
@@ -66,6 +66,7 @@ export class SlowTxCollection {
|
|
|
66
66
|
}
|
|
67
67
|
for (const txHash of txHashes){
|
|
68
68
|
this.missingTxs.set(txHash.toString(), {
|
|
69
|
+
block,
|
|
69
70
|
blockNumber: block.number,
|
|
70
71
|
deadline: this.getDeadlineForSlot(block.header.getSlot()),
|
|
71
72
|
readyForReqResp: this.nodes.length === 0
|
|
@@ -81,17 +82,23 @@ export class SlowTxCollection {
|
|
|
81
82
|
}
|
|
82
83
|
// Gather all missing txs that are not in fast collection and request them from the node
|
|
83
84
|
const missingTxs = this.getMissingTxsForSlowCollection();
|
|
84
|
-
|
|
85
|
-
if (missingTxHashes.length === 0) {
|
|
85
|
+
if (missingTxs.length === 0) {
|
|
86
86
|
return;
|
|
87
87
|
}
|
|
88
|
-
//
|
|
89
|
-
for (const
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
88
|
+
// Group by block so we pass the correct mined context to the sink
|
|
89
|
+
for (const entries of this.groupByBlock(missingTxs)){
|
|
90
|
+
const block = entries[0][1].block;
|
|
91
|
+
const txHashes = entries.map(([txHash])=>TxHash.fromString(txHash));
|
|
92
|
+
for (const batch of chunk(txHashes, this.config.txCollectionNodeRpcMaxBatchSize)){
|
|
93
|
+
await this.txCollectionSink.collect((hashes)=>node.getTxsByHash(hashes), batch, {
|
|
94
|
+
description: `node ${node.getInfo()}`,
|
|
95
|
+
node: node.getInfo(),
|
|
96
|
+
method: 'slow-node-rpc'
|
|
97
|
+
}, {
|
|
98
|
+
type: 'mined',
|
|
99
|
+
block
|
|
100
|
+
});
|
|
101
|
+
}
|
|
95
102
|
}
|
|
96
103
|
// Mark every tx that is still missing as ready for reqresp.
|
|
97
104
|
// Note that we can just mark all requested txs as ready for reqresp, without filtering out the ones
|
|
@@ -117,17 +124,24 @@ export class SlowTxCollection {
|
|
|
117
124
|
}
|
|
118
125
|
const pinnedPeer = undefined;
|
|
119
126
|
const timeoutMs = this.config.txCollectionSlowReqRespTimeoutMs;
|
|
120
|
-
const maxPeers = boundInclusive(Math.ceil(missingTxs.length / 3), 4, 16);
|
|
121
127
|
const maxRetryAttempts = 3;
|
|
122
|
-
//
|
|
123
|
-
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
128
|
+
// Group by block so we pass the correct mined context to the sink
|
|
129
|
+
for (const entries of this.groupByBlock(missingTxs)){
|
|
130
|
+
const block = entries[0][1].block;
|
|
131
|
+
const txHashes = entries.map(([txHash])=>TxHash.fromString(txHash));
|
|
132
|
+
const maxPeers = boundInclusive(Math.ceil(txHashes.length / 3), 4, 16);
|
|
133
|
+
await this.txCollectionSink.collect(async (hashes)=>{
|
|
134
|
+
const txs = await this.reqResp.sendBatchRequest(ReqRespSubProtocol.TX, chunkTxHashesRequest(hashes), pinnedPeer, timeoutMs, maxPeers, maxRetryAttempts);
|
|
135
|
+
return txs.flat();
|
|
136
|
+
}, txHashes, {
|
|
137
|
+
description: 'slow reqresp',
|
|
138
|
+
timeoutMs,
|
|
139
|
+
method: 'slow-req-resp'
|
|
140
|
+
}, {
|
|
141
|
+
type: 'mined',
|
|
142
|
+
block
|
|
143
|
+
});
|
|
144
|
+
}
|
|
131
145
|
}
|
|
132
146
|
/** Retrieves all missing txs for the slow collection process. This is, all missing txs that are not part of a fast request. */ getMissingTxsForSlowCollection(opts = {}) {
|
|
133
147
|
// Remove expired txs from missingTxs
|
|
@@ -168,10 +182,28 @@ export class SlowTxCollection {
|
|
|
168
182
|
}
|
|
169
183
|
}
|
|
170
184
|
}
|
|
185
|
+
/** Groups missing tx entries by block number. */ groupByBlock(entries) {
|
|
186
|
+
const groups = new Map();
|
|
187
|
+
for (const entry of entries){
|
|
188
|
+
const bn = +entry[1].blockNumber;
|
|
189
|
+
let group = groups.get(bn);
|
|
190
|
+
if (!group) {
|
|
191
|
+
group = [];
|
|
192
|
+
groups.set(bn, group);
|
|
193
|
+
}
|
|
194
|
+
group.push(entry);
|
|
195
|
+
}
|
|
196
|
+
return [
|
|
197
|
+
...groups.values()
|
|
198
|
+
];
|
|
199
|
+
}
|
|
171
200
|
/** Computes the proof submission deadline for a given slot, a tx mined in this slot is no longer interesting after this deadline */ getDeadlineForSlot(slotNumber) {
|
|
172
|
-
|
|
173
|
-
const submissionEndEpoch = EpochNumber(epoch + this.constants.proofSubmissionEpochs);
|
|
174
|
-
const submissionEndTimestamp = getTimestampRangeForEpoch(submissionEndEpoch, this.constants)[1];
|
|
175
|
-
return new Date(Number(submissionEndTimestamp) * 1000);
|
|
201
|
+
return getProofDeadlineForSlot(slotNumber, this.constants);
|
|
176
202
|
}
|
|
177
203
|
}
|
|
204
|
+
/** Computes the proof submission deadline for a given slot. A tx mined in this slot is no longer interesting after this deadline. */ export function getProofDeadlineForSlot(slotNumber, constants) {
|
|
205
|
+
const epoch = getEpochAtSlot(slotNumber, constants);
|
|
206
|
+
const submissionEndEpoch = EpochNumber(epoch + constants.proofSubmissionEpochs);
|
|
207
|
+
const submissionEndTimestamp = getTimestampRangeForEpoch(submissionEndEpoch, constants)[1];
|
|
208
|
+
return new Date(Number(submissionEndTimestamp) * 1000);
|
|
209
|
+
}
|
|
@@ -2,28 +2,30 @@ import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
|
2
2
|
import { type Logger } from '@aztec/foundation/log';
|
|
3
3
|
import { type PromiseWithResolvers } from '@aztec/foundation/promise';
|
|
4
4
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
5
|
-
import type {
|
|
5
|
+
import type { L2Block, L2BlockInfo } from '@aztec/stdlib/block';
|
|
6
6
|
import type { L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
7
7
|
import type { BlockProposal } from '@aztec/stdlib/p2p';
|
|
8
8
|
import { Tx, TxHash } from '@aztec/stdlib/tx';
|
|
9
9
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
10
10
|
import type { PeerId } from '@libp2p/interface';
|
|
11
|
-
import type {
|
|
12
|
-
import type {
|
|
13
|
-
import type { ReqRespInterface } from '../reqresp/interface.js';
|
|
11
|
+
import type { TxPoolV2, TxPoolV2Events } from '../../mem_pools/tx_pool_v2/interfaces.js';
|
|
12
|
+
import type { BatchTxRequesterLibP2PService } from '../reqresp/batch-tx-requester/interface.js';
|
|
14
13
|
import type { TxCollectionConfig } from './config.js';
|
|
15
14
|
import { FastTxCollection } from './fast_tx_collection.js';
|
|
15
|
+
import { FileStoreTxCollection } from './file_store_tx_collection.js';
|
|
16
|
+
import type { FileStoreTxSource } from './file_store_tx_source.js';
|
|
16
17
|
import { SlowTxCollection } from './slow_tx_collection.js';
|
|
17
18
|
import type { TxSource } from './tx_source.js';
|
|
18
|
-
export type CollectionMethod = 'fast-req-resp' | 'fast-node-rpc' | 'slow-req-resp' | 'slow-node-rpc';
|
|
19
|
+
export type CollectionMethod = 'fast-req-resp' | 'fast-node-rpc' | 'slow-req-resp' | 'slow-node-rpc' | 'file-store';
|
|
19
20
|
export type MissingTxInfo = {
|
|
21
|
+
block: L2Block;
|
|
20
22
|
blockNumber: BlockNumber;
|
|
21
23
|
deadline: Date;
|
|
22
24
|
readyForReqResp: boolean;
|
|
23
25
|
};
|
|
24
26
|
export type FastCollectionRequestInput = {
|
|
25
27
|
type: 'block';
|
|
26
|
-
block:
|
|
28
|
+
block: L2Block;
|
|
27
29
|
} | {
|
|
28
30
|
type: 'proposal';
|
|
29
31
|
blockProposal: BlockProposal;
|
|
@@ -48,7 +50,7 @@ export type FastCollectionRequest = FastCollectionRequestInput & {
|
|
|
48
50
|
* collect the same tx multiple times.
|
|
49
51
|
*/
|
|
50
52
|
export declare class TxCollection {
|
|
51
|
-
private readonly
|
|
53
|
+
private readonly p2pService;
|
|
52
54
|
private readonly nodes;
|
|
53
55
|
private readonly constants;
|
|
54
56
|
private readonly txPool;
|
|
@@ -59,15 +61,23 @@ export declare class TxCollection {
|
|
|
59
61
|
protected readonly slowCollection: SlowTxCollection;
|
|
60
62
|
/** Fast collection methods */
|
|
61
63
|
protected readonly fastCollection: FastTxCollection;
|
|
64
|
+
/** File store collection for slow (mined block) path */
|
|
65
|
+
protected readonly fileStoreSlowCollection: FileStoreTxCollection;
|
|
66
|
+
/** File store collection for fast (proposal/proving) path */
|
|
67
|
+
protected readonly fileStoreFastCollection: FileStoreTxCollection;
|
|
62
68
|
/** Loop for periodically reconciling found transactions from the tx pool in case we missed some */
|
|
63
69
|
private readonly reconcileFoundTxsLoop;
|
|
64
70
|
/** Handles txs found by the slow and fast collection loops */
|
|
65
71
|
private readonly txCollectionSink;
|
|
66
72
|
/** Handler for the txs-added event from the tx pool */
|
|
67
|
-
protected readonly handleTxsAddedToPool:
|
|
73
|
+
protected readonly handleTxsAddedToPool: TxPoolV2Events['txs-added'];
|
|
68
74
|
/** Handler for the txs-added event from the tx collection sink */
|
|
69
|
-
protected readonly handleTxsFound:
|
|
70
|
-
|
|
75
|
+
protected readonly handleTxsFound: TxPoolV2Events['txs-added'];
|
|
76
|
+
/** Whether the service has been started. */
|
|
77
|
+
private started;
|
|
78
|
+
/** Whether file store sources are configured. */
|
|
79
|
+
private readonly hasFileStoreSources;
|
|
80
|
+
constructor(p2pService: BatchTxRequesterLibP2PService, nodes: TxSource[], constants: L1RollupConstants, txPool: TxPoolV2, config: TxCollectionConfig, fileStoreSources?: FileStoreTxSource[], dateProvider?: DateProvider, telemetryClient?: TelemetryClient, log?: Logger);
|
|
71
81
|
/** Starts all collection loops. */
|
|
72
82
|
start(): Promise<void>;
|
|
73
83
|
/** Stops all activity. */
|
|
@@ -77,14 +87,14 @@ export declare class TxCollection {
|
|
|
77
87
|
/** Returns L1 rollup constants. */
|
|
78
88
|
getConstants(): L1RollupConstants;
|
|
79
89
|
/** Starts collecting the given tx hashes for the given L2Block in the slow loop */
|
|
80
|
-
startCollecting(block:
|
|
90
|
+
startCollecting(block: L2Block, txHashes: TxHash[]): void;
|
|
81
91
|
/** Collects the set of txs for the given block proposal as fast as possible */
|
|
82
92
|
collectFastForProposal(blockProposal: BlockProposal, blockNumber: BlockNumber, txHashes: TxHash[] | string[], opts: {
|
|
83
93
|
deadline: Date;
|
|
84
94
|
pinnedPeer?: PeerId;
|
|
85
95
|
}): Promise<Tx[]>;
|
|
86
96
|
/** Collects the set of txs for the given mined block as fast as possible */
|
|
87
|
-
collectFastForBlock(block:
|
|
97
|
+
collectFastForBlock(block: L2Block, txHashes: TxHash[] | string[], opts: {
|
|
88
98
|
deadline: Date;
|
|
89
99
|
pinnedPeer?: PeerId;
|
|
90
100
|
}): Promise<Tx[]>;
|
|
@@ -93,6 +103,8 @@ export declare class TxCollection {
|
|
|
93
103
|
deadline: Date;
|
|
94
104
|
pinnedPeer?: PeerId;
|
|
95
105
|
}): Promise<Tx[]>;
|
|
106
|
+
/** Returns the TxAddContext for the given fast collection request input */
|
|
107
|
+
private getAddContextForInput;
|
|
96
108
|
/** Mark the given txs as found. Stops collecting them. */
|
|
97
109
|
private foundTxs;
|
|
98
110
|
/**
|
|
@@ -107,4 +119,4 @@ export declare class TxCollection {
|
|
|
107
119
|
stopCollectingForBlocksAfter(blockNumber: BlockNumber): void;
|
|
108
120
|
private reconcileFoundTxsWithPool;
|
|
109
121
|
}
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfY29sbGVjdGlvbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3R4X2NvbGxlY3Rpb24vdHhfY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUQsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxLQUFLLG9CQUFvQixFQUFrQixNQUFNLDJCQUEyQixDQUFDO0FBRXRGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRixPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRCxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDekYsT0FBTyxLQUFLLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRyxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEtBQUss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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx_collection.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/tx_collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,KAAK,oBAAoB,EAAkB,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"tx_collection.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/tx_collection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { compactArray } from '@aztec/foundation/collection';
|
|
2
2
|
import { createLogger } from '@aztec/foundation/log';
|
|
3
3
|
import { RunningPromise } from '@aztec/foundation/promise';
|
|
4
|
+
import { sleep } from '@aztec/foundation/sleep';
|
|
4
5
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
6
|
+
import { TxHash } from '@aztec/stdlib/tx';
|
|
5
7
|
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
6
8
|
import { FastTxCollection } from './fast_tx_collection.js';
|
|
7
|
-
import {
|
|
9
|
+
import { FileStoreTxCollection } from './file_store_tx_collection.js';
|
|
10
|
+
import { SlowTxCollection, getProofDeadlineForSlot } from './slow_tx_collection.js';
|
|
8
11
|
import { TxCollectionSink } from './tx_collection_sink.js';
|
|
9
12
|
/**
|
|
10
13
|
* Coordinates tx collection from remote RPC nodes and reqresp.
|
|
@@ -17,7 +20,7 @@ import { TxCollectionSink } from './tx_collection_sink.js';
|
|
|
17
20
|
* via events and notifies the slow and fast collection loops to stop collecting that tx, so that we don't
|
|
18
21
|
* collect the same tx multiple times.
|
|
19
22
|
*/ export class TxCollection {
|
|
20
|
-
|
|
23
|
+
p2pService;
|
|
21
24
|
nodes;
|
|
22
25
|
constants;
|
|
23
26
|
txPool;
|
|
@@ -26,21 +29,37 @@ import { TxCollectionSink } from './tx_collection_sink.js';
|
|
|
26
29
|
log;
|
|
27
30
|
/** Slow collection background loops */ slowCollection;
|
|
28
31
|
/** Fast collection methods */ fastCollection;
|
|
32
|
+
/** File store collection for slow (mined block) path */ fileStoreSlowCollection;
|
|
33
|
+
/** File store collection for fast (proposal/proving) path */ fileStoreFastCollection;
|
|
29
34
|
/** Loop for periodically reconciling found transactions from the tx pool in case we missed some */ reconcileFoundTxsLoop;
|
|
30
35
|
/** Handles txs found by the slow and fast collection loops */ txCollectionSink;
|
|
31
36
|
/** Handler for the txs-added event from the tx pool */ handleTxsAddedToPool;
|
|
32
37
|
/** Handler for the txs-added event from the tx collection sink */ handleTxsFound;
|
|
33
|
-
|
|
34
|
-
|
|
38
|
+
/** Whether the service has been started. */ started;
|
|
39
|
+
/** Whether file store sources are configured. */ hasFileStoreSources;
|
|
40
|
+
constructor(p2pService, nodes, constants, txPool, config, fileStoreSources = [], dateProvider = new DateProvider(), telemetryClient = getTelemetryClient(), log = createLogger('p2p:tx_collection_service')){
|
|
41
|
+
this.p2pService = p2pService;
|
|
35
42
|
this.nodes = nodes;
|
|
36
43
|
this.constants = constants;
|
|
37
44
|
this.txPool = txPool;
|
|
38
45
|
this.config = config;
|
|
39
46
|
this.dateProvider = dateProvider;
|
|
40
47
|
this.log = log;
|
|
48
|
+
this.started = false;
|
|
41
49
|
this.txCollectionSink = new TxCollectionSink(this.txPool, telemetryClient, this.log);
|
|
42
|
-
this.fastCollection = new FastTxCollection(this.
|
|
43
|
-
this.slowCollection = new SlowTxCollection(this.reqResp, this.nodes, this.txCollectionSink, this.fastCollection, constants, this.config, this.dateProvider, this.log);
|
|
50
|
+
this.fastCollection = new FastTxCollection(this.p2pService, this.nodes, this.txCollectionSink, this.config, this.dateProvider, this.log);
|
|
51
|
+
this.slowCollection = new SlowTxCollection(this.p2pService.reqResp, this.nodes, this.txCollectionSink, this.fastCollection, constants, this.config, this.dateProvider, this.log);
|
|
52
|
+
this.hasFileStoreSources = fileStoreSources.length > 0;
|
|
53
|
+
this.fileStoreSlowCollection = new FileStoreTxCollection(fileStoreSources, this.txCollectionSink, {
|
|
54
|
+
workerCount: config.txCollectionFileStoreSlowWorkerCount,
|
|
55
|
+
backoffBaseMs: config.txCollectionFileStoreSlowBackoffBaseMs,
|
|
56
|
+
backoffMaxMs: config.txCollectionFileStoreSlowBackoffMaxMs
|
|
57
|
+
}, this.dateProvider, this.log);
|
|
58
|
+
this.fileStoreFastCollection = new FileStoreTxCollection(fileStoreSources, this.txCollectionSink, {
|
|
59
|
+
workerCount: config.txCollectionFileStoreFastWorkerCount,
|
|
60
|
+
backoffBaseMs: config.txCollectionFileStoreFastBackoffBaseMs,
|
|
61
|
+
backoffMaxMs: config.txCollectionFileStoreFastBackoffMaxMs
|
|
62
|
+
}, this.dateProvider, this.log);
|
|
44
63
|
this.reconcileFoundTxsLoop = new RunningPromise(()=>this.reconcileFoundTxsWithPool(), this.log, this.config.txCollectionReconcileIntervalMs);
|
|
45
64
|
this.handleTxsFound = (args)=>{
|
|
46
65
|
this.foundTxs(args.txs);
|
|
@@ -55,15 +74,21 @@ import { TxCollectionSink } from './tx_collection_sink.js';
|
|
|
55
74
|
this.txPool.on('txs-added', this.handleTxsAddedToPool);
|
|
56
75
|
}
|
|
57
76
|
/** Starts all collection loops. */ start() {
|
|
77
|
+
this.started = true;
|
|
58
78
|
this.slowCollection.start();
|
|
79
|
+
this.fileStoreSlowCollection.start();
|
|
80
|
+
this.fileStoreFastCollection.start();
|
|
59
81
|
this.reconcileFoundTxsLoop.start();
|
|
60
82
|
// TODO(palla/txs): Collect mined unproven tx hashes for txs we dont have in the pool and populate missingTxs on startup
|
|
61
83
|
return Promise.resolve();
|
|
62
84
|
}
|
|
63
85
|
/** Stops all activity. */ async stop() {
|
|
86
|
+
this.started = false;
|
|
64
87
|
await Promise.all([
|
|
65
88
|
this.slowCollection.stop(),
|
|
66
89
|
this.fastCollection.stop(),
|
|
90
|
+
this.fileStoreSlowCollection.stop(),
|
|
91
|
+
this.fileStoreFastCollection.stop(),
|
|
67
92
|
this.reconcileFoundTxsLoop.stop()
|
|
68
93
|
]);
|
|
69
94
|
this.txPool.removeListener('txs-added', this.handleTxsAddedToPool);
|
|
@@ -79,7 +104,25 @@ import { TxCollectionSink } from './tx_collection_sink.js';
|
|
|
79
104
|
return this.constants;
|
|
80
105
|
}
|
|
81
106
|
/** Starts collecting the given tx hashes for the given L2Block in the slow loop */ startCollecting(block, txHashes) {
|
|
82
|
-
|
|
107
|
+
this.slowCollection.startCollecting(block, txHashes);
|
|
108
|
+
// Delay file store collection to give P2P methods time to find txs first
|
|
109
|
+
if (this.hasFileStoreSources) {
|
|
110
|
+
const context = {
|
|
111
|
+
type: 'mined',
|
|
112
|
+
block
|
|
113
|
+
};
|
|
114
|
+
const deadline = getProofDeadlineForSlot(block.header.getSlot(), this.constants);
|
|
115
|
+
sleep(this.config.txCollectionFileStoreSlowDelayMs).then(()=>{
|
|
116
|
+
if (this.started) {
|
|
117
|
+
// Only queue txs that are still missing after the delay
|
|
118
|
+
const stillMissing = new Set(this.slowCollection.getMissingTxHashes().map((h)=>h.toString()));
|
|
119
|
+
const remaining = txHashes.filter((h)=>stillMissing.has(h.toString()));
|
|
120
|
+
if (remaining.length > 0) {
|
|
121
|
+
this.fileStoreSlowCollection.startCollecting(remaining, context, deadline);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}).catch((err)=>this.log.error('Error in file store slow delay', err));
|
|
125
|
+
}
|
|
83
126
|
}
|
|
84
127
|
/** Collects the set of txs for the given block proposal as fast as possible */ collectFastForProposal(blockProposal, blockNumber, txHashes, opts) {
|
|
85
128
|
return this.collectFastFor({
|
|
@@ -95,11 +138,36 @@ import { TxCollectionSink } from './tx_collection_sink.js';
|
|
|
95
138
|
}, txHashes, opts);
|
|
96
139
|
}
|
|
97
140
|
/** Collects the set of txs for the given proposal or block as fast as possible */ collectFastFor(input, txHashes, opts) {
|
|
141
|
+
const hashes = txHashes.map((h)=>typeof h === 'string' ? TxHash.fromString(h) : h);
|
|
142
|
+
// Delay file store collection to give P2P methods time to find txs first
|
|
143
|
+
if (this.hasFileStoreSources) {
|
|
144
|
+
const context = this.getAddContextForInput(input);
|
|
145
|
+
sleep(this.config.txCollectionFileStoreFastDelayMs).then(()=>{
|
|
146
|
+
if (this.started) {
|
|
147
|
+
this.fileStoreFastCollection.startCollecting(hashes, context, opts.deadline);
|
|
148
|
+
}
|
|
149
|
+
}).catch((err)=>this.log.error('Error in file store fast delay', err));
|
|
150
|
+
}
|
|
98
151
|
return this.fastCollection.collectFastFor(input, txHashes, opts);
|
|
99
152
|
}
|
|
153
|
+
/** Returns the TxAddContext for the given fast collection request input */ getAddContextForInput(input) {
|
|
154
|
+
if (input.type === 'proposal') {
|
|
155
|
+
return {
|
|
156
|
+
type: 'proposal',
|
|
157
|
+
blockHeader: input.blockProposal.blockHeader
|
|
158
|
+
};
|
|
159
|
+
} else {
|
|
160
|
+
return {
|
|
161
|
+
type: 'mined',
|
|
162
|
+
block: input.block
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
}
|
|
100
166
|
/** Mark the given txs as found. Stops collecting them. */ foundTxs(txs) {
|
|
101
167
|
this.slowCollection.foundTxs(txs);
|
|
102
168
|
this.fastCollection.foundTxs(txs);
|
|
169
|
+
this.fileStoreSlowCollection.foundTxs(txs);
|
|
170
|
+
this.fileStoreFastCollection.foundTxs(txs);
|
|
103
171
|
}
|
|
104
172
|
/**
|
|
105
173
|
* Stop collecting all txs for blocks less than or requal to the block number specified.
|
|
@@ -107,6 +175,8 @@ import { TxCollectionSink } from './tx_collection_sink.js';
|
|
|
107
175
|
*/ stopCollectingForBlocksUpTo(blockNumber) {
|
|
108
176
|
this.slowCollection.stopCollectingForBlocksUpTo(blockNumber);
|
|
109
177
|
this.fastCollection.stopCollectingForBlocksUpTo(blockNumber);
|
|
178
|
+
this.fileStoreSlowCollection.clearPending();
|
|
179
|
+
this.fileStoreFastCollection.clearPending();
|
|
110
180
|
}
|
|
111
181
|
/**
|
|
112
182
|
* Stop collecting all txs for blocks greater than the block number specified.
|
|
@@ -114,6 +184,8 @@ import { TxCollectionSink } from './tx_collection_sink.js';
|
|
|
114
184
|
*/ stopCollectingForBlocksAfter(blockNumber) {
|
|
115
185
|
this.slowCollection.stopCollectingForBlocksAfter(blockNumber);
|
|
116
186
|
this.fastCollection.stopCollectingForBlocksAfter(blockNumber);
|
|
187
|
+
this.fileStoreSlowCollection.clearPending();
|
|
188
|
+
this.fileStoreFastCollection.clearPending();
|
|
117
189
|
}
|
|
118
190
|
/** Every now and then, check if the pool has received one of the txs we are looking for, just to catch any race conditions */ async reconcileFoundTxsWithPool() {
|
|
119
191
|
const missingTxHashes = this.slowCollection.getMissingTxHashes();
|
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
import type { Logger } from '@aztec/foundation/log';
|
|
2
2
|
import type { TypedEventEmitter } from '@aztec/foundation/types';
|
|
3
|
-
import {
|
|
3
|
+
import type { L2Block } from '@aztec/stdlib/block';
|
|
4
|
+
import type { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
|
|
4
5
|
import type { TelemetryClient } from '@aztec/telemetry-client';
|
|
5
|
-
import type {
|
|
6
|
+
import type { TxPoolV2, TxPoolV2Events } from '../../mem_pools/tx_pool_v2/interfaces.js';
|
|
6
7
|
import type { CollectionMethod } from './tx_collection.js';
|
|
7
|
-
|
|
8
|
+
/** Context determining how collected txs should be added to the pool. */
|
|
9
|
+
export type TxAddContext = {
|
|
10
|
+
type: 'proposal';
|
|
11
|
+
blockHeader: BlockHeader;
|
|
12
|
+
} | {
|
|
13
|
+
type: 'mined';
|
|
14
|
+
block: L2Block;
|
|
15
|
+
};
|
|
16
|
+
declare const TxCollectionSink_base: new () => TypedEventEmitter<TxPoolV2Events>;
|
|
8
17
|
/**
|
|
9
18
|
* Executes collection requests from the fast and slow collection loops, and handles collected txs
|
|
10
19
|
* by adding them to the tx pool and emitting events, as well as handling logging and metrics.
|
|
@@ -13,11 +22,11 @@ export declare class TxCollectionSink extends TxCollectionSink_base {
|
|
|
13
22
|
private readonly txPool;
|
|
14
23
|
private readonly log;
|
|
15
24
|
private readonly instrumentation;
|
|
16
|
-
constructor(txPool:
|
|
25
|
+
constructor(txPool: TxPoolV2, telemetryClient: TelemetryClient, log: Logger);
|
|
17
26
|
collect(collectValidTxsFn: (txHashes: TxHash[]) => Promise<(Tx | undefined)[]>, requested: TxHash[], info: Record<string, any> & {
|
|
18
27
|
description: string;
|
|
19
28
|
method: CollectionMethod;
|
|
20
|
-
}): Promise<{
|
|
29
|
+
}, context: TxAddContext): Promise<{
|
|
21
30
|
txs: Tx[];
|
|
22
31
|
requested: TxHash[];
|
|
23
32
|
duration: number;
|
|
@@ -27,4 +36,4 @@ export declare class TxCollectionSink extends TxCollectionSink_base {
|
|
|
27
36
|
private foundTxs;
|
|
28
37
|
}
|
|
29
38
|
export {};
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfY29sbGVjdGlvbl9zaW5rLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfY29sbGVjdGlvbi90eF9jb2xsZWN0aW9uX3NpbmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFcEQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSS9ELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUV6RixPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTNELHlFQUF5RTtBQUN6RSxNQUFNLE1BQU0sWUFBWSxHQUFHO0lBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQztJQUFDLFdBQVcsRUFBRSxXQUFXLENBQUE7Q0FBRSxHQUFHO0lBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQztJQUFDLEtBQUssRUFBRSxPQUFPLENBQUE7Q0FBRSxDQUFDOztBQUU5Rzs7O0dBR0c7QUFDSCxxQkFBYSxnQkFBaUIsU0FBUSxxQkFBNkQ7SUFJL0YsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0lBRXZCLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRztJQUx0QixPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBOEI7SUFFOUQsWUFDbUIsTUFBTSxFQUFFLFFBQVEsRUFDakMsZUFBZSxFQUFFLGVBQWUsRUFDZixHQUFHLEVBQUUsTUFBTSxFQUk3QjtJQUVZLE9BQU8sQ0FDbEIsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFDdEUsU0FBUyxFQUFFLE1BQU0sRUFBRSxFQUNuQixJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRztRQUFFLFdBQVcsRUFBRSxNQUFNLENBQUM7UUFBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUE7S0FBRSxFQUM3RSxPQUFPLEVBQUUsWUFBWTs7Ozs7O09BdUV0QjtZQUVhLFFBQVE7Q0E2QnZCIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx_collection_sink.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/tx_collection_sink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,
|
|
1
|
+
{"version":3,"file":"tx_collection_sink.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/tx_collection_sink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI/D,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAEzF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,yEAAyE;AACzE,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,WAAW,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;;AAE9G;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,qBAA6D;IAI/F,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IALtB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA8B;IAE9D,YACmB,MAAM,EAAE,QAAQ,EACjC,eAAe,EAAE,eAAe,EACf,GAAG,EAAE,MAAM,EAI7B;IAEY,OAAO,CAClB,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,EACtE,SAAS,EAAE,MAAM,EAAE,EACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,gBAAgB,CAAA;KAAE,EAC7E,OAAO,EAAE,YAAY;;;;;;OAuEtB;YAEa,QAAQ;CA6BvB"}
|
|
@@ -12,7 +12,7 @@ import { TxCollectionInstrumentation } from './instrumentation.js';
|
|
|
12
12
|
super(), this.txPool = txPool, this.log = log;
|
|
13
13
|
this.instrumentation = new TxCollectionInstrumentation(telemetryClient, 'TxCollection');
|
|
14
14
|
}
|
|
15
|
-
async collect(collectValidTxsFn, requested, info) {
|
|
15
|
+
async collect(collectValidTxsFn, requested, info, context) {
|
|
16
16
|
this.log.trace(`Requesting ${requested.length} txs via ${info.description}`, {
|
|
17
17
|
...info,
|
|
18
18
|
requestedTxs: requested.map((t)=>t.toString())
|
|
@@ -80,20 +80,26 @@ import { TxCollectionInstrumentation } from './instrumentation.js';
|
|
|
80
80
|
return await this.foundTxs(validTxs, {
|
|
81
81
|
...info,
|
|
82
82
|
duration
|
|
83
|
-
});
|
|
83
|
+
}, context);
|
|
84
84
|
}
|
|
85
|
-
async foundTxs(txs, info) {
|
|
85
|
+
async foundTxs(txs, info, context) {
|
|
86
86
|
// Report metrics for the collection
|
|
87
87
|
this.instrumentation.increaseTxsFor(info.method, txs.length, info.duration);
|
|
88
88
|
// Mark txs as found in the slow missing txs set and all fast requests
|
|
89
89
|
this.emit('txs-added', {
|
|
90
90
|
txs
|
|
91
91
|
});
|
|
92
|
-
// Add the txs to the tx pool
|
|
92
|
+
// Add the txs to the tx pool using the appropriate method based on context
|
|
93
93
|
try {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
94
|
+
if (context.type === 'mined') {
|
|
95
|
+
await this.txPool.addMinedTxs(txs, context.block.header, {
|
|
96
|
+
source: 'tx-collection'
|
|
97
|
+
});
|
|
98
|
+
} else {
|
|
99
|
+
await this.txPool.addProtectedTxs(txs, context.blockHeader, {
|
|
100
|
+
source: 'tx-collection'
|
|
101
|
+
});
|
|
102
|
+
}
|
|
97
103
|
} catch (err) {
|
|
98
104
|
this.log.error(`Error adding txs to the pool via ${info.description}`, err, {
|
|
99
105
|
...info,
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration for the TxFileStore service.
|
|
4
|
+
*/
|
|
5
|
+
export type TxFileStoreConfig = {
|
|
6
|
+
/** URL for uploading txs to file storage (s3://, gs://, file://) */
|
|
7
|
+
txFileStoreUrl?: string;
|
|
8
|
+
/** Max concurrent uploads */
|
|
9
|
+
txFileStoreUploadConcurrency: number;
|
|
10
|
+
/** Max queue size to prevent unbounded memory growth */
|
|
11
|
+
txFileStoreMaxQueueSize: number;
|
|
12
|
+
/** Enable tx file store upload */
|
|
13
|
+
txFileStoreEnabled: boolean;
|
|
14
|
+
};
|
|
15
|
+
export declare const txFileStoreConfigMappings: ConfigMappingsType<TxFileStoreConfig>;
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfZmlsZV9zdG9yZS9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssa0JBQWtCLEVBQTJDLE1BQU0sMEJBQTBCLENBQUM7QUFFNUc7O0dBRUc7QUFDSCxNQUFNLE1BQU0saUJBQWlCLEdBQUc7SUFDOUIsb0VBQW9FO0lBQ3BFLGNBQWMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUN4Qiw2QkFBNkI7SUFDN0IsNEJBQTRCLEVBQUUsTUFBTSxDQUFDO0lBQ3JDLHdEQUF3RDtJQUN4RCx1QkFBdUIsRUFBRSxNQUFNLENBQUM7SUFDaEMsa0NBQWtDO0lBQ2xDLGtCQUFrQixFQUFFLE9BQU8sQ0FBQztDQUM3QixDQUFDO0FBRUYsZUFBTyxNQUFNLHlCQUF5QixFQUFFLGtCQUFrQixDQUFDLGlCQUFpQixDQW9CM0UsQ0FBQyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/services/tx_file_store/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAA2C,MAAM,0BAA0B,CAAC;AAE5G;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6BAA6B;IAC7B,4BAA4B,EAAE,MAAM,CAAC;IACrC,wDAAwD;IACxD,uBAAuB,EAAE,MAAM,CAAC;IAChC,kCAAkC;IAClC,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CAAC,iBAAiB,CAoB3E,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { booleanConfigHelper, numberConfigHelper } from '@aztec/foundation/config';
|
|
2
|
+
export const txFileStoreConfigMappings = {
|
|
3
|
+
txFileStoreUrl: {
|
|
4
|
+
env: 'TX_FILE_STORE_URL',
|
|
5
|
+
description: 'URL for uploading txs to file storage (s3://, gs://, file://)'
|
|
6
|
+
},
|
|
7
|
+
txFileStoreUploadConcurrency: {
|
|
8
|
+
env: 'TX_FILE_STORE_UPLOAD_CONCURRENCY',
|
|
9
|
+
description: 'Maximum number of concurrent tx uploads',
|
|
10
|
+
...numberConfigHelper(10)
|
|
11
|
+
},
|
|
12
|
+
txFileStoreMaxQueueSize: {
|
|
13
|
+
env: 'TX_FILE_STORE_MAX_QUEUE_SIZE',
|
|
14
|
+
description: 'Maximum queue size for pending uploads (oldest dropped when exceeded)',
|
|
15
|
+
...numberConfigHelper(1000)
|
|
16
|
+
},
|
|
17
|
+
txFileStoreEnabled: {
|
|
18
|
+
env: 'TX_FILE_STORE_ENABLED',
|
|
19
|
+
description: 'Enable uploading transactions to file storage',
|
|
20
|
+
...booleanConfigHelper(false)
|
|
21
|
+
}
|
|
22
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { TxFileStore } from './tx_file_store.js';
|
|
2
|
+
export { TxFileStoreInstrumentation } from './instrumentation.js';
|
|
3
|
+
export { type TxFileStoreConfig, txFileStoreConfigMappings } from './config.js';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy90eF9maWxlX3N0b3JlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsS0FBSyxpQkFBaUIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGFBQWEsQ0FBQyJ9
|