@aztec/p2p 0.0.1-commit.cd76b27 → 0.0.1-commit.d117d021b
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 +5 -6
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +16 -26
- package/dest/client/interface.d.ts +6 -13
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +5 -13
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +3 -82
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +1 -2
- package/dest/config.d.ts +21 -15
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +66 -37
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.js +5 -1
- package/dest/mem_pools/instrumentation.d.ts +4 -2
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +16 -14
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +2 -0
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +7 -1
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +2 -2
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +2 -2
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +10 -6
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +8 -6
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +2 -2
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +2 -2
- package/dest/mem_pools/tx_pool_v2/index.d.ts +2 -2
- package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/index.js +1 -1
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +9 -5
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/interfaces.js +3 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +40 -10
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.js +74 -16
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +26 -44
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +2 -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 +3 -2
- 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 +177 -146
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +6 -4
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +6 -4
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -8
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator.js +48 -36
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +2 -2
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/allowed_public_setup.js +24 -20
- package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
- package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
- package/dest/msg_validators/tx_validator/factory.d.ts +114 -6
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/factory.js +219 -58
- package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
- package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
- package/dest/msg_validators/tx_validator/gas_validator.d.ts +58 -3
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/gas_validator.js +73 -36
- package/dest/msg_validators/tx_validator/index.d.ts +3 -1
- package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/index.js +2 -0
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
- package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
- package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
- package/dest/msg_validators/tx_validator/phases_validator.d.ts +2 -2
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/phases_validator.js +44 -23
- package/dest/services/dummy_service.d.ts +2 -3
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +1 -4
- package/dest/services/encoding.d.ts +2 -2
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +7 -7
- package/dest/services/libp2p/libp2p_service.d.ts +15 -13
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +79 -89
- package/dest/services/peer-manager/metrics.d.ts +3 -1
- package/dest/services/peer-manager/metrics.d.ts.map +1 -1
- package/dest/services/peer-manager/metrics.js +6 -0
- package/dest/services/peer-manager/peer_manager.d.ts +1 -1
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +2 -1
- 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 +14 -37
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +17 -11
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/peer_collection.js +49 -15
- package/dest/services/reqresp/batch-tx-requester/tx_validator.js +2 -2
- package/dest/services/reqresp/reqresp.d.ts +1 -1
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +2 -1
- package/dest/services/service.d.ts +2 -2
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_provider.d.ts +3 -3
- package/dest/services/tx_provider.d.ts.map +1 -1
- package/dest/services/tx_provider.js +4 -4
- package/dest/test-helpers/make-test-p2p-clients.d.ts +5 -6
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.js +1 -2
- package/dest/test-helpers/mock-pubsub.d.ts +2 -3
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.js +2 -2
- package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +2 -2
- package/dest/test-helpers/testbench-utils.d.ts +2 -2
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +7 -6
- package/dest/testbench/worker_client_manager.d.ts +3 -1
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +6 -2
- package/dest/util.d.ts +1 -1
- package/package.json +14 -14
- package/src/client/factory.ts +24 -47
- package/src/client/interface.ts +5 -19
- package/src/client/p2p_client.ts +4 -110
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +2 -3
- package/src/config.ts +92 -43
- package/src/mem_pools/attestation_pool/attestation_pool.ts +5 -4
- package/src/mem_pools/instrumentation.ts +17 -13
- package/src/mem_pools/tx_pool_v2/README.md +9 -1
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +1 -1
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +3 -0
- package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +11 -1
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +2 -2
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +10 -6
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +15 -6
- package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +2 -1
- package/src/mem_pools/tx_pool_v2/index.ts +1 -1
- package/src/mem_pools/tx_pool_v2/interfaces.ts +10 -4
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +104 -19
- package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +29 -43
- package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +4 -1
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +187 -149
- package/src/msg_validators/proposal_validator/block_proposal_validator.ts +14 -4
- package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +20 -7
- package/src/msg_validators/proposal_validator/proposal_validator.ts +63 -40
- package/src/msg_validators/tx_validator/README.md +115 -0
- package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +3 -3
- package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
- package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
- package/src/msg_validators/tx_validator/factory.ts +353 -77
- package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
- package/src/msg_validators/tx_validator/gas_validator.ts +90 -27
- package/src/msg_validators/tx_validator/index.ts +2 -0
- package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
- package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
- package/src/msg_validators/tx_validator/phases_validator.ts +51 -26
- package/src/services/dummy_service.ts +1 -5
- package/src/services/encoding.ts +5 -6
- package/src/services/libp2p/libp2p_service.ts +90 -96
- package/src/services/peer-manager/metrics.ts +7 -0
- package/src/services/peer-manager/peer_manager.ts +2 -1
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +14 -42
- package/src/services/reqresp/batch-tx-requester/peer_collection.ts +63 -24
- package/src/services/reqresp/batch-tx-requester/tx_validator.ts +2 -2
- package/src/services/reqresp/reqresp.ts +3 -1
- package/src/services/service.ts +1 -1
- package/src/services/tx_provider.ts +2 -2
- package/src/test-helpers/make-test-p2p-clients.ts +1 -3
- package/src/test-helpers/mock-pubsub.ts +3 -6
- package/src/test-helpers/reqresp-nodes.ts +3 -6
- package/src/test-helpers/testbench-utils.ts +1 -1
- package/src/testbench/p2p_client_testbench_worker.ts +4 -7
- package/src/testbench/worker_client_manager.ts +13 -5
- package/src/util.ts +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
- package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
|
@@ -370,14 +370,15 @@ 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, _dec7, _dec8,
|
|
373
|
+
var _dec, _dec1, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _initProto;
|
|
374
374
|
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
375
|
+
import { maxBy } from '@aztec/foundation/collection';
|
|
375
376
|
import { createLibp2pComponentLogger, createLogger } from '@aztec/foundation/log';
|
|
376
377
|
import { RunningPromise } from '@aztec/foundation/running-promise';
|
|
377
378
|
import { Timer } from '@aztec/foundation/timer';
|
|
378
379
|
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
379
380
|
import { GasFees } from '@aztec/stdlib/gas';
|
|
380
|
-
import { BlockProposal, CheckpointAttestation, CheckpointProposal,
|
|
381
|
+
import { BlockProposal, CheckpointAttestation, CheckpointProposal, P2PMessage, PeerErrorSeverity, PeerErrorSeverityByHarshness, TopicType, createTopicString, getTopicsForConfig, metricsTopicStrToLabels } from '@aztec/stdlib/p2p';
|
|
381
382
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
382
383
|
import { Tx } from '@aztec/stdlib/tx';
|
|
383
384
|
import { compressComponentVersions } from '@aztec/stdlib/versioning';
|
|
@@ -396,7 +397,7 @@ import { ENR } from '@nethermindeth/enr';
|
|
|
396
397
|
import { createLibp2p } from 'libp2p';
|
|
397
398
|
import { BlockProposalValidator, CheckpointAttestationValidator, CheckpointProposalValidator, DoubleSpendTxValidator, FishermanAttestationValidator, getDefaultAllowedSetupFunctions } from '../../msg_validators/index.js';
|
|
398
399
|
import { MessageSeenValidator } from '../../msg_validators/msg_seen_validator/msg_seen_validator.js';
|
|
399
|
-
import {
|
|
400
|
+
import { createFirstStageTxValidationsForGossipedTransactions, createSecondStageTxValidationsForGossipedTransactions, createTxValidatorForBlockProposalReceivedTxs, createTxValidatorForReqResponseReceivedTxs } from '../../msg_validators/tx_validator/factory.js';
|
|
400
401
|
import { GossipSubEvent } from '../../types/index.js';
|
|
401
402
|
import { convertToMultiaddr } from '../../util.js';
|
|
402
403
|
import { getVersions } from '../../versioning.js';
|
|
@@ -407,8 +408,7 @@ import { APP_SPECIFIC_WEIGHT, gossipScoreThresholds } from '../gossipsub/scoring
|
|
|
407
408
|
import { createAllTopicScoreParams } from '../gossipsub/topic_score_params.js';
|
|
408
409
|
import { PeerManager } from '../peer-manager/peer_manager.js';
|
|
409
410
|
import { PeerScoring } from '../peer-manager/peer_scoring.js';
|
|
410
|
-
import { DEFAULT_SUB_PROTOCOL_VALIDATORS, ReqRespSubProtocol, ValidationError } from '../reqresp/index.js';
|
|
411
|
-
import { pingHandler, reqGoodbyeHandler, reqRespBlockHandler, reqRespBlockTxsHandler, reqRespStatusHandler, reqRespTxHandler } from '../reqresp/index.js';
|
|
411
|
+
import { DEFAULT_SUB_PROTOCOL_VALIDATORS, ReqRespSubProtocol, ValidationError, pingHandler, reqGoodbyeHandler, reqRespBlockHandler, 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)=>({
|
|
@@ -432,9 +432,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
432
432
|
[Attributes.TX_HASH]: requestedTxHash.toString()
|
|
433
433
|
})), _dec7 = trackSpan('Libp2pService.validateRequestedBlock', (requestedBlockNumber, _responseBlock)=>({
|
|
434
434
|
[Attributes.BLOCK_NUMBER]: requestedBlockNumber.toString()
|
|
435
|
-
})), _dec8 = trackSpan('Libp2pService.
|
|
436
|
-
[Attributes.TX_HASH]: tx.getTxHash().toString()
|
|
437
|
-
})), _dec9 = trackSpan('Libp2pService.validateCheckpointAttestation', async (_, attestation)=>({
|
|
435
|
+
})), _dec8 = trackSpan('Libp2pService.validateCheckpointAttestation', async (_, attestation)=>({
|
|
438
436
|
[Attributes.SLOT_NUMBER]: attestation.payload.header.slotNumber,
|
|
439
437
|
[Attributes.BLOCK_ARCHIVE]: attestation.archive.toString(),
|
|
440
438
|
[Attributes.P2P_ID]: await attestation.p2pMessageLoggingIdentifier().then((i)=>i.toString())
|
|
@@ -442,7 +440,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
442
440
|
/**
|
|
443
441
|
* Lib P2P implementation of the P2PService interface.
|
|
444
442
|
*/ export class LibP2PService extends WithTracer {
|
|
445
|
-
clientType;
|
|
446
443
|
config;
|
|
447
444
|
node;
|
|
448
445
|
peerDiscoveryService;
|
|
@@ -498,11 +495,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
498
495
|
[
|
|
499
496
|
_dec8,
|
|
500
497
|
2,
|
|
501
|
-
"validatePropagatedTx"
|
|
502
|
-
],
|
|
503
|
-
[
|
|
504
|
-
_dec9,
|
|
505
|
-
2,
|
|
506
498
|
"validateCheckpointAttestation"
|
|
507
499
|
]
|
|
508
500
|
], []));
|
|
@@ -532,8 +524,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
532
524
|
instrumentation;
|
|
533
525
|
telemetry;
|
|
534
526
|
logger;
|
|
535
|
-
constructor(
|
|
536
|
-
super(telemetry, 'LibP2PService'), this.
|
|
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 = {};
|
|
537
529
|
this.telemetry = telemetry;
|
|
538
530
|
// Create child logger with fisherman prefix if in fisherman mode
|
|
539
531
|
this.logger = config.fishermanMode ? logger.createChild('[FISHERMAN]') : logger;
|
|
@@ -549,12 +541,12 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
549
541
|
this.topicStrings[TopicType.block_proposal] = createTopicString(TopicType.block_proposal, this.protocolVersion);
|
|
550
542
|
this.topicStrings[TopicType.checkpoint_proposal] = createTopicString(TopicType.checkpoint_proposal, this.protocolVersion);
|
|
551
543
|
this.topicStrings[TopicType.checkpoint_attestation] = createTopicString(TopicType.checkpoint_attestation, this.protocolVersion);
|
|
552
|
-
|
|
553
|
-
txsPermitted: !config.disableTransactions
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
544
|
+
const proposalValidatorOpts = {
|
|
545
|
+
txsPermitted: !config.disableTransactions,
|
|
546
|
+
maxTxsPerBlock: config.validateMaxTxsPerBlock
|
|
547
|
+
};
|
|
548
|
+
this.blockProposalValidator = new BlockProposalValidator(epochCache, proposalValidatorOpts);
|
|
549
|
+
this.checkpointProposalValidator = new CheckpointProposalValidator(epochCache, proposalValidatorOpts);
|
|
558
550
|
this.checkpointAttestationValidator = config.fishermanMode ? new FishermanAttestationValidator(epochCache, mempools.attestationPool, telemetry) : new CheckpointAttestationValidator(epochCache);
|
|
559
551
|
this.gossipSubEventHandler = this.handleGossipSubEvent.bind(this);
|
|
560
552
|
this.blockReceivedCallback = async (block)=>{
|
|
@@ -576,7 +568,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
576
568
|
* @param config - The configuration to use when creating the service.
|
|
577
569
|
* @param txPool - The transaction pool to be accessed by the service.
|
|
578
570
|
* @returns The new service.
|
|
579
|
-
*/ static async new(
|
|
571
|
+
*/ static async new(config, peerId, deps) {
|
|
580
572
|
const { worldStateSynchronizer, epochCache, l2BlockSource, mempools, proofVerifier, peerStore, telemetry, logger, packageVersion } = deps;
|
|
581
573
|
const { p2pPort, maxPeerCount, listenAddress } = config;
|
|
582
574
|
const bindAddrTcp = convertToMultiaddr(listenAddress, p2pPort, 'tcp');
|
|
@@ -741,7 +733,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
741
733
|
// Note: positive topic scores can offset penalties, so alignment is best-effort.
|
|
742
734
|
node.services.pubsub.score.params.appSpecificWeight = APP_SPECIFIC_WEIGHT;
|
|
743
735
|
node.services.pubsub.score.params.appSpecificScore = (peerId)=>peerManager.shouldDisableP2PGossip(peerId) ? -Infinity : peerManager.getPeerScore(peerId);
|
|
744
|
-
return new LibP2PService(
|
|
736
|
+
return new LibP2PService(config, node, peerDiscoveryService, reqresp, peerManager, mempools, l2BlockSource, epochCache, proofVerifier, worldStateSynchronizer, telemetry, logger);
|
|
745
737
|
}
|
|
746
738
|
/**
|
|
747
739
|
* Starts the LibP2P service.
|
|
@@ -786,7 +778,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
786
778
|
await this.reqresp.start(requestResponseHandlers, reqrespSubProtocolValidators);
|
|
787
779
|
await this.node.start();
|
|
788
780
|
// Subscribe to standard GossipSub topics by default
|
|
789
|
-
for (const topic of
|
|
781
|
+
for (const topic of getTopicsForConfig(this.config.disableTransactions)){
|
|
790
782
|
this.subscribeToTopic(this.topicStrings[topic]);
|
|
791
783
|
}
|
|
792
784
|
// add GossipSub listener
|
|
@@ -995,9 +987,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
995
987
|
if (msg.topic === this.topicStrings[TopicType.tx]) {
|
|
996
988
|
await this.handleGossipedTx(p2pMessage.payload, msgId, source);
|
|
997
989
|
} else if (msg.topic === this.topicStrings[TopicType.checkpoint_attestation]) {
|
|
998
|
-
|
|
999
|
-
await this.processCheckpointAttestationFromPeer(p2pMessage.payload, msgId, source);
|
|
1000
|
-
}
|
|
990
|
+
await this.processCheckpointAttestationFromPeer(p2pMessage.payload, msgId, source);
|
|
1001
991
|
} else if (msg.topic === this.topicStrings[TopicType.block_proposal]) {
|
|
1002
992
|
await this.processBlockFromPeer(p2pMessage.payload, msgId, source);
|
|
1003
993
|
} else if (msg.topic === this.topicStrings[TopicType.checkpoint_proposal]) {
|
|
@@ -1065,16 +1055,45 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1065
1055
|
async handleGossipedTx(payloadData, msgId, source) {
|
|
1066
1056
|
const validationFunc = async ()=>{
|
|
1067
1057
|
const tx = Tx.fromBuffer(payloadData);
|
|
1068
|
-
const
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1058
|
+
const currentBlockNumber = await this.archiver.getBlockNumber();
|
|
1059
|
+
const { ts: nextSlotTimestamp } = this.epochCache.getEpochAndSlotInNextL1Slot();
|
|
1060
|
+
// Stage 1: fast validators (metadata, data, timestamps, double-spend, gas, phases, block header)
|
|
1061
|
+
const firstStageValidators = await this.createFirstStageMessageValidators(currentBlockNumber, nextSlotTimestamp);
|
|
1062
|
+
const firstStageOutcome = await this.runValidations(tx, firstStageValidators);
|
|
1063
|
+
if (!firstStageOutcome.allPassed) {
|
|
1064
|
+
const { name } = firstStageOutcome.failure;
|
|
1065
|
+
let { severity } = firstStageOutcome.failure;
|
|
1066
|
+
// Double spend validator has a special case handler. We perform more detailed examination
|
|
1067
|
+
// as to how recently the nullifier was entered into the tree and if the transaction should
|
|
1068
|
+
// have 'known' the nullifier existed. This determines the severity of the penalty applied to the peer.
|
|
1069
|
+
if (name === 'doubleSpendValidator') {
|
|
1070
|
+
const txBlockNumber = BlockNumber(currentBlockNumber + 1);
|
|
1071
|
+
severity = await this.handleDoubleSpendFailure(tx, txBlockNumber);
|
|
1072
|
+
}
|
|
1073
|
+
this.peerManager.penalizePeer(source, severity);
|
|
1074
|
+
return {
|
|
1075
|
+
result: TopicValidatorResult.Reject
|
|
1076
|
+
};
|
|
1077
|
+
}
|
|
1078
|
+
// Pool pre-check: see if the pool would accept this tx before doing expensive proof verification
|
|
1079
|
+
const canAdd = await this.mempools.txPool.canAddPendingTx(tx);
|
|
1080
|
+
if (canAdd === 'ignored') {
|
|
1081
|
+
return {
|
|
1082
|
+
result: TopicValidatorResult.Ignore,
|
|
1083
|
+
obj: tx
|
|
1084
|
+
};
|
|
1085
|
+
}
|
|
1086
|
+
// Stage 2: expensive proof verification
|
|
1087
|
+
const secondStageValidators = this.createSecondStageMessageValidators();
|
|
1088
|
+
const secondStageOutcome = await this.runValidations(tx, secondStageValidators);
|
|
1089
|
+
if (!secondStageOutcome.allPassed) {
|
|
1090
|
+
const { severity } = secondStageOutcome.failure;
|
|
1091
|
+
this.peerManager.penalizePeer(source, severity);
|
|
1073
1092
|
return {
|
|
1074
1093
|
result: TopicValidatorResult.Reject
|
|
1075
1094
|
};
|
|
1076
1095
|
}
|
|
1077
|
-
//
|
|
1096
|
+
// Pool add: persist the tx
|
|
1078
1097
|
const txHash = tx.getTxHash();
|
|
1079
1098
|
const addResult = await this.mempools.txPool.addPendingTxs([
|
|
1080
1099
|
tx
|
|
@@ -1084,7 +1103,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1084
1103
|
const wasAccepted = addResult.accepted.some((h)=>h.equals(txHash));
|
|
1085
1104
|
const wasIgnored = addResult.ignored.some((h)=>h.equals(txHash));
|
|
1086
1105
|
this.logger.trace(`Validate propagated tx`, {
|
|
1087
|
-
isValid,
|
|
1088
1106
|
wasAccepted,
|
|
1089
1107
|
wasIgnored,
|
|
1090
1108
|
[Attributes.P2P_ID]: source.toString()
|
|
@@ -1626,33 +1644,11 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1626
1644
|
}
|
|
1627
1645
|
}
|
|
1628
1646
|
createRequestedTxValidator() {
|
|
1629
|
-
return
|
|
1647
|
+
return createTxValidatorForReqResponseReceivedTxs(this.proofVerifier, {
|
|
1630
1648
|
l1ChainId: this.config.l1ChainId,
|
|
1631
1649
|
rollupVersion: this.config.rollupVersion
|
|
1632
1650
|
});
|
|
1633
1651
|
}
|
|
1634
|
-
async validatePropagatedTx(tx, peerId) {
|
|
1635
|
-
const currentBlockNumber = await this.archiver.getBlockNumber();
|
|
1636
|
-
// We accept transactions if they are not expired by the next slot (checked based on the ExpirationTimestamp field)
|
|
1637
|
-
const { ts: nextSlotTimestamp } = this.epochCache.getEpochAndSlotInNextL1Slot();
|
|
1638
|
-
const messageValidators = await this.createMessageValidators(currentBlockNumber, nextSlotTimestamp);
|
|
1639
|
-
for (const validator of messageValidators){
|
|
1640
|
-
const outcome = await this.runValidations(tx, validator);
|
|
1641
|
-
if (outcome.allPassed) {
|
|
1642
|
-
continue;
|
|
1643
|
-
}
|
|
1644
|
-
const { name } = outcome.failure;
|
|
1645
|
-
let { severity } = outcome.failure;
|
|
1646
|
-
// Double spend validator has a special case handler
|
|
1647
|
-
if (name === 'doubleSpendValidator') {
|
|
1648
|
-
const txBlockNumber = BlockNumber(currentBlockNumber + 1); // tx is expected to be in the next block
|
|
1649
|
-
severity = await this.handleDoubleSpendFailure(tx, txBlockNumber);
|
|
1650
|
-
}
|
|
1651
|
-
this.peerManager.penalizePeer(peerId, severity);
|
|
1652
|
-
return false;
|
|
1653
|
-
}
|
|
1654
|
-
return true;
|
|
1655
|
-
}
|
|
1656
1652
|
async getGasFees(blockNumber) {
|
|
1657
1653
|
if (blockNumber === this.feesCache?.blockNumber) {
|
|
1658
1654
|
return this.feesCache.gasFees;
|
|
@@ -1679,38 +1675,30 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1679
1675
|
peerScoring: this.peerManager
|
|
1680
1676
|
};
|
|
1681
1677
|
}
|
|
1682
|
-
async
|
|
1683
|
-
const
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
await Promise.all(txs.map(async (tx)=>{
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
if (!outcome.allPassed) {
|
|
1691
|
-
throw new Error('Invalid tx detected', {
|
|
1692
|
-
cause: {
|
|
1693
|
-
outcome
|
|
1694
|
-
}
|
|
1695
|
-
});
|
|
1696
|
-
}
|
|
1697
|
-
}
|
|
1678
|
+
async validateTxsReceivedInBlockProposal(txs) {
|
|
1679
|
+
const validator = createTxValidatorForBlockProposalReceivedTxs(this.proofVerifier, {
|
|
1680
|
+
l1ChainId: this.config.l1ChainId,
|
|
1681
|
+
rollupVersion: this.config.rollupVersion
|
|
1682
|
+
}, this.logger.getBindings());
|
|
1683
|
+
const results = await Promise.all(txs.map(async (tx)=>{
|
|
1684
|
+
const result = await validator.validateTx(tx);
|
|
1685
|
+
return result.result !== 'invalid';
|
|
1698
1686
|
}));
|
|
1687
|
+
if (results.some((value)=>value === false)) {
|
|
1688
|
+
throw new Error('Invalid tx detected');
|
|
1689
|
+
}
|
|
1699
1690
|
}
|
|
1700
|
-
/**
|
|
1701
|
-
* Create message validators for the given block number and timestamp.
|
|
1702
|
-
*
|
|
1703
|
-
* Each validator is a pair of a validator and a severity.
|
|
1704
|
-
* If a validator fails, the peer is penalized with the severity of the validator.
|
|
1705
|
-
*
|
|
1706
|
-
* @param currentBlockNumber - The current synced block number.
|
|
1707
|
-
* @param nextSlotTimestamp - The timestamp of the next slot (used to validate txs are not expired).
|
|
1708
|
-
* @returns The message validators.
|
|
1709
|
-
*/ async createMessageValidators(currentBlockNumber, nextSlotTimestamp) {
|
|
1691
|
+
/** Creates the first stage (fast) validators for gossiped transactions. */ async createFirstStageMessageValidators(currentBlockNumber, nextSlotTimestamp) {
|
|
1710
1692
|
const gasFees = await this.getGasFees(currentBlockNumber);
|
|
1711
|
-
const allowedInSetup =
|
|
1712
|
-
|
|
1713
|
-
|
|
1693
|
+
const allowedInSetup = [
|
|
1694
|
+
...await getDefaultAllowedSetupFunctions(),
|
|
1695
|
+
...this.config.txPublicSetupAllowListExtend ?? []
|
|
1696
|
+
];
|
|
1697
|
+
const blockNumber = BlockNumber(currentBlockNumber + 1);
|
|
1698
|
+
return createFirstStageTxValidationsForGossipedTransactions(nextSlotTimestamp, blockNumber, this.worldStateSynchronizer, gasFees, this.config.l1ChainId, this.config.rollupVersion, protocolContractsHash, this.archiver, !this.config.disableTransactions, allowedInSetup, this.logger.getBindings());
|
|
1699
|
+
}
|
|
1700
|
+
/** Creates the second stage (expensive proof verification) validators for gossiped transactions. */ createSecondStageMessageValidators() {
|
|
1701
|
+
return createSecondStageTxValidationsForGossipedTransactions(this.proofVerifier, this.logger.getBindings());
|
|
1714
1702
|
}
|
|
1715
1703
|
/**
|
|
1716
1704
|
* Run validations on a tx.
|
|
@@ -1728,8 +1716,10 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1728
1716
|
});
|
|
1729
1717
|
// A promise that resolves when all validations have been run
|
|
1730
1718
|
const allValidations = await Promise.all(validationPromises);
|
|
1731
|
-
const
|
|
1732
|
-
if (
|
|
1719
|
+
const failures = allValidations.filter((x)=>!x.isValid);
|
|
1720
|
+
if (failures.length > 0) {
|
|
1721
|
+
// Pick the most severe failure (lowest tolerance = harshest penalty)
|
|
1722
|
+
const failed = maxBy(failures, (f)=>PeerErrorSeverityByHarshness.indexOf(f.severity));
|
|
1733
1723
|
return {
|
|
1734
1724
|
allPassed: false,
|
|
1735
1725
|
failure: {
|
|
@@ -6,6 +6,7 @@ export declare class PeerManagerMetrics {
|
|
|
6
6
|
private sentGoodbyes;
|
|
7
7
|
private receivedGoodbyes;
|
|
8
8
|
private peerCount;
|
|
9
|
+
private healthyPeerCount;
|
|
9
10
|
private lowScoreDisconnects;
|
|
10
11
|
private peerConnectionDuration;
|
|
11
12
|
private peerConnectedAt;
|
|
@@ -14,8 +15,9 @@ export declare class PeerManagerMetrics {
|
|
|
14
15
|
recordGoodbyeSent(reason: GoodByeReason): void;
|
|
15
16
|
recordGoodbyeReceived(reason: GoodByeReason): void;
|
|
16
17
|
recordPeerCount(count: number): void;
|
|
18
|
+
recordHealthyPeerCount(count: number): void;
|
|
17
19
|
recordLowScoreDisconnect(scoreState: 'Banned' | 'Disconnect'): void;
|
|
18
20
|
peerConnected(id: PeerId): void;
|
|
19
21
|
peerDisconnected(id: PeerId): void;
|
|
20
22
|
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3BlZXItbWFuYWdlci9tZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFLTCxLQUFLLGVBQWUsRUFDcEIsS0FBSyxNQUFNLEVBSVosTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsYUFBYSxFQUF1QixNQUFNLCtCQUErQixDQUFDO0FBRW5GLHFCQUFhLGtCQUFrQjthQWFYLGVBQWUsRUFBRSxlQUFlO0lBWmxELE9BQU8sQ0FBQyxZQUFZLENBQWdCO0lBQ3BDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBZ0I7SUFDeEMsT0FBTyxDQUFDLFNBQVMsQ0FBUTtJQUN6QixPQUFPLENBQUMsZ0JBQWdCLENBQVE7SUFDaEMsT0FBTyxDQUFDLG1CQUFtQixDQUFnQjtJQUMzQyxPQUFPLENBQUMsc0JBQXNCLENBQVk7SUFFMUMsT0FBTyxDQUFDLGVBQWUsQ0FBa0Q7SUFFekUsU0FBZ0IsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUUvQixZQUNrQixlQUFlLEdBQUUsZUFBc0MsRUFDdkUsSUFBSSxTQUFnQixFQTJCckI7SUFFTSxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsYUFBYSxRQUU3QztJQUVNLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxhQUFhLFFBRWpEO0lBRU0sZUFBZSxDQUFDLEtBQUssRUFBRSxNQUFNLFFBRW5DO0lBRU0sc0JBQXNCLENBQUMsS0FBSyxFQUFFLE1BQU0sUUFFMUM7SUFFTSx3QkFBd0IsQ0FBQyxVQUFVLEVBQUUsUUFBUSxHQUFHLFlBQVksUUFFbEU7SUFFTSxhQUFhLENBQUMsRUFBRSxFQUFFLE1BQU0sUUFFOUI7SUFFTSxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsTUFBTSxRQU1qQztDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/services/peer-manager/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,MAAM,EAIZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAuB,MAAM,+BAA+B,CAAC;AAEnF,qBAAa,kBAAkB;
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/services/peer-manager/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,MAAM,EAIZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAuB,MAAM,+BAA+B,CAAC;AAEnF,qBAAa,kBAAkB;aAaX,eAAe,EAAE,eAAe;IAZlD,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,gBAAgB,CAAQ;IAChC,OAAO,CAAC,mBAAmB,CAAgB;IAC3C,OAAO,CAAC,sBAAsB,CAAY;IAE1C,OAAO,CAAC,eAAe,CAAkD;IAEzE,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,YACkB,eAAe,GAAE,eAAsC,EACvE,IAAI,SAAgB,EA2BrB;IAEM,iBAAiB,CAAC,MAAM,EAAE,aAAa,QAE7C;IAEM,qBAAqB,CAAC,MAAM,EAAE,aAAa,QAEjD;IAEM,eAAe,CAAC,KAAK,EAAE,MAAM,QAEnC;IAEM,sBAAsB,CAAC,KAAK,EAAE,MAAM,QAE1C;IAEM,wBAAwB,CAAC,UAAU,EAAE,QAAQ,GAAG,YAAY,QAElE;IAEM,aAAa,CAAC,EAAE,EAAE,MAAM,QAE9B;IAEM,gBAAgB,CAAC,EAAE,EAAE,MAAM,QAMjC;CACF"}
|
|
@@ -5,6 +5,7 @@ export class PeerManagerMetrics {
|
|
|
5
5
|
sentGoodbyes;
|
|
6
6
|
receivedGoodbyes;
|
|
7
7
|
peerCount;
|
|
8
|
+
healthyPeerCount;
|
|
8
9
|
lowScoreDisconnects;
|
|
9
10
|
peerConnectionDuration;
|
|
10
11
|
peerConnectedAt;
|
|
@@ -27,6 +28,7 @@ export class PeerManagerMetrics {
|
|
|
27
28
|
this.sentGoodbyes = createUpDownCounterWithDefault(meter, Metrics.PEER_MANAGER_GOODBYES_SENT, goodbyeReasonAttrs);
|
|
28
29
|
this.receivedGoodbyes = createUpDownCounterWithDefault(meter, Metrics.PEER_MANAGER_GOODBYES_RECEIVED, goodbyeReasonAttrs);
|
|
29
30
|
this.peerCount = meter.createGauge(Metrics.PEER_MANAGER_PEER_COUNT);
|
|
31
|
+
this.healthyPeerCount = meter.createGauge(Metrics.PEER_MANAGER_HEALTHY_PEER_COUNT);
|
|
30
32
|
this.lowScoreDisconnects = createUpDownCounterWithDefault(meter, Metrics.PEER_MANAGER_LOW_SCORE_DISCONNECTS, {
|
|
31
33
|
[Attributes.P2P_PEER_SCORE_STATE]: [
|
|
32
34
|
'Banned',
|
|
@@ -48,6 +50,9 @@ export class PeerManagerMetrics {
|
|
|
48
50
|
recordPeerCount(count) {
|
|
49
51
|
this.peerCount.record(count);
|
|
50
52
|
}
|
|
53
|
+
recordHealthyPeerCount(count) {
|
|
54
|
+
this.healthyPeerCount.record(count);
|
|
55
|
+
}
|
|
51
56
|
recordLowScoreDisconnect(scoreState) {
|
|
52
57
|
this.lowScoreDisconnects.add(1, {
|
|
53
58
|
[Attributes.P2P_PEER_SCORE_STATE]: scoreState
|
|
@@ -60,6 +65,7 @@ export class PeerManagerMetrics {
|
|
|
60
65
|
const connectedAt = this.peerConnectedAt.get(id.toString());
|
|
61
66
|
if (connectedAt) {
|
|
62
67
|
this.peerConnectionDuration.record(Date.now() - connectedAt);
|
|
68
|
+
this.peerConnectedAt.delete(id.toString());
|
|
63
69
|
}
|
|
64
70
|
}
|
|
65
71
|
}
|
|
@@ -171,4 +171,4 @@ export declare class PeerManager implements PeerManagerInterface {
|
|
|
171
171
|
handleAuthRequestFromPeer(_authRequest: AuthRequest, peerId: PeerId): Promise<StatusMessage>;
|
|
172
172
|
private updateAuthenticatedPeers;
|
|
173
173
|
}
|
|
174
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
174
|
+
//# 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":"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
|
|
1
|
+
{"version":3,"file":"peer_manager.d.ts","sourceRoot":"","sources":["../../../src/services/peer-manager/peer_manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -406,7 +406,8 @@ export class PeerManager {
|
|
|
406
406
|
cachedPeers: this.cachedPeers.size,
|
|
407
407
|
...this.peerScoring.getStats()
|
|
408
408
|
});
|
|
409
|
-
this.metrics.recordPeerCount(
|
|
409
|
+
this.metrics.recordPeerCount(connections.length);
|
|
410
|
+
this.metrics.recordHealthyPeerCount(healthyConnections.length);
|
|
410
411
|
// Exit if no peers to connect
|
|
411
412
|
if (peersToConnect <= 0) {
|
|
412
413
|
return;
|
|
@@ -45,4 +45,4 @@ export declare class BatchTxRequester {
|
|
|
45
45
|
private unlockSmartRequesterSemaphores;
|
|
46
46
|
private sleepClampedToDeadline;
|
|
47
47
|
}
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2hfdHhfcmVxdWVzdGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvcmVxcmVzcC9iYXRjaC10eC1yZXF1ZXN0ZXIvYmF0Y2hfdHhfcmVxdWVzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUdsRSxPQUFPLEVBQUUsWUFBWSxFQUFrQixNQUFNLHlCQUF5QixDQUFDO0FBRXZFLE9BQU8sRUFBRSxFQUFFLEVBQW1CLE1BQU0sa0JBQWtCLENBQUM7QUFFdkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFaEQsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUVyRixPQUFPLEVBQXFDLEtBQUssY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFRakcsT0FBTyxLQUFLLEVBQUUsNkJBQTZCLEVBQUUsdUJBQXVCLEVBQXlCLE1BQU0sZ0JBQWdCLENBQUM7QUFzQnBILHFCQUFhLGdCQUFnQjtJQUMzQixPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBaUI7SUFDaEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQXFCO0lBQ2hELE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFTO0lBQ25DLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFnQztJQUMzRCxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBUztJQUNoQyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBZTtJQUM1QyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBMEI7SUFDL0MsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQWtCO0lBQ3hDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUF3QjtJQUNwRCxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBUztJQUNsQyxPQUFPLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFhO0lBQ3JELE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFzQjtJQUM5QyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBMkI7SUFDdkQsT0FBTyxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBUztJQUNsRCxPQUFPLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFTO0lBQ2pELE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFTO0lBRXJDLFlBQ0UsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQ3JDLGNBQWMsRUFBRSxjQUFjLEVBQzlCLFVBQVUsRUFBRSxNQUFNLEdBQUcsU0FBUyxFQUM5QixTQUFTLEVBQUUsTUFBTSxFQUNqQixVQUFVLEVBQUUsNkJBQTZCLEVBQ3pDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFDZixZQUFZLENBQUMsRUFBRSxZQUFZLEVBQzNCLElBQUksQ0FBQyxFQUFFLHVCQUF1QixFQWlDL0I7SUFLYSxHQUFHLElBQUksY0FBYyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQTZDL0Q7SUFLRCxPQUFvQixhQUFhLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLFNBQVMsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FTdkc7WUFVYSxtQkFBbUI7WUFrRG5CLGFBQWE7WUFrRGIsY0FBYztZQWdEZCxjQUFjO1lBK0JkLGVBQWU7WUEwRWYsY0FBYztJQW1DNUIsT0FBTyxDQUFDLDBCQUEwQjtZQWlCcEIsNkJBQTZCO1lBWTdCLGlCQUFpQjtJQXFEL0IsT0FBTyxDQUFDLG1CQUFtQjtJQWdDM0IsT0FBTyxDQUFDLG9CQUFvQjtJQU01QixPQUFPLENBQUMsMEJBQTBCO0lBS2xDLE9BQU8sQ0FBQyxjQUFjO0lBTXRCLE9BQU8sQ0FBQyxnQ0FBZ0M7SUFnQnhDLE9BQU8sQ0FBQyxxQkFBcUI7SUF1QjdCLE9BQU8sQ0FBQyxhQUFhO0lBYXJCLE9BQU8sQ0FBQyxVQUFVO0lBYWxCLE9BQU8sQ0FBQyw4QkFBOEI7WUFVeEIsc0JBQXNCO0NBT3JDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch_tx_requester.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/batch-tx-requester/batch_tx_requester.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EAAE,YAAY,EAAkB,MAAM,yBAAyB,CAAC;AAEvE,OAAO,EAAE,EAAE,EAAmB,MAAM,kBAAkB,CAAC;AAEvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"batch_tx_requester.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/batch-tx-requester/batch_tx_requester.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EAAE,YAAY,EAAkB,MAAM,yBAAyB,CAAC;AAEvE,OAAO,EAAE,EAAE,EAAmB,MAAM,kBAAkB,CAAC;AAEvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAErF,OAAO,EAAqC,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAQjG,OAAO,KAAK,EAAE,6BAA6B,EAAE,uBAAuB,EAAyB,MAAM,gBAAgB,CAAC;AAsBpH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgC;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0B;IAC/C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwB;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAa;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;IACvD,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAS;IAClD,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAS;IACjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAErC,YACE,iBAAiB,EAAE,kBAAkB,EACrC,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,6BAA6B,EACzC,MAAM,CAAC,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,YAAY,EAC3B,IAAI,CAAC,EAAE,uBAAuB,EAiC/B;IAKa,GAAG,IAAI,cAAc,CAAC,EAAE,EAAE,EAAE,GAAG,SAAS,EAAE,OAAO,CAAC,CA6C/D;IAKD,OAAoB,aAAa,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,EAAE,EAAE,GAAG,SAAS,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CASvG;YAUa,mBAAmB;YAkDnB,aAAa;YAkDb,cAAc;YAgDd,cAAc;YA+Bd,eAAe;YA0Ef,cAAc;IAmC5B,OAAO,CAAC,0BAA0B;YAiBpB,6BAA6B;YAY7B,iBAAiB;IAqD/B,OAAO,CAAC,mBAAmB;IAgC3B,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,0BAA0B;IAKlC,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,gCAAgC;IAgBxC,OAAO,CAAC,qBAAqB;IAuB7B,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,8BAA8B;YAUxB,sBAAsB;CAOrC"}
|
|
@@ -6,7 +6,6 @@ import { sleep } from '@aztec/foundation/sleep';
|
|
|
6
6
|
import { DateProvider, executeTimeout } from '@aztec/foundation/timer';
|
|
7
7
|
import { PeerErrorSeverity } from '@aztec/stdlib/p2p';
|
|
8
8
|
import { TxHash } from '@aztec/stdlib/tx';
|
|
9
|
-
import { peerIdFromString } from '@libp2p/peer-id';
|
|
10
9
|
import { ReqRespSubProtocol } from '.././interface.js';
|
|
11
10
|
import { BlockTxsRequest, BlockTxsResponse } from '.././protocols/index.js';
|
|
12
11
|
import { ReqRespStatus } from '.././status.js';
|
|
@@ -64,9 +63,8 @@ import { BatchRequestTxValidator } from './tx_validator.js';
|
|
|
64
63
|
if (this.opts.peerCollection) {
|
|
65
64
|
this.peers = this.opts.peerCollection;
|
|
66
65
|
} else {
|
|
67
|
-
const initialPeers = this.p2pService.connectionSampler.getPeerListSortedByConnectionCountAsc();
|
|
68
66
|
const badPeerThreshold = this.opts.badPeerThreshold ?? DEFAULT_BATCH_TX_REQUESTER_BAD_PEER_THRESHOLD;
|
|
69
|
-
this.peers = new PeerCollection(
|
|
67
|
+
this.peers = new PeerCollection(this.p2pService.connectionSampler, this.pinnedPeer, this.dateProvider, badPeerThreshold, this.p2pService.peerScoring);
|
|
70
68
|
}
|
|
71
69
|
this.txsMetadata = new MissingTxMetadataCollection(missingTxsTracker, this.txBatchSize);
|
|
72
70
|
this.smartRequesterSemaphore = this.opts.semaphore ?? new Semaphore(0);
|
|
@@ -177,7 +175,6 @@ import { BatchRequestTxValidator } from './tx_validator.js';
|
|
|
177
175
|
/*
|
|
178
176
|
* Starts dumb worker loops
|
|
179
177
|
* */ async dumbRequester() {
|
|
180
|
-
const nextPeerIndex = this.makeRoundRobinIndexer();
|
|
181
178
|
const nextBatchIndex = this.makeRoundRobinIndexer();
|
|
182
179
|
// Chunk missing tx hashes into batches of txBatchSize, wrapping around to ensure no peer gets less than txBatchSize
|
|
183
180
|
const txChunks = ()=>{
|
|
@@ -205,15 +202,10 @@ import { BatchRequestTxValidator } from './tx_validator.js';
|
|
|
205
202
|
txs
|
|
206
203
|
};
|
|
207
204
|
};
|
|
208
|
-
const
|
|
209
|
-
const peers = this.peers.getDumbPeersToQuery();
|
|
210
|
-
const idx = nextPeerIndex(()=>peers.length);
|
|
211
|
-
return idx === undefined ? undefined : peerIdFromString(peers[idx]);
|
|
212
|
-
};
|
|
213
|
-
const workerCount = Math.min(this.dumbParallelWorkerCount, this.peers.getAllPeers().size);
|
|
205
|
+
const workerCount = this.dumbParallelWorkerCount;
|
|
214
206
|
const workers = Array.from({
|
|
215
207
|
length: workerCount
|
|
216
|
-
}, (_, index)=>this.dumbWorkerLoop(
|
|
208
|
+
}, (_, index)=>this.dumbWorkerLoop(this.peers.nextDumbPeerToQuery.bind(this.peers), makeRequest, index + 1));
|
|
217
209
|
await Promise.allSettled(workers);
|
|
218
210
|
}
|
|
219
211
|
/*
|
|
@@ -257,12 +249,6 @@ import { BatchRequestTxValidator } from './tx_validator.js';
|
|
|
257
249
|
/*
|
|
258
250
|
* Starts smart worker loops
|
|
259
251
|
* */ async smartRequester() {
|
|
260
|
-
const nextPeerIndex = this.makeRoundRobinIndexer();
|
|
261
|
-
const nextPeer = ()=>{
|
|
262
|
-
const peers = this.peers.getSmartPeersToQuery();
|
|
263
|
-
const idx = nextPeerIndex(()=>peers.length);
|
|
264
|
-
return idx === undefined ? undefined : peerIdFromString(peers[idx]);
|
|
265
|
-
};
|
|
266
252
|
const makeRequest = (pid)=>{
|
|
267
253
|
const txs = this.txsMetadata.getTxsToRequestFromThePeer(pid);
|
|
268
254
|
const blockRequest = BlockTxsRequest.fromTxsSourceAndMissingTxs(this.blockTxsSource, txs);
|
|
@@ -275,8 +261,8 @@ import { BatchRequestTxValidator } from './tx_validator.js';
|
|
|
275
261
|
};
|
|
276
262
|
};
|
|
277
263
|
const workers = Array.from({
|
|
278
|
-
length:
|
|
279
|
-
}, (_, index)=>this.smartWorkerLoop(
|
|
264
|
+
length: this.smartParallelWorkerCount
|
|
265
|
+
}, (_, index)=>this.smartWorkerLoop(this.peers.nextSmartPeerToQuery.bind(this.peers), makeRequest, index + 1));
|
|
280
266
|
await Promise.allSettled(workers);
|
|
281
267
|
}
|
|
282
268
|
/*
|
|
@@ -301,24 +287,17 @@ import { BatchRequestTxValidator } from './tx_validator.js';
|
|
|
301
287
|
const weRanOutOfPeersToQuery = peerId === undefined;
|
|
302
288
|
if (weRanOutOfPeersToQuery) {
|
|
303
289
|
this.logger.debug(`Worker loop smart: No more peers to query`);
|
|
304
|
-
// If
|
|
305
|
-
|
|
306
|
-
const
|
|
307
|
-
if (
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
const thereAreSomeRateLimitedSmartPeers = nextSmartPeerDelay !== undefined;
|
|
311
|
-
if (thereAreSomeRateLimitedSmartPeers) {
|
|
312
|
-
await this.sleepClampedToDeadline(nextSmartPeerDelay);
|
|
313
|
-
continue;
|
|
314
|
-
}
|
|
315
|
-
this.logger.debug(`Worker loop smart: No more smart peers to query killing ${workerIndex}`);
|
|
316
|
-
break;
|
|
290
|
+
// If we have rate limited peers wait for them.
|
|
291
|
+
const nextSmartPeerDelay = this.peers.getNextSmartPeerAvailabilityDelayMs();
|
|
292
|
+
const thereAreSomeRateLimitedSmartPeers = nextSmartPeerDelay !== undefined;
|
|
293
|
+
if (thereAreSomeRateLimitedSmartPeers) {
|
|
294
|
+
await this.sleepClampedToDeadline(nextSmartPeerDelay);
|
|
295
|
+
continue;
|
|
317
296
|
}
|
|
318
|
-
// Otherwise there are still some dumb peers that could become smart.
|
|
319
297
|
// We end up here when all known smart peers became temporarily unavailable via combination of
|
|
320
298
|
// (bad, in-flight, or rate-limited) or in some weird scenario all current smart peers turn bad which is permanent
|
|
321
|
-
// but dumb peers
|
|
299
|
+
// but there are dumb peers that could be promoted
|
|
300
|
+
// or new peer can join as dumb and be promoted later
|
|
322
301
|
//
|
|
323
302
|
// When a dumb peer responds with valid txIndices, it gets
|
|
324
303
|
// promoted to smart and releases the semaphore, waking this worker.
|
|
@@ -473,9 +452,7 @@ import { BatchRequestTxValidator } from './tx_validator.js';
|
|
|
473
452
|
this.peers.markPeerSmart(peerId);
|
|
474
453
|
this.markTxsPeerHas(peerId, response);
|
|
475
454
|
// Unblock smart workers
|
|
476
|
-
|
|
477
|
-
this.smartRequesterSemaphore.release();
|
|
478
|
-
}
|
|
455
|
+
this.smartRequesterSemaphore.release();
|
|
479
456
|
}
|
|
480
457
|
isBlockResponseValid(response) {
|
|
481
458
|
const archiveRootsMatch = this.blockTxsSource.archive.toString() === response.archiveRoot.toString();
|