@aztec/p2p 0.0.1-commit.f295ac2 → 0.0.1-commit.fc805bf
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 +1 -1
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +6 -5
- package/dest/client/p2p_client.d.ts +1 -1
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +9 -2
- 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 +8 -2
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +2 -0
- 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/tx_pool/aztec_kv_tx_pool.d.ts +3 -3
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +3 -2
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +3 -2
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +3 -3
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +8 -1
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +3 -3
- 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/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 +3 -3
- 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/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 +5 -4
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.js +3 -2
- 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 +3 -2
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.js +3 -2
- 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/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 +3 -2
- 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 +3 -2
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/timestamp_validator.js +2 -2
- 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 +13 -1
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +39 -0
- package/dest/services/encoding.d.ts +1 -1
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +2 -3
- 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 +14 -3
- package/dest/services/libp2p/libp2p_service.d.ts +13 -7
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +60 -51
- 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 +8 -2
- 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/interface.d.ts +5 -3
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +2 -2
- 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 +5 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +1 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +16 -3
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +18 -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 +43 -13
- 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 +58 -22
- package/dest/services/service.d.ts +4 -1
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +4 -1
- package/dest/services/tx_collection/config.d.ts.map +1 -1
- package/dest/services/tx_collection/config.js +9 -1
- package/dest/services/tx_collection/fast_tx_collection.d.ts +6 -4
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/fast_tx_collection.js +16 -5
- package/dest/services/tx_collection/index.d.ts +2 -1
- package/dest/services/tx_collection/index.d.ts.map +1 -1
- package/dest/services/tx_collection/index.js +1 -0
- package/dest/services/tx_collection/instrumentation.d.ts +1 -1
- package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
- package/dest/services/tx_collection/instrumentation.js +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 +50 -0
- package/dest/services/tx_collection/slow_tx_collection.d.ts +3 -3
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection.d.ts +8 -8
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection.js +5 -5
- package/dest/services/tx_provider.d.ts +3 -3
- package/dest/services/tx_provider.d.ts.map +1 -1
- 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/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 +158 -0
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
- package/dest/test-helpers/testbench-utils.js +297 -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 +212 -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 +14 -14
- package/src/bootstrap/bootstrap.ts +7 -4
- package/src/client/factory.ts +6 -10
- package/src/client/p2p_client.ts +14 -7
- 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 +6 -1
- package/src/mem_pools/instrumentation.ts +2 -1
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +2 -2
- package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +2 -1
- package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +2 -1
- package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +10 -7
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +4 -2
- package/src/msg_validators/attestation_validator/attestation_validator.ts +26 -14
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +14 -8
- 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/archive_cache.ts +3 -3
- package/src/msg_validators/tx_validator/block_header_validator.ts +6 -5
- package/src/msg_validators/tx_validator/data_validator.ts +6 -2
- package/src/msg_validators/tx_validator/double_spend_validator.ts +4 -3
- package/src/msg_validators/tx_validator/factory.ts +64 -23
- package/src/msg_validators/tx_validator/gas_validator.ts +9 -3
- 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 +6 -3
- 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 +45 -0
- package/src/services/encoding.ts +2 -3
- package/src/services/libp2p/instrumentation.ts +15 -2
- package/src/services/libp2p/libp2p_service.ts +99 -73
- package/src/services/peer-manager/metrics.ts +21 -4
- package/src/services/peer-manager/peer_scoring.ts +4 -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/interface.ts +5 -2
- package/src/services/reqresp/metrics.ts +34 -9
- package/src/services/reqresp/protocols/block_txs/bitvector.ts +7 -0
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +18 -4
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +51 -9
- package/src/services/reqresp/reqresp.ts +66 -19
- package/src/services/service.ts +4 -0
- package/src/services/tx_collection/config.ts +15 -1
- package/src/services/tx_collection/fast_tx_collection.ts +36 -13
- package/src/services/tx_collection/index.ts +5 -0
- package/src/services/tx_collection/instrumentation.ts +11 -2
- package/src/services/tx_collection/proposal_tx_collector.ts +114 -0
- package/src/services/tx_collection/slow_tx_collection.ts +2 -2
- package/src/services/tx_collection/tx_collection.ts +8 -8
- package/src/services/tx_provider.ts +2 -2
- package/src/services/tx_provider_instrumentation.ts +11 -5
- package/src/test-helpers/index.ts +2 -0
- package/src/test-helpers/test_tx_provider.ts +64 -0
- package/src/test-helpers/testbench-utils.ts +374 -0
- package/src/testbench/p2p_client_testbench_worker.ts +321 -126
- package/src/testbench/worker_client_manager.ts +304 -47
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/batch-tx-requester/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,6BAA6B,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAEjG,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAChE;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IAC9C,kBAAkB,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACnD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACjD,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAExC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;IAC7C,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACtD,aAAa,IAAI,EAAE,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,sDAAsD;IACtD,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,GAAG,mBAAmB,CAAC,CAAC;IAC1E,gDAAgD;IAChD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,uCAAuC,CAAC,CAAC;IACpF,sDAAsD;IACtD,iBAAiB,EAAE,6BAA6B,CAAC;IACjD,wCAAwC;IACxC,WAAW,EAAE,cAAc,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,4GAA4G;IAC5G,WAAW,CAAC,EAAE,wBAAwB,CAAC;CACxC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type Tx, TxHash } from '@aztec/stdlib/tx';
|
|
2
|
+
import type { PeerId } from '@libp2p/interface';
|
|
3
|
+
import type { ITxMetadataCollection } from './interface.js';
|
|
4
|
+
export declare class MissingTxMetadata {
|
|
5
|
+
readonly txHash: TxHash;
|
|
6
|
+
fetched: boolean;
|
|
7
|
+
requestedCount: number;
|
|
8
|
+
inFlightCount: number;
|
|
9
|
+
tx: Tx | undefined;
|
|
10
|
+
readonly peers: Set<string>;
|
|
11
|
+
constructor(txHash: TxHash, fetched?: boolean, requestedCount?: number, inFlightCount?: number, tx?: Tx | undefined, peers?: Set<string>);
|
|
12
|
+
markAsRequested(): void;
|
|
13
|
+
markInFlight(): void;
|
|
14
|
+
markNotInFlight(): void;
|
|
15
|
+
isInFlight(): boolean;
|
|
16
|
+
markAsFetched(peerId: PeerId, tx: Tx): boolean;
|
|
17
|
+
toString(): `0x${string}`;
|
|
18
|
+
}
|
|
19
|
+
export declare class MissingTxMetadataCollection extends Map<string, MissingTxMetadata> implements ITxMetadataCollection {
|
|
20
|
+
private readonly txBatchSize;
|
|
21
|
+
constructor(entries?: readonly (readonly [string, MissingTxMetadata])[] | null, txBatchSize?: number);
|
|
22
|
+
getSortedByRequestedCountAsc(txs: string[]): MissingTxMetadata[];
|
|
23
|
+
getPrioritizingNotInFlightAndLowerRequestCount(txs: string[]): MissingTxMetadata[];
|
|
24
|
+
getFetchedTxHashes(): Set<string>;
|
|
25
|
+
getMissingTxHashes(): Set<string>;
|
|
26
|
+
getInFlightTxHashes(): Set<string>;
|
|
27
|
+
getFetchedTxs(): Tx[];
|
|
28
|
+
getTxsPeerHas(peer: PeerId): Set<string>;
|
|
29
|
+
getTxsToRequestFromThePeer(peer: PeerId): TxHash[];
|
|
30
|
+
markRequested(txHash: TxHash): void;
|
|
31
|
+
markInFlightBySmartPeer(txHash: TxHash): void;
|
|
32
|
+
markNotInFlightBySmartPeer(txHash: TxHash): void;
|
|
33
|
+
alreadyFetched(txHash: TxHash): boolean;
|
|
34
|
+
markFetched(peerId: PeerId, tx: Tx): boolean;
|
|
35
|
+
markPeerHas(peerId: PeerId, txHash: TxHash[]): void;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzc2luZ190eHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL2JhdGNoLXR4LXJlcXVlc3Rlci9taXNzaW5nX3R4cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHaEQsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RCxxQkFBYSxpQkFBaUI7YUFFVixNQUFNLEVBQUUsTUFBTTtJQUN2QixPQUFPO0lBQ1AsY0FBYztJQUNkLGFBQWE7SUFDYixFQUFFLEVBQUUsRUFBRSxHQUFHLFNBQVM7YUFDVCxLQUFLO0lBTnZCLFlBQ2tCLE1BQU0sRUFBRSxNQUFNLEVBQ3ZCLE9BQU8sVUFBUSxFQUNmLGNBQWMsU0FBSSxFQUNsQixhQUFhLFNBQUksRUFDakIsRUFBRSxHQUFFLEVBQUUsR0FBRyxTQUFxQixFQUNyQixLQUFLLGNBQW9CLEVBQ3ZDO0lBRUcsZUFBZSxTQUVyQjtJQUVNLFlBQVksU0FFbEI7SUFFTSxlQUFlLFNBRXJCO0lBRU0sVUFBVSxJQUFJLE9BQU8sQ0FFM0I7SUFHTSxhQUFhLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FXcEQ7SUFFTSxRQUFRLGtCQUVkO0NBQ0Y7QUFPRCxxQkFBYSwyQkFBNEIsU0FBUSxHQUFHLENBQUMsTUFBTSxFQUFFLGlCQUFpQixDQUFFLFlBQVcscUJBQXFCO0lBRzVHLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVztJQUY5QixZQUNFLE9BQU8sQ0FBQyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLGlCQUFpQixDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFDakQsV0FBVyxHQUFFLE1BQWlELEVBR2hGO0lBQ00sNEJBQTRCLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLGlCQUFpQixFQUFFLENBSXRFO0lBRU0sOENBQThDLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLGlCQUFpQixFQUFFLENBZXhGO0lBRU0sa0JBQWtCLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQU12QztJQUVNLGtCQUFrQixJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FNdkM7SUFFTSxtQkFBbUIsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLENBTXhDO0lBRU0sYUFBYSxJQUFJLEVBQUUsRUFBRSxDQU0zQjtJQUVNLGFBQWEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FXOUM7SUFFTSwwQkFBMEIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQXVCeEQ7SUFFTSxhQUFhLENBQUMsTUFBTSxFQUFFLE1BQU0sUUFFbEM7SUFPTSx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxRQUU1QztJQU1NLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxNQUFNLFFBRS9DO0lBRU0sY0FBYyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUU3QztJQUVNLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQWFsRDtJQUVNLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFVbEQ7Q0FDRiJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"missing_txs.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/batch-tx-requester/missing_txs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,qBAAa,iBAAiB;aAEV,MAAM,EAAE,MAAM;IACvB,OAAO;IACP,cAAc;IACd,aAAa;IACb,EAAE,EAAE,EAAE,GAAG,SAAS;aACT,KAAK;IANvB,YACkB,MAAM,EAAE,MAAM,EACvB,OAAO,UAAQ,EACf,cAAc,SAAI,EAClB,aAAa,SAAI,EACjB,EAAE,GAAE,EAAE,GAAG,SAAqB,EACrB,KAAK,cAAoB,EACvC;IAEG,eAAe,SAErB;IAEM,YAAY,SAElB;IAEM,eAAe,SAErB;IAEM,UAAU,IAAI,OAAO,CAE3B;IAGM,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,CAWpD;IAEM,QAAQ,kBAEd;CACF;AAOD,qBAAa,2BAA4B,SAAQ,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAE,YAAW,qBAAqB;IAG5G,OAAO,CAAC,QAAQ,CAAC,WAAW;IAF9B,YACE,OAAO,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,IAAI,EACjD,WAAW,GAAE,MAAiD,EAGhF;IACM,4BAA4B,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAItE;IAEM,8CAA8C,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAexF;IAEM,kBAAkB,IAAI,GAAG,CAAC,MAAM,CAAC,CAMvC;IAEM,kBAAkB,IAAI,GAAG,CAAC,MAAM,CAAC,CAMvC;IAEM,mBAAmB,IAAI,GAAG,CAAC,MAAM,CAAC,CAMxC;IAEM,aAAa,IAAI,EAAE,EAAE,CAM3B;IAEM,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAW9C;IAEM,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAuBxD;IAEM,aAAa,CAAC,MAAM,EAAE,MAAM,QAElC;IAOM,uBAAuB,CAAC,MAAM,EAAE,MAAM,QAE5C;IAMM,0BAA0B,CAAC,MAAM,EAAE,MAAM,QAE/C;IAEM,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7C;IAEM,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,CAalD;IAEM,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAUlD;CACF"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { TxHash } from '@aztec/stdlib/tx';
|
|
2
|
+
import { DEFAULT_BATCH_TX_REQUESTER_TX_BATCH_SIZE } from './config.js';
|
|
3
|
+
export class MissingTxMetadata {
|
|
4
|
+
txHash;
|
|
5
|
+
fetched;
|
|
6
|
+
requestedCount;
|
|
7
|
+
inFlightCount;
|
|
8
|
+
tx;
|
|
9
|
+
peers;
|
|
10
|
+
constructor(txHash, fetched = false, requestedCount = 0, inFlightCount = 0, tx = undefined, peers = new Set()){
|
|
11
|
+
this.txHash = txHash;
|
|
12
|
+
this.fetched = fetched;
|
|
13
|
+
this.requestedCount = requestedCount;
|
|
14
|
+
this.inFlightCount = inFlightCount;
|
|
15
|
+
this.tx = tx;
|
|
16
|
+
this.peers = peers;
|
|
17
|
+
}
|
|
18
|
+
markAsRequested() {
|
|
19
|
+
this.requestedCount++;
|
|
20
|
+
}
|
|
21
|
+
markInFlight() {
|
|
22
|
+
this.inFlightCount++;
|
|
23
|
+
}
|
|
24
|
+
markNotInFlight() {
|
|
25
|
+
this.inFlightCount = Math.max(--this.inFlightCount, 0);
|
|
26
|
+
}
|
|
27
|
+
isInFlight() {
|
|
28
|
+
return this.inFlightCount > 0;
|
|
29
|
+
}
|
|
30
|
+
//Returns true if this is the first time we mark it as fetched
|
|
31
|
+
markAsFetched(peerId, tx) {
|
|
32
|
+
if (this.fetched) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
this.fetched = true;
|
|
36
|
+
this.tx = tx;
|
|
37
|
+
this.peers.add(peerId.toString());
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
toString() {
|
|
41
|
+
return this.txHash.toString();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/*
|
|
45
|
+
* Single source or truth for transactions we are fetching
|
|
46
|
+
* This could be better optimized but given expected count of missing txs (N < 100)
|
|
47
|
+
* At the moment there is no need for it. And benefit is that we have everything in single store
|
|
48
|
+
* */ export class MissingTxMetadataCollection extends Map {
|
|
49
|
+
txBatchSize;
|
|
50
|
+
constructor(entries, txBatchSize = DEFAULT_BATCH_TX_REQUESTER_TX_BATCH_SIZE){
|
|
51
|
+
super(entries), this.txBatchSize = txBatchSize;
|
|
52
|
+
}
|
|
53
|
+
getSortedByRequestedCountAsc(txs) {
|
|
54
|
+
return Array.from(this.values().filter((txMeta)=>txs.includes(txMeta.txHash.toString()))).sort((a, b)=>a.requestedCount - b.requestedCount);
|
|
55
|
+
}
|
|
56
|
+
getPrioritizingNotInFlightAndLowerRequestCount(txs) {
|
|
57
|
+
const filtered = Array.from(this.values()).filter((txMeta)=>txs.includes(txMeta.txHash.toString()));
|
|
58
|
+
const [notInFlight, inFlight] = filtered.reduce((buckets, tx)=>{
|
|
59
|
+
tx.isInFlight() ? buckets[1].push(tx) : buckets[0].push(tx);
|
|
60
|
+
return buckets;
|
|
61
|
+
}, [
|
|
62
|
+
[],
|
|
63
|
+
[]
|
|
64
|
+
]);
|
|
65
|
+
notInFlight.sort((a, b)=>a.requestedCount - b.requestedCount);
|
|
66
|
+
inFlight.sort((a, b)=>a.inFlightCount - b.inFlightCount);
|
|
67
|
+
return [
|
|
68
|
+
...notInFlight,
|
|
69
|
+
...inFlight
|
|
70
|
+
];
|
|
71
|
+
}
|
|
72
|
+
getFetchedTxHashes() {
|
|
73
|
+
return new Set(this.values().filter((t)=>t.fetched).map((t)=>t.txHash.toString()));
|
|
74
|
+
}
|
|
75
|
+
getMissingTxHashes() {
|
|
76
|
+
return new Set(this.values().filter((t)=>!t.fetched).map((t)=>t.txHash.toString()));
|
|
77
|
+
}
|
|
78
|
+
getInFlightTxHashes() {
|
|
79
|
+
return new Set(this.values().filter((t)=>t.isInFlight()).map((t)=>t.txHash.toString()));
|
|
80
|
+
}
|
|
81
|
+
getFetchedTxs() {
|
|
82
|
+
return Array.from(this.values().map((t)=>t.tx).filter((t)=>!!t));
|
|
83
|
+
}
|
|
84
|
+
getTxsPeerHas(peer) {
|
|
85
|
+
const peerIdStr = peer.toString();
|
|
86
|
+
const txsPeerHas = new Set();
|
|
87
|
+
this.values().forEach((txMeta)=>{
|
|
88
|
+
if (txMeta.peers.has(peerIdStr)) {
|
|
89
|
+
txsPeerHas.add(txMeta.txHash.toString());
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
return txsPeerHas;
|
|
93
|
+
}
|
|
94
|
+
getTxsToRequestFromThePeer(peer) {
|
|
95
|
+
const txsPeerHas = this.getTxsPeerHas(peer);
|
|
96
|
+
const fetchedTxs = this.getFetchedTxHashes();
|
|
97
|
+
const txsToRequest = txsPeerHas.difference(fetchedTxs);
|
|
98
|
+
if (txsToRequest.size >= this.txBatchSize) {
|
|
99
|
+
return this.getPrioritizingNotInFlightAndLowerRequestCount(Array.from(txsToRequest)).map((t)=>t.txHash).slice(0, this.txBatchSize);
|
|
100
|
+
}
|
|
101
|
+
// Otherwise fill the txs to request till txBatchSize with random txs we are missing
|
|
102
|
+
// Who knows, maybe we get lucky and peer received these txs in the meantime
|
|
103
|
+
const countToFill = this.txBatchSize - txsToRequest.size;
|
|
104
|
+
const txsToFill = this.getPrioritizingNotInFlightAndLowerRequestCount(Array.from(this.getMissingTxHashes().difference(txsToRequest))).slice(0, countToFill).map((t)=>t.txHash);
|
|
105
|
+
return [
|
|
106
|
+
...Array.from(txsToRequest).map((t)=>TxHash.fromString(t)),
|
|
107
|
+
...txsToFill
|
|
108
|
+
];
|
|
109
|
+
}
|
|
110
|
+
markRequested(txHash) {
|
|
111
|
+
this.get(txHash.toString())?.markAsRequested();
|
|
112
|
+
}
|
|
113
|
+
/*
|
|
114
|
+
* This should be called only when requesting tx from smart peer
|
|
115
|
+
* Because the smart peer should return this tx, whereas
|
|
116
|
+
* "dumb" peer might return it, or might not - we don't know
|
|
117
|
+
* */ markInFlightBySmartPeer(txHash) {
|
|
118
|
+
this.get(txHash.toString())?.markInFlight();
|
|
119
|
+
}
|
|
120
|
+
/*
|
|
121
|
+
* This should be called only when requesting tx from smart peer
|
|
122
|
+
* Because the smart peer should return this tx, whereas
|
|
123
|
+
* "dumb" peer might return it, or might not - we don't know*/ markNotInFlightBySmartPeer(txHash) {
|
|
124
|
+
this.get(txHash.toString())?.markNotInFlight();
|
|
125
|
+
}
|
|
126
|
+
alreadyFetched(txHash) {
|
|
127
|
+
return this.get(txHash.toString())?.fetched ?? false;
|
|
128
|
+
}
|
|
129
|
+
markFetched(peerId, tx) {
|
|
130
|
+
const txHashStr = tx.txHash.toString();
|
|
131
|
+
const txMeta = this.get(txHashStr);
|
|
132
|
+
if (!txMeta) {
|
|
133
|
+
//TODO: what to do about peer which sent txs we didn't request?
|
|
134
|
+
// 1. don't request from it in the scope of this batch request
|
|
135
|
+
// 2. ban it immediately?
|
|
136
|
+
// 3. track it and ban it?
|
|
137
|
+
//
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
return txMeta.markAsFetched(peerId, tx);
|
|
141
|
+
}
|
|
142
|
+
markPeerHas(peerId, txHash) {
|
|
143
|
+
const peerIdStr = peerId.toString();
|
|
144
|
+
txHash.map((t)=>t.toString()).forEach((txh)=>{
|
|
145
|
+
const txMeta = this.get(txh);
|
|
146
|
+
if (txMeta) {
|
|
147
|
+
txMeta.peers.add(peerIdStr);
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { DateProvider } from '@aztec/foundation/timer';
|
|
2
|
+
import type { PeerErrorSeverity } from '@aztec/stdlib/p2p';
|
|
3
|
+
import type { PeerId } from '@libp2p/interface';
|
|
4
|
+
import type { IPeerPenalizer } from './interface.js';
|
|
5
|
+
export declare const RATE_LIMIT_EXCEEDED_PEER_CACHE_TTL = 1000;
|
|
6
|
+
export interface IPeerCollection {
|
|
7
|
+
getAllPeers(): Set<string>;
|
|
8
|
+
getSmartPeers(): Set<string>;
|
|
9
|
+
markPeerSmart(peerId: PeerId): void;
|
|
10
|
+
getSmartPeersToQuery(): Array<string>;
|
|
11
|
+
getDumbPeersToQuery(): Array<string>;
|
|
12
|
+
thereAreSomeDumbRatelimitExceededPeers(): boolean;
|
|
13
|
+
penalisePeer(peerId: PeerId, severity: PeerErrorSeverity): void;
|
|
14
|
+
unMarkPeerAsBad(peerId: PeerId): void;
|
|
15
|
+
getBadPeers(): Set<string>;
|
|
16
|
+
markPeerInFlight(peerId: PeerId): void;
|
|
17
|
+
unMarkPeerInFlight(peerId: PeerId): void;
|
|
18
|
+
markPeerRateLimitExceeded(peerId: PeerId): void;
|
|
19
|
+
getRateLimitExceededPeers(): Set<string>;
|
|
20
|
+
getPeerRateLimitDelayMs(peerId: PeerId): number | undefined;
|
|
21
|
+
getNextDumbPeerAvailabilityDelayMs(): number | undefined;
|
|
22
|
+
getNextSmartPeerAvailabilityDelayMs(): number | undefined;
|
|
23
|
+
}
|
|
24
|
+
export declare class PeerCollection implements IPeerCollection {
|
|
25
|
+
private readonly pinnedPeerId;
|
|
26
|
+
private readonly dateProvider;
|
|
27
|
+
private readonly badPeerThreshold;
|
|
28
|
+
private readonly peerPenalizer?;
|
|
29
|
+
private readonly peers;
|
|
30
|
+
private readonly smartPeers;
|
|
31
|
+
private readonly inFlightPeers;
|
|
32
|
+
private readonly rateLimitExceededPeers;
|
|
33
|
+
private readonly peerPenaltyCounters;
|
|
34
|
+
private readonly badPeers;
|
|
35
|
+
constructor(initialPeers: PeerId[], pinnedPeerId: PeerId | undefined, dateProvider: DateProvider, badPeerThreshold?: number, peerPenalizer?: IPeerPenalizer | undefined);
|
|
36
|
+
getAllPeers(): Set<string>;
|
|
37
|
+
getSmartPeers(): Set<string>;
|
|
38
|
+
markPeerSmart(peerId: PeerId): void;
|
|
39
|
+
getSmartPeersToQuery(): Array<string>;
|
|
40
|
+
getDumbPeersToQuery(): Array<string>;
|
|
41
|
+
thereAreSomeDumbRatelimitExceededPeers(): boolean;
|
|
42
|
+
markPeerInFlight(peerId: PeerId): void;
|
|
43
|
+
unMarkPeerInFlight(peerId: PeerId): void;
|
|
44
|
+
markPeerRateLimitExceeded(peerId: PeerId): void;
|
|
45
|
+
getRateLimitExceededPeers(): Set<string>;
|
|
46
|
+
penalisePeer(peerId: PeerId, severity: PeerErrorSeverity): void;
|
|
47
|
+
unMarkPeerAsBad(peerId: PeerId): void;
|
|
48
|
+
getBadPeers(): Set<string>;
|
|
49
|
+
getPeerRateLimitDelayMs(peerId: PeerId): number | undefined;
|
|
50
|
+
getNextDumbPeerAvailabilityDelayMs(): number | undefined;
|
|
51
|
+
getNextSmartPeerAvailabilityDelayMs(): number | undefined;
|
|
52
|
+
private getNextRateLimitDelayMs;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVlcl9jb2xsZWN0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvcmVxcmVzcC9iYXRjaC10eC1yZXF1ZXN0ZXIvcGVlcl9jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFM0QsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHaEQsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsZUFBTyxNQUFNLGtDQUFrQyxPQUFPLENBQUM7QUFFdkQsTUFBTSxXQUFXLGVBQWU7SUFDOUIsV0FBVyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQixhQUFhLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdCLGFBQWEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNwQyxvQkFBb0IsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsbUJBQW1CLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLHNDQUFzQyxJQUFJLE9BQU8sQ0FBQztJQUNsRCxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBQ2hFLGVBQWUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQztJQUN0QyxXQUFXLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNCLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3ZDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3pDLHlCQUF5QixDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ2hELHlCQUF5QixJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6Qyx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDNUQsa0NBQWtDLElBQUksTUFBTSxHQUFHLFNBQVMsQ0FBQztJQUN6RCxtQ0FBbUMsSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDO0NBQzNEO0FBRUQscUJBQWEsY0FBZSxZQUFXLGVBQWU7SUFXbEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZO0lBQzdCLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWTtJQUM3QixPQUFPLENBQUMsUUFBUSxDQUFDLGdCQUFnQjtJQUNqQyxPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztJQWJqQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUV2QixPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBcUI7SUFDaEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQXFCO0lBQ25ELE9BQU8sQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQTZCO0lBQ3BFLE9BQU8sQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQTZCO0lBQ2pFLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFxQjtJQUU5QyxZQUNFLFlBQVksRUFBRSxNQUFNLEVBQUUsRUFDTCxZQUFZLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFDaEMsWUFBWSxFQUFFLFlBQVksRUFDMUIsZ0JBQWdCLEdBQUUsTUFBc0QsRUFDeEUsYUFBYSxDQUFDLDRCQUFnQixFQVdoRDtJQUVNLFdBQVcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLENBRWhDO0lBRU0sYUFBYSxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FFbEM7SUFFTSxhQUFhLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxJQUFJLENBRXpDO0lBRU0sb0JBQW9CLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUkzQztJQUVNLG1CQUFtQixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FNMUM7SUFFTSxzQ0FBc0MsSUFBSSxPQUFPLENBS3ZEO0lBRU0sZ0JBQWdCLENBQUMsTUFBTSxFQUFFLE1BQU0sUUFFckM7SUFFTSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxRQU12QztJQUVNLHlCQUF5QixDQUFDLE1BQU0sRUFBRSxNQUFNLFFBRzlDO0lBRU0seUJBQXlCLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQWE5QztJQUVNLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsR0FBRyxJQUFJLENBUXJFO0lBRU0sZUFBZSxDQUFDLE1BQU0sRUFBRSxNQUFNLFFBSXBDO0lBRU0sV0FBVyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FFaEM7SUFFTSx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE1BQU0sR0FBRyxTQUFTLENBZWpFO0lBRU0sa0NBQWtDLElBQUksTUFBTSxHQUFHLFNBQVMsQ0FXOUQ7SUFFTSxtQ0FBbUMsSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUsvRDtJQUVELE9BQU8sQ0FBQyx1QkFBdUI7Q0EwQmhDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peer_collection.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/batch-tx-requester/peer_collection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,eAAO,MAAM,kCAAkC,OAAO,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC9B,WAAW,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,aAAa,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,oBAAoB,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IACtC,mBAAmB,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,sCAAsC,IAAI,OAAO,CAAC;IAClD,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAChE,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,WAAW,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,yBAAyB,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IACzC,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC5D,kCAAkC,IAAI,MAAM,GAAG,SAAS,CAAC;IACzD,mCAAmC,IAAI,MAAM,GAAG,SAAS,CAAC;CAC3D;AAED,qBAAa,cAAe,YAAW,eAAe;IAWlD,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IAbjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;IAEvB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA6B;IACpE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA6B;IACjE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAE9C,YACE,YAAY,EAAE,MAAM,EAAE,EACL,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,YAAY,EAAE,YAAY,EAC1B,gBAAgB,GAAE,MAAsD,EACxE,aAAa,CAAC,4BAAgB,EAWhD;IAEM,WAAW,IAAI,GAAG,CAAC,MAAM,CAAC,CAEhC;IAEM,aAAa,IAAI,GAAG,CAAC,MAAM,CAAC,CAElC;IAEM,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAEzC;IAEM,oBAAoB,IAAI,KAAK,CAAC,MAAM,CAAC,CAI3C;IAEM,mBAAmB,IAAI,KAAK,CAAC,MAAM,CAAC,CAM1C;IAEM,sCAAsC,IAAI,OAAO,CAKvD;IAEM,gBAAgB,CAAC,MAAM,EAAE,MAAM,QAErC;IAEM,kBAAkB,CAAC,MAAM,EAAE,MAAM,QAMvC;IAEM,yBAAyB,CAAC,MAAM,EAAE,MAAM,QAG9C;IAEM,yBAAyB,IAAI,GAAG,CAAC,MAAM,CAAC,CAa9C;IAEM,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAQrE;IAEM,eAAe,CAAC,MAAM,EAAE,MAAM,QAIpC;IAEM,WAAW,IAAI,GAAG,CAAC,MAAM,CAAC,CAEhC;IAEM,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAejE;IAEM,kCAAkC,IAAI,MAAM,GAAG,SAAS,CAW9D;IAEM,mCAAmC,IAAI,MAAM,GAAG,SAAS,CAK/D;IAED,OAAO,CAAC,uBAAuB;CA0BhC"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { DEFAULT_BATCH_TX_REQUESTER_BAD_PEER_THRESHOLD } from './config.js';
|
|
2
|
+
export const RATE_LIMIT_EXCEEDED_PEER_CACHE_TTL = 1000; // 1s
|
|
3
|
+
export class PeerCollection {
|
|
4
|
+
pinnedPeerId;
|
|
5
|
+
dateProvider;
|
|
6
|
+
badPeerThreshold;
|
|
7
|
+
peerPenalizer;
|
|
8
|
+
peers;
|
|
9
|
+
smartPeers;
|
|
10
|
+
inFlightPeers;
|
|
11
|
+
rateLimitExceededPeers;
|
|
12
|
+
peerPenaltyCounters;
|
|
13
|
+
badPeers;
|
|
14
|
+
constructor(initialPeers, pinnedPeerId, dateProvider, badPeerThreshold = DEFAULT_BATCH_TX_REQUESTER_BAD_PEER_THRESHOLD, peerPenalizer){
|
|
15
|
+
this.pinnedPeerId = pinnedPeerId;
|
|
16
|
+
this.dateProvider = dateProvider;
|
|
17
|
+
this.badPeerThreshold = badPeerThreshold;
|
|
18
|
+
this.peerPenalizer = peerPenalizer;
|
|
19
|
+
this.smartPeers = new Set();
|
|
20
|
+
this.inFlightPeers = new Set();
|
|
21
|
+
this.rateLimitExceededPeers = new Map();
|
|
22
|
+
this.peerPenaltyCounters = new Map();
|
|
23
|
+
this.badPeers = new Set();
|
|
24
|
+
this.peers = new Set(initialPeers.map((peer)=>peer.toString()));
|
|
25
|
+
// Pinned peer is treaded specially, always mark it as in-flight
|
|
26
|
+
// and never return it as part of smart/dumb peers
|
|
27
|
+
if (this.pinnedPeerId) {
|
|
28
|
+
const peerIdStr = this.pinnedPeerId.toString();
|
|
29
|
+
this.inFlightPeers.add(peerIdStr);
|
|
30
|
+
this.peers.delete(peerIdStr);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
getAllPeers() {
|
|
34
|
+
return this.peers;
|
|
35
|
+
}
|
|
36
|
+
getSmartPeers() {
|
|
37
|
+
return this.smartPeers;
|
|
38
|
+
}
|
|
39
|
+
markPeerSmart(peerId) {
|
|
40
|
+
this.smartPeers.add(peerId.toString());
|
|
41
|
+
}
|
|
42
|
+
getSmartPeersToQuery() {
|
|
43
|
+
return Array.from(this.smartPeers.difference(this.getBadPeers().union(this.inFlightPeers).union(this.getRateLimitExceededPeers())));
|
|
44
|
+
}
|
|
45
|
+
getDumbPeersToQuery() {
|
|
46
|
+
return Array.from(this.peers.difference(this.smartPeers.union(this.getBadPeers()).union(this.inFlightPeers).union(this.getRateLimitExceededPeers())));
|
|
47
|
+
}
|
|
48
|
+
thereAreSomeDumbRatelimitExceededPeers() {
|
|
49
|
+
return this.getRateLimitExceededPeers().difference(this.smartPeers.union(this.badPeers).union(this.inFlightPeers)).size > 0;
|
|
50
|
+
}
|
|
51
|
+
markPeerInFlight(peerId) {
|
|
52
|
+
this.inFlightPeers.add(peerId.toString());
|
|
53
|
+
}
|
|
54
|
+
unMarkPeerInFlight(peerId) {
|
|
55
|
+
// Never unmark the pinned peer as in-flight
|
|
56
|
+
if (this.pinnedPeerId && this.pinnedPeerId.toString() === peerId.toString()) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
this.inFlightPeers.delete(peerId.toString());
|
|
60
|
+
}
|
|
61
|
+
markPeerRateLimitExceeded(peerId) {
|
|
62
|
+
const ttl = this.dateProvider.now() + RATE_LIMIT_EXCEEDED_PEER_CACHE_TTL;
|
|
63
|
+
this.rateLimitExceededPeers.set(peerId.toString(), ttl);
|
|
64
|
+
}
|
|
65
|
+
getRateLimitExceededPeers() {
|
|
66
|
+
const now = this.dateProvider.now();
|
|
67
|
+
const rateLimitedPeers = new Set();
|
|
68
|
+
for (const [peerId, expirationTime] of this.rateLimitExceededPeers){
|
|
69
|
+
if (expirationTime <= now) {
|
|
70
|
+
this.rateLimitExceededPeers.delete(peerId);
|
|
71
|
+
} else {
|
|
72
|
+
rateLimitedPeers.add(peerId);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return rateLimitedPeers;
|
|
76
|
+
}
|
|
77
|
+
penalisePeer(peerId, severity) {
|
|
78
|
+
const key = peerId.toString();
|
|
79
|
+
const newPenaltyCount = (this.peerPenaltyCounters.get(key) ?? 0) + 1;
|
|
80
|
+
this.peerPenaltyCounters.set(key, newPenaltyCount);
|
|
81
|
+
this.peerPenalizer?.penalizePeer(peerId, severity);
|
|
82
|
+
if (newPenaltyCount > this.badPeerThreshold) {
|
|
83
|
+
this.badPeers.add(key);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
unMarkPeerAsBad(peerId) {
|
|
87
|
+
const key = peerId.toString();
|
|
88
|
+
this.badPeers.delete(key);
|
|
89
|
+
this.peerPenaltyCounters.delete(key);
|
|
90
|
+
}
|
|
91
|
+
getBadPeers() {
|
|
92
|
+
return new Set(this.badPeers);
|
|
93
|
+
}
|
|
94
|
+
getPeerRateLimitDelayMs(peerId) {
|
|
95
|
+
const key = peerId.toString();
|
|
96
|
+
const expiry = this.rateLimitExceededPeers.get(key);
|
|
97
|
+
const peerIsNotRateLimited = expiry === undefined;
|
|
98
|
+
if (peerIsNotRateLimited) {
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
const now = this.dateProvider.now();
|
|
102
|
+
const rateLimitHasExpired = expiry <= now;
|
|
103
|
+
if (rateLimitHasExpired) {
|
|
104
|
+
this.rateLimitExceededPeers.delete(key);
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
return expiry - now;
|
|
108
|
+
}
|
|
109
|
+
getNextDumbPeerAvailabilityDelayMs() {
|
|
110
|
+
// Note: this _is_ suboptimal
|
|
111
|
+
// (we could've tracked rate limits ) per dumb/smart peers - different collections
|
|
112
|
+
// but everything is in memory and small scale so this, wile suboptimal is not slow
|
|
113
|
+
return this.getNextRateLimitDelayMs((peerIdStr)=>!this.smartPeers.has(peerIdStr) && !this.getBadPeers().has(peerIdStr) && !this.inFlightPeers.has(peerIdStr) && this.peers.has(peerIdStr));
|
|
114
|
+
}
|
|
115
|
+
getNextSmartPeerAvailabilityDelayMs() {
|
|
116
|
+
return this.getNextRateLimitDelayMs((peerIdStr)=>this.smartPeers.has(peerIdStr) && !this.getBadPeers().has(peerIdStr) && !this.inFlightPeers.has(peerIdStr));
|
|
117
|
+
}
|
|
118
|
+
getNextRateLimitDelayMs(filter) {
|
|
119
|
+
const now = this.dateProvider.now();
|
|
120
|
+
let minExpiry;
|
|
121
|
+
for (const [peerIdStr, expiry] of this.rateLimitExceededPeers){
|
|
122
|
+
const rateLimitHasExpired = expiry <= now;
|
|
123
|
+
if (rateLimitHasExpired) {
|
|
124
|
+
this.rateLimitExceededPeers.delete(peerIdStr);
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
const peerDoesNotMatchFilter = !filter(peerIdStr);
|
|
128
|
+
if (peerDoesNotMatchFilter) {
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
minExpiry = minExpiry === undefined ? expiry : Math.min(minExpiry, expiry);
|
|
132
|
+
}
|
|
133
|
+
const noRateLimitedPeersMatchFilter = minExpiry === undefined;
|
|
134
|
+
if (noRateLimitedPeersMatchFilter) {
|
|
135
|
+
return undefined;
|
|
136
|
+
}
|
|
137
|
+
return minExpiry - now;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ClientProtocolCircuitVerifier } from '@aztec/stdlib/interfaces/server';
|
|
2
|
+
import { Tx, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
|
|
3
|
+
export interface BatchRequestTxValidatorConfig {
|
|
4
|
+
l1ChainId: number;
|
|
5
|
+
rollupVersion: number;
|
|
6
|
+
proofVerifier: ClientProtocolCircuitVerifier;
|
|
7
|
+
}
|
|
8
|
+
export interface IBatchRequestTxValidator {
|
|
9
|
+
validateRequestedTx(tx: Tx): Promise<TxValidationResult>;
|
|
10
|
+
validateRequestedTxs(txs: Tx[]): Promise<TxValidationResult[]>;
|
|
11
|
+
}
|
|
12
|
+
export declare class BatchRequestTxValidator implements IBatchRequestTxValidator {
|
|
13
|
+
private readonly config;
|
|
14
|
+
readonly txValidator: TxValidator;
|
|
15
|
+
constructor(config: BatchRequestTxValidatorConfig);
|
|
16
|
+
validateRequestedTx(tx: Tx): Promise<TxValidationResult>;
|
|
17
|
+
validateRequestedTxs(txs: Tx[]): Promise<TxValidationResult[]>;
|
|
18
|
+
static createRequestedTxValidator(config: BatchRequestTxValidatorConfig): TxValidator;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfdmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvcmVxcmVzcC9iYXRjaC10eC1yZXF1ZXN0ZXIvdHhfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckYsT0FBTyxFQUFFLEVBQUUsRUFBRSxLQUFLLGtCQUFrQixFQUFFLEtBQUssV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJakYsTUFBTSxXQUFXLDZCQUE2QjtJQUM1QyxTQUFTLEVBQUUsTUFBTSxDQUFDO0lBQ2xCLGFBQWEsRUFBRSxNQUFNLENBQUM7SUFDdEIsYUFBYSxFQUFFLDZCQUE2QixDQUFDO0NBQzlDO0FBRUQsTUFBTSxXQUFXLHdCQUF3QjtJQUN2QyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3pELG9CQUFvQixDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0NBQ2hFO0FBRUQscUJBQWEsdUJBQXdCLFlBQVcsd0JBQXdCO0lBRTFELE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTTtJQURuQyxRQUFRLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQztJQUNsQyxZQUE2QixNQUFNLEVBQUUsNkJBQTZCLEVBRWpFO0lBRVksbUJBQW1CLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FFcEU7SUFFWSxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FFMUU7SUFFRCxNQUFNLENBQUMsMEJBQTBCLENBQUMsTUFBTSxFQUFFLDZCQUE2QixHQUFHLFdBQVcsQ0FLcEY7Q0FDRiJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tx_validator.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/batch-tx-requester/tx_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,EAAE,EAAE,EAAE,KAAK,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIjF,MAAM,WAAW,6BAA6B;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,6BAA6B,CAAC;CAC9C;AAED,MAAM,WAAW,wBAAwB;IACvC,mBAAmB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACzD,oBAAoB,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;CAChE;AAED,qBAAa,uBAAwB,YAAW,wBAAwB;IAE1D,OAAO,CAAC,QAAQ,CAAC,MAAM;IADnC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,YAA6B,MAAM,EAAE,6BAA6B,EAEjE;IAEY,mBAAmB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAEpE;IAEY,oBAAoB,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAE1E;IAED,MAAM,CAAC,0BAA0B,CAAC,MAAM,EAAE,6BAA6B,GAAG,WAAW,CAKpF;CACF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { createTxReqRespValidator } from '../../../msg_validators/tx_validator/factory.js';
|
|
2
|
+
export class BatchRequestTxValidator {
|
|
3
|
+
config;
|
|
4
|
+
txValidator;
|
|
5
|
+
constructor(config){
|
|
6
|
+
this.config = config;
|
|
7
|
+
this.txValidator = BatchRequestTxValidator.createRequestedTxValidator(this.config);
|
|
8
|
+
}
|
|
9
|
+
async validateRequestedTx(tx) {
|
|
10
|
+
return await this.txValidator.validateTx(tx);
|
|
11
|
+
}
|
|
12
|
+
async validateRequestedTxs(txs) {
|
|
13
|
+
return await Promise.all(txs.map((tx)=>this.validateRequestedTx(tx)));
|
|
14
|
+
}
|
|
15
|
+
static createRequestedTxValidator(config) {
|
|
16
|
+
return createTxReqRespValidator(config.proofVerifier, {
|
|
17
|
+
l1ChainId: config.l1ChainId,
|
|
18
|
+
rollupVersion: config.rollupVersion
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -18,14 +18,33 @@ export declare class BatchConnectionSampler {
|
|
|
18
18
|
private readonly logger;
|
|
19
19
|
private readonly batch;
|
|
20
20
|
private readonly requestsPerPeer;
|
|
21
|
+
/** Tracks peer-index combinations that returned empty/invalid responses */
|
|
22
|
+
private readonly failedPeerIndices;
|
|
21
23
|
constructor(connectionSampler: ConnectionSampler, batchSize: number, maxPeers: number, exclude?: PeerId[], logger?: import("@aztec/foundation/log").Logger);
|
|
22
24
|
/**
|
|
23
|
-
* Gets the peer responsible for handling a specific request index
|
|
25
|
+
* Gets the peer responsible for handling a specific request index.
|
|
26
|
+
* If the primary peer has previously failed for this index, tries other peers.
|
|
27
|
+
* If all batch peers have failed, attempts to sample a new peer.
|
|
24
28
|
*
|
|
25
29
|
* @param index - The request index
|
|
26
|
-
* @returns The peer assigned to handle this request
|
|
30
|
+
* @returns The peer assigned to handle this request, or undefined if no peer available
|
|
27
31
|
*/
|
|
28
32
|
getPeerForRequest(index: number): PeerId | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Attempts to sample a new peer that isn't already in the batch.
|
|
35
|
+
* If successful, adds the peer to the batch.
|
|
36
|
+
*
|
|
37
|
+
* @returns The new peer if one was sampled, undefined otherwise
|
|
38
|
+
*/
|
|
39
|
+
private sampleNewPeer;
|
|
40
|
+
/**
|
|
41
|
+
* Marks that a peer returned an empty/invalid response for a specific request index.
|
|
42
|
+
* The peer will not be assigned this index again.
|
|
43
|
+
*
|
|
44
|
+
* @param peerId - The peer that failed
|
|
45
|
+
* @param index - The request index that failed
|
|
46
|
+
*/
|
|
47
|
+
markPeerFailedForIndex(peerId: PeerId, index: number): void;
|
|
29
48
|
/**
|
|
30
49
|
* Removes a peer and replaces it with a new one, maintaining the same position
|
|
31
50
|
* in the batch array to keep request distribution consistent
|
|
@@ -42,4 +61,4 @@ export declare class BatchConnectionSampler {
|
|
|
42
61
|
*/
|
|
43
62
|
get requestsPerBucket(): number;
|
|
44
63
|
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2hfY29ubmVjdGlvbl9zYW1wbGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvcmVxcmVzcC9jb25uZWN0aW9uLXNhbXBsZXIvYmF0Y2hfY29ubmVjdGlvbl9zYW1wbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWhELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFakU7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gscUJBQWEsc0JBQXNCO0lBTy9CLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCO0lBSWxDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTTtJQVZ6QixPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBZ0I7SUFDdEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQVM7SUFDekMsMkVBQTJFO0lBQzNFLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQXVDO0lBRXpFLFlBQ21CLGlCQUFpQixFQUFFLGlCQUFpQixFQUNyRCxTQUFTLEVBQUUsTUFBTSxFQUNqQixRQUFRLEVBQUUsTUFBTSxFQUNoQixPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFDRCxNQUFNLHlDQUF1RCxFQWUvRTtJQUVEOzs7Ozs7O09BT0c7SUFDSCxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLE1BQU0sR0FBRyxTQUFTLENBMkJuRDtJQUVEOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLGFBQWE7SUFjckI7Ozs7OztPQU1HO0lBQ0gsc0JBQXNCLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FTMUQ7SUFFRDs7Ozs7T0FLRztJQUNILG9CQUFvQixDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsSUFBSSxDQWlCekM7SUFFRDs7T0FFRztJQUNILElBQUksZUFBZSxJQUFJLE1BQU0sQ0FFNUI7SUFFRDs7T0FFRztJQUNILElBQUksaUJBQWlCLElBQUksTUFBTSxDQUU5QjtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch_connection_sampler.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/connection-sampler/batch_connection_sampler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE;;;;;;;;;;;;GAYG;AACH,qBAAa,sBAAsB;
|
|
1
|
+
{"version":3,"file":"batch_connection_sampler.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/connection-sampler/batch_connection_sampler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE;;;;;;;;;;;;GAYG;AACH,qBAAa,sBAAsB;IAO/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAIlC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAVzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,2EAA2E;IAC3E,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAuC;IAEzE,YACmB,iBAAiB,EAAE,iBAAiB,EACrD,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,EAAE,EACD,MAAM,yCAAuD,EAe/E;IAED;;;;;;;OAOG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA2BnD;IAED;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAcrB;;;;;;OAMG;IACH,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAS1D;IAED;;;;;OAKG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAiBzC;IAED;;OAEG;IACH,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED;;OAEG;IACH,IAAI,iBAAiB,IAAI,MAAM,CAE9B;CACF"}
|
|
@@ -16,10 +16,12 @@ import { createLogger } from '@aztec/foundation/log';
|
|
|
16
16
|
logger;
|
|
17
17
|
batch;
|
|
18
18
|
requestsPerPeer;
|
|
19
|
+
/** Tracks peer-index combinations that returned empty/invalid responses */ failedPeerIndices;
|
|
19
20
|
constructor(connectionSampler, batchSize, maxPeers, exclude, logger = createLogger('p2p:reqresp:batch-connection-sampler')){
|
|
20
21
|
this.connectionSampler = connectionSampler;
|
|
21
22
|
this.logger = logger;
|
|
22
23
|
this.batch = [];
|
|
24
|
+
this.failedPeerIndices = new Map();
|
|
23
25
|
if (maxPeers <= 0) {
|
|
24
26
|
throw new Error('Max peers cannot be 0');
|
|
25
27
|
}
|
|
@@ -36,17 +38,74 @@ import { createLogger } from '@aztec/foundation/log';
|
|
|
36
38
|
this.batch = this.connectionSampler.samplePeersBatch(maxPeers, excluding);
|
|
37
39
|
}
|
|
38
40
|
/**
|
|
39
|
-
* Gets the peer responsible for handling a specific request index
|
|
41
|
+
* Gets the peer responsible for handling a specific request index.
|
|
42
|
+
* If the primary peer has previously failed for this index, tries other peers.
|
|
43
|
+
* If all batch peers have failed, attempts to sample a new peer.
|
|
40
44
|
*
|
|
41
45
|
* @param index - The request index
|
|
42
|
-
* @returns The peer assigned to handle this request
|
|
46
|
+
* @returns The peer assigned to handle this request, or undefined if no peer available
|
|
43
47
|
*/ getPeerForRequest(index) {
|
|
44
48
|
if (this.batch.length === 0) {
|
|
45
49
|
return undefined;
|
|
46
50
|
}
|
|
47
51
|
// Calculate which peer bucket this index belongs to
|
|
48
|
-
const
|
|
49
|
-
|
|
52
|
+
const primaryPeerIndex = Math.floor(index / this.requestsPerPeer) % this.batch.length;
|
|
53
|
+
// Try peers starting from primary, wrapping around
|
|
54
|
+
for(let offset = 0; offset < this.batch.length; offset++){
|
|
55
|
+
const peerIndex = (primaryPeerIndex + offset) % this.batch.length;
|
|
56
|
+
const peer = this.batch[peerIndex];
|
|
57
|
+
const peerKey = peer.toString();
|
|
58
|
+
const failedIndices = this.failedPeerIndices.get(peerKey);
|
|
59
|
+
if (!failedIndices || !failedIndices.has(index)) {
|
|
60
|
+
return peer;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// All batch peers have failed for this index - try to sample a new peer
|
|
64
|
+
const newPeer = this.sampleNewPeer();
|
|
65
|
+
if (newPeer) {
|
|
66
|
+
return newPeer;
|
|
67
|
+
}
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Attempts to sample a new peer that isn't already in the batch.
|
|
72
|
+
* If successful, adds the peer to the batch.
|
|
73
|
+
*
|
|
74
|
+
* @returns The new peer if one was sampled, undefined otherwise
|
|
75
|
+
*/ sampleNewPeer() {
|
|
76
|
+
// Exclude all current batch peers
|
|
77
|
+
const excluding = new Map(this.batch.map((p)=>[
|
|
78
|
+
p.toString(),
|
|
79
|
+
true
|
|
80
|
+
]));
|
|
81
|
+
const newPeer = this.connectionSampler.getPeer(excluding);
|
|
82
|
+
if (newPeer) {
|
|
83
|
+
this.batch.push(newPeer);
|
|
84
|
+
this.logger.trace('Sampled new peer for exhausted index', {
|
|
85
|
+
newPeer: newPeer.toString()
|
|
86
|
+
});
|
|
87
|
+
return newPeer;
|
|
88
|
+
}
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Marks that a peer returned an empty/invalid response for a specific request index.
|
|
93
|
+
* The peer will not be assigned this index again.
|
|
94
|
+
*
|
|
95
|
+
* @param peerId - The peer that failed
|
|
96
|
+
* @param index - The request index that failed
|
|
97
|
+
*/ markPeerFailedForIndex(peerId, index) {
|
|
98
|
+
const peerKey = peerId.toString();
|
|
99
|
+
let failedIndices = this.failedPeerIndices.get(peerKey);
|
|
100
|
+
if (!failedIndices) {
|
|
101
|
+
failedIndices = new Set();
|
|
102
|
+
this.failedPeerIndices.set(peerKey, failedIndices);
|
|
103
|
+
}
|
|
104
|
+
failedIndices.add(index);
|
|
105
|
+
this.logger.trace('Marked peer failed for index', {
|
|
106
|
+
peerId: peerKey,
|
|
107
|
+
index
|
|
108
|
+
});
|
|
50
109
|
}
|
|
51
110
|
/**
|
|
52
111
|
* Removes a peer and replaces it with a new one, maintaining the same position
|
|
@@ -49,6 +49,7 @@ export declare class ConnectionSampler {
|
|
|
49
49
|
peer: PeerId | undefined;
|
|
50
50
|
sampledPeers: PeerId[];
|
|
51
51
|
};
|
|
52
|
+
getPeerListSortedByConnectionCountAsc(excluding?: Set<string>): PeerId[];
|
|
52
53
|
/**
|
|
53
54
|
* Samples a batch of unique peers from the libp2p node, prioritizing peers without active connections
|
|
54
55
|
*
|
|
@@ -72,4 +73,4 @@ export declare class ConnectionSampler {
|
|
|
72
73
|
close(stream: Stream): Promise<void>;
|
|
73
74
|
private cleanupStaleConnections;
|
|
74
75
|
}
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGlvbl9zYW1wbGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvcmVxcmVzcC9jb25uZWN0aW9uLXNhbXBsZXIvY29ubmVjdGlvbl9zYW1wbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJaEUscUJBQWEsYUFBYTtJQUN4QixNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sVUFFakI7Q0FDRjtBQUVEOzs7Ozs7R0FNRztBQUNILHFCQUFhLGlCQUFpQjtJQVkxQixPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU07SUFDdkIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPO0lBQ3hCLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTTtJQUN2QixPQUFPLENBQUMsUUFBUSxDQUFDLElBQUk7SUFkdkIsT0FBTyxDQUFDLGVBQWUsQ0FBaUI7SUFHeEMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFhO0lBRzNFLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBYTtJQUVwRCxPQUFPLENBQUMsV0FBVyxDQUEwQztJQUU3RCxZQUNtQixNQUFNLEVBQUUsTUFBTSxFQUNkLE9BQU8sRUFBRSxhQUFhLEVBQ3RCLE1BQU0seUNBQWlELEVBQ3ZELElBQUksR0FBRTtRQUFFLGlCQUFpQixDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQUMsd0JBQXdCLENBQUMsRUFBRSxPQUFPLENBQUE7S0FBTyxFQU0vRjtJQUVEOztPQUVHO0lBQ0csSUFBSSxrQkFTVDtJQUVEOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FLNUQ7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILGVBQWUsQ0FDYixLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQ2YsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsR0FDL0I7UUFDRCxJQUFJLEVBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUN6QixZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUM7S0FDeEIsQ0FxQ0E7SUFTTSxxQ0FBcUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBTzlFO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQXNDbkY7SUFJRDs7Ozs7OztPQU9HO0lBQ0csWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQXFCdEY7SUFFRDs7T0FFRztJQUNHLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FpQ3pDO1lBS2EsdUJBQXVCO0NBdUJ0QyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection_sampler.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/connection-sampler/connection_sampler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAIhE,qBAAa,aAAa;IACxB,MAAM,CAAC,GAAG,EAAE,MAAM,UAEjB;CACF;AAED;;;;;;GAMG;AACH,qBAAa,iBAAiB;IAY1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAdvB,OAAO,CAAC,eAAe,CAAiB;IAGxC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;IAG3E,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IAEpD,OAAO,CAAC,WAAW,CAA0C;IAE7D,YACmB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,aAAa,EACtB,MAAM,yCAAiD,EACvD,IAAI,GAAE;QAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAAC,wBAAwB,CAAC,EAAE,OAAO,CAAA;KAAO,EAM/F;IAED;;OAEG;IACG,IAAI,kBAST;IAED;;;;;OAKG;IACH,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAK5D;IAED;;;;;;;;;;;OAWG;IACH,eAAe,CACb,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B;QACD,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,YAAY,EAAE,MAAM,EAAE,CAAC;KACxB,CAqCA;IAED;;;;;;OAMG;IACH,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAsCnF;IAID;;;;;;;OAOG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBtF;IAED;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCzC;YAKa,uBAAuB;CAuBtC"}
|
|
1
|
+
{"version":3,"file":"connection_sampler.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/connection-sampler/connection_sampler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAIhE,qBAAa,aAAa;IACxB,MAAM,CAAC,GAAG,EAAE,MAAM,UAEjB;CACF;AAED;;;;;;GAMG;AACH,qBAAa,iBAAiB;IAY1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAdvB,OAAO,CAAC,eAAe,CAAiB;IAGxC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;IAG3E,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IAEpD,OAAO,CAAC,WAAW,CAA0C;IAE7D,YACmB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,aAAa,EACtB,MAAM,yCAAiD,EACvD,IAAI,GAAE;QAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAAC,wBAAwB,CAAC,EAAE,OAAO,CAAA;KAAO,EAM/F;IAED;;OAEG;IACG,IAAI,kBAST;IAED;;;;;OAKG;IACH,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAK5D;IAED;;;;;;;;;;;OAWG;IACH,eAAe,CACb,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B;QACD,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,YAAY,EAAE,MAAM,EAAE,CAAC;KACxB,CAqCA;IASM,qCAAqC,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAO9E;IAED;;;;;;OAMG;IACH,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAsCnF;IAID;;;;;;;OAOG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBtF;IAED;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCzC;YAKa,uBAAuB;CAuBtC"}
|