@aztec/p2p 0.0.1-commit.e2b2873ed → 0.0.1-commit.e304674f1
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/README.md +129 -3
- package/dest/client/factory.d.ts +7 -7
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +37 -30
- package/dest/client/interface.d.ts +22 -20
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +11 -19
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +83 -102
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +20 -10
- package/dest/config.d.ts +43 -15
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +91 -37
- package/dest/errors/p2p-service.error.d.ts +9 -0
- package/dest/errors/p2p-service.error.d.ts.map +1 -0
- package/dest/errors/p2p-service.error.js +10 -0
- 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 +1 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +0 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +7 -5
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.js +16 -6
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +6 -6
- 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 +1 -2
- package/dest/mem_pools/index.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.d.ts +4 -2
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +16 -14
- package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +30 -13
- package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/deleted_pool.js +91 -20
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +3 -3
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +18 -9
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +7 -3
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +3 -3
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +12 -4
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +2 -2
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/index.js +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +54 -5
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +8 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +7 -5
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +7 -5
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +2 -2
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +14 -6
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +4 -4
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +16 -4
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +3 -3
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +3 -3
- package/dest/mem_pools/tx_pool_v2/index.d.ts +2 -2
- package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/index.js +1 -1
- 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 +28 -10
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/interfaces.js +5 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +56 -15
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.js +112 -19
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +12 -3
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +50 -45
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +12 -5
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +17 -6
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +14 -5
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +319 -147
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +5 -4
- package/dest/msg_validators/clock_tolerance.d.ts +1 -1
- package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
- package/dest/msg_validators/clock_tolerance.js +4 -3
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +6 -4
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +6 -4
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -8
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator.js +53 -41
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +2 -2
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/allowed_public_setup.js +24 -20
- package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
- package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
- package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
- package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
- package/dest/msg_validators/tx_validator/data_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +35 -2
- package/dest/msg_validators/tx_validator/factory.d.ts +133 -6
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/factory.js +247 -60
- package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
- package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
- package/dest/msg_validators/tx_validator/gas_validator.d.ts +67 -3
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/gas_validator.js +112 -43
- package/dest/msg_validators/tx_validator/index.d.ts +3 -1
- package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/index.js +2 -0
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
- package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
- package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
- package/dest/msg_validators/tx_validator/phases_validator.d.ts +22 -2
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/phases_validator.js +72 -24
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +2 -2
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
- package/dest/services/dummy_service.d.ts +7 -5
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +9 -5
- package/dest/services/encoding.d.ts +6 -2
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +16 -9
- package/dest/services/gossipsub/topic_score_params.d.ts +18 -6
- package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
- package/dest/services/gossipsub/topic_score_params.js +32 -10
- package/dest/services/libp2p/libp2p_service.d.ts +29 -36
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +213 -197
- package/dest/services/peer-manager/metrics.d.ts +3 -1
- package/dest/services/peer-manager/metrics.d.ts.map +1 -1
- package/dest/services/peer-manager/metrics.js +6 -0
- package/dest/services/peer-manager/peer_manager.d.ts +6 -2
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +24 -9
- package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
- package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_scoring.js +32 -10
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +12 -8
- 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 +83 -106
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts +4 -7
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +11 -13
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/missing_txs.js +31 -46
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +19 -11
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/peer_collection.js +52 -15
- package/dest/services/reqresp/batch-tx-requester/tx_validator.js +2 -2
- package/dest/services/reqresp/interface.d.ts +1 -9
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +0 -11
- package/dest/services/reqresp/metrics.d.ts +1 -1
- package/dest/services/reqresp/metrics.d.ts.map +1 -1
- package/dest/services/reqresp/metrics.js +0 -1
- package/dest/services/reqresp/protocols/index.d.ts +1 -2
- package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/index.js +0 -1
- package/dest/services/reqresp/protocols/tx.d.ts +1 -1
- package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/tx.js +1 -3
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
- package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
- 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 +20 -11
- package/dest/services/service.d.ts +9 -4
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +13 -1
- package/dest/services/tx_collection/config.d.ts.map +1 -1
- package/dest/services/tx_collection/config.js +30 -0
- package/dest/services/tx_collection/fast_tx_collection.d.ts +1 -4
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/fast_tx_collection.js +65 -75
- package/dest/services/tx_collection/file_store_tx_collection.d.ts +38 -29
- package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/file_store_tx_collection.js +126 -77
- package/dest/services/tx_collection/file_store_tx_source.d.ts +17 -6
- package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
- package/dest/services/tx_collection/file_store_tx_source.js +53 -10
- 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 +7 -7
- package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
- package/dest/services/tx_collection/proposal_tx_collector.js +5 -4
- package/dest/services/tx_collection/request_tracker.d.ts +53 -0
- package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
- package/dest/services/tx_collection/request_tracker.js +84 -0
- package/dest/services/tx_collection/slow_tx_collection.d.ts +5 -3
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/slow_tx_collection.js +17 -12
- package/dest/services/tx_collection/tx_collection.d.ts +9 -9
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection.js +26 -10
- package/dest/services/tx_collection/tx_collection_sink.d.ts +6 -5
- package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection_sink.js +13 -22
- package/dest/services/tx_collection/tx_source.d.ts +13 -7
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_source.js +26 -7
- package/dest/services/tx_file_store/tx_file_store.d.ts +3 -2
- package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
- package/dest/services/tx_file_store/tx_file_store.js +9 -6
- package/dest/services/tx_provider.d.ts +3 -3
- package/dest/services/tx_provider.d.ts.map +1 -1
- package/dest/services/tx_provider.js +4 -4
- package/dest/test-helpers/make-test-p2p-clients.d.ts +5 -6
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.js +1 -2
- package/dest/test-helpers/mock-pubsub.d.ts +4 -4
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.js +8 -2
- package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +2 -4
- package/dest/test-helpers/testbench-utils.d.ts +8 -3
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
- package/dest/test-helpers/testbench-utils.js +30 -4
- package/dest/testbench/p2p_client_testbench_worker.d.ts +2 -2
- package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +78 -26
- package/dest/testbench/worker_client_manager.d.ts +10 -1
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +55 -3
- package/dest/util.d.ts +3 -3
- package/dest/util.d.ts.map +1 -1
- package/package.json +14 -14
- package/src/client/factory.ts +68 -48
- package/src/client/interface.ts +26 -21
- package/src/client/p2p_client.ts +91 -132
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +33 -14
- package/src/config.ts +133 -43
- package/src/errors/p2p-service.error.ts +11 -0
- package/src/errors/tx-pool.error.ts +12 -0
- package/src/index.ts +0 -1
- package/src/mem_pools/attestation_pool/attestation_pool.ts +20 -9
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +6 -6
- package/src/mem_pools/attestation_pool/mocks.ts +2 -1
- package/src/mem_pools/index.ts +0 -3
- package/src/mem_pools/instrumentation.ts +17 -13
- package/src/mem_pools/tx_pool_v2/README.md +52 -28
- package/src/mem_pools/tx_pool_v2/deleted_pool.ts +109 -22
- package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +21 -8
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +7 -3
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +18 -4
- package/src/mem_pools/tx_pool_v2/eviction/index.ts +4 -0
- package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +59 -4
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +5 -5
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +5 -5
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +14 -9
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +33 -6
- package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +4 -3
- package/src/mem_pools/tx_pool_v2/index.ts +1 -1
- package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
- package/src/mem_pools/tx_pool_v2/interfaces.ts +30 -10
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +163 -27
- package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +58 -45
- package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +34 -8
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +353 -143
- package/src/msg_validators/attestation_validator/README.md +49 -0
- package/src/msg_validators/attestation_validator/attestation_validator.ts +5 -4
- package/src/msg_validators/clock_tolerance.ts +4 -3
- package/src/msg_validators/proposal_validator/README.md +123 -0
- package/src/msg_validators/proposal_validator/block_proposal_validator.ts +14 -4
- package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +20 -7
- package/src/msg_validators/proposal_validator/proposal_validator.ts +69 -45
- package/src/msg_validators/tx_validator/README.md +119 -0
- package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +3 -3
- package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
- package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
- package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
- package/src/msg_validators/tx_validator/data_validator.ts +42 -1
- package/src/msg_validators/tx_validator/factory.ts +394 -78
- package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
- package/src/msg_validators/tx_validator/gas_validator.ts +145 -33
- package/src/msg_validators/tx_validator/index.ts +2 -0
- package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
- package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
- package/src/msg_validators/tx_validator/phases_validator.ts +82 -27
- package/src/msg_validators/tx_validator/timestamp_validator.ts +7 -7
- package/src/services/dummy_service.ts +12 -7
- package/src/services/encoding.ts +16 -8
- package/src/services/gossipsub/README.md +29 -14
- package/src/services/gossipsub/topic_score_params.ts +49 -13
- package/src/services/libp2p/libp2p_service.ts +228 -223
- package/src/services/peer-manager/metrics.ts +7 -0
- package/src/services/peer-manager/peer_manager.ts +28 -9
- package/src/services/peer-manager/peer_scoring.ts +27 -5
- package/src/services/reqresp/README.md +229 -0
- package/src/services/reqresp/batch-tx-requester/README.md +46 -7
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +79 -112
- package/src/services/reqresp/batch-tx-requester/interface.ts +3 -6
- package/src/services/reqresp/batch-tx-requester/missing_txs.ts +30 -71
- package/src/services/reqresp/batch-tx-requester/peer_collection.ts +68 -24
- package/src/services/reqresp/batch-tx-requester/tx_validator.ts +2 -2
- package/src/services/reqresp/interface.ts +0 -11
- package/src/services/reqresp/metrics.ts +0 -1
- package/src/services/reqresp/protocols/index.ts +0 -1
- package/src/services/reqresp/protocols/tx.ts +1 -3
- package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
- package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
- package/src/services/reqresp/reqresp.ts +23 -13
- package/src/services/service.ts +17 -3
- package/src/services/tx_collection/config.ts +42 -0
- package/src/services/tx_collection/fast_tx_collection.ts +71 -76
- package/src/services/tx_collection/file_store_tx_collection.ts +143 -93
- package/src/services/tx_collection/file_store_tx_source.ts +69 -10
- package/src/services/tx_collection/instrumentation.ts +7 -1
- package/src/services/tx_collection/proposal_tx_collector.ts +9 -13
- package/src/services/tx_collection/request_tracker.ts +127 -0
- package/src/services/tx_collection/slow_tx_collection.ts +17 -13
- package/src/services/tx_collection/tx_collection.ts +46 -17
- package/src/services/tx_collection/tx_collection_sink.ts +15 -29
- package/src/services/tx_collection/tx_source.ts +28 -8
- package/src/services/tx_file_store/tx_file_store.ts +6 -4
- package/src/services/tx_provider.ts +2 -2
- package/src/test-helpers/make-test-p2p-clients.ts +1 -3
- package/src/test-helpers/mock-pubsub.ts +13 -6
- package/src/test-helpers/reqresp-nodes.ts +3 -8
- package/src/test-helpers/testbench-utils.ts +41 -6
- package/src/testbench/p2p_client_testbench_worker.ts +89 -29
- package/src/testbench/worker_client_manager.ts +68 -6
- package/src/util.ts +8 -2
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -122
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +0 -84
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
- package/dest/mem_pools/tx_pool/index.d.ts +0 -3
- package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/index.js +0 -2
- package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
- package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/priority.js +0 -15
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
- package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -400
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
- package/dest/services/reqresp/protocols/block.d.ts +0 -9
- package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
- package/dest/services/reqresp/protocols/block.js +0 -32
- package/src/mem_pools/tx_pool/README.md +0 -270
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
- package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
- package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
- package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -162
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
- package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
- package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
- package/src/mem_pools/tx_pool/index.ts +0 -2
- package/src/mem_pools/tx_pool/priority.ts +0 -20
- package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -319
- package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
- package/src/services/reqresp/protocols/block.ts +0 -37
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"p2p_client.d.ts","sourceRoot":"","sources":["../../src/client/p2p_client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"p2p_client.d.ts","sourceRoot":"","sources":["../../src/client/p2p_client.ts"],"names":[],"mappings":"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"}
|
|
@@ -372,18 +372,16 @@ function _apply_decs_2203_r(targetClass, memberDecs, classDecs, parentClass) {
|
|
|
372
372
|
}
|
|
373
373
|
var _dec, _dec1, _initProto;
|
|
374
374
|
import { GENESIS_BLOCK_HEADER_HASH } from '@aztec/constants';
|
|
375
|
-
import { BlockNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
375
|
+
import { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
376
376
|
import { createLogger } from '@aztec/foundation/log';
|
|
377
377
|
import { RunningPromise } from '@aztec/foundation/promise';
|
|
378
378
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
379
379
|
import { L2TipsKVStore } from '@aztec/kv-store/stores';
|
|
380
380
|
import { L2BlockStream } from '@aztec/stdlib/block';
|
|
381
|
-
import { getTimestampForSlot } from '@aztec/stdlib/epoch-helpers';
|
|
382
381
|
import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
383
382
|
import { Attributes, WithTracer, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
384
383
|
import { getP2PDefaultConfig } from '../config.js';
|
|
385
|
-
import {
|
|
386
|
-
import { chunkTxHashesRequest } from '../services/reqresp/protocols/tx.js';
|
|
384
|
+
import { TxPoolError } from '../errors/tx-pool.error.js';
|
|
387
385
|
import { TxProvider } from '../services/tx_provider.js';
|
|
388
386
|
import { P2PClientState } from './interface.js';
|
|
389
387
|
_dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
@@ -438,7 +436,7 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
438
436
|
validatorAddresses;
|
|
439
437
|
/** Tracks the last slot for which we called prepareForSlot */ lastSlotProcessed;
|
|
440
438
|
/** Polls for slot changes and calls prepareForSlot on the tx pool */ slotMonitor;
|
|
441
|
-
constructor(
|
|
439
|
+
constructor(store, l2BlockSource, mempools, p2pService, txCollection, txFileStore, epochCache, config = {}, _dateProvider = new DateProvider(), telemetry = getTelemetryClient(), log = createLogger('p2p')){
|
|
442
440
|
super(telemetry, 'P2PClient'), this.store = store, this.l2BlockSource = l2BlockSource, this.p2pService = p2pService, this.txCollection = txCollection, this.txFileStore = txFileStore, this.epochCache = epochCache, this._dateProvider = _dateProvider, this.telemetry = telemetry, this.log = log, this.currentState = (_initProto(this), P2PClientState.IDLE), this.syncPromise = Promise.resolve(), this.syncResolve = undefined, this.latestBlockNumberAtStart = -1, this.provenBlockNumberAtStart = -1, this.finalizedBlockNumberAtStart = -1, this.validatorAddresses = [], this.lastSlotProcessed = SlotNumber.ZERO;
|
|
443
441
|
this.config = {
|
|
444
442
|
...getP2PDefaultConfig(),
|
|
@@ -447,29 +445,6 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
447
445
|
this.txPool = mempools.txPool;
|
|
448
446
|
this.attestationPool = mempools.attestationPool;
|
|
449
447
|
this.txProvider = new TxProvider(this.txCollection, this.txPool, this, this.log.createChild('tx-provider'), this.telemetry);
|
|
450
|
-
// Default to collecting all txs when we see a valid proposal
|
|
451
|
-
// This can be overridden by the validator client to validate, and it will call getTxsForBlockProposal on its own
|
|
452
|
-
// Note: Validators do NOT attest to individual blocks - attestations are only for checkpoint proposals.
|
|
453
|
-
// TODO(palla/txs): We should not trigger a request for txs on a proposal before fully validating it. We need to bring
|
|
454
|
-
// validator-client code into here so we can validate a proposal is reasonable.
|
|
455
|
-
this.registerBlockProposalHandler(async (block, sender)=>{
|
|
456
|
-
this.log.debug(`Received block proposal from ${sender.toString()}`);
|
|
457
|
-
// TODO(palla/txs): Need to subtract validatorReexecuteDeadlineMs from this deadline (see ValidatorClient.getReexecutionDeadline)
|
|
458
|
-
const constants = this.txCollection.getConstants();
|
|
459
|
-
const nextSlotTimestampSeconds = Number(getTimestampForSlot(SlotNumber(block.slotNumber + 1), constants));
|
|
460
|
-
const deadline = new Date(nextSlotTimestampSeconds * 1000);
|
|
461
|
-
const parentBlock = await this.l2BlockSource.getBlockHeaderByArchive(block.blockHeader.lastArchive.root);
|
|
462
|
-
if (!parentBlock) {
|
|
463
|
-
this.log.debug(`Cannot collect txs for proposal as parent block not found`);
|
|
464
|
-
return false;
|
|
465
|
-
}
|
|
466
|
-
const blockNumber = BlockNumber(parentBlock.getBlockNumber() + 1);
|
|
467
|
-
await this.txProvider.getTxsForBlockProposal(block, blockNumber, {
|
|
468
|
-
pinnedPeer: sender,
|
|
469
|
-
deadline
|
|
470
|
-
});
|
|
471
|
-
return true;
|
|
472
|
-
});
|
|
473
448
|
this.l2Tips = new L2TipsKVStore(store, 'p2p_client');
|
|
474
449
|
this.synchedLatestSlot = store.openSingleton('p2p_pool_last_l2_slot');
|
|
475
450
|
}
|
|
@@ -491,6 +466,9 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
491
466
|
getPeers(includePending) {
|
|
492
467
|
return Promise.resolve(this.p2pService.getPeers(includePending));
|
|
493
468
|
}
|
|
469
|
+
getGossipMeshPeerCount(topicType) {
|
|
470
|
+
return Promise.resolve(this.p2pService.getGossipMeshPeerCount(topicType));
|
|
471
|
+
}
|
|
494
472
|
getL2BlockHash(number) {
|
|
495
473
|
return this.l2Tips.getL2BlockHash(number);
|
|
496
474
|
}
|
|
@@ -523,7 +501,7 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
523
501
|
break;
|
|
524
502
|
case 'chain-pruned':
|
|
525
503
|
this.txCollection.stopCollectingForBlocksAfter(event.block.number);
|
|
526
|
-
await this.handlePruneL2Blocks(event.block);
|
|
504
|
+
await this.handlePruneL2Blocks(event.block, event.checkpoint);
|
|
527
505
|
break;
|
|
528
506
|
case 'chain-checkpointed':
|
|
529
507
|
break;
|
|
@@ -664,6 +642,8 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
664
642
|
// Store our own last-block proposal so we can respond to req/resp requests for it.
|
|
665
643
|
await this.attestationPool.tryAddBlockProposal(blockProposal);
|
|
666
644
|
}
|
|
645
|
+
// Gossipsub doesn't deliver own messages, so fire the all-nodes handler locally
|
|
646
|
+
await this.p2pService.notifyOwnCheckpointProposal(proposal.toCore());
|
|
667
647
|
return this.p2pService.propagate(proposal);
|
|
668
648
|
}
|
|
669
649
|
async broadcastCheckpointAttestations(attestations) {
|
|
@@ -676,13 +656,19 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
676
656
|
addOwnCheckpointAttestations(attestations) {
|
|
677
657
|
return this.attestationPool.addOwnCheckpointAttestations(attestations);
|
|
678
658
|
}
|
|
659
|
+
hasBlockProposalsForSlot(slot) {
|
|
660
|
+
return this.attestationPool.hasBlockProposalsForSlot(slot);
|
|
661
|
+
}
|
|
679
662
|
// REVIEW: https://github.com/AztecProtocol/aztec-packages/issues/7963
|
|
680
663
|
// ^ This pattern is not my favorite (md)
|
|
681
664
|
registerBlockProposalHandler(handler) {
|
|
682
665
|
this.p2pService.registerBlockReceivedCallback(handler);
|
|
683
666
|
}
|
|
684
|
-
|
|
685
|
-
this.p2pService.
|
|
667
|
+
registerValidatorCheckpointProposalHandler(handler) {
|
|
668
|
+
this.p2pService.registerValidatorCheckpointReceivedCallback(handler);
|
|
669
|
+
}
|
|
670
|
+
registerAllNodesCheckpointProposalHandler(handler) {
|
|
671
|
+
this.p2pService.registerAllNodesCheckpointReceivedCallback(handler);
|
|
686
672
|
}
|
|
687
673
|
registerDuplicateProposalCallback(callback) {
|
|
688
674
|
this.p2pService.registerDuplicateProposalCallback(callback);
|
|
@@ -690,23 +676,6 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
690
676
|
registerDuplicateAttestationCallback(callback) {
|
|
691
677
|
this.p2pService.registerDuplicateAttestationCallback(callback);
|
|
692
678
|
}
|
|
693
|
-
/**
|
|
694
|
-
* Uses the batched Request Response protocol to request a set of transactions from the network.
|
|
695
|
-
*/ async requestTxsByHash(txHashes, pinnedPeerId) {
|
|
696
|
-
const timeoutMs = 8000; // Longer timeout for now
|
|
697
|
-
const maxRetryAttempts = 10; // Keep retrying within the timeout
|
|
698
|
-
const requests = chunkTxHashesRequest(txHashes);
|
|
699
|
-
const maxPeers = Math.min(Math.ceil(requests.length / 3), 10);
|
|
700
|
-
const txBatches = await this.p2pService.sendBatchRequest(ReqRespSubProtocol.TX, requests, pinnedPeerId, timeoutMs, maxPeers, maxRetryAttempts);
|
|
701
|
-
const txs = txBatches.flat();
|
|
702
|
-
if (txs.length > 0) {
|
|
703
|
-
await this.txPool.addPendingTxs(txs);
|
|
704
|
-
}
|
|
705
|
-
const txHashesStr = txHashes.map((tx)=>tx.toString()).join(', ');
|
|
706
|
-
this.log.debug(`Requested txs ${txHashesStr} (${txs.length} / ${txHashes.length}) from peers`);
|
|
707
|
-
// We return all transactions, even the not found ones to the caller, such they can handle missing items themselves.
|
|
708
|
-
return txs;
|
|
709
|
-
}
|
|
710
679
|
async getPendingTxs(limit, after) {
|
|
711
680
|
if (limit !== undefined && limit <= 0) {
|
|
712
681
|
throw new TypeError('limit must be greater than 0');
|
|
@@ -736,6 +705,14 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
736
705
|
}
|
|
737
706
|
}
|
|
738
707
|
}
|
|
708
|
+
async *iterateEligiblePendingTxs() {
|
|
709
|
+
for (const txHash of (await this.txPool.getEligiblePendingTxHashes())){
|
|
710
|
+
const tx = await this.txPool.getTxByHash(txHash);
|
|
711
|
+
if (tx) {
|
|
712
|
+
yield tx;
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
}
|
|
739
716
|
/**
|
|
740
717
|
* Returns a transaction in the transaction pool by its hash.
|
|
741
718
|
* @param txHash - Hash of the transaction to look for in the pool.
|
|
@@ -754,42 +731,6 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
754
731
|
return this.txPool.hasTxs(txHashes);
|
|
755
732
|
}
|
|
756
733
|
/**
|
|
757
|
-
* Returns transactions in the transaction pool by hash.
|
|
758
|
-
* If a transaction is not in the pool, it will be requested from the network.
|
|
759
|
-
* @param txHashes - Hashes of the transactions to look for.
|
|
760
|
-
* @returns The txs found, or undefined if not found in the order requested.
|
|
761
|
-
*/ async getTxsByHash(txHashes, pinnedPeerId) {
|
|
762
|
-
const txs = await Promise.all(txHashes.map((txHash)=>this.txPool.getTxByHash(txHash)));
|
|
763
|
-
const missingTxHashes = txs.map((tx, index)=>[
|
|
764
|
-
tx,
|
|
765
|
-
index
|
|
766
|
-
]).filter(([tx, _index])=>!tx).map(([_tx, index])=>txHashes[index]);
|
|
767
|
-
if (missingTxHashes.length === 0) {
|
|
768
|
-
return txs;
|
|
769
|
-
}
|
|
770
|
-
const missingTxs = await this.requestTxsByHash(missingTxHashes, pinnedPeerId);
|
|
771
|
-
// TODO: optimize
|
|
772
|
-
// Merge the found txs in order
|
|
773
|
-
const mergingTxs = txHashes.map((txHash)=>{
|
|
774
|
-
// Is it in the txs list from the mempool?
|
|
775
|
-
for (const tx of txs){
|
|
776
|
-
if (tx !== undefined && tx.getTxHash().equals(txHash)) {
|
|
777
|
-
return tx;
|
|
778
|
-
}
|
|
779
|
-
}
|
|
780
|
-
// Is it in the fetched missing txs?
|
|
781
|
-
// Note: this is an O(n^2) operation, but we expect the number of missing txs to be small.
|
|
782
|
-
for (const tx of missingTxs){
|
|
783
|
-
if (tx.getTxHash().equals(txHash)) {
|
|
784
|
-
return tx;
|
|
785
|
-
}
|
|
786
|
-
}
|
|
787
|
-
// Otherwise return undefined
|
|
788
|
-
return undefined;
|
|
789
|
-
});
|
|
790
|
-
return mergingTxs;
|
|
791
|
-
}
|
|
792
|
-
/**
|
|
793
734
|
* Returns an archived transaction in the transaction pool by its hash.
|
|
794
735
|
* @param txHash - Hash of the archived transaction to look for.
|
|
795
736
|
* @returns A single tx or undefined.
|
|
@@ -804,19 +745,20 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
804
745
|
this.#assertIsReady();
|
|
805
746
|
const result = await this.txPool.addPendingTxs([
|
|
806
747
|
tx
|
|
807
|
-
]
|
|
748
|
+
], {
|
|
749
|
+
feeComparisonOnly: true
|
|
750
|
+
});
|
|
808
751
|
if (result.accepted.length === 1) {
|
|
809
752
|
await this.p2pService.propagate(tx);
|
|
810
|
-
|
|
811
|
-
this.log.warn(`Tx ${tx.getTxHash()} not propagated: accepted=${result.accepted.length} ignored=${result.ignored.length} rejected=${result.rejected.length}`);
|
|
753
|
+
return;
|
|
812
754
|
}
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
755
|
+
const txHashStr = tx.getTxHash().toString();
|
|
756
|
+
const reason = result.errors?.get(txHashStr);
|
|
757
|
+
if (reason) {
|
|
758
|
+
this.log.warn(`Tx ${txHashStr} not added to pool: ${reason.message}`);
|
|
759
|
+
throw new TxPoolError(reason);
|
|
760
|
+
}
|
|
761
|
+
this.log.warn(`Tx ${txHashStr} not propagated: accepted=${result.accepted.length} ignored=${result.ignored.length} rejected=${result.rejected.length}`);
|
|
820
762
|
}
|
|
821
763
|
/**
|
|
822
764
|
* Returns whether the given tx hash is flagged as pending or mined.
|
|
@@ -944,17 +886,56 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
944
886
|
}
|
|
945
887
|
/**
|
|
946
888
|
* Updates the tx pool after a chain prune.
|
|
889
|
+
* Detects epoch prunes (checkpoint number changed) and deletes all txs in that case.
|
|
947
890
|
* @param latestBlock - The block ID the chain was pruned to.
|
|
948
|
-
|
|
949
|
-
|
|
891
|
+
* @param newCheckpoint - The checkpoint ID after the prune.
|
|
892
|
+
*/ async handlePruneL2Blocks(latestBlock, newCheckpoint) {
|
|
893
|
+
const deleteAllTxs = this.config.txPoolDeleteTxsAfterReorg && await this.isEpochPrune(newCheckpoint);
|
|
894
|
+
await this.txPool.handlePrunedBlocks(latestBlock, {
|
|
895
|
+
deleteAllTxs
|
|
896
|
+
});
|
|
897
|
+
}
|
|
898
|
+
/**
|
|
899
|
+
* Returns true if the prune is an epoch prune (new checkpoint number is less than old).
|
|
900
|
+
* If the checkpoint number stays the same or increases, the prune is within a checkpoint.
|
|
901
|
+
*/ async isEpochPrune(newCheckpoint) {
|
|
902
|
+
const tips = await this.l2Tips.getL2Tips();
|
|
903
|
+
const oldCheckpointNumber = tips.checkpointed.checkpoint.number;
|
|
904
|
+
if (oldCheckpointNumber <= CheckpointNumber.INITIAL) {
|
|
905
|
+
return false;
|
|
906
|
+
}
|
|
907
|
+
const newCheckpointNumber = newCheckpoint.number;
|
|
908
|
+
// We check that the new checkpoint number is less than the old checkpoint number in order to consider it an epoch prune.
|
|
909
|
+
// To be more certain that it is an epoch prune, we will check that at least 2 checkpoints were removed.
|
|
910
|
+
// This means we should avoid thinking checkpoints removed by L1 re-orgs are epoch prunes
|
|
911
|
+
const thresholdForEpochPrune = CheckpointNumber(oldCheckpointNumber - 2);
|
|
912
|
+
const isEpochPrune = newCheckpointNumber <= thresholdForEpochPrune;
|
|
913
|
+
if (isEpochPrune) {
|
|
914
|
+
this.log.info(`Detected epoch prune to ${newCheckpointNumber}`, {
|
|
915
|
+
oldCheckpointNumber,
|
|
916
|
+
newCheckpointNumber,
|
|
917
|
+
thresholdForEpochPrune
|
|
918
|
+
});
|
|
919
|
+
}
|
|
920
|
+
return isEpochPrune;
|
|
950
921
|
}
|
|
951
922
|
/** Checks if the slot has changed and calls prepareForSlot if so. */ async maybeCallPrepareForSlot() {
|
|
952
|
-
|
|
953
|
-
|
|
923
|
+
// If we have a proposed checkpoint available, we want to prepare the target slot - otherwise we prepare the current slot
|
|
924
|
+
const l2Tips = await this.l2Tips.getL2Tips();
|
|
925
|
+
const hasProposedCheckpoint = l2Tips.proposedCheckpoint.checkpoint.number > l2Tips.checkpointed.checkpoint.number;
|
|
926
|
+
let slot;
|
|
927
|
+
if (this.epochCache.isProposerPipeliningEnabled() && hasProposedCheckpoint) {
|
|
928
|
+
const { targetSlot } = this.epochCache.getTargetAndNextSlot();
|
|
929
|
+
slot = targetSlot;
|
|
930
|
+
} else {
|
|
931
|
+
const { currentSlot } = this.epochCache.getCurrentAndNextSlot();
|
|
932
|
+
slot = currentSlot;
|
|
933
|
+
}
|
|
934
|
+
if (slot <= this.lastSlotProcessed) {
|
|
954
935
|
return;
|
|
955
936
|
}
|
|
956
|
-
this.lastSlotProcessed =
|
|
957
|
-
await this.txPool.prepareForSlot(
|
|
937
|
+
this.lastSlotProcessed = slot;
|
|
938
|
+
await this.txPool.prepareForSlot(slot);
|
|
958
939
|
}
|
|
959
940
|
async startServiceIfSynched() {
|
|
960
941
|
if (this.currentState !== P2PClientState.SYNCHING) {
|
|
@@ -985,8 +966,8 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
985
966
|
this.currentState = newState;
|
|
986
967
|
this.log.debug(`Moved from state ${P2PClientState[oldState]} to ${P2PClientState[this.currentState]}`);
|
|
987
968
|
}
|
|
988
|
-
|
|
989
|
-
return this.p2pService.
|
|
969
|
+
validateTxsReceivedInBlockProposal(txs) {
|
|
970
|
+
return this.p2pService.validateTxsReceivedInBlockProposal(txs);
|
|
990
971
|
}
|
|
991
972
|
/**
|
|
992
973
|
* Protects existing transactions by hash for a given slot.
|
|
@@ -4,13 +4,12 @@ import { createLogger } from '@aztec/foundation/log';
|
|
|
4
4
|
import { sleep } from '@aztec/foundation/sleep';
|
|
5
5
|
import { DateProvider, Timer, executeTimeout } from '@aztec/foundation/timer';
|
|
6
6
|
import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
|
|
7
|
-
import { P2PClientType } from '@aztec/stdlib/p2p';
|
|
8
7
|
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
9
8
|
import { peerIdFromString } from '@libp2p/peer-id';
|
|
9
|
+
import { BatchTxRequesterCollector, SendBatchRequestCollector } from '../../../services/index.js';
|
|
10
10
|
import { RateLimitStatus } from '../../../services/reqresp/rate-limiter/rate_limiter.js';
|
|
11
|
-
import {
|
|
12
|
-
import { AlwaysTrueCircuitVerifier } from '../../../test-helpers/
|
|
13
|
-
import { BENCHMARK_CONSTANTS, InMemoryAttestationPool, InMemoryTxPool, UNLIMITED_RATE_LIMIT_QUOTA, calculateInternalTimeout, createMockEpochCache, createMockWorldStateSynchronizer } from '../../../test-helpers/testbench-utils.js';
|
|
11
|
+
import { RequestTracker } from '../../../services/tx_collection/request_tracker.js';
|
|
12
|
+
import { AlwaysTrueCircuitVerifier, BENCHMARK_CONSTANTS, InMemoryAttestationPool, InMemoryTxPool, UNLIMITED_RATE_LIMIT_QUOTA, calculateInternalTimeout, createMockEpochCache, createMockWorldStateSynchronizer } from '../../../test-helpers/index.js';
|
|
14
13
|
import { createP2PClient } from '../../index.js';
|
|
15
14
|
import { deserializeBlockProposal, deserializeTx, deserializeTxHash } from './proposal_tx_collector_worker_protocol.js';
|
|
16
15
|
let client;
|
|
@@ -83,7 +82,7 @@ async function startClient(config, clientIndex) {
|
|
|
83
82
|
store: kvStore,
|
|
84
83
|
logger
|
|
85
84
|
};
|
|
86
|
-
client = await createP2PClient(
|
|
85
|
+
client = await createP2PClient(config, l2BlockSource, proofVerifier, worldState, epochCache, 'proposal-tx-collector-bench-worker', new DateProvider(), telemetry, deps);
|
|
87
86
|
await client.start();
|
|
88
87
|
installUnlimitedRateLimits();
|
|
89
88
|
for(let i = 0; i < 120; i++){
|
|
@@ -162,11 +161,11 @@ async function runCollector(cmd) {
|
|
|
162
161
|
try {
|
|
163
162
|
if (collectorType === 'batch-requester') {
|
|
164
163
|
const collector = new BatchTxRequesterCollector(p2pService, logger, new DateProvider(), noopTxValidator);
|
|
165
|
-
const fetched = await executeTimeout((_signal)=>collector.collectTxs(parsedTxHashes, parsedProposal, pinnedPeer
|
|
164
|
+
const fetched = await executeTimeout((_signal)=>collector.collectTxs(RequestTracker.create(parsedTxHashes, new Date(Date.now() + internalTimeoutMs)), parsedProposal, pinnedPeer), timeoutMs, ()=>new Error(`Collector timed out after ${timeoutMs}ms`));
|
|
166
165
|
fetchedCount = fetched.length;
|
|
167
166
|
} else {
|
|
168
167
|
const collector = new SendBatchRequestCollector(p2pService, BENCHMARK_CONSTANTS.FIXED_MAX_PEERS, BENCHMARK_CONSTANTS.FIXED_MAX_RETRY_ATTEMPTS);
|
|
169
|
-
const fetched = await executeTimeout((_signal)=>collector.collectTxs(parsedTxHashes, parsedProposal, pinnedPeer
|
|
168
|
+
const fetched = await executeTimeout((_signal)=>collector.collectTxs(RequestTracker.create(parsedTxHashes, new Date(Date.now() + internalTimeoutMs)), parsedProposal, pinnedPeer), timeoutMs, ()=>new Error(`Collector timed out after ${timeoutMs}ms`));
|
|
170
169
|
fetchedCount = fetched.length;
|
|
171
170
|
}
|
|
172
171
|
} catch (err) {
|
|
@@ -189,9 +188,19 @@ async function stopClient() {
|
|
|
189
188
|
txPool = undefined;
|
|
190
189
|
attestationPool = undefined;
|
|
191
190
|
}
|
|
191
|
+
function gracefulExit(code = 0) {
|
|
192
|
+
try {
|
|
193
|
+
if (process.connected) {
|
|
194
|
+
process.disconnect();
|
|
195
|
+
}
|
|
196
|
+
} catch {
|
|
197
|
+
// IPC channel already closed
|
|
198
|
+
}
|
|
199
|
+
setTimeout(()=>process.exit(code), 5000).unref();
|
|
200
|
+
}
|
|
192
201
|
process.on('disconnect', ()=>{
|
|
193
202
|
ipcDisconnected = true;
|
|
194
|
-
void stopClient()
|
|
203
|
+
void stopClient();
|
|
195
204
|
});
|
|
196
205
|
process.on('error', (err)=>{
|
|
197
206
|
if (isIpcDisconnectError(err)) {
|
|
@@ -282,7 +291,7 @@ process.on('message', (msg)=>{
|
|
|
282
291
|
type: 'STOPPED',
|
|
283
292
|
requestId
|
|
284
293
|
});
|
|
285
|
-
|
|
294
|
+
gracefulExit(0);
|
|
286
295
|
break;
|
|
287
296
|
}
|
|
288
297
|
default:
|
|
@@ -298,7 +307,8 @@ process.on('message', (msg)=>{
|
|
|
298
307
|
error: err?.message ?? String(err)
|
|
299
308
|
});
|
|
300
309
|
if (msg.type === 'START') {
|
|
301
|
-
|
|
310
|
+
await stopClient();
|
|
311
|
+
gracefulExit(1);
|
|
302
312
|
}
|
|
303
313
|
}
|
|
304
314
|
})();
|
package/dest/config.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ConfigMappingsType, SecretValue } from '@aztec/foundation/config';
|
|
2
|
-
import { type DataStoreConfig } from '@aztec/kv-store/config';
|
|
3
2
|
import { type AllowedElement, type ChainConfig, type SequencerConfig } from '@aztec/stdlib/config';
|
|
3
|
+
import { type DataStoreConfig } from '@aztec/stdlib/kv-store';
|
|
4
4
|
import { type BatchTxRequesterConfig } from './services/reqresp/batch-tx-requester/config.js';
|
|
5
5
|
import { type P2PReqRespConfig } from './services/reqresp/config.js';
|
|
6
6
|
import { type TxCollectionConfig } from './services/tx_collection/config.js';
|
|
@@ -8,7 +8,15 @@ import { type TxFileStoreConfig } from './services/tx_file_store/config.js';
|
|
|
8
8
|
/**
|
|
9
9
|
* P2P client configuration values.
|
|
10
10
|
*/
|
|
11
|
-
export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, ChainConfig, TxCollectionConfig, TxFileStoreConfig, Pick<SequencerConfig, 'blockDurationMs'> {
|
|
11
|
+
export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, ChainConfig, TxCollectionConfig, TxFileStoreConfig, Pick<SequencerConfig, 'blockDurationMs' | 'expectedBlockProposalsPerSlot' | 'maxTxsPerBlock'> {
|
|
12
|
+
/** Maximum transactions per block for validation. Overrides maxTxsPerBlock for gossip validation when set. */
|
|
13
|
+
validateMaxTxsPerBlock?: number;
|
|
14
|
+
/** Maximum transactions per checkpoint for validation. Used as fallback for maxTxsPerBlock when that is not set. */
|
|
15
|
+
validateMaxTxsPerCheckpoint?: number;
|
|
16
|
+
/** Maximum L2 gas per block for validation. When set, txs exceeding this limit are rejected. */
|
|
17
|
+
validateMaxL2BlockGas?: number;
|
|
18
|
+
/** Maximum DA gas per block for validation. When set, txs exceeding this limit are rejected. */
|
|
19
|
+
validateMaxDABlockGas?: number;
|
|
12
20
|
/** A flag dictating whether the P2P subsystem should be enabled. */
|
|
13
21
|
p2pEnabled: boolean;
|
|
14
22
|
/** The frequency in which to check for new L2 blocks. */
|
|
@@ -21,6 +29,8 @@ export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, Cha
|
|
|
21
29
|
debugDisableColocationPenalty: boolean;
|
|
22
30
|
/** The frequency in which to check for new peers. */
|
|
23
31
|
peerCheckIntervalMS: number;
|
|
32
|
+
/** How long to ban a peer after it fails MAX_DIAL_ATTEMPTS dials. */
|
|
33
|
+
peerFailedBanTimeMs: number;
|
|
24
34
|
/** Size of queue of L2 blocks to store. */
|
|
25
35
|
l2QueueSize: number;
|
|
26
36
|
/** The port for the P2P service. */
|
|
@@ -83,8 +93,8 @@ export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, Cha
|
|
|
83
93
|
preferredPeers: string[];
|
|
84
94
|
/** The maximum possible size of the P2P DB in KB. Overwrites the general dataStoreMapSizeKb. */
|
|
85
95
|
p2pStoreMapSizeKb?: number;
|
|
86
|
-
/**
|
|
87
|
-
|
|
96
|
+
/** Additional entries to extend the default setup allow list. */
|
|
97
|
+
txPublicSetupAllowListExtend: AllowedElement[];
|
|
88
98
|
/** The maximum number of pending txs before evicting lower priority txs. */
|
|
89
99
|
maxPendingTxCount: number;
|
|
90
100
|
/** The node's seen message ID cache size */
|
|
@@ -99,9 +109,7 @@ export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, Cha
|
|
|
99
109
|
p2pMaxFailedAuthAttemptsAllowed: number;
|
|
100
110
|
/** Whether transactions are disabled for this node. This means transactions will be rejected at the RPC and P2P layers. */
|
|
101
111
|
disableTransactions: boolean;
|
|
102
|
-
/**
|
|
103
|
-
dropTransactions: boolean;
|
|
104
|
-
/** The probability that a transaction is discarded. - For testing purposes only */
|
|
112
|
+
/** The probability that a transaction is discarded (0 = disabled). - For testing purposes only */
|
|
105
113
|
dropTransactionsProbability: number;
|
|
106
114
|
/** Whether to delete transactions from the pool after a reorg instead of moving them back to pending. */
|
|
107
115
|
txPoolDeleteTxsAfterReorg: boolean;
|
|
@@ -111,6 +119,10 @@ export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, Cha
|
|
|
111
119
|
fishermanMode: boolean;
|
|
112
120
|
/** Broadcast block proposals even when a conflicting proposal for the same slot already exists in the pool (for testing purposes only). */
|
|
113
121
|
broadcastEquivocatedProposals?: boolean;
|
|
122
|
+
/** Minimum age (ms) a transaction must have been in the pool before it's eligible for block building. */
|
|
123
|
+
minTxPoolAgeMs: number;
|
|
124
|
+
/** Minimum percentage fee increase required to replace an existing tx via RPC (0 = no bump). */
|
|
125
|
+
priceBumpPercentage: bigint;
|
|
114
126
|
}
|
|
115
127
|
export declare const DEFAULT_P2P_PORT = 40400;
|
|
116
128
|
export declare const p2pConfigMappings: ConfigMappingsType<P2PConfig>;
|
|
@@ -144,8 +156,8 @@ export declare const bootnodeConfigMappings: ConfigMappingsType<Pick<{
|
|
|
144
156
|
dialTimeoutMs: unknown;
|
|
145
157
|
disableTransactions: unknown;
|
|
146
158
|
doubleSpendSeverePeerPenaltyWindow: unknown;
|
|
147
|
-
dropTransactions: unknown;
|
|
148
159
|
dropTransactionsProbability: unknown;
|
|
160
|
+
expectedBlockProposalsPerSlot: unknown;
|
|
149
161
|
fishermanMode: unknown;
|
|
150
162
|
gossipsubD: unknown;
|
|
151
163
|
gossipsubDLazy: unknown;
|
|
@@ -166,6 +178,8 @@ export declare const bootnodeConfigMappings: ConfigMappingsType<Pick<{
|
|
|
166
178
|
listenAddress: unknown;
|
|
167
179
|
maxPeerCount: unknown;
|
|
168
180
|
maxPendingTxCount: unknown;
|
|
181
|
+
maxTxsPerBlock: unknown;
|
|
182
|
+
minTxPoolAgeMs: unknown;
|
|
169
183
|
overallRequestTimeoutMs: unknown;
|
|
170
184
|
p2pAllowOnlyValidators: unknown;
|
|
171
185
|
p2pBroadcastPort: unknown;
|
|
@@ -178,10 +192,12 @@ export declare const bootnodeConfigMappings: ConfigMappingsType<Pick<{
|
|
|
178
192
|
p2pPort: unknown;
|
|
179
193
|
p2pStoreMapSizeKb: unknown;
|
|
180
194
|
peerCheckIntervalMS: unknown;
|
|
195
|
+
peerFailedBanTimeMs: unknown;
|
|
181
196
|
peerIdPrivateKey: unknown;
|
|
182
197
|
peerIdPrivateKeyPath: unknown;
|
|
183
198
|
peerPenaltyValues: unknown;
|
|
184
199
|
preferredPeers: unknown;
|
|
200
|
+
priceBumpPercentage: unknown;
|
|
185
201
|
privatePeers: unknown;
|
|
186
202
|
queryForIp: unknown;
|
|
187
203
|
rollupVersion: unknown;
|
|
@@ -192,8 +208,14 @@ export declare const bootnodeConfigMappings: ConfigMappingsType<Pick<{
|
|
|
192
208
|
txCollectionFastMaxParallelRequestsPerNode: unknown;
|
|
193
209
|
txCollectionFastNodeIntervalMs: unknown;
|
|
194
210
|
txCollectionFastNodesTimeoutBeforeReqRespMs: unknown;
|
|
211
|
+
txCollectionFileStoreFastBackoffBaseMs: unknown;
|
|
212
|
+
txCollectionFileStoreFastBackoffMaxMs: unknown;
|
|
195
213
|
txCollectionFileStoreFastDelayMs: unknown;
|
|
214
|
+
txCollectionFileStoreFastWorkerCount: unknown;
|
|
215
|
+
txCollectionFileStoreSlowBackoffBaseMs: unknown;
|
|
216
|
+
txCollectionFileStoreSlowBackoffMaxMs: unknown;
|
|
196
217
|
txCollectionFileStoreSlowDelayMs: unknown;
|
|
218
|
+
txCollectionFileStoreSlowWorkerCount: unknown;
|
|
197
219
|
txCollectionFileStoreUrls: unknown;
|
|
198
220
|
txCollectionMissingTxsCollectorType: unknown;
|
|
199
221
|
txCollectionNodeRpcMaxBatchSize: unknown;
|
|
@@ -207,18 +229,24 @@ export declare const bootnodeConfigMappings: ConfigMappingsType<Pick<{
|
|
|
207
229
|
txFileStoreUploadConcurrency: unknown;
|
|
208
230
|
txFileStoreUrl: unknown;
|
|
209
231
|
txPoolDeleteTxsAfterReorg: unknown;
|
|
210
|
-
|
|
232
|
+
txPublicSetupAllowListExtend: unknown;
|
|
233
|
+
validateMaxDABlockGas: unknown;
|
|
234
|
+
validateMaxL2BlockGas: unknown;
|
|
235
|
+
validateMaxTxsPerBlock: unknown;
|
|
236
|
+
validateMaxTxsPerCheckpoint: unknown;
|
|
211
237
|
}, "bootstrapNodes" | "dataDirectory" | "dataStoreMapSizeKb" | "l1ChainId" | "listenAddress" | "p2pBroadcastPort" | "p2pIp" | "p2pPort" | "peerIdPrivateKey" | "peerIdPrivateKeyPath" | "queryForIp">>;
|
|
212
238
|
/**
|
|
213
239
|
* Parses a string to a list of allowed elements.
|
|
214
|
-
* Each
|
|
215
|
-
* `I:${address}`
|
|
216
|
-
* `
|
|
217
|
-
*
|
|
218
|
-
*
|
|
240
|
+
* Each entry is expected to be of one of the following formats:
|
|
241
|
+
* `I:${address}:${selector}` — instance (contract address) with function selector
|
|
242
|
+
* `C:${classId}:${selector}` — class with function selector
|
|
243
|
+
*
|
|
244
|
+
* An optional flags segment can be appended after the selector:
|
|
245
|
+
* `I:${address}:${selector}:${flags}` or `C:${classId}:${selector}:${flags}`
|
|
246
|
+
* where flags is a `+`-separated list of: `os` (onlySelf), `rn` (rejectNullMsgSender), `cl=N` (calldataLength).
|
|
219
247
|
*
|
|
220
248
|
* @param value The string to parse
|
|
221
249
|
* @returns A list of allowed elements
|
|
222
250
|
*/
|
|
223
251
|
export declare function parseAllowList(value: string): AllowedElement[];
|
|
224
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQUN2QixXQUFXLEVBU1osTUFBTSwwQkFBMEIsQ0FBQztBQUlsQyxPQUFPLEVBQ0wsS0FBSyxjQUFjLEVBQ25CLEtBQUssV0FBVyxFQUNoQixLQUFLLGVBQWUsRUFHckIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXNCLE1BQU0sd0JBQXdCLENBQUM7QUFFbEYsT0FBTyxFQUNMLEtBQUssc0JBQXNCLEVBRTVCLE1BQU0saURBQWlELENBQUM7QUFDekQsT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQTRCLE1BQU0sOEJBQThCLENBQUM7QUFDL0YsT0FBTyxFQUFFLEtBQUssa0JBQWtCLEVBQThCLE1BQU0sb0NBQW9DLENBQUM7QUFDekcsT0FBTyxFQUFFLEtBQUssaUJBQWlCLEVBQTZCLE1BQU0sb0NBQW9DLENBQUM7QUFFdkc7O0dBRUc7QUFDSCxNQUFNLFdBQVcsU0FDZixTQUFRLGdCQUFnQixFQUN0QixzQkFBc0IsRUFDdEIsV0FBVyxFQUNYLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsSUFBSSxDQUFDLGVBQWUsRUFBRSxpQkFBaUIsR0FBRywrQkFBK0IsR0FBRyxnQkFBZ0IsQ0FBQztJQUMvRiw4R0FBOEc7SUFDOUcsc0JBQXNCLENBQUMsRUFBRSxNQUFNLENBQUM7SUFFaEMsb0hBQW9IO0lBQ3BILDJCQUEyQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBRXJDLGdHQUFnRztJQUNoRyxxQkFBcUIsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUUvQixnR0FBZ0c7SUFDaEcscUJBQXFCLENBQUMsRUFBRSxNQUFNLENBQUM7SUFFL0Isb0VBQW9FO0lBQ3BFLFVBQVUsRUFBRSxPQUFPLENBQUM7SUFFcEIseURBQXlEO0lBQ3pELG9CQUFv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
|
package/dest/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,WAAW,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|