@aztec/p2p 0.0.1-commit.b1c78909e → 0.0.1-commit.b2a5d0dd1
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 +3 -2
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +19 -10
- package/dest/client/interface.d.ts +9 -2
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +3 -2
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +40 -14
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +21 -7
- package/dest/config.d.ts +107 -97
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +20 -5
- 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/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 +11 -8
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +6 -6
- package/dest/mem_pools/index.d.ts +1 -2
- package/dest/mem_pools/index.d.ts.map +1 -1
- 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 +2 -1
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +2 -1
- 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 -0
- package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
- package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +62 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +2 -2
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +10 -5
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +13 -3
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.js +20 -7
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +4 -2
- 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 +3 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +1 -1
- 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 +13 -5
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +5 -2
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +20 -11
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +4 -2
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +2 -2
- package/dest/msg_validators/clock_tolerance.d.ts +12 -1
- package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
- package/dest/msg_validators/clock_tolerance.js +54 -3
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +2 -1
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +2 -1
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +3 -1
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator.js +19 -11
- package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
- 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 +10 -2
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/factory.js +26 -7
- package/dest/msg_validators/tx_validator/gas_validator.d.ts +36 -4
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/gas_validator.js +50 -33
- package/dest/msg_validators/tx_validator/phases_validator.d.ts +21 -1
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/phases_validator.js +28 -1
- 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 +5 -5
- package/dest/services/dummy_service.d.ts +6 -3
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +6 -1
- package/dest/services/encoding.d.ts +5 -1
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +7 -1
- package/dest/services/gossipsub/topic_score_params.d.ts +13 -2
- package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
- package/dest/services/gossipsub/topic_score_params.js +21 -4
- package/dest/services/libp2p/instrumentation.d.ts +3 -1
- package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
- package/dest/services/libp2p/instrumentation.js +14 -0
- package/dest/services/libp2p/libp2p_service.d.ts +19 -27
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +141 -130
- 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 +37 -10
- 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 +11 -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 +69 -65
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts +3 -2
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +5 -4
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/missing_txs.js +13 -7
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +3 -1
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/peer_collection.js +3 -0
- package/dest/services/reqresp/config.d.ts +3 -3
- package/dest/services/reqresp/config.d.ts.map +1 -1
- package/dest/services/reqresp/interface.d.ts +14 -9
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +10 -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 +4 -2
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +28 -11
- package/dest/services/service.d.ts +5 -2
- package/dest/services/service.d.ts.map +1 -1
- 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 +57 -73
- package/dest/services/tx_collection/file_store_tx_source.d.ts +5 -4
- package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
- package/dest/services/tx_collection/file_store_tx_source.js +39 -29
- package/dest/services/tx_collection/proposal_tx_collector.d.ts +6 -7
- package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
- package/dest/services/tx_collection/proposal_tx_collector.js +4 -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.js +1 -1
- package/dest/services/tx_collection/tx_collection.d.ts +3 -6
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_source.d.ts +6 -5
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_source.js +9 -7
- package/dest/test-helpers/make-test-p2p-clients.d.ts +1 -1
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.js +4 -1
- package/dest/test-helpers/mock-pubsub.d.ts +11 -3
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.js +36 -11
- package/dest/test-helpers/reqresp-nodes.d.ts +1 -1
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +5 -3
- package/dest/test-helpers/testbench-utils.d.ts +1 -1
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
- package/dest/test-helpers/testbench-utils.js +21 -2
- package/dest/testbench/p2p_client_testbench_worker.d.ts +1 -1
- package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +73 -17
- package/dest/testbench/worker_client_manager.d.ts +8 -1
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +49 -1
- package/package.json +14 -14
- package/src/client/factory.ts +31 -4
- package/src/client/interface.ts +9 -1
- package/src/client/p2p_client.ts +47 -15
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +20 -8
- package/src/config.ts +35 -6
- package/src/errors/p2p-service.error.ts +11 -0
- package/src/index.ts +0 -1
- package/src/mem_pools/attestation_pool/attestation_pool.ts +12 -8
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +6 -6
- package/src/mem_pools/index.ts +0 -3
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +2 -1
- package/src/mem_pools/tx_pool_v2/eviction/index.ts +1 -0
- package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +65 -0
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +3 -3
- package/src/mem_pools/tx_pool_v2/interfaces.ts +9 -4
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +31 -9
- package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +13 -1
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +14 -4
- package/src/msg_validators/attestation_validator/README.md +49 -0
- package/src/msg_validators/attestation_validator/attestation_validator.ts +21 -9
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +4 -1
- package/src/msg_validators/clock_tolerance.ts +72 -3
- package/src/msg_validators/proposal_validator/README.md +123 -0
- package/src/msg_validators/proposal_validator/block_proposal_validator.ts +4 -1
- package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +4 -1
- package/src/msg_validators/proposal_validator/proposal_validator.ts +17 -10
- package/src/msg_validators/tx_validator/README.md +15 -3
- package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
- 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 +31 -2
- package/src/msg_validators/tx_validator/gas_validator.ts +82 -33
- package/src/msg_validators/tx_validator/phases_validator.ts +31 -1
- package/src/services/data_store.ts +5 -13
- package/src/services/dummy_service.ts +8 -2
- package/src/services/encoding.ts +9 -1
- package/src/services/gossipsub/topic_score_params.ts +36 -4
- package/src/services/libp2p/instrumentation.ts +14 -0
- package/src/services/libp2p/libp2p_service.ts +141 -141
- package/src/services/peer-manager/peer_manager.ts +43 -10
- 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 +64 -69
- package/src/services/reqresp/batch-tx-requester/interface.ts +2 -1
- package/src/services/reqresp/batch-tx-requester/missing_txs.ts +13 -6
- package/src/services/reqresp/batch-tx-requester/peer_collection.ts +5 -0
- package/src/services/reqresp/config.ts +2 -2
- package/src/services/reqresp/interface.ts +21 -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 +37 -12
- package/src/services/service.ts +6 -1
- package/src/services/tx_collection/fast_tx_collection.ts +57 -83
- package/src/services/tx_collection/file_store_tx_source.ts +43 -31
- package/src/services/tx_collection/proposal_tx_collector.ts +8 -13
- package/src/services/tx_collection/request_tracker.ts +127 -0
- package/src/services/tx_collection/slow_tx_collection.ts +1 -1
- package/src/services/tx_collection/tx_collection.ts +3 -5
- package/src/services/tx_collection/tx_source.ts +8 -7
- package/src/test-helpers/make-test-p2p-clients.ts +2 -0
- package/src/test-helpers/mock-pubsub.ts +34 -5
- package/src/test-helpers/reqresp-nodes.ts +4 -2
- package/src/test-helpers/testbench-utils.ts +29 -3
- package/src/testbench/p2p_client_testbench_worker.ts +73 -14
- package/src/testbench/worker_client_manager.ts +55 -1
- 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 -16
- 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 -402
- 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/dest/services/tx_collection/missing_txs_tracker.d.ts +0 -32
- package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +0 -1
- package/dest/services/tx_collection/missing_txs_tracker.js +0 -27
- 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 -23
- package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -321
- package/src/services/reqresp/protocols/block.ts +0 -37
- package/src/services/tx_collection/missing_txs_tracker.ts +0 -52
|
@@ -370,14 +370,13 @@ function applyDecs2203RFactory() {
|
|
|
370
370
|
function _apply_decs_2203_r(targetClass, memberDecs, classDecs, parentClass) {
|
|
371
371
|
return (_apply_decs_2203_r = applyDecs2203RFactory())(targetClass, memberDecs, classDecs, parentClass);
|
|
372
372
|
}
|
|
373
|
-
var _dec, _dec1, _dec2, _dec3, _dec4, _dec5, _dec6,
|
|
373
|
+
var _dec, _dec1, _dec2, _dec3, _dec4, _dec5, _dec6, _initProto;
|
|
374
374
|
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
375
375
|
import { maxBy } from '@aztec/foundation/collection';
|
|
376
376
|
import { createLibp2pComponentLogger, createLogger } from '@aztec/foundation/log';
|
|
377
377
|
import { RunningPromise } from '@aztec/foundation/running-promise';
|
|
378
378
|
import { Timer } from '@aztec/foundation/timer';
|
|
379
379
|
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
380
|
-
import { GasFees } from '@aztec/stdlib/gas';
|
|
381
380
|
import { BlockProposal, CheckpointAttestation, CheckpointProposal, P2PMessage, PeerErrorSeverity, PeerErrorSeverityByHarshness, TopicType, createTopicString, getTopicsForConfig, metricsTopicStrToLabels } from '@aztec/stdlib/p2p';
|
|
382
381
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
383
382
|
import { Tx } from '@aztec/stdlib/tx';
|
|
@@ -395,6 +394,7 @@ import { mplex } from '@libp2p/mplex';
|
|
|
395
394
|
import { tcp } from '@libp2p/tcp';
|
|
396
395
|
import { ENR } from '@nethermindeth/enr';
|
|
397
396
|
import { createLibp2p } from 'libp2p';
|
|
397
|
+
import { CheckpointProposalReceivedCallbackNotRegisteredError } from '../../errors/p2p-service.error.js';
|
|
398
398
|
import { BlockProposalValidator, CheckpointAttestationValidator, CheckpointProposalValidator, DoubleSpendTxValidator, FishermanAttestationValidator, getDefaultAllowedSetupFunctions } from '../../msg_validators/index.js';
|
|
399
399
|
import { MessageSeenValidator } from '../../msg_validators/msg_seen_validator/msg_seen_validator.js';
|
|
400
400
|
import { createFirstStageTxValidationsForGossipedTransactions, createSecondStageTxValidationsForGossipedTransactions, createTxValidatorForBlockProposalReceivedTxs, createTxValidatorForReqResponseReceivedTxs } from '../../msg_validators/tx_validator/factory.js';
|
|
@@ -408,7 +408,7 @@ import { APP_SPECIFIC_WEIGHT, gossipScoreThresholds } from '../gossipsub/scoring
|
|
|
408
408
|
import { createAllTopicScoreParams } from '../gossipsub/topic_score_params.js';
|
|
409
409
|
import { PeerManager } from '../peer-manager/peer_manager.js';
|
|
410
410
|
import { PeerScoring } from '../peer-manager/peer_scoring.js';
|
|
411
|
-
import { DEFAULT_SUB_PROTOCOL_VALIDATORS, ReqRespSubProtocol, ValidationError, pingHandler, reqGoodbyeHandler,
|
|
411
|
+
import { DEFAULT_SUB_PROTOCOL_VALIDATORS, ReqRespSubProtocol, ValidationError, pingHandler, reqGoodbyeHandler, reqRespBlockTxsHandler, reqRespStatusHandler, reqRespTxHandler } from '../reqresp/index.js';
|
|
412
412
|
import { ReqResp } from '../reqresp/reqresp.js';
|
|
413
413
|
import { P2PInstrumentation } from './instrumentation.js';
|
|
414
414
|
_dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId, attestation)=>({
|
|
@@ -430,12 +430,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
430
430
|
[Attributes.BLOCK_ARCHIVE]: request.archiveRoot.toString()
|
|
431
431
|
})), _dec6 = trackSpan('Libp2pService.validateRequestedTx', (requestedTxHash, _responseTx)=>({
|
|
432
432
|
[Attributes.TX_HASH]: requestedTxHash.toString()
|
|
433
|
-
})), _dec7 = trackSpan('Libp2pService.validateRequestedBlock', (requestedBlockNumber, _responseBlock)=>({
|
|
434
|
-
[Attributes.BLOCK_NUMBER]: requestedBlockNumber.toString()
|
|
435
|
-
})), _dec8 = trackSpan('Libp2pService.validateCheckpointAttestation', async (_, attestation)=>({
|
|
436
|
-
[Attributes.SLOT_NUMBER]: attestation.payload.header.slotNumber,
|
|
437
|
-
[Attributes.BLOCK_ARCHIVE]: attestation.archive.toString(),
|
|
438
|
-
[Attributes.P2P_ID]: await attestation.p2pMessageLoggingIdentifier().then((i)=>i.toString())
|
|
439
433
|
}));
|
|
440
434
|
/**
|
|
441
435
|
* Lib P2P implementation of the P2PService interface.
|
|
@@ -450,6 +444,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
450
444
|
epochCache;
|
|
451
445
|
proofVerifier;
|
|
452
446
|
worldStateSynchronizer;
|
|
447
|
+
blockMinFeesProvider;
|
|
453
448
|
static{
|
|
454
449
|
({ e: [_initProto] } = _apply_decs_2203_r(this, [
|
|
455
450
|
[
|
|
@@ -486,16 +481,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
486
481
|
_dec6,
|
|
487
482
|
2,
|
|
488
483
|
"validateRequestedTxs"
|
|
489
|
-
],
|
|
490
|
-
[
|
|
491
|
-
_dec7,
|
|
492
|
-
2,
|
|
493
|
-
"validateRequestedBlock"
|
|
494
|
-
],
|
|
495
|
-
[
|
|
496
|
-
_dec8,
|
|
497
|
-
2,
|
|
498
|
-
"validateCheckpointAttestation"
|
|
499
484
|
]
|
|
500
485
|
], []));
|
|
501
486
|
}
|
|
@@ -507,7 +492,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
507
492
|
checkpointAttestationValidator;
|
|
508
493
|
protocolVersion;
|
|
509
494
|
topicStrings;
|
|
510
|
-
feesCache;
|
|
511
495
|
/** Callback invoked when a duplicate proposal is detected (triggers slashing). */ duplicateProposalCallback;
|
|
512
496
|
/** Callback invoked when a duplicate attestation is detected (triggers slashing). */ duplicateAttestationCallback;
|
|
513
497
|
/**
|
|
@@ -519,13 +503,18 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
519
503
|
* Callback for when a checkpoint proposal is received from a peer.
|
|
520
504
|
* @param checkpoint - The checkpoint proposal received from the peer.
|
|
521
505
|
* @returns The attestations for the checkpoint, if any.
|
|
522
|
-
*/
|
|
506
|
+
*/ allNodesCheckpointReceivedCallback;
|
|
507
|
+
/**
|
|
508
|
+
* Callback for when a checkpoint proposal is received - specifically for validators - from a peer.
|
|
509
|
+
* @param checkpoint - The checkpoint proposal received from the peer.
|
|
510
|
+
* @returns The attestations for the checkpoint, if any.
|
|
511
|
+
*/ validatorCheckpointReceivedCallback;
|
|
523
512
|
gossipSubEventHandler;
|
|
524
513
|
instrumentation;
|
|
525
514
|
telemetry;
|
|
526
515
|
logger;
|
|
527
|
-
constructor(config, node, peerDiscoveryService, reqresp, peerManager, mempools, archiver, epochCache, proofVerifier, worldStateSynchronizer, telemetry, logger = createLogger('p2p:libp2p_service')){
|
|
528
|
-
super(telemetry, 'LibP2PService'), this.config = config, this.node = node, this.peerDiscoveryService = peerDiscoveryService, this.reqresp = reqresp, this.peerManager = peerManager, this.mempools = mempools, this.archiver = archiver, this.epochCache = epochCache, this.proofVerifier = proofVerifier, this.worldStateSynchronizer = worldStateSynchronizer, this.msgIdSeenValidators = (_initProto(this), {}), this.protocolVersion = '', this.topicStrings = {};
|
|
516
|
+
constructor(config, node, peerDiscoveryService, reqresp, peerManager, mempools, archiver, epochCache, proofVerifier, worldStateSynchronizer, blockMinFeesProvider, telemetry, logger = createLogger('p2p:libp2p_service')){
|
|
517
|
+
super(telemetry, 'LibP2PService'), this.config = config, this.node = node, this.peerDiscoveryService = peerDiscoveryService, this.reqresp = reqresp, this.peerManager = peerManager, this.mempools = mempools, this.archiver = archiver, this.epochCache = epochCache, this.proofVerifier = proofVerifier, this.worldStateSynchronizer = worldStateSynchronizer, this.blockMinFeesProvider = blockMinFeesProvider, this.msgIdSeenValidators = (_initProto(this), {}), this.protocolVersion = '', this.topicStrings = {};
|
|
529
518
|
this.telemetry = telemetry;
|
|
530
519
|
// Create child logger with fisherman prefix if in fisherman mode
|
|
531
520
|
this.logger = config.fishermanMode ? logger.createChild('[FISHERMAN]') : logger;
|
|
@@ -541,13 +530,19 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
541
530
|
this.topicStrings[TopicType.block_proposal] = createTopicString(TopicType.block_proposal, this.protocolVersion);
|
|
542
531
|
this.topicStrings[TopicType.checkpoint_proposal] = createTopicString(TopicType.checkpoint_proposal, this.protocolVersion);
|
|
543
532
|
this.topicStrings[TopicType.checkpoint_attestation] = createTopicString(TopicType.checkpoint_attestation, this.protocolVersion);
|
|
533
|
+
const p2pPropagationTime = config.attestationPropagationTime;
|
|
544
534
|
const proposalValidatorOpts = {
|
|
545
535
|
txsPermitted: !config.disableTransactions,
|
|
546
|
-
maxTxsPerBlock: config.validateMaxTxsPerBlock
|
|
536
|
+
maxTxsPerBlock: config.validateMaxTxsPerBlock ?? config.validateMaxTxsPerCheckpoint,
|
|
537
|
+
p2pPropagationTime
|
|
547
538
|
};
|
|
548
539
|
this.blockProposalValidator = new BlockProposalValidator(epochCache, proposalValidatorOpts);
|
|
549
540
|
this.checkpointProposalValidator = new CheckpointProposalValidator(epochCache, proposalValidatorOpts);
|
|
550
|
-
this.checkpointAttestationValidator = config.fishermanMode ? new FishermanAttestationValidator(epochCache, mempools.attestationPool, telemetry
|
|
541
|
+
this.checkpointAttestationValidator = config.fishermanMode ? new FishermanAttestationValidator(epochCache, mempools.attestationPool, telemetry, {
|
|
542
|
+
l1PublishingTime: config.l1PublishingTime
|
|
543
|
+
}) : new CheckpointAttestationValidator(epochCache, {
|
|
544
|
+
l1PublishingTime: config.l1PublishingTime
|
|
545
|
+
});
|
|
551
546
|
this.gossipSubEventHandler = this.handleGossipSubEvent.bind(this);
|
|
552
547
|
this.blockReceivedCallback = async (block)=>{
|
|
553
548
|
this.logger.warn(`Handler for block received not yet registered on P2P service. Received block ${block.blockNumber} for slot ${block.slotNumber} from peer.`, {
|
|
@@ -555,8 +550,10 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
555
550
|
});
|
|
556
551
|
return true;
|
|
557
552
|
};
|
|
558
|
-
this.
|
|
559
|
-
|
|
553
|
+
this.allNodesCheckpointReceivedCallback = (_checkpoint)=>{
|
|
554
|
+
throw new CheckpointProposalReceivedCallbackNotRegisteredError();
|
|
555
|
+
};
|
|
556
|
+
this.validatorCheckpointReceivedCallback = (_checkpoint)=>{
|
|
560
557
|
return Promise.resolve(undefined);
|
|
561
558
|
};
|
|
562
559
|
}
|
|
@@ -569,7 +566,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
569
566
|
* @param txPool - The transaction pool to be accessed by the service.
|
|
570
567
|
* @returns The new service.
|
|
571
568
|
*/ static async new(config, peerId, deps) {
|
|
572
|
-
const { worldStateSynchronizer, epochCache, l2BlockSource, mempools, proofVerifier, peerStore, telemetry, logger, packageVersion } = deps;
|
|
569
|
+
const { worldStateSynchronizer, epochCache, l2BlockSource, mempools, proofVerifier, peerStore, blockMinFeesProvider, telemetry, logger, packageVersion } = deps;
|
|
573
570
|
const { p2pPort, maxPeerCount, listenAddress } = config;
|
|
574
571
|
const bindAddrTcp = convertToMultiaddr(listenAddress, p2pPort, 'tcp');
|
|
575
572
|
const datastore = new AztecDatastore(peerStore);
|
|
@@ -609,9 +606,12 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
609
606
|
const l1Constants = epochCache.getL1Constants();
|
|
610
607
|
const topicScoreParams = createAllTopicScoreParams(protocolVersion, {
|
|
611
608
|
slotDurationMs: l1Constants.slotDuration * 1000,
|
|
609
|
+
ethereumSlotDuration: l1Constants.ethereumSlotDuration,
|
|
612
610
|
heartbeatIntervalMs: config.gossipsubInterval,
|
|
613
611
|
targetCommitteeSize: l1Constants.targetCommitteeSize,
|
|
614
612
|
blockDurationMs: config.blockDurationMs,
|
|
613
|
+
l1PublishingTime: config.l1PublishingTime,
|
|
614
|
+
p2pPropagationTime: config.attestationPropagationTime,
|
|
615
615
|
expectedBlockProposalsPerSlot: config.expectedBlockProposalsPerSlot
|
|
616
616
|
});
|
|
617
617
|
const node = await createLibp2p({
|
|
@@ -726,6 +726,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
726
726
|
const peerScoring = new PeerScoring(config, telemetry);
|
|
727
727
|
const reqresp = new ReqResp(config, node, peerScoring, createLogger(`${logger.module}:reqresp`));
|
|
728
728
|
const peerManager = new PeerManager(node, peerDiscoveryService, config, telemetry, createLogger(`${logger.module}:peer_manager`), peerScoring, reqresp, worldStateSynchronizer, protocolVersion, epochCache);
|
|
729
|
+
// Gate req/resp data protocols for unauthenticated peers when p2pAllowOnlyValidators is enabled
|
|
730
|
+
reqresp.setShouldRejectPeer((peerId)=>peerManager.shouldDisableP2PGossip(peerId));
|
|
729
731
|
// Configure application-specific scoring for gossipsub.
|
|
730
732
|
// The weight scales app score to align with gossipsub thresholds:
|
|
731
733
|
// - Disconnect (-50) × 10 = -500 = gossipThreshold (stops receiving gossip)
|
|
@@ -733,7 +735,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
733
735
|
// Note: positive topic scores can offset penalties, so alignment is best-effort.
|
|
734
736
|
node.services.pubsub.score.params.appSpecificWeight = APP_SPECIFIC_WEIGHT;
|
|
735
737
|
node.services.pubsub.score.params.appSpecificScore = (peerId)=>peerManager.shouldDisableP2PGossip(peerId) ? -Infinity : peerManager.getPeerScore(peerId);
|
|
736
|
-
return new LibP2PService(config, node, peerDiscoveryService, reqresp, peerManager, mempools, l2BlockSource, epochCache, proofVerifier, worldStateSynchronizer, telemetry, logger);
|
|
738
|
+
return new LibP2PService(config, node, peerDiscoveryService, reqresp, peerManager, mempools, l2BlockSource, epochCache, proofVerifier, worldStateSynchronizer, blockMinFeesProvider, telemetry, logger);
|
|
737
739
|
}
|
|
738
740
|
/**
|
|
739
741
|
* Starts the LibP2P service.
|
|
@@ -752,13 +754,11 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
752
754
|
// Create request response protocol handlers
|
|
753
755
|
const txHandler = reqRespTxHandler(this.mempools);
|
|
754
756
|
const goodbyeHandler = reqGoodbyeHandler(this.peerManager);
|
|
755
|
-
const blockHandler = reqRespBlockHandler(this.archiver);
|
|
756
757
|
const statusHandler = reqRespStatusHandler(this.protocolVersion, this.worldStateSynchronizer, this.logger);
|
|
757
758
|
const requestResponseHandlers = {
|
|
758
759
|
[ReqRespSubProtocol.PING]: pingHandler,
|
|
759
760
|
[ReqRespSubProtocol.STATUS]: statusHandler.bind(this),
|
|
760
|
-
[ReqRespSubProtocol.GOODBYE]: goodbyeHandler.bind(this)
|
|
761
|
-
[ReqRespSubProtocol.BLOCK]: blockHandler.bind(this)
|
|
761
|
+
[ReqRespSubProtocol.GOODBYE]: goodbyeHandler.bind(this)
|
|
762
762
|
};
|
|
763
763
|
if (!this.config.disableTransactions) {
|
|
764
764
|
const blockTxsHandler = reqRespBlockTxsHandler(this.mempools.attestationPool, this.archiver, this.mempools.txPool);
|
|
@@ -771,8 +771,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
771
771
|
const reqrespSubProtocolValidators = {
|
|
772
772
|
...DEFAULT_SUB_PROTOCOL_VALIDATORS,
|
|
773
773
|
[ReqRespSubProtocol.TX]: this.validateRequestedTxs.bind(this),
|
|
774
|
-
[ReqRespSubProtocol.BLOCK_TXS]: this.validateRequestedBlockTxs.bind(this)
|
|
775
|
-
[ReqRespSubProtocol.BLOCK]: this.validateRequestedBlock.bind(this)
|
|
774
|
+
[ReqRespSubProtocol.BLOCK_TXS]: this.validateRequestedBlockTxs.bind(this)
|
|
776
775
|
};
|
|
777
776
|
await this.peerManager.initializePeers();
|
|
778
777
|
await this.reqresp.start(requestResponseHandlers, reqrespSubProtocolValidators);
|
|
@@ -860,8 +859,14 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
860
859
|
registerBlockReceivedCallback(callback) {
|
|
861
860
|
this.blockReceivedCallback = callback;
|
|
862
861
|
}
|
|
863
|
-
|
|
864
|
-
this.
|
|
862
|
+
registerValidatorCheckpointReceivedCallback(callback) {
|
|
863
|
+
this.validatorCheckpointReceivedCallback = callback;
|
|
864
|
+
}
|
|
865
|
+
registerAllNodesCheckpointReceivedCallback(callback) {
|
|
866
|
+
this.allNodesCheckpointReceivedCallback = callback;
|
|
867
|
+
}
|
|
868
|
+
async notifyOwnCheckpointProposal(checkpoint) {
|
|
869
|
+
await this.allNodesCheckpointReceivedCallback(checkpoint, this.node.peerId);
|
|
865
870
|
}
|
|
866
871
|
/**
|
|
867
872
|
* Registers a callback to be invoked when a duplicate proposal is detected.
|
|
@@ -1038,29 +1043,79 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1038
1043
|
return;
|
|
1039
1044
|
}
|
|
1040
1045
|
async validateReceivedMessage(validationFunc, msgId, source, topicType) {
|
|
1046
|
+
// Default to reject result with a penalty if validation function throws an error
|
|
1041
1047
|
let resultAndObj = {
|
|
1042
|
-
result: TopicValidatorResult.Reject
|
|
1048
|
+
result: TopicValidatorResult.Reject,
|
|
1049
|
+
severity: PeerErrorSeverity.MidToleranceError
|
|
1043
1050
|
};
|
|
1044
1051
|
const timer = new Timer();
|
|
1045
1052
|
try {
|
|
1046
1053
|
resultAndObj = await validationFunc();
|
|
1047
1054
|
} catch (err) {
|
|
1048
|
-
this.
|
|
1049
|
-
this.logger.error(`Error deserializing and validating gossipsub message`, err, {
|
|
1055
|
+
this.logger.error(`Error validating gossipsub message`, err, {
|
|
1050
1056
|
msgId,
|
|
1051
1057
|
source: source.toString(),
|
|
1052
1058
|
topicType
|
|
1053
1059
|
});
|
|
1054
1060
|
}
|
|
1061
|
+
const validationTimeMs = timer.ms();
|
|
1062
|
+
const mcacheWindowMs = this.config.gossipsubMcacheLength * this.config.gossipsubInterval;
|
|
1063
|
+
if (validationTimeMs > mcacheWindowMs * 0.75) {
|
|
1064
|
+
this.instrumentation.incSlowValidation(topicType);
|
|
1065
|
+
this.logger.warn(`Gossip validation for ${topicType} took ${validationTimeMs}ms, approaching mcache eviction window of ${mcacheWindowMs}ms. ` + `Message forwarding may be skipped if validation exceeds the window.`, {
|
|
1066
|
+
msgId,
|
|
1067
|
+
source: source.toString(),
|
|
1068
|
+
topicType,
|
|
1069
|
+
validationTimeMs,
|
|
1070
|
+
mcacheWindowMs
|
|
1071
|
+
});
|
|
1072
|
+
}
|
|
1055
1073
|
if (resultAndObj.result === TopicValidatorResult.Accept) {
|
|
1074
|
+
this.logger.debug(`Message ${topicType} accepted by validator`, {
|
|
1075
|
+
msgId,
|
|
1076
|
+
source: source.toString(),
|
|
1077
|
+
topicType
|
|
1078
|
+
});
|
|
1056
1079
|
this.instrumentation.recordMessageValidation(topicType, timer);
|
|
1080
|
+
} else if (resultAndObj.result === TopicValidatorResult.Reject) {
|
|
1081
|
+
this.logger.warn(`Message ${topicType} rejected by validator with severity ${resultAndObj.severity}`, {
|
|
1082
|
+
msgId,
|
|
1083
|
+
source: source.toString(),
|
|
1084
|
+
topicType,
|
|
1085
|
+
severity: resultAndObj.severity
|
|
1086
|
+
});
|
|
1087
|
+
this.peerManager.penalizePeer(source, resultAndObj.severity);
|
|
1088
|
+
} else {
|
|
1089
|
+
this.logger.trace(`Message ${topicType} ignored by validator`, {
|
|
1090
|
+
msgId,
|
|
1091
|
+
source: source.toString(),
|
|
1092
|
+
topicType
|
|
1093
|
+
});
|
|
1057
1094
|
}
|
|
1058
1095
|
this.node.services.pubsub.reportMessageValidationResult(msgId, source.toString(), resultAndObj.result);
|
|
1059
1096
|
return resultAndObj;
|
|
1060
1097
|
}
|
|
1098
|
+
tryDeserialize(deserializeFunc, msgId, source) {
|
|
1099
|
+
try {
|
|
1100
|
+
return deserializeFunc();
|
|
1101
|
+
} catch (err) {
|
|
1102
|
+
this.logger.warn(`Failed to deserialize gossipsub message from buffer`, {
|
|
1103
|
+
err,
|
|
1104
|
+
msgId,
|
|
1105
|
+
source: source.toString()
|
|
1106
|
+
});
|
|
1107
|
+
return undefined;
|
|
1108
|
+
}
|
|
1109
|
+
}
|
|
1061
1110
|
async handleGossipedTx(payloadData, msgId, source) {
|
|
1062
1111
|
const validationFunc = async ()=>{
|
|
1063
|
-
const tx = Tx.fromBuffer(payloadData);
|
|
1112
|
+
const tx = this.tryDeserialize(()=>Tx.fromBuffer(payloadData), msgId, source);
|
|
1113
|
+
if (!tx) {
|
|
1114
|
+
return {
|
|
1115
|
+
result: TopicValidatorResult.Reject,
|
|
1116
|
+
severity: PeerErrorSeverity.LowToleranceError
|
|
1117
|
+
};
|
|
1118
|
+
}
|
|
1064
1119
|
const currentBlockNumber = await this.archiver.getBlockNumber();
|
|
1065
1120
|
const { ts: nextSlotTimestamp } = this.epochCache.getEpochAndSlotInNextL1Slot();
|
|
1066
1121
|
// Stage 1: fast validators (metadata, data, timestamps, double-spend, gas, phases, block header)
|
|
@@ -1081,9 +1136,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1081
1136
|
severity,
|
|
1082
1137
|
source: source.toString()
|
|
1083
1138
|
});
|
|
1084
|
-
this.peerManager.penalizePeer(source, severity);
|
|
1085
1139
|
return {
|
|
1086
|
-
result: TopicValidatorResult.Reject
|
|
1140
|
+
result: TopicValidatorResult.Reject,
|
|
1141
|
+
severity
|
|
1087
1142
|
};
|
|
1088
1143
|
}
|
|
1089
1144
|
// Pool pre-check: see if the pool would accept this tx before doing expensive proof verification
|
|
@@ -1107,9 +1162,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1107
1162
|
severity,
|
|
1108
1163
|
source: source.toString()
|
|
1109
1164
|
});
|
|
1110
|
-
this.peerManager.penalizePeer(source, severity);
|
|
1111
1165
|
return {
|
|
1112
|
-
result: TopicValidatorResult.Reject
|
|
1166
|
+
result: TopicValidatorResult.Reject,
|
|
1167
|
+
severity
|
|
1113
1168
|
};
|
|
1114
1169
|
}
|
|
1115
1170
|
// Pool add: persist the tx
|
|
@@ -1137,8 +1192,13 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1137
1192
|
obj: tx
|
|
1138
1193
|
};
|
|
1139
1194
|
} else {
|
|
1195
|
+
this.logger.warn(`Gossiped tx ${txHash.toString()} unexpectedly rejected by pool`, {
|
|
1196
|
+
source: source.toString(),
|
|
1197
|
+
txHash: txHash.toString()
|
|
1198
|
+
});
|
|
1140
1199
|
return {
|
|
1141
|
-
result: TopicValidatorResult.Reject
|
|
1200
|
+
result: TopicValidatorResult.Reject,
|
|
1201
|
+
severity: PeerErrorSeverity.HighToleranceError
|
|
1142
1202
|
};
|
|
1143
1203
|
}
|
|
1144
1204
|
};
|
|
@@ -1159,7 +1219,16 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1159
1219
|
* Process a checkpoint attestation from a peer.
|
|
1160
1220
|
* Validates the attestation and adds it to the pool.
|
|
1161
1221
|
*/ async processCheckpointAttestationFromPeer(payloadData, msgId, source) {
|
|
1162
|
-
const { result, obj: attestation } = await this.validateReceivedMessage(()=>
|
|
1222
|
+
const { result, obj: attestation } = await this.validateReceivedMessage(()=>{
|
|
1223
|
+
const attestation = this.tryDeserialize(()=>CheckpointAttestation.fromBuffer(payloadData), msgId, source);
|
|
1224
|
+
if (!attestation) {
|
|
1225
|
+
return Promise.resolve({
|
|
1226
|
+
result: TopicValidatorResult.Reject,
|
|
1227
|
+
severity: PeerErrorSeverity.LowToleranceError
|
|
1228
|
+
});
|
|
1229
|
+
}
|
|
1230
|
+
return this.validateAndStoreCheckpointAttestation(source, attestation);
|
|
1231
|
+
}, msgId, source, TopicType.checkpoint_attestation);
|
|
1163
1232
|
if (result !== TopicValidatorResult.Accept || !attestation) {
|
|
1164
1233
|
return;
|
|
1165
1234
|
}
|
|
@@ -1174,9 +1243,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1174
1243
|
const validationResult = await this.checkpointAttestationValidator.validate(attestation);
|
|
1175
1244
|
if (validationResult.result === 'reject') {
|
|
1176
1245
|
this.logger.warn(`Penalizing peer ${peerId} for checkpoint attestation validation failure`);
|
|
1177
|
-
this.peerManager.penalizePeer(peerId, validationResult.severity);
|
|
1178
1246
|
return {
|
|
1179
|
-
result: TopicValidatorResult.Reject
|
|
1247
|
+
result: TopicValidatorResult.Reject,
|
|
1248
|
+
severity: validationResult.severity
|
|
1180
1249
|
};
|
|
1181
1250
|
}
|
|
1182
1251
|
if (validationResult.result === 'ignore') {
|
|
@@ -1203,9 +1272,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1203
1272
|
obj: attestation
|
|
1204
1273
|
};
|
|
1205
1274
|
}
|
|
1206
|
-
// Could not add (cap reached for signer),
|
|
1275
|
+
// Could not add (cap reached for signer), penalize and do not re-broadcast
|
|
1207
1276
|
if (!added) {
|
|
1208
|
-
this.logger.warn(`
|
|
1277
|
+
this.logger.warn(`Rejecting checkpoint attestation due to cap`, {
|
|
1209
1278
|
slot: slot.toString(),
|
|
1210
1279
|
archive: attestation.archive.toString(),
|
|
1211
1280
|
source: peerId.toString(),
|
|
@@ -1213,8 +1282,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1213
1282
|
count
|
|
1214
1283
|
});
|
|
1215
1284
|
return {
|
|
1216
|
-
result: TopicValidatorResult.
|
|
1217
|
-
|
|
1285
|
+
result: TopicValidatorResult.Reject,
|
|
1286
|
+
severity: PeerErrorSeverity.HighToleranceError
|
|
1218
1287
|
};
|
|
1219
1288
|
}
|
|
1220
1289
|
// Check if this is a duplicate attestation (signer attested to a different proposal at the same slot)
|
|
@@ -1252,9 +1321,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1252
1321
|
const validationResult = await this.blockProposalValidator.validate(block);
|
|
1253
1322
|
if (validationResult.result === 'reject') {
|
|
1254
1323
|
this.logger.warn(`Penalizing peer ${peerId} for block proposal validation failure`);
|
|
1255
|
-
this.peerManager.penalizePeer(peerId, validationResult.severity);
|
|
1256
1324
|
return {
|
|
1257
|
-
result: TopicValidatorResult.Reject
|
|
1325
|
+
result: TopicValidatorResult.Reject,
|
|
1326
|
+
severity: validationResult.severity
|
|
1258
1327
|
};
|
|
1259
1328
|
}
|
|
1260
1329
|
if (validationResult.result === 'ignore') {
|
|
@@ -1284,7 +1353,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1284
1353
|
}
|
|
1285
1354
|
// Too many blocks received for this slot and index, penalize peer and do not re-broadcast
|
|
1286
1355
|
if (!added) {
|
|
1287
|
-
this.peerManager.penalizePeer(peerId, PeerErrorSeverity.HighToleranceError);
|
|
1288
1356
|
this.logger.warn(`Penalizing peer for block proposal exceeding per-position cap`, {
|
|
1289
1357
|
...block.toBlockInfo(),
|
|
1290
1358
|
indexWithinCheckpoint: block.indexWithinCheckpoint,
|
|
@@ -1296,7 +1364,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1296
1364
|
result: TopicValidatorResult.Reject,
|
|
1297
1365
|
metadata: {
|
|
1298
1366
|
isEquivocated
|
|
1299
|
-
}
|
|
1367
|
+
},
|
|
1368
|
+
severity: PeerErrorSeverity.HighToleranceError
|
|
1300
1369
|
};
|
|
1301
1370
|
}
|
|
1302
1371
|
// If this was a duplicate proposal, do not process it, but do invoke the duplicate callback,
|
|
@@ -1370,9 +1439,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1370
1439
|
const validationResult = await this.checkpointProposalValidator.validate(checkpoint);
|
|
1371
1440
|
if (validationResult.result === 'reject') {
|
|
1372
1441
|
this.logger.warn(`Penalizing peer ${peerId} for checkpoint proposal validation failure`);
|
|
1373
|
-
this.peerManager.penalizePeer(peerId, validationResult.severity);
|
|
1374
1442
|
return {
|
|
1375
|
-
result: TopicValidatorResult.Reject
|
|
1443
|
+
result: TopicValidatorResult.Reject,
|
|
1444
|
+
severity: validationResult.severity
|
|
1376
1445
|
};
|
|
1377
1446
|
}
|
|
1378
1447
|
if (validationResult.result === 'ignore') {
|
|
@@ -1389,18 +1458,20 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1389
1458
|
[Attributes.SLOT_NUMBER]: checkpoint.slotNumber.toString(),
|
|
1390
1459
|
[Attributes.P2P_ID]: peerId.toString()
|
|
1391
1460
|
});
|
|
1392
|
-
const
|
|
1393
|
-
|
|
1461
|
+
const blockProposalResult = await this.validateAndStoreBlockProposal(peerId, blockProposal);
|
|
1462
|
+
const { obj, metadata: { isEquivocated } = {} } = blockProposalResult;
|
|
1463
|
+
if (blockProposalResult.result === TopicValidatorResult.Reject || !obj || isEquivocated) {
|
|
1394
1464
|
this.logger.debug(`Rejecting checkpoint due to invalid last block proposal`, {
|
|
1395
1465
|
[Attributes.SLOT_NUMBER]: checkpoint.slotNumber.toString(),
|
|
1396
1466
|
[Attributes.P2P_ID]: peerId.toString(),
|
|
1397
1467
|
isEquivocated,
|
|
1398
|
-
result
|
|
1468
|
+
result: blockProposalResult.result
|
|
1399
1469
|
});
|
|
1400
1470
|
return {
|
|
1401
|
-
result: TopicValidatorResult.Reject
|
|
1471
|
+
result: TopicValidatorResult.Reject,
|
|
1472
|
+
severity: 'severity' in blockProposalResult ? blockProposalResult.severity : PeerErrorSeverity.MidToleranceError
|
|
1402
1473
|
};
|
|
1403
|
-
} else if (result === TopicValidatorResult.Accept && obj && !isEquivocated) {
|
|
1474
|
+
} else if (blockProposalResult.result === TopicValidatorResult.Accept && obj && !isEquivocated) {
|
|
1404
1475
|
processBlock = true;
|
|
1405
1476
|
}
|
|
1406
1477
|
}
|
|
@@ -1427,7 +1498,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1427
1498
|
// Too many checkpoint proposals received for this slot, penalize peer and do not re-broadcast
|
|
1428
1499
|
// Note: We still return the checkpoint obj so the lastBlock can be processed if valid
|
|
1429
1500
|
if (!added) {
|
|
1430
|
-
this.peerManager.penalizePeer(peerId, PeerErrorSeverity.HighToleranceError);
|
|
1431
1501
|
this.logger.warn(`Penalizing peer for checkpoint proposal exceeding per-slot cap`, {
|
|
1432
1502
|
...checkpoint.toCheckpointInfo(),
|
|
1433
1503
|
count,
|
|
@@ -1439,7 +1509,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1439
1509
|
metadata: {
|
|
1440
1510
|
isEquivocated,
|
|
1441
1511
|
processBlock
|
|
1442
|
-
}
|
|
1512
|
+
},
|
|
1513
|
+
severity: PeerErrorSeverity.HighToleranceError
|
|
1443
1514
|
};
|
|
1444
1515
|
}
|
|
1445
1516
|
// If this was a duplicate proposal, do not process it, but do invoke the duplicate callback,
|
|
@@ -1489,9 +1560,10 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1489
1560
|
archive: checkpoint.archive.toString(),
|
|
1490
1561
|
source: sender.toString()
|
|
1491
1562
|
});
|
|
1563
|
+
await this.allNodesCheckpointReceivedCallback(checkpoint, sender);
|
|
1492
1564
|
// Call the checkpoint received callback with the core version (without lastBlock)
|
|
1493
1565
|
// to validate and potentially generate attestations
|
|
1494
|
-
const attestations = await this.
|
|
1566
|
+
const attestations = await this.validatorCheckpointReceivedCallback(checkpoint, sender);
|
|
1495
1567
|
if (attestations && attestations.length > 0) {
|
|
1496
1568
|
// If the callback returned attestations, add them to the pool and propagate them
|
|
1497
1569
|
await this.mempools.attestationPool.addOwnCheckpointAttestations(attestations);
|
|
@@ -1611,45 +1683,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1611
1683
|
return false;
|
|
1612
1684
|
}
|
|
1613
1685
|
}
|
|
1614
|
-
/**
|
|
1615
|
-
* Validates a BLOCK response.
|
|
1616
|
-
*
|
|
1617
|
-
* If a local copy exists, enforces hash equality. If missing, rejects (no penalty) since the hash cannot be verified.
|
|
1618
|
-
* Penalizes on block number mismatch or hash mismatch.
|
|
1619
|
-
*
|
|
1620
|
-
* @param requestedBlockNumber - The requested block number.
|
|
1621
|
-
* @param responseBlock - The block returned by the peer.
|
|
1622
|
-
* @param peerId - The peer that returned the block.
|
|
1623
|
-
* @returns True if the response is valid, false otherwise.
|
|
1624
|
-
*/ async validateRequestedBlock(requestedBlockNumber, responseBlock, peerId) {
|
|
1625
|
-
try {
|
|
1626
|
-
const reqNum = Number(requestedBlockNumber.toString());
|
|
1627
|
-
if (responseBlock.number !== reqNum) {
|
|
1628
|
-
this.peerManager.penalizePeer(peerId, PeerErrorSeverity.LowToleranceError);
|
|
1629
|
-
return false;
|
|
1630
|
-
}
|
|
1631
|
-
const local = await this.archiver.getBlock(BlockNumber(reqNum));
|
|
1632
|
-
if (!local) {
|
|
1633
|
-
// We are missing the local block; we cannot verify the hash yet. Reject without penalizing.
|
|
1634
|
-
// TODO: Consider extending this validator to accept an expected hash or
|
|
1635
|
-
// performing quorum-based checks when using P2P syncing prior to L1 sync.
|
|
1636
|
-
this.logger.warn(`Local block ${reqNum} not found; rejecting BLOCK response without hash verification`);
|
|
1637
|
-
return false;
|
|
1638
|
-
}
|
|
1639
|
-
const [localHash, respHash] = await Promise.all([
|
|
1640
|
-
local.hash(),
|
|
1641
|
-
responseBlock.hash()
|
|
1642
|
-
]);
|
|
1643
|
-
if (!localHash.equals(respHash)) {
|
|
1644
|
-
this.peerManager.penalizePeer(peerId, PeerErrorSeverity.MidToleranceError);
|
|
1645
|
-
return false;
|
|
1646
|
-
}
|
|
1647
|
-
return true;
|
|
1648
|
-
} catch (e) {
|
|
1649
|
-
this.logger.warn(`Error validating requested block`, e);
|
|
1650
|
-
return false;
|
|
1651
|
-
}
|
|
1652
|
-
}
|
|
1653
1686
|
async validateRequestedTx(tx, peerId, txValidator, requested) {
|
|
1654
1687
|
const penalize = (severity)=>this.peerManager.penalizePeer(peerId, severity);
|
|
1655
1688
|
if (requested && !requested.has(tx.getTxHash().toString())) {
|
|
@@ -1668,17 +1701,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1668
1701
|
rollupVersion: this.config.rollupVersion
|
|
1669
1702
|
});
|
|
1670
1703
|
}
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
return this.feesCache.gasFees;
|
|
1674
|
-
}
|
|
1675
|
-
const header = await this.archiver.getBlockHeader(blockNumber);
|
|
1676
|
-
const gasFees = header?.globalVariables.gasFees ?? GasFees.empty();
|
|
1677
|
-
this.feesCache = {
|
|
1678
|
-
blockNumber,
|
|
1679
|
-
gasFees
|
|
1680
|
-
};
|
|
1681
|
-
return gasFees;
|
|
1704
|
+
getGasFees() {
|
|
1705
|
+
return this.blockMinFeesProvider.getCurrentMinFees();
|
|
1682
1706
|
}
|
|
1683
1707
|
/**
|
|
1684
1708
|
* Get the BatchTxRequesterLibP2PService dependencies for creating BatchTxRequester instances
|
|
@@ -1708,7 +1732,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1708
1732
|
}
|
|
1709
1733
|
}
|
|
1710
1734
|
/** Creates the first stage (fast) validators for gossiped transactions. */ async createFirstStageMessageValidators(currentBlockNumber, nextSlotTimestamp) {
|
|
1711
|
-
const gasFees = await this.getGasFees(
|
|
1735
|
+
const gasFees = await this.getGasFees();
|
|
1712
1736
|
const allowedInSetup = [
|
|
1713
1737
|
...await getDefaultAllowedSetupFunctions(),
|
|
1714
1738
|
...this.config.txPublicSetupAllowListExtend ?? []
|
|
@@ -1790,19 +1814,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1790
1814
|
}
|
|
1791
1815
|
return PeerErrorSeverity.HighToleranceError;
|
|
1792
1816
|
}
|
|
1793
|
-
/**
|
|
1794
|
-
* Validate a checkpoint attestation.
|
|
1795
|
-
*
|
|
1796
|
-
* @param attestation - The checkpoint attestation to validate.
|
|
1797
|
-
* @returns True if the checkpoint attestation is valid, false otherwise.
|
|
1798
|
-
*/ async validateCheckpointAttestation(peerId, attestation) {
|
|
1799
|
-
const result = await this.checkpointAttestationValidator.validate(attestation);
|
|
1800
|
-
if (result.result === 'reject') {
|
|
1801
|
-
this.logger.warn(`Penalizing peer ${peerId} for checkpoint attestation validation failure`);
|
|
1802
|
-
this.peerManager.penalizePeer(peerId, result.severity);
|
|
1803
|
-
}
|
|
1804
|
-
return result;
|
|
1805
|
-
}
|
|
1806
1817
|
getPeerScore(peerId) {
|
|
1807
1818
|
return this.node.services.pubsub.score.score(peerId.toString());
|
|
1808
1819
|
}
|
|
@@ -53,11 +53,15 @@ export declare class PeerManager implements PeerManagerInterface {
|
|
|
53
53
|
heartbeat(): Promise<void>;
|
|
54
54
|
setupDirectPeersIfValidator(): Promise<void>;
|
|
55
55
|
/**
|
|
56
|
-
* Cleans up expired timeouts.
|
|
56
|
+
* Cleans up expired timeouts and stale failed-auth-handshake entries.
|
|
57
57
|
*
|
|
58
58
|
* When peers fail to dial after a number of retries, they are temporarily timed out.
|
|
59
59
|
* This function removes any peers that have been in the timed out state for too long.
|
|
60
60
|
* To give them a chance to reconnect.
|
|
61
|
+
*
|
|
62
|
+
* Also evicts entries from the failed-auth-handshake map whose expiry window has passed.
|
|
63
|
+
* Without this, peers that probe once and never reconnect would leave their entries in the
|
|
64
|
+
* map forever, causing an unbounded memory leak.
|
|
61
65
|
*/
|
|
62
66
|
private cleanupExpiredTimeouts;
|
|
63
67
|
private processScheduledDisconnects;
|
|
@@ -171,4 +175,4 @@ export declare class PeerManager implements PeerManagerInterface {
|
|
|
171
175
|
handleAuthRequestFromPeer(_authRequest: AuthRequest, peerId: PeerId): Promise<StatusMessage>;
|
|
172
176
|
private updateAuthenticatedPeers;
|
|
173
177
|
}
|
|
174
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVlcl9tYW5hZ2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvcGVlci1tYW5hZ2VyL3BlZXJfbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzlELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RixPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRS9ELE9BQU8sS0FBSyxFQUFjLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBTTVELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRCxPQUFPLEVBQUUsV0FBVyxFQUFnQixNQUFNLDhCQUE4QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQXVCLE1BQU0saUNBQWlDLENBQUM7QUFDckYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXJELE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0QsT0FBTyxFQUFrQixLQUFLLFdBQVcsRUFBRSxNQUFNLG1C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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer_manager.d.ts","sourceRoot":"","sources":["../../../src/services/peer-manager/peer_manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACxF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,KAAK,EAAc,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAM5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAgB,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAuB,MAAM,iCAAiC,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA2BrE,qBAAa,WAAY,YAAW,oBAAoB;IAyBpD,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAlC/B,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,8BAA8B,CAAa;IACnD,OAAO,CAAC,aAAa,CAAwC;IAC7D,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,uBAAuB,CAAkB;IACjD,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,uBAAuB,CAAkB;IACjD,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,qCAAqC,CAAsC;IACnF,OAAO,CAAC,qCAAqC,CAAkC;IAC/E,OAAO,CAAC,qBAAqB,CAA0B;IACvD,OAAO,CAAC,oBAAoB,CAAoD;IAChF,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,OAAO,CAAC,yBAAyB,CAAkB;IAEnD,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,QAAQ,CAId;IAEF,YACU,UAAU,EAAE,UAAU,EACtB,oBAAoB,EAAE,oBAAoB,EAC1C,MAAM,EAAE,SAAS,EACzB,eAAe,EAAE,eAAe,EACxB,MAAM,oDAAmC,EACzC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,OAAO,EACP,sBAAsB,EAAE,sBAAsB,EAC9C,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,mBAAmB,EAC/B,YAAY,GAAE,YAAiC,EAyBjE;IACD;;;;OAIG;IACG,eAAe,kBAmCpB;IAED,IAAI,MAAM,6CAET;IAEY,SAAS,kBAUrB;IAIK,2BAA2B,kBAgDhC;IAED
|
|
1
|
+
{"version":3,"file":"peer_manager.d.ts","sourceRoot":"","sources":["../../../src/services/peer-manager/peer_manager.ts"],"names":[],"mappings":"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"}
|