@aztec/p2p 0.0.1-commit.5de5ca79e → 0.0.1-commit.6201a7b05
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/client/factory.d.ts +3 -2
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +22 -20
- 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 +30 -10
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +20 -7
- package/dest/config.d.ts +106 -99
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +16 -7
- 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 +4 -2
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.js +8 -5
- package/dest/mem_pools/attestation_pool/mocks.d.ts +1 -1
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +6 -4
- package/dest/mem_pools/index.d.ts +1 -2
- package/dest/mem_pools/index.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.d.ts +1 -1
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +17 -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 +4 -1
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +5 -2
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.js +13 -6
- 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 +2 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +9 -3
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +34 -10
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +7 -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 +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 +57 -0
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +4 -2
- 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 +4 -2
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +6 -2
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator.js +32 -9
- 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 +2 -2
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/factory.js +11 -5
- 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.js +1 -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/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 +20 -21
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +151 -110
- 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 +33 -8
- 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 +1 -1
- 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 +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 +11 -2
- package/dest/services/service.d.ts +5 -2
- package/dest/services/service.d.ts.map +1 -1
- 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/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 +1 -0
- 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 +72 -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 -21
- package/src/client/interface.ts +9 -1
- package/src/client/p2p_client.ts +34 -11
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +19 -6
- package/src/config.ts +27 -7
- package/src/errors/p2p-service.error.ts +11 -0
- package/src/index.ts +0 -1
- package/src/mem_pools/attestation_pool/attestation_pool.ts +9 -5
- package/src/mem_pools/attestation_pool/mocks.ts +13 -8
- package/src/mem_pools/index.ts +0 -3
- package/src/mem_pools/instrumentation.ts +5 -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 +3 -0
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +20 -8
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +2 -0
- package/src/msg_validators/attestation_validator/attestation_validator.ts +38 -7
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +12 -2
- package/src/msg_validators/clock_tolerance.ts +75 -0
- package/src/msg_validators/proposal_validator/README.md +1 -1
- package/src/msg_validators/proposal_validator/block_proposal_validator.ts +10 -2
- package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +15 -2
- package/src/msg_validators/proposal_validator/proposal_validator.ts +33 -7
- package/src/msg_validators/tx_validator/README.md +11 -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 +10 -1
- package/src/msg_validators/tx_validator/gas_validator.ts +82 -33
- package/src/msg_validators/tx_validator/phases_validator.ts +1 -1
- package/src/services/data_store.ts +5 -13
- package/src/services/dummy_service.ts +8 -2
- 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 +155 -117
- package/src/services/peer-manager/peer_manager.ts +38 -8
- package/src/services/peer-manager/peer_scoring.ts +27 -5
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +3 -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 +18 -1
- package/src/services/service.ts +6 -1
- package/src/services/tx_collection/file_store_tx_source.ts +43 -31
- 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 +1 -0
- package/src/testbench/p2p_client_testbench_worker.ts +73 -12
- 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 -123
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +0 -84
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
- package/dest/mem_pools/tx_pool/index.d.ts +0 -3
- package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/index.js +0 -2
- package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
- package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/priority.js +0 -15
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
- package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -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/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 -163
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
- package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
- package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
- package/src/mem_pools/tx_pool/index.ts +0 -2
- package/src/mem_pools/tx_pool/priority.ts +0 -20
- package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -321
- package/src/services/reqresp/protocols/block.ts +0 -37
|
@@ -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
|
-
import { maxBy } from '@aztec/foundation/collection';
|
|
375
|
+
import { maxBy, merge } 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,8 +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
433
|
}));
|
|
436
434
|
/**
|
|
437
435
|
* Lib P2P implementation of the P2PService interface.
|
|
@@ -446,6 +444,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
446
444
|
epochCache;
|
|
447
445
|
proofVerifier;
|
|
448
446
|
worldStateSynchronizer;
|
|
447
|
+
blockMinFeesProvider;
|
|
449
448
|
static{
|
|
450
449
|
({ e: [_initProto] } = _apply_decs_2203_r(this, [
|
|
451
450
|
[
|
|
@@ -482,11 +481,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
482
481
|
_dec6,
|
|
483
482
|
2,
|
|
484
483
|
"validateRequestedTxs"
|
|
485
|
-
],
|
|
486
|
-
[
|
|
487
|
-
_dec7,
|
|
488
|
-
2,
|
|
489
|
-
"validateRequestedBlock"
|
|
490
484
|
]
|
|
491
485
|
], []));
|
|
492
486
|
}
|
|
@@ -498,7 +492,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
498
492
|
checkpointAttestationValidator;
|
|
499
493
|
protocolVersion;
|
|
500
494
|
topicStrings;
|
|
501
|
-
feesCache;
|
|
502
495
|
/** Callback invoked when a duplicate proposal is detected (triggers slashing). */ duplicateProposalCallback;
|
|
503
496
|
/** Callback invoked when a duplicate attestation is detected (triggers slashing). */ duplicateAttestationCallback;
|
|
504
497
|
/**
|
|
@@ -510,13 +503,18 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
510
503
|
* Callback for when a checkpoint proposal is received from a peer.
|
|
511
504
|
* @param checkpoint - The checkpoint proposal received from the peer.
|
|
512
505
|
* @returns The attestations for the checkpoint, if any.
|
|
513
|
-
*/
|
|
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;
|
|
514
512
|
gossipSubEventHandler;
|
|
515
513
|
instrumentation;
|
|
516
514
|
telemetry;
|
|
517
515
|
logger;
|
|
518
|
-
constructor(config, node, peerDiscoveryService, reqresp, peerManager, mempools, archiver, epochCache, proofVerifier, worldStateSynchronizer, telemetry, logger = createLogger('p2p:libp2p_service')){
|
|
519
|
-
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 = {};
|
|
520
518
|
this.telemetry = telemetry;
|
|
521
519
|
// Create child logger with fisherman prefix if in fisherman mode
|
|
522
520
|
this.logger = config.fishermanMode ? logger.createChild('[FISHERMAN]') : logger;
|
|
@@ -532,13 +530,24 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
532
530
|
this.topicStrings[TopicType.block_proposal] = createTopicString(TopicType.block_proposal, this.protocolVersion);
|
|
533
531
|
this.topicStrings[TopicType.checkpoint_proposal] = createTopicString(TopicType.checkpoint_proposal, this.protocolVersion);
|
|
534
532
|
this.topicStrings[TopicType.checkpoint_attestation] = createTopicString(TopicType.checkpoint_attestation, this.protocolVersion);
|
|
533
|
+
const p2pPropagationTime = config.attestationPropagationTime;
|
|
535
534
|
const proposalValidatorOpts = {
|
|
536
535
|
txsPermitted: !config.disableTransactions,
|
|
537
|
-
maxTxsPerBlock: config.validateMaxTxsPerBlock ?? config.validateMaxTxsPerCheckpoint
|
|
536
|
+
maxTxsPerBlock: config.validateMaxTxsPerBlock ?? config.validateMaxTxsPerCheckpoint,
|
|
537
|
+
p2pPropagationTime,
|
|
538
|
+
signatureContext: {
|
|
539
|
+
chainId: config.l1ChainId,
|
|
540
|
+
rollupAddress: config.l1Contracts.rollupAddress
|
|
541
|
+
}
|
|
538
542
|
};
|
|
539
543
|
this.blockProposalValidator = new BlockProposalValidator(epochCache, proposalValidatorOpts);
|
|
540
544
|
this.checkpointProposalValidator = new CheckpointProposalValidator(epochCache, proposalValidatorOpts);
|
|
541
|
-
|
|
545
|
+
const attestationValidatorOpts = {
|
|
546
|
+
l1PublishingTime: config.l1PublishingTime,
|
|
547
|
+
p2pPropagationTime,
|
|
548
|
+
signatureContext: proposalValidatorOpts.signatureContext
|
|
549
|
+
};
|
|
550
|
+
this.checkpointAttestationValidator = config.fishermanMode ? new FishermanAttestationValidator(epochCache, mempools.attestationPool, telemetry, attestationValidatorOpts) : new CheckpointAttestationValidator(epochCache, attestationValidatorOpts);
|
|
542
551
|
this.gossipSubEventHandler = this.handleGossipSubEvent.bind(this);
|
|
543
552
|
this.blockReceivedCallback = async (block)=>{
|
|
544
553
|
this.logger.warn(`Handler for block received not yet registered on P2P service. Received block ${block.blockNumber} for slot ${block.slotNumber} from peer.`, {
|
|
@@ -546,13 +555,16 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
546
555
|
});
|
|
547
556
|
return true;
|
|
548
557
|
};
|
|
549
|
-
this.
|
|
550
|
-
|
|
558
|
+
this.allNodesCheckpointReceivedCallback = (_checkpoint)=>{
|
|
559
|
+
throw new CheckpointProposalReceivedCallbackNotRegisteredError();
|
|
560
|
+
};
|
|
561
|
+
this.validatorCheckpointReceivedCallback = (_checkpoint)=>{
|
|
551
562
|
return Promise.resolve(undefined);
|
|
552
563
|
};
|
|
553
564
|
}
|
|
554
565
|
updateConfig(config) {
|
|
555
566
|
this.reqresp.updateConfig(config);
|
|
567
|
+
this.config = merge(this.config, config);
|
|
556
568
|
}
|
|
557
569
|
/**
|
|
558
570
|
* Creates an instance of the LibP2P service.
|
|
@@ -560,7 +572,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
560
572
|
* @param txPool - The transaction pool to be accessed by the service.
|
|
561
573
|
* @returns The new service.
|
|
562
574
|
*/ static async new(config, peerId, deps) {
|
|
563
|
-
const { worldStateSynchronizer, epochCache, l2BlockSource, mempools, proofVerifier, peerStore, telemetry, logger, packageVersion } = deps;
|
|
575
|
+
const { worldStateSynchronizer, epochCache, l2BlockSource, mempools, proofVerifier, peerStore, blockMinFeesProvider, telemetry, logger, packageVersion } = deps;
|
|
564
576
|
const { p2pPort, maxPeerCount, listenAddress } = config;
|
|
565
577
|
const bindAddrTcp = convertToMultiaddr(listenAddress, p2pPort, 'tcp');
|
|
566
578
|
const datastore = new AztecDatastore(peerStore);
|
|
@@ -600,9 +612,12 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
600
612
|
const l1Constants = epochCache.getL1Constants();
|
|
601
613
|
const topicScoreParams = createAllTopicScoreParams(protocolVersion, {
|
|
602
614
|
slotDurationMs: l1Constants.slotDuration * 1000,
|
|
615
|
+
ethereumSlotDuration: l1Constants.ethereumSlotDuration,
|
|
603
616
|
heartbeatIntervalMs: config.gossipsubInterval,
|
|
604
617
|
targetCommitteeSize: l1Constants.targetCommitteeSize,
|
|
605
618
|
blockDurationMs: config.blockDurationMs,
|
|
619
|
+
l1PublishingTime: config.l1PublishingTime,
|
|
620
|
+
p2pPropagationTime: config.attestationPropagationTime,
|
|
606
621
|
expectedBlockProposalsPerSlot: config.expectedBlockProposalsPerSlot
|
|
607
622
|
});
|
|
608
623
|
const node = await createLibp2p({
|
|
@@ -717,6 +732,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
717
732
|
const peerScoring = new PeerScoring(config, telemetry);
|
|
718
733
|
const reqresp = new ReqResp(config, node, peerScoring, createLogger(`${logger.module}:reqresp`));
|
|
719
734
|
const peerManager = new PeerManager(node, peerDiscoveryService, config, telemetry, createLogger(`${logger.module}:peer_manager`), peerScoring, reqresp, worldStateSynchronizer, protocolVersion, epochCache);
|
|
735
|
+
// Gate req/resp data protocols for unauthenticated peers when p2pAllowOnlyValidators is enabled
|
|
736
|
+
reqresp.setShouldRejectPeer((peerId)=>peerManager.shouldDisableP2PGossip(peerId));
|
|
720
737
|
// Configure application-specific scoring for gossipsub.
|
|
721
738
|
// The weight scales app score to align with gossipsub thresholds:
|
|
722
739
|
// - Disconnect (-50) × 10 = -500 = gossipThreshold (stops receiving gossip)
|
|
@@ -724,7 +741,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
724
741
|
// Note: positive topic scores can offset penalties, so alignment is best-effort.
|
|
725
742
|
node.services.pubsub.score.params.appSpecificWeight = APP_SPECIFIC_WEIGHT;
|
|
726
743
|
node.services.pubsub.score.params.appSpecificScore = (peerId)=>peerManager.shouldDisableP2PGossip(peerId) ? -Infinity : peerManager.getPeerScore(peerId);
|
|
727
|
-
return new LibP2PService(config, node, peerDiscoveryService, reqresp, peerManager, mempools, l2BlockSource, epochCache, proofVerifier, worldStateSynchronizer, telemetry, logger);
|
|
744
|
+
return new LibP2PService(config, node, peerDiscoveryService, reqresp, peerManager, mempools, l2BlockSource, epochCache, proofVerifier, worldStateSynchronizer, blockMinFeesProvider, telemetry, logger);
|
|
728
745
|
}
|
|
729
746
|
/**
|
|
730
747
|
* Starts the LibP2P service.
|
|
@@ -743,13 +760,11 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
743
760
|
// Create request response protocol handlers
|
|
744
761
|
const txHandler = reqRespTxHandler(this.mempools);
|
|
745
762
|
const goodbyeHandler = reqGoodbyeHandler(this.peerManager);
|
|
746
|
-
const blockHandler = reqRespBlockHandler(this.archiver);
|
|
747
763
|
const statusHandler = reqRespStatusHandler(this.protocolVersion, this.worldStateSynchronizer, this.logger);
|
|
748
764
|
const requestResponseHandlers = {
|
|
749
765
|
[ReqRespSubProtocol.PING]: pingHandler,
|
|
750
766
|
[ReqRespSubProtocol.STATUS]: statusHandler.bind(this),
|
|
751
|
-
[ReqRespSubProtocol.GOODBYE]: goodbyeHandler.bind(this)
|
|
752
|
-
[ReqRespSubProtocol.BLOCK]: blockHandler.bind(this)
|
|
767
|
+
[ReqRespSubProtocol.GOODBYE]: goodbyeHandler.bind(this)
|
|
753
768
|
};
|
|
754
769
|
if (!this.config.disableTransactions) {
|
|
755
770
|
const blockTxsHandler = reqRespBlockTxsHandler(this.mempools.attestationPool, this.archiver, this.mempools.txPool);
|
|
@@ -762,8 +777,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
762
777
|
const reqrespSubProtocolValidators = {
|
|
763
778
|
...DEFAULT_SUB_PROTOCOL_VALIDATORS,
|
|
764
779
|
[ReqRespSubProtocol.TX]: this.validateRequestedTxs.bind(this),
|
|
765
|
-
[ReqRespSubProtocol.BLOCK_TXS]: this.validateRequestedBlockTxs.bind(this)
|
|
766
|
-
[ReqRespSubProtocol.BLOCK]: this.validateRequestedBlock.bind(this)
|
|
780
|
+
[ReqRespSubProtocol.BLOCK_TXS]: this.validateRequestedBlockTxs.bind(this)
|
|
767
781
|
};
|
|
768
782
|
await this.peerManager.initializePeers();
|
|
769
783
|
await this.reqresp.start(requestResponseHandlers, reqrespSubProtocolValidators);
|
|
@@ -851,8 +865,14 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
851
865
|
registerBlockReceivedCallback(callback) {
|
|
852
866
|
this.blockReceivedCallback = callback;
|
|
853
867
|
}
|
|
854
|
-
|
|
855
|
-
this.
|
|
868
|
+
registerValidatorCheckpointReceivedCallback(callback) {
|
|
869
|
+
this.validatorCheckpointReceivedCallback = callback;
|
|
870
|
+
}
|
|
871
|
+
registerAllNodesCheckpointReceivedCallback(callback) {
|
|
872
|
+
this.allNodesCheckpointReceivedCallback = callback;
|
|
873
|
+
}
|
|
874
|
+
async notifyOwnCheckpointProposal(checkpoint) {
|
|
875
|
+
await this.allNodesCheckpointReceivedCallback(checkpoint, this.node.peerId);
|
|
856
876
|
}
|
|
857
877
|
/**
|
|
858
878
|
* Registers a callback to be invoked when a duplicate proposal is detected.
|
|
@@ -981,6 +1001,13 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
981
1001
|
}
|
|
982
1002
|
// Process the message, optionally within a linked span for trace propagation
|
|
983
1003
|
const processMessage = async ()=>{
|
|
1004
|
+
if (this.config.skipIncomingProposals && (msg.topic === this.topicStrings[TopicType.block_proposal] || msg.topic === this.topicStrings[TopicType.checkpoint_proposal])) {
|
|
1005
|
+
this.logger.warn(`Ignoring incoming proposal (skipIncomingProposals is set)`, {
|
|
1006
|
+
topic: msg.topic
|
|
1007
|
+
});
|
|
1008
|
+
this.node.services.pubsub.reportMessageValidationResult(msgId, source.toString(), TopicValidatorResult.Ignore);
|
|
1009
|
+
return;
|
|
1010
|
+
}
|
|
984
1011
|
if (msg.topic === this.topicStrings[TopicType.tx]) {
|
|
985
1012
|
await this.handleGossipedTx(p2pMessage.payload, msgId, source);
|
|
986
1013
|
} else if (msg.topic === this.topicStrings[TopicType.checkpoint_attestation]) {
|
|
@@ -1029,29 +1056,79 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1029
1056
|
return;
|
|
1030
1057
|
}
|
|
1031
1058
|
async validateReceivedMessage(validationFunc, msgId, source, topicType) {
|
|
1059
|
+
// Default to reject result with a penalty if validation function throws an error
|
|
1032
1060
|
let resultAndObj = {
|
|
1033
|
-
result: TopicValidatorResult.Reject
|
|
1061
|
+
result: TopicValidatorResult.Reject,
|
|
1062
|
+
severity: PeerErrorSeverity.MidToleranceError
|
|
1034
1063
|
};
|
|
1035
1064
|
const timer = new Timer();
|
|
1036
1065
|
try {
|
|
1037
1066
|
resultAndObj = await validationFunc();
|
|
1038
1067
|
} catch (err) {
|
|
1039
|
-
this.
|
|
1040
|
-
this.logger.error(`Error deserializing and validating gossipsub message`, err, {
|
|
1068
|
+
this.logger.error(`Error validating gossipsub message`, err, {
|
|
1041
1069
|
msgId,
|
|
1042
1070
|
source: source.toString(),
|
|
1043
1071
|
topicType
|
|
1044
1072
|
});
|
|
1045
1073
|
}
|
|
1074
|
+
const validationTimeMs = timer.ms();
|
|
1075
|
+
const mcacheWindowMs = this.config.gossipsubMcacheLength * this.config.gossipsubInterval;
|
|
1076
|
+
if (validationTimeMs > mcacheWindowMs * 0.75) {
|
|
1077
|
+
this.instrumentation.incSlowValidation(topicType);
|
|
1078
|
+
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.`, {
|
|
1079
|
+
msgId,
|
|
1080
|
+
source: source.toString(),
|
|
1081
|
+
topicType,
|
|
1082
|
+
validationTimeMs,
|
|
1083
|
+
mcacheWindowMs
|
|
1084
|
+
});
|
|
1085
|
+
}
|
|
1046
1086
|
if (resultAndObj.result === TopicValidatorResult.Accept) {
|
|
1087
|
+
this.logger.debug(`Message ${topicType} accepted by validator`, {
|
|
1088
|
+
msgId,
|
|
1089
|
+
source: source.toString(),
|
|
1090
|
+
topicType
|
|
1091
|
+
});
|
|
1047
1092
|
this.instrumentation.recordMessageValidation(topicType, timer);
|
|
1093
|
+
} else if (resultAndObj.result === TopicValidatorResult.Reject) {
|
|
1094
|
+
this.logger.warn(`Message ${topicType} rejected by validator with severity ${resultAndObj.severity}`, {
|
|
1095
|
+
msgId,
|
|
1096
|
+
source: source.toString(),
|
|
1097
|
+
topicType,
|
|
1098
|
+
severity: resultAndObj.severity
|
|
1099
|
+
});
|
|
1100
|
+
this.peerManager.penalizePeer(source, resultAndObj.severity);
|
|
1101
|
+
} else {
|
|
1102
|
+
this.logger.trace(`Message ${topicType} ignored by validator`, {
|
|
1103
|
+
msgId,
|
|
1104
|
+
source: source.toString(),
|
|
1105
|
+
topicType
|
|
1106
|
+
});
|
|
1048
1107
|
}
|
|
1049
1108
|
this.node.services.pubsub.reportMessageValidationResult(msgId, source.toString(), resultAndObj.result);
|
|
1050
1109
|
return resultAndObj;
|
|
1051
1110
|
}
|
|
1111
|
+
tryDeserialize(deserializeFunc, msgId, source) {
|
|
1112
|
+
try {
|
|
1113
|
+
return deserializeFunc();
|
|
1114
|
+
} catch (err) {
|
|
1115
|
+
this.logger.warn(`Failed to deserialize gossipsub message from buffer`, {
|
|
1116
|
+
err,
|
|
1117
|
+
msgId,
|
|
1118
|
+
source: source.toString()
|
|
1119
|
+
});
|
|
1120
|
+
return undefined;
|
|
1121
|
+
}
|
|
1122
|
+
}
|
|
1052
1123
|
async handleGossipedTx(payloadData, msgId, source) {
|
|
1053
1124
|
const validationFunc = async ()=>{
|
|
1054
|
-
const tx = Tx.fromBuffer(payloadData);
|
|
1125
|
+
const tx = this.tryDeserialize(()=>Tx.fromBuffer(payloadData), msgId, source);
|
|
1126
|
+
if (!tx) {
|
|
1127
|
+
return {
|
|
1128
|
+
result: TopicValidatorResult.Reject,
|
|
1129
|
+
severity: PeerErrorSeverity.LowToleranceError
|
|
1130
|
+
};
|
|
1131
|
+
}
|
|
1055
1132
|
const currentBlockNumber = await this.archiver.getBlockNumber();
|
|
1056
1133
|
const { ts: nextSlotTimestamp } = this.epochCache.getEpochAndSlotInNextL1Slot();
|
|
1057
1134
|
// Stage 1: fast validators (metadata, data, timestamps, double-spend, gas, phases, block header)
|
|
@@ -1072,9 +1149,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1072
1149
|
severity,
|
|
1073
1150
|
source: source.toString()
|
|
1074
1151
|
});
|
|
1075
|
-
this.peerManager.penalizePeer(source, severity);
|
|
1076
1152
|
return {
|
|
1077
|
-
result: TopicValidatorResult.Reject
|
|
1153
|
+
result: TopicValidatorResult.Reject,
|
|
1154
|
+
severity
|
|
1078
1155
|
};
|
|
1079
1156
|
}
|
|
1080
1157
|
// Pool pre-check: see if the pool would accept this tx before doing expensive proof verification
|
|
@@ -1098,9 +1175,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1098
1175
|
severity,
|
|
1099
1176
|
source: source.toString()
|
|
1100
1177
|
});
|
|
1101
|
-
this.peerManager.penalizePeer(source, severity);
|
|
1102
1178
|
return {
|
|
1103
|
-
result: TopicValidatorResult.Reject
|
|
1179
|
+
result: TopicValidatorResult.Reject,
|
|
1180
|
+
severity
|
|
1104
1181
|
};
|
|
1105
1182
|
}
|
|
1106
1183
|
// Pool add: persist the tx
|
|
@@ -1132,9 +1209,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1132
1209
|
source: source.toString(),
|
|
1133
1210
|
txHash: txHash.toString()
|
|
1134
1211
|
});
|
|
1135
|
-
this.peerManager.penalizePeer(source, PeerErrorSeverity.HighToleranceError);
|
|
1136
1212
|
return {
|
|
1137
|
-
result: TopicValidatorResult.Reject
|
|
1213
|
+
result: TopicValidatorResult.Reject,
|
|
1214
|
+
severity: PeerErrorSeverity.HighToleranceError
|
|
1138
1215
|
};
|
|
1139
1216
|
}
|
|
1140
1217
|
};
|
|
@@ -1155,7 +1232,16 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1155
1232
|
* Process a checkpoint attestation from a peer.
|
|
1156
1233
|
* Validates the attestation and adds it to the pool.
|
|
1157
1234
|
*/ async processCheckpointAttestationFromPeer(payloadData, msgId, source) {
|
|
1158
|
-
const { result, obj: attestation } = await this.validateReceivedMessage(()=>
|
|
1235
|
+
const { result, obj: attestation } = await this.validateReceivedMessage(()=>{
|
|
1236
|
+
const attestation = this.tryDeserialize(()=>CheckpointAttestation.fromBuffer(payloadData), msgId, source);
|
|
1237
|
+
if (!attestation) {
|
|
1238
|
+
return Promise.resolve({
|
|
1239
|
+
result: TopicValidatorResult.Reject,
|
|
1240
|
+
severity: PeerErrorSeverity.LowToleranceError
|
|
1241
|
+
});
|
|
1242
|
+
}
|
|
1243
|
+
return this.validateAndStoreCheckpointAttestation(source, attestation);
|
|
1244
|
+
}, msgId, source, TopicType.checkpoint_attestation);
|
|
1159
1245
|
if (result !== TopicValidatorResult.Accept || !attestation) {
|
|
1160
1246
|
return;
|
|
1161
1247
|
}
|
|
@@ -1170,9 +1256,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1170
1256
|
const validationResult = await this.checkpointAttestationValidator.validate(attestation);
|
|
1171
1257
|
if (validationResult.result === 'reject') {
|
|
1172
1258
|
this.logger.warn(`Penalizing peer ${peerId} for checkpoint attestation validation failure`);
|
|
1173
|
-
this.peerManager.penalizePeer(peerId, validationResult.severity);
|
|
1174
1259
|
return {
|
|
1175
|
-
result: TopicValidatorResult.Reject
|
|
1260
|
+
result: TopicValidatorResult.Reject,
|
|
1261
|
+
severity: validationResult.severity
|
|
1176
1262
|
};
|
|
1177
1263
|
}
|
|
1178
1264
|
if (validationResult.result === 'ignore') {
|
|
@@ -1199,9 +1285,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1199
1285
|
obj: attestation
|
|
1200
1286
|
};
|
|
1201
1287
|
}
|
|
1202
|
-
// Could not add (cap reached for signer),
|
|
1288
|
+
// Could not add (cap reached for signer), penalize and do not re-broadcast
|
|
1203
1289
|
if (!added) {
|
|
1204
|
-
this.logger.warn(`
|
|
1290
|
+
this.logger.warn(`Rejecting checkpoint attestation due to cap`, {
|
|
1205
1291
|
slot: slot.toString(),
|
|
1206
1292
|
archive: attestation.archive.toString(),
|
|
1207
1293
|
source: peerId.toString(),
|
|
@@ -1209,8 +1295,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1209
1295
|
count
|
|
1210
1296
|
});
|
|
1211
1297
|
return {
|
|
1212
|
-
result: TopicValidatorResult.
|
|
1213
|
-
|
|
1298
|
+
result: TopicValidatorResult.Reject,
|
|
1299
|
+
severity: PeerErrorSeverity.HighToleranceError
|
|
1214
1300
|
};
|
|
1215
1301
|
}
|
|
1216
1302
|
// Check if this is a duplicate attestation (signer attested to a different proposal at the same slot)
|
|
@@ -1248,9 +1334,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1248
1334
|
const validationResult = await this.blockProposalValidator.validate(block);
|
|
1249
1335
|
if (validationResult.result === 'reject') {
|
|
1250
1336
|
this.logger.warn(`Penalizing peer ${peerId} for block proposal validation failure`);
|
|
1251
|
-
this.peerManager.penalizePeer(peerId, validationResult.severity);
|
|
1252
1337
|
return {
|
|
1253
|
-
result: TopicValidatorResult.Reject
|
|
1338
|
+
result: TopicValidatorResult.Reject,
|
|
1339
|
+
severity: validationResult.severity
|
|
1254
1340
|
};
|
|
1255
1341
|
}
|
|
1256
1342
|
if (validationResult.result === 'ignore') {
|
|
@@ -1280,7 +1366,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1280
1366
|
}
|
|
1281
1367
|
// Too many blocks received for this slot and index, penalize peer and do not re-broadcast
|
|
1282
1368
|
if (!added) {
|
|
1283
|
-
this.peerManager.penalizePeer(peerId, PeerErrorSeverity.HighToleranceError);
|
|
1284
1369
|
this.logger.warn(`Penalizing peer for block proposal exceeding per-position cap`, {
|
|
1285
1370
|
...block.toBlockInfo(),
|
|
1286
1371
|
indexWithinCheckpoint: block.indexWithinCheckpoint,
|
|
@@ -1292,7 +1377,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1292
1377
|
result: TopicValidatorResult.Reject,
|
|
1293
1378
|
metadata: {
|
|
1294
1379
|
isEquivocated
|
|
1295
|
-
}
|
|
1380
|
+
},
|
|
1381
|
+
severity: PeerErrorSeverity.HighToleranceError
|
|
1296
1382
|
};
|
|
1297
1383
|
}
|
|
1298
1384
|
// If this was a duplicate proposal, do not process it, but do invoke the duplicate callback,
|
|
@@ -1366,9 +1452,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1366
1452
|
const validationResult = await this.checkpointProposalValidator.validate(checkpoint);
|
|
1367
1453
|
if (validationResult.result === 'reject') {
|
|
1368
1454
|
this.logger.warn(`Penalizing peer ${peerId} for checkpoint proposal validation failure`);
|
|
1369
|
-
this.peerManager.penalizePeer(peerId, validationResult.severity);
|
|
1370
1455
|
return {
|
|
1371
|
-
result: TopicValidatorResult.Reject
|
|
1456
|
+
result: TopicValidatorResult.Reject,
|
|
1457
|
+
severity: validationResult.severity
|
|
1372
1458
|
};
|
|
1373
1459
|
}
|
|
1374
1460
|
if (validationResult.result === 'ignore') {
|
|
@@ -1385,18 +1471,20 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1385
1471
|
[Attributes.SLOT_NUMBER]: checkpoint.slotNumber.toString(),
|
|
1386
1472
|
[Attributes.P2P_ID]: peerId.toString()
|
|
1387
1473
|
});
|
|
1388
|
-
const
|
|
1389
|
-
|
|
1474
|
+
const blockProposalResult = await this.validateAndStoreBlockProposal(peerId, blockProposal);
|
|
1475
|
+
const { obj, metadata: { isEquivocated } = {} } = blockProposalResult;
|
|
1476
|
+
if (blockProposalResult.result === TopicValidatorResult.Reject || !obj || isEquivocated) {
|
|
1390
1477
|
this.logger.debug(`Rejecting checkpoint due to invalid last block proposal`, {
|
|
1391
1478
|
[Attributes.SLOT_NUMBER]: checkpoint.slotNumber.toString(),
|
|
1392
1479
|
[Attributes.P2P_ID]: peerId.toString(),
|
|
1393
1480
|
isEquivocated,
|
|
1394
|
-
result
|
|
1481
|
+
result: blockProposalResult.result
|
|
1395
1482
|
});
|
|
1396
1483
|
return {
|
|
1397
|
-
result: TopicValidatorResult.Reject
|
|
1484
|
+
result: TopicValidatorResult.Reject,
|
|
1485
|
+
severity: 'severity' in blockProposalResult ? blockProposalResult.severity : PeerErrorSeverity.MidToleranceError
|
|
1398
1486
|
};
|
|
1399
|
-
} else if (result === TopicValidatorResult.Accept && obj && !isEquivocated) {
|
|
1487
|
+
} else if (blockProposalResult.result === TopicValidatorResult.Accept && obj && !isEquivocated) {
|
|
1400
1488
|
processBlock = true;
|
|
1401
1489
|
}
|
|
1402
1490
|
}
|
|
@@ -1423,7 +1511,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1423
1511
|
// Too many checkpoint proposals received for this slot, penalize peer and do not re-broadcast
|
|
1424
1512
|
// Note: We still return the checkpoint obj so the lastBlock can be processed if valid
|
|
1425
1513
|
if (!added) {
|
|
1426
|
-
this.peerManager.penalizePeer(peerId, PeerErrorSeverity.HighToleranceError);
|
|
1427
1514
|
this.logger.warn(`Penalizing peer for checkpoint proposal exceeding per-slot cap`, {
|
|
1428
1515
|
...checkpoint.toCheckpointInfo(),
|
|
1429
1516
|
count,
|
|
@@ -1435,7 +1522,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1435
1522
|
metadata: {
|
|
1436
1523
|
isEquivocated,
|
|
1437
1524
|
processBlock
|
|
1438
|
-
}
|
|
1525
|
+
},
|
|
1526
|
+
severity: PeerErrorSeverity.HighToleranceError
|
|
1439
1527
|
};
|
|
1440
1528
|
}
|
|
1441
1529
|
// If this was a duplicate proposal, do not process it, but do invoke the duplicate callback,
|
|
@@ -1485,9 +1573,10 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1485
1573
|
archive: checkpoint.archive.toString(),
|
|
1486
1574
|
source: sender.toString()
|
|
1487
1575
|
});
|
|
1576
|
+
await this.allNodesCheckpointReceivedCallback(checkpoint, sender);
|
|
1488
1577
|
// Call the checkpoint received callback with the core version (without lastBlock)
|
|
1489
1578
|
// to validate and potentially generate attestations
|
|
1490
|
-
const attestations = await this.
|
|
1579
|
+
const attestations = await this.validatorCheckpointReceivedCallback(checkpoint, sender);
|
|
1491
1580
|
if (attestations && attestations.length > 0) {
|
|
1492
1581
|
// If the callback returned attestations, add them to the pool and propagate them
|
|
1493
1582
|
await this.mempools.attestationPool.addOwnCheckpointAttestations(attestations);
|
|
@@ -1607,45 +1696,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1607
1696
|
return false;
|
|
1608
1697
|
}
|
|
1609
1698
|
}
|
|
1610
|
-
/**
|
|
1611
|
-
* Validates a BLOCK response.
|
|
1612
|
-
*
|
|
1613
|
-
* If a local copy exists, enforces hash equality. If missing, rejects (no penalty) since the hash cannot be verified.
|
|
1614
|
-
* Penalizes on block number mismatch or hash mismatch.
|
|
1615
|
-
*
|
|
1616
|
-
* @param requestedBlockNumber - The requested block number.
|
|
1617
|
-
* @param responseBlock - The block returned by the peer.
|
|
1618
|
-
* @param peerId - The peer that returned the block.
|
|
1619
|
-
* @returns True if the response is valid, false otherwise.
|
|
1620
|
-
*/ async validateRequestedBlock(requestedBlockNumber, responseBlock, peerId) {
|
|
1621
|
-
try {
|
|
1622
|
-
const reqNum = Number(requestedBlockNumber.toString());
|
|
1623
|
-
if (responseBlock.number !== reqNum) {
|
|
1624
|
-
this.peerManager.penalizePeer(peerId, PeerErrorSeverity.LowToleranceError);
|
|
1625
|
-
return false;
|
|
1626
|
-
}
|
|
1627
|
-
const local = await this.archiver.getBlock(BlockNumber(reqNum));
|
|
1628
|
-
if (!local) {
|
|
1629
|
-
// We are missing the local block; we cannot verify the hash yet. Reject without penalizing.
|
|
1630
|
-
// TODO: Consider extending this validator to accept an expected hash or
|
|
1631
|
-
// performing quorum-based checks when using P2P syncing prior to L1 sync.
|
|
1632
|
-
this.logger.warn(`Local block ${reqNum} not found; rejecting BLOCK response without hash verification`);
|
|
1633
|
-
return false;
|
|
1634
|
-
}
|
|
1635
|
-
const [localHash, respHash] = await Promise.all([
|
|
1636
|
-
local.hash(),
|
|
1637
|
-
responseBlock.hash()
|
|
1638
|
-
]);
|
|
1639
|
-
if (!localHash.equals(respHash)) {
|
|
1640
|
-
this.peerManager.penalizePeer(peerId, PeerErrorSeverity.MidToleranceError);
|
|
1641
|
-
return false;
|
|
1642
|
-
}
|
|
1643
|
-
return true;
|
|
1644
|
-
} catch (e) {
|
|
1645
|
-
this.logger.warn(`Error validating requested block`, e);
|
|
1646
|
-
return false;
|
|
1647
|
-
}
|
|
1648
|
-
}
|
|
1649
1699
|
async validateRequestedTx(tx, peerId, txValidator, requested) {
|
|
1650
1700
|
const penalize = (severity)=>this.peerManager.penalizePeer(peerId, severity);
|
|
1651
1701
|
if (requested && !requested.has(tx.getTxHash().toString())) {
|
|
@@ -1664,17 +1714,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1664
1714
|
rollupVersion: this.config.rollupVersion
|
|
1665
1715
|
});
|
|
1666
1716
|
}
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
return this.feesCache.gasFees;
|
|
1670
|
-
}
|
|
1671
|
-
const header = await this.archiver.getBlockHeader(blockNumber);
|
|
1672
|
-
const gasFees = header?.globalVariables.gasFees ?? GasFees.empty();
|
|
1673
|
-
this.feesCache = {
|
|
1674
|
-
blockNumber,
|
|
1675
|
-
gasFees
|
|
1676
|
-
};
|
|
1677
|
-
return gasFees;
|
|
1717
|
+
getGasFees() {
|
|
1718
|
+
return this.blockMinFeesProvider.getCurrentMinFees();
|
|
1678
1719
|
}
|
|
1679
1720
|
/**
|
|
1680
1721
|
* Get the BatchTxRequesterLibP2PService dependencies for creating BatchTxRequester instances
|
|
@@ -1704,7 +1745,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1704
1745
|
}
|
|
1705
1746
|
}
|
|
1706
1747
|
/** Creates the first stage (fast) validators for gossiped transactions. */ async createFirstStageMessageValidators(currentBlockNumber, nextSlotTimestamp) {
|
|
1707
|
-
const gasFees = await this.getGasFees(
|
|
1748
|
+
const gasFees = await this.getGasFees();
|
|
1708
1749
|
const allowedInSetup = [
|
|
1709
1750
|
...await getDefaultAllowedSetupFunctions(),
|
|
1710
1751
|
...this.config.txPublicSetupAllowListExtend ?? []
|
|
@@ -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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"}
|