@aztec/p2p 0.0.1-commit.c0b82b2 → 0.0.1-commit.c2eed6949
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +129 -3
- package/dest/client/factory.d.ts +2 -2
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +22 -9
- package/dest/client/p2p_client.d.ts +1 -1
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +22 -34
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +3 -3
- package/dest/config.d.ts +32 -11
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +86 -32
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +4 -4
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.js +8 -4
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +6 -6
- 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/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +2 -1
- package/dest/mem_pools/tx_pool/priority.d.ts +2 -2
- package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/priority.js +4 -4
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +3 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +2 -1
- package/dest/mem_pools/tx_pool_v2/eviction/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/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/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 +2 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +25 -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 +33 -10
- 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 -43
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +4 -2
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +6 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +2 -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 +24 -6
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +5 -4
- package/dest/msg_validators/clock_tolerance.d.ts +1 -1
- package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
- package/dest/msg_validators/clock_tolerance.js +4 -3
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +6 -4
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +6 -4
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -8
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator.js +53 -41
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/allowed_public_setup.js +24 -20
- package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
- package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
- package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
- package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
- package/dest/msg_validators/tx_validator/data_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +35 -2
- package/dest/msg_validators/tx_validator/factory.d.ts +23 -4
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/factory.js +36 -10
- 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 +13 -4
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/gas_validator.js +39 -9
- package/dest/msg_validators/tx_validator/index.d.ts +2 -1
- package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/index.js +1 -0
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts +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/phases_validator.d.ts +22 -2
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/phases_validator.js +72 -24
- package/dest/services/discv5/discV5_service.d.ts +1 -1
- package/dest/services/discv5/discV5_service.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.js +4 -2
- package/dest/services/encoding.d.ts +5 -1
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +7 -1
- package/dest/services/libp2p/libp2p_service.d.ts +7 -9
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +166 -72
- 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 +6 -3
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +11 -8
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +69 -65
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts +3 -2
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +5 -4
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/missing_txs.js +13 -7
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +3 -1
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/peer_collection.js +3 -0
- package/dest/services/reqresp/reqresp.d.ts +1 -1
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +17 -9
- package/dest/services/service.d.ts +7 -1
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/fast_tx_collection.d.ts +1 -4
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/fast_tx_collection.js +57 -73
- package/dest/services/tx_collection/proposal_tx_collector.d.ts +6 -7
- package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
- package/dest/services/tx_collection/proposal_tx_collector.js +4 -4
- package/dest/services/tx_collection/request_tracker.d.ts +53 -0
- package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
- package/dest/services/tx_collection/request_tracker.js +84 -0
- package/dest/services/tx_collection/slow_tx_collection.js +1 -1
- package/dest/services/tx_collection/tx_collection.d.ts +3 -6
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
- package/dest/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/mock-pubsub.d.ts +6 -1
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.js +9 -1
- 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/testbench-utils.d.ts +1 -1
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
- package/dest/test-helpers/testbench-utils.js +22 -3
- package/dest/testbench/p2p_client_testbench_worker.js +5 -4
- 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 +9 -4
- package/dest/util.d.ts.map +1 -1
- package/dest/util.js +2 -9
- package/package.json +14 -14
- package/src/client/factory.ts +37 -13
- package/src/client/p2p_client.ts +22 -34
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +4 -6
- package/src/config.ts +124 -34
- package/src/mem_pools/attestation_pool/attestation_pool.ts +8 -7
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +6 -6
- package/src/mem_pools/instrumentation.ts +17 -13
- package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +2 -1
- package/src/mem_pools/tx_pool/priority.ts +4 -4
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +3 -1
- 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 +2 -1
- package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +11 -1
- 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/interfaces.ts +9 -4
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +52 -12
- package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +29 -43
- package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +16 -1
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +28 -6
- package/src/msg_validators/attestation_validator/README.md +49 -0
- package/src/msg_validators/attestation_validator/attestation_validator.ts +5 -4
- package/src/msg_validators/clock_tolerance.ts +4 -3
- package/src/msg_validators/proposal_validator/README.md +123 -0
- package/src/msg_validators/proposal_validator/block_proposal_validator.ts +14 -4
- package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +20 -7
- package/src/msg_validators/proposal_validator/proposal_validator.ts +69 -45
- package/src/msg_validators/tx_validator/README.md +5 -1
- package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
- package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
- package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
- package/src/msg_validators/tx_validator/data_validator.ts +42 -1
- package/src/msg_validators/tx_validator/factory.ts +43 -3
- package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
- package/src/msg_validators/tx_validator/gas_validator.ts +41 -8
- package/src/msg_validators/tx_validator/index.ts +1 -0
- package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
- package/src/msg_validators/tx_validator/phases_validator.ts +82 -27
- package/src/services/discv5/discV5_service.ts +4 -2
- package/src/services/encoding.ts +9 -1
- package/src/services/libp2p/libp2p_service.ts +164 -80
- package/src/services/peer-manager/metrics.ts +7 -0
- package/src/services/peer-manager/peer_manager.ts +7 -3
- package/src/services/reqresp/README.md +229 -0
- package/src/services/reqresp/batch-tx-requester/README.md +46 -7
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +64 -69
- package/src/services/reqresp/batch-tx-requester/interface.ts +2 -1
- package/src/services/reqresp/batch-tx-requester/missing_txs.ts +13 -6
- package/src/services/reqresp/batch-tx-requester/peer_collection.ts +5 -0
- package/src/services/reqresp/reqresp.ts +19 -11
- package/src/services/service.ts +7 -0
- package/src/services/tx_collection/fast_tx_collection.ts +57 -83
- package/src/services/tx_collection/proposal_tx_collector.ts +8 -13
- package/src/services/tx_collection/request_tracker.ts +127 -0
- package/src/services/tx_collection/slow_tx_collection.ts +1 -1
- package/src/services/tx_collection/tx_collection.ts +3 -5
- package/src/test-helpers/make-test-p2p-clients.ts +1 -1
- package/src/test-helpers/mock-pubsub.ts +9 -0
- package/src/test-helpers/reqresp-nodes.ts +1 -1
- package/src/test-helpers/testbench-utils.ts +29 -3
- package/src/testbench/p2p_client_testbench_worker.ts +5 -6
- package/src/testbench/worker_client_manager.ts +13 -5
- package/src/util.ts +9 -13
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
- package/dest/services/tx_collection/missing_txs_tracker.d.ts +0 -32
- package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +0 -1
- package/dest/services/tx_collection/missing_txs_tracker.js +0 -27
- package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
- package/src/services/tx_collection/missing_txs_tracker.ts +0 -52
|
@@ -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,
|
|
373
|
+
var _dec, _dec1, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _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, P2PMessage, PeerErrorSeverity, TopicType, createTopicString, getTopicsForConfig, metricsTopicStrToLabels } from '@aztec/stdlib/p2p';
|
|
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';
|
|
@@ -392,6 +393,7 @@ import { identify } from '@libp2p/identify';
|
|
|
392
393
|
import { TopicValidatorResult } from '@libp2p/interface';
|
|
393
394
|
import { mplex } from '@libp2p/mplex';
|
|
394
395
|
import { tcp } from '@libp2p/tcp';
|
|
396
|
+
import { multiaddr } from '@multiformats/multiaddr';
|
|
395
397
|
import { ENR } from '@nethermindeth/enr';
|
|
396
398
|
import { createLibp2p } from 'libp2p';
|
|
397
399
|
import { BlockProposalValidator, CheckpointAttestationValidator, CheckpointProposalValidator, DoubleSpendTxValidator, FishermanAttestationValidator, getDefaultAllowedSetupFunctions } from '../../msg_validators/index.js';
|
|
@@ -431,10 +433,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
431
433
|
[Attributes.TX_HASH]: requestedTxHash.toString()
|
|
432
434
|
})), _dec7 = trackSpan('Libp2pService.validateRequestedBlock', (requestedBlockNumber, _responseBlock)=>({
|
|
433
435
|
[Attributes.BLOCK_NUMBER]: requestedBlockNumber.toString()
|
|
434
|
-
})), _dec8 = trackSpan('Libp2pService.validateCheckpointAttestation', async (_, attestation)=>({
|
|
435
|
-
[Attributes.SLOT_NUMBER]: attestation.payload.header.slotNumber,
|
|
436
|
-
[Attributes.BLOCK_ARCHIVE]: attestation.archive.toString(),
|
|
437
|
-
[Attributes.P2P_ID]: await attestation.p2pMessageLoggingIdentifier().then((i)=>i.toString())
|
|
438
436
|
}));
|
|
439
437
|
/**
|
|
440
438
|
* Lib P2P implementation of the P2PService interface.
|
|
@@ -490,11 +488,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
490
488
|
_dec7,
|
|
491
489
|
2,
|
|
492
490
|
"validateRequestedBlock"
|
|
493
|
-
],
|
|
494
|
-
[
|
|
495
|
-
_dec8,
|
|
496
|
-
2,
|
|
497
|
-
"validateCheckpointAttestation"
|
|
498
491
|
]
|
|
499
492
|
], []));
|
|
500
493
|
}
|
|
@@ -520,6 +513,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
520
513
|
* @returns The attestations for the checkpoint, if any.
|
|
521
514
|
*/ checkpointReceivedCallback;
|
|
522
515
|
gossipSubEventHandler;
|
|
516
|
+
ipChangedHandler;
|
|
517
|
+
/** Discovered public IP address (set when queryForIp is enabled and no static IP was configured). */ discoveredP2pIp;
|
|
523
518
|
instrumentation;
|
|
524
519
|
telemetry;
|
|
525
520
|
logger;
|
|
@@ -540,19 +535,19 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
540
535
|
this.topicStrings[TopicType.block_proposal] = createTopicString(TopicType.block_proposal, this.protocolVersion);
|
|
541
536
|
this.topicStrings[TopicType.checkpoint_proposal] = createTopicString(TopicType.checkpoint_proposal, this.protocolVersion);
|
|
542
537
|
this.topicStrings[TopicType.checkpoint_attestation] = createTopicString(TopicType.checkpoint_attestation, this.protocolVersion);
|
|
543
|
-
|
|
544
|
-
txsPermitted: !config.disableTransactions
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
538
|
+
const proposalValidatorOpts = {
|
|
539
|
+
txsPermitted: !config.disableTransactions,
|
|
540
|
+
maxTxsPerBlock: config.validateMaxTxsPerBlock ?? config.validateMaxTxsPerCheckpoint
|
|
541
|
+
};
|
|
542
|
+
this.blockProposalValidator = new BlockProposalValidator(epochCache, proposalValidatorOpts);
|
|
543
|
+
this.checkpointProposalValidator = new CheckpointProposalValidator(epochCache, proposalValidatorOpts);
|
|
549
544
|
this.checkpointAttestationValidator = config.fishermanMode ? new FishermanAttestationValidator(epochCache, mempools.attestationPool, telemetry) : new CheckpointAttestationValidator(epochCache);
|
|
550
545
|
this.gossipSubEventHandler = this.handleGossipSubEvent.bind(this);
|
|
551
546
|
this.blockReceivedCallback = async (block)=>{
|
|
552
|
-
this.logger.
|
|
547
|
+
this.logger.warn(`Handler for block received not yet registered on P2P service. Received block ${block.blockNumber} for slot ${block.slotNumber} from peer.`, {
|
|
553
548
|
p2pMessageIdentifier: await block.p2pMessageLoggingIdentifier()
|
|
554
549
|
});
|
|
555
|
-
return
|
|
550
|
+
return true;
|
|
556
551
|
};
|
|
557
552
|
this.checkpointReceivedCallback = (checkpoint)=>{
|
|
558
553
|
this.logger.debug(`Handler not yet registered: Checkpoint received callback not set. Received checkpoint for slot ${checkpoint.slotNumber} from peer.`);
|
|
@@ -717,7 +712,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
717
712
|
})
|
|
718
713
|
}),
|
|
719
714
|
components: (components)=>({
|
|
720
|
-
connectionManager: components.connectionManager
|
|
715
|
+
connectionManager: components.connectionManager,
|
|
716
|
+
addressManager: components.addressManager
|
|
721
717
|
})
|
|
722
718
|
},
|
|
723
719
|
logger: createLibp2pComponentLogger(logger.module, logger.getBindings())
|
|
@@ -744,10 +740,10 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
744
740
|
}
|
|
745
741
|
// Get listen & announce addresses for logging
|
|
746
742
|
const { p2pIp, p2pPort } = this.config;
|
|
747
|
-
if (!p2pIp) {
|
|
743
|
+
if (!p2pIp && !this.config.queryForIp) {
|
|
748
744
|
throw new Error('Announce address not provided.');
|
|
749
745
|
}
|
|
750
|
-
const announceTcpMultiaddr = convertToMultiaddr(p2pIp, p2pPort, 'tcp');
|
|
746
|
+
const announceTcpMultiaddr = p2pIp ? convertToMultiaddr(p2pIp, p2pPort, 'tcp') : undefined;
|
|
751
747
|
// Create request response protocol handlers
|
|
752
748
|
const txHandler = reqRespTxHandler(this.mempools);
|
|
753
749
|
const goodbyeHandler = reqGoodbyeHandler(this.peerManager);
|
|
@@ -786,6 +782,29 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
786
782
|
if (!this.config.p2pDiscoveryDisabled) {
|
|
787
783
|
await this.peerDiscoveryService.start();
|
|
788
784
|
}
|
|
785
|
+
// When queryForIp is enabled and no static IP was configured, bridge discv5 IP discovery to libp2p.
|
|
786
|
+
// Discv5 discovers our public IP via peer WHOAREYOU exchanges (enrUpdate=true) and emits 'ip:changed'.
|
|
787
|
+
// We confirm the discovered address in the libp2p AddressManager so it appears in getMultiaddrs()
|
|
788
|
+
// and is pushed to all connected peers via the identify protocol.
|
|
789
|
+
if (this.config.queryForIp && !p2pIp) {
|
|
790
|
+
this.ipChangedHandler = (ip)=>{
|
|
791
|
+
const addressManager = this.node.services.components.addressManager;
|
|
792
|
+
const newAddr = multiaddr(convertToMultiaddr(ip, this.config.p2pPort, 'tcp'));
|
|
793
|
+
// Remove old discovered IP if one exists
|
|
794
|
+
if (this.discoveredP2pIp) {
|
|
795
|
+
const oldAddr = multiaddr(convertToMultiaddr(this.discoveredP2pIp, this.config.p2pPort, 'tcp'));
|
|
796
|
+
addressManager.removeObservedAddr(oldAddr);
|
|
797
|
+
}
|
|
798
|
+
addressManager.addObservedAddr(newAddr);
|
|
799
|
+
addressManager.confirmObservedAddr(newAddr);
|
|
800
|
+
// Store discovered IP
|
|
801
|
+
this.discoveredP2pIp = ip;
|
|
802
|
+
this.logger.info('Public IP discovered via discv5', {
|
|
803
|
+
ip
|
|
804
|
+
});
|
|
805
|
+
};
|
|
806
|
+
this.peerDiscoveryService.on('ip:changed', this.ipChangedHandler);
|
|
807
|
+
}
|
|
789
808
|
this.discoveryRunningPromise = new RunningPromise(async ()=>{
|
|
790
809
|
await this.peerManager.heartbeat();
|
|
791
810
|
}, this.logger, this.config.peerCheckIntervalMS);
|
|
@@ -793,7 +812,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
793
812
|
this.logger.info(`Started P2P service`, {
|
|
794
813
|
listen: this.config.listenAddress,
|
|
795
814
|
port: this.config.p2pPort,
|
|
796
|
-
announce: announceTcpMultiaddr,
|
|
815
|
+
announce: announceTcpMultiaddr ?? 'pending (queryForIp=true)',
|
|
797
816
|
peerId: this.node.peerId.toString()
|
|
798
817
|
});
|
|
799
818
|
}
|
|
@@ -803,6 +822,11 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
803
822
|
*/ async stop() {
|
|
804
823
|
// Remove gossip sub listener
|
|
805
824
|
this.node.services.pubsub.removeEventListener(GossipSubEvent.MESSAGE, this.gossipSubEventHandler);
|
|
825
|
+
// Remove ip:changed listener if registered
|
|
826
|
+
if (this.ipChangedHandler) {
|
|
827
|
+
this.peerDiscoveryService.off('ip:changed', this.ipChangedHandler);
|
|
828
|
+
this.ipChangedHandler = undefined;
|
|
829
|
+
}
|
|
806
830
|
// Stop peer manager
|
|
807
831
|
this.logger.debug('Stopping peer manager...');
|
|
808
832
|
await this.peerManager.stop();
|
|
@@ -926,6 +950,12 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
926
950
|
if (!validator || !validator.addMessage(msgId)) {
|
|
927
951
|
this.instrumentation.incMessagePrevalidationStatus(false, topicType);
|
|
928
952
|
this.node.services.pubsub.reportMessageValidationResult(msgId, source.toString(), TopicValidatorResult.Ignore);
|
|
953
|
+
if (topicType === TopicType.tx) {
|
|
954
|
+
this.logger.verbose(`Ignoring already-seen tx gossip message`, {
|
|
955
|
+
msgId,
|
|
956
|
+
source: source.toString()
|
|
957
|
+
});
|
|
958
|
+
}
|
|
929
959
|
return {
|
|
930
960
|
result: false,
|
|
931
961
|
topicType
|
|
@@ -1031,29 +1061,67 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1031
1061
|
return;
|
|
1032
1062
|
}
|
|
1033
1063
|
async validateReceivedMessage(validationFunc, msgId, source, topicType) {
|
|
1064
|
+
// Default to reject result with a penalty if validation function throws an error
|
|
1034
1065
|
let resultAndObj = {
|
|
1035
|
-
result: TopicValidatorResult.Reject
|
|
1066
|
+
result: TopicValidatorResult.Reject,
|
|
1067
|
+
severity: PeerErrorSeverity.MidToleranceError
|
|
1036
1068
|
};
|
|
1037
1069
|
const timer = new Timer();
|
|
1038
1070
|
try {
|
|
1039
1071
|
resultAndObj = await validationFunc();
|
|
1040
1072
|
} catch (err) {
|
|
1041
|
-
this.
|
|
1042
|
-
this.logger.error(`Error deserializing and validating gossipsub message`, err, {
|
|
1073
|
+
this.logger.error(`Error validating gossipsub message`, err, {
|
|
1043
1074
|
msgId,
|
|
1044
1075
|
source: source.toString(),
|
|
1045
1076
|
topicType
|
|
1046
1077
|
});
|
|
1047
1078
|
}
|
|
1048
1079
|
if (resultAndObj.result === TopicValidatorResult.Accept) {
|
|
1080
|
+
this.logger.debug(`Message ${topicType} accepted by validator`, {
|
|
1081
|
+
msgId,
|
|
1082
|
+
source: source.toString(),
|
|
1083
|
+
topicType
|
|
1084
|
+
});
|
|
1049
1085
|
this.instrumentation.recordMessageValidation(topicType, timer);
|
|
1086
|
+
} else if (resultAndObj.result === TopicValidatorResult.Reject) {
|
|
1087
|
+
this.logger.warn(`Message ${topicType} rejected by validator with severity ${resultAndObj.severity}`, {
|
|
1088
|
+
msgId,
|
|
1089
|
+
source: source.toString(),
|
|
1090
|
+
topicType,
|
|
1091
|
+
severity: resultAndObj.severity
|
|
1092
|
+
});
|
|
1093
|
+
this.peerManager.penalizePeer(source, resultAndObj.severity);
|
|
1094
|
+
} else {
|
|
1095
|
+
this.logger.trace(`Message ${topicType} ignored by validator`, {
|
|
1096
|
+
msgId,
|
|
1097
|
+
source: source.toString(),
|
|
1098
|
+
topicType
|
|
1099
|
+
});
|
|
1050
1100
|
}
|
|
1051
1101
|
this.node.services.pubsub.reportMessageValidationResult(msgId, source.toString(), resultAndObj.result);
|
|
1052
1102
|
return resultAndObj;
|
|
1053
1103
|
}
|
|
1104
|
+
tryDeserialize(deserializeFunc, msgId, source) {
|
|
1105
|
+
try {
|
|
1106
|
+
return deserializeFunc();
|
|
1107
|
+
} catch (err) {
|
|
1108
|
+
this.logger.warn(`Failed to deserialize gossipsub message from buffer`, {
|
|
1109
|
+
err,
|
|
1110
|
+
msgId,
|
|
1111
|
+
source: source.toString()
|
|
1112
|
+
});
|
|
1113
|
+
return undefined;
|
|
1114
|
+
}
|
|
1115
|
+
}
|
|
1054
1116
|
async handleGossipedTx(payloadData, msgId, source) {
|
|
1055
1117
|
const validationFunc = async ()=>{
|
|
1056
|
-
const tx = Tx.fromBuffer(payloadData);
|
|
1118
|
+
const tx = this.tryDeserialize(()=>Tx.fromBuffer(payloadData), msgId, source);
|
|
1119
|
+
if (!tx) {
|
|
1120
|
+
return {
|
|
1121
|
+
result: TopicValidatorResult.Reject,
|
|
1122
|
+
severity: PeerErrorSeverity.LowToleranceError
|
|
1123
|
+
};
|
|
1124
|
+
}
|
|
1057
1125
|
const currentBlockNumber = await this.archiver.getBlockNumber();
|
|
1058
1126
|
const { ts: nextSlotTimestamp } = this.epochCache.getEpochAndSlotInNextL1Slot();
|
|
1059
1127
|
// Stage 1: fast validators (metadata, data, timestamps, double-spend, gas, phases, block header)
|
|
@@ -1069,14 +1137,22 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1069
1137
|
const txBlockNumber = BlockNumber(currentBlockNumber + 1);
|
|
1070
1138
|
severity = await this.handleDoubleSpendFailure(tx, txBlockNumber);
|
|
1071
1139
|
}
|
|
1072
|
-
this.
|
|
1140
|
+
this.logger.verbose(`Rejecting gossiped tx ${tx.getTxHash().toString()}: stage 1 validation failed`, {
|
|
1141
|
+
validator: name,
|
|
1142
|
+
severity,
|
|
1143
|
+
source: source.toString()
|
|
1144
|
+
});
|
|
1073
1145
|
return {
|
|
1074
|
-
result: TopicValidatorResult.Reject
|
|
1146
|
+
result: TopicValidatorResult.Reject,
|
|
1147
|
+
severity
|
|
1075
1148
|
};
|
|
1076
1149
|
}
|
|
1077
1150
|
// Pool pre-check: see if the pool would accept this tx before doing expensive proof verification
|
|
1078
1151
|
const canAdd = await this.mempools.txPool.canAddPendingTx(tx);
|
|
1079
1152
|
if (canAdd === 'ignored') {
|
|
1153
|
+
this.logger.verbose(`Ignoring gossiped tx ${tx.getTxHash().toString()}: pool pre-check returned ignored`, {
|
|
1154
|
+
source: source.toString()
|
|
1155
|
+
});
|
|
1080
1156
|
return {
|
|
1081
1157
|
result: TopicValidatorResult.Ignore,
|
|
1082
1158
|
obj: tx
|
|
@@ -1086,10 +1162,15 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1086
1162
|
const secondStageValidators = this.createSecondStageMessageValidators();
|
|
1087
1163
|
const secondStageOutcome = await this.runValidations(tx, secondStageValidators);
|
|
1088
1164
|
if (!secondStageOutcome.allPassed) {
|
|
1089
|
-
const { severity } = secondStageOutcome.failure;
|
|
1090
|
-
this.
|
|
1165
|
+
const { severity, name } = secondStageOutcome.failure;
|
|
1166
|
+
this.logger.verbose(`Rejecting gossiped tx ${tx.getTxHash().toString()}: stage 2 validation failed`, {
|
|
1167
|
+
validator: name,
|
|
1168
|
+
severity,
|
|
1169
|
+
source: source.toString()
|
|
1170
|
+
});
|
|
1091
1171
|
return {
|
|
1092
|
-
result: TopicValidatorResult.Reject
|
|
1172
|
+
result: TopicValidatorResult.Reject,
|
|
1173
|
+
severity
|
|
1093
1174
|
};
|
|
1094
1175
|
}
|
|
1095
1176
|
// Pool add: persist the tx
|
|
@@ -1101,7 +1182,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1101
1182
|
});
|
|
1102
1183
|
const wasAccepted = addResult.accepted.some((h)=>h.equals(txHash));
|
|
1103
1184
|
const wasIgnored = addResult.ignored.some((h)=>h.equals(txHash));
|
|
1104
|
-
this.logger.
|
|
1185
|
+
this.logger.verbose(`Validate propagated tx ${txHash.toString()}`, {
|
|
1105
1186
|
wasAccepted,
|
|
1106
1187
|
wasIgnored,
|
|
1107
1188
|
[Attributes.P2P_ID]: source.toString()
|
|
@@ -1117,8 +1198,13 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1117
1198
|
obj: tx
|
|
1118
1199
|
};
|
|
1119
1200
|
} else {
|
|
1201
|
+
this.logger.warn(`Gossiped tx ${txHash.toString()} unexpectedly rejected by pool`, {
|
|
1202
|
+
source: source.toString(),
|
|
1203
|
+
txHash: txHash.toString()
|
|
1204
|
+
});
|
|
1120
1205
|
return {
|
|
1121
|
-
result: TopicValidatorResult.Reject
|
|
1206
|
+
result: TopicValidatorResult.Reject,
|
|
1207
|
+
severity: PeerErrorSeverity.HighToleranceError
|
|
1122
1208
|
};
|
|
1123
1209
|
}
|
|
1124
1210
|
};
|
|
@@ -1139,7 +1225,16 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1139
1225
|
* Process a checkpoint attestation from a peer.
|
|
1140
1226
|
* Validates the attestation and adds it to the pool.
|
|
1141
1227
|
*/ async processCheckpointAttestationFromPeer(payloadData, msgId, source) {
|
|
1142
|
-
const { result, obj: attestation } = await this.validateReceivedMessage(()=>
|
|
1228
|
+
const { result, obj: attestation } = await this.validateReceivedMessage(()=>{
|
|
1229
|
+
const attestation = this.tryDeserialize(()=>CheckpointAttestation.fromBuffer(payloadData), msgId, source);
|
|
1230
|
+
if (!attestation) {
|
|
1231
|
+
return Promise.resolve({
|
|
1232
|
+
result: TopicValidatorResult.Reject,
|
|
1233
|
+
severity: PeerErrorSeverity.LowToleranceError
|
|
1234
|
+
});
|
|
1235
|
+
}
|
|
1236
|
+
return this.validateAndStoreCheckpointAttestation(source, attestation);
|
|
1237
|
+
}, msgId, source, TopicType.checkpoint_attestation);
|
|
1143
1238
|
if (result !== TopicValidatorResult.Accept || !attestation) {
|
|
1144
1239
|
return;
|
|
1145
1240
|
}
|
|
@@ -1154,9 +1249,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1154
1249
|
const validationResult = await this.checkpointAttestationValidator.validate(attestation);
|
|
1155
1250
|
if (validationResult.result === 'reject') {
|
|
1156
1251
|
this.logger.warn(`Penalizing peer ${peerId} for checkpoint attestation validation failure`);
|
|
1157
|
-
this.peerManager.penalizePeer(peerId, validationResult.severity);
|
|
1158
1252
|
return {
|
|
1159
|
-
result: TopicValidatorResult.Reject
|
|
1253
|
+
result: TopicValidatorResult.Reject,
|
|
1254
|
+
severity: validationResult.severity
|
|
1160
1255
|
};
|
|
1161
1256
|
}
|
|
1162
1257
|
if (validationResult.result === 'ignore') {
|
|
@@ -1183,9 +1278,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1183
1278
|
obj: attestation
|
|
1184
1279
|
};
|
|
1185
1280
|
}
|
|
1186
|
-
// Could not add (cap reached for signer),
|
|
1281
|
+
// Could not add (cap reached for signer), penalize and do not re-broadcast
|
|
1187
1282
|
if (!added) {
|
|
1188
|
-
this.logger.warn(`
|
|
1283
|
+
this.logger.warn(`Rejecting checkpoint attestation due to cap`, {
|
|
1189
1284
|
slot: slot.toString(),
|
|
1190
1285
|
archive: attestation.archive.toString(),
|
|
1191
1286
|
source: peerId.toString(),
|
|
@@ -1193,8 +1288,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1193
1288
|
count
|
|
1194
1289
|
});
|
|
1195
1290
|
return {
|
|
1196
|
-
result: TopicValidatorResult.
|
|
1197
|
-
|
|
1291
|
+
result: TopicValidatorResult.Reject,
|
|
1292
|
+
severity: PeerErrorSeverity.HighToleranceError
|
|
1198
1293
|
};
|
|
1199
1294
|
}
|
|
1200
1295
|
// Check if this is a duplicate attestation (signer attested to a different proposal at the same slot)
|
|
@@ -1232,9 +1327,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1232
1327
|
const validationResult = await this.blockProposalValidator.validate(block);
|
|
1233
1328
|
if (validationResult.result === 'reject') {
|
|
1234
1329
|
this.logger.warn(`Penalizing peer ${peerId} for block proposal validation failure`);
|
|
1235
|
-
this.peerManager.penalizePeer(peerId, validationResult.severity);
|
|
1236
1330
|
return {
|
|
1237
|
-
result: TopicValidatorResult.Reject
|
|
1331
|
+
result: TopicValidatorResult.Reject,
|
|
1332
|
+
severity: validationResult.severity
|
|
1238
1333
|
};
|
|
1239
1334
|
}
|
|
1240
1335
|
if (validationResult.result === 'ignore') {
|
|
@@ -1264,7 +1359,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1264
1359
|
}
|
|
1265
1360
|
// Too many blocks received for this slot and index, penalize peer and do not re-broadcast
|
|
1266
1361
|
if (!added) {
|
|
1267
|
-
this.peerManager.penalizePeer(peerId, PeerErrorSeverity.HighToleranceError);
|
|
1268
1362
|
this.logger.warn(`Penalizing peer for block proposal exceeding per-position cap`, {
|
|
1269
1363
|
...block.toBlockInfo(),
|
|
1270
1364
|
indexWithinCheckpoint: block.indexWithinCheckpoint,
|
|
@@ -1276,7 +1370,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1276
1370
|
result: TopicValidatorResult.Reject,
|
|
1277
1371
|
metadata: {
|
|
1278
1372
|
isEquivocated
|
|
1279
|
-
}
|
|
1373
|
+
},
|
|
1374
|
+
severity: PeerErrorSeverity.HighToleranceError
|
|
1280
1375
|
};
|
|
1281
1376
|
}
|
|
1282
1377
|
// If this was a duplicate proposal, do not process it, but do invoke the duplicate callback,
|
|
@@ -1325,7 +1420,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1325
1420
|
// Note: Validators do NOT attest to individual blocks, only to checkpoint proposals.
|
|
1326
1421
|
const isValid = await this.blockReceivedCallback(block, sender);
|
|
1327
1422
|
if (!isValid) {
|
|
1328
|
-
this.logger.
|
|
1423
|
+
this.logger.info(`Block proposal validation failed for block ${block.blockNumber}`, block.toBlockInfo());
|
|
1329
1424
|
}
|
|
1330
1425
|
}
|
|
1331
1426
|
/**
|
|
@@ -1350,9 +1445,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1350
1445
|
const validationResult = await this.checkpointProposalValidator.validate(checkpoint);
|
|
1351
1446
|
if (validationResult.result === 'reject') {
|
|
1352
1447
|
this.logger.warn(`Penalizing peer ${peerId} for checkpoint proposal validation failure`);
|
|
1353
|
-
this.peerManager.penalizePeer(peerId, validationResult.severity);
|
|
1354
1448
|
return {
|
|
1355
|
-
result: TopicValidatorResult.Reject
|
|
1449
|
+
result: TopicValidatorResult.Reject,
|
|
1450
|
+
severity: validationResult.severity
|
|
1356
1451
|
};
|
|
1357
1452
|
}
|
|
1358
1453
|
if (validationResult.result === 'ignore') {
|
|
@@ -1369,18 +1464,20 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1369
1464
|
[Attributes.SLOT_NUMBER]: checkpoint.slotNumber.toString(),
|
|
1370
1465
|
[Attributes.P2P_ID]: peerId.toString()
|
|
1371
1466
|
});
|
|
1372
|
-
const
|
|
1373
|
-
|
|
1467
|
+
const blockProposalResult = await this.validateAndStoreBlockProposal(peerId, blockProposal);
|
|
1468
|
+
const { obj, metadata: { isEquivocated } = {} } = blockProposalResult;
|
|
1469
|
+
if (blockProposalResult.result === TopicValidatorResult.Reject || !obj || isEquivocated) {
|
|
1374
1470
|
this.logger.debug(`Rejecting checkpoint due to invalid last block proposal`, {
|
|
1375
1471
|
[Attributes.SLOT_NUMBER]: checkpoint.slotNumber.toString(),
|
|
1376
1472
|
[Attributes.P2P_ID]: peerId.toString(),
|
|
1377
1473
|
isEquivocated,
|
|
1378
|
-
result
|
|
1474
|
+
result: blockProposalResult.result
|
|
1379
1475
|
});
|
|
1380
1476
|
return {
|
|
1381
|
-
result: TopicValidatorResult.Reject
|
|
1477
|
+
result: TopicValidatorResult.Reject,
|
|
1478
|
+
severity: 'severity' in blockProposalResult ? blockProposalResult.severity : PeerErrorSeverity.MidToleranceError
|
|
1382
1479
|
};
|
|
1383
|
-
} else if (result === TopicValidatorResult.Accept && obj && !isEquivocated) {
|
|
1480
|
+
} else if (blockProposalResult.result === TopicValidatorResult.Accept && obj && !isEquivocated) {
|
|
1384
1481
|
processBlock = true;
|
|
1385
1482
|
}
|
|
1386
1483
|
}
|
|
@@ -1407,7 +1504,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1407
1504
|
// Too many checkpoint proposals received for this slot, penalize peer and do not re-broadcast
|
|
1408
1505
|
// Note: We still return the checkpoint obj so the lastBlock can be processed if valid
|
|
1409
1506
|
if (!added) {
|
|
1410
|
-
this.peerManager.penalizePeer(peerId, PeerErrorSeverity.HighToleranceError);
|
|
1411
1507
|
this.logger.warn(`Penalizing peer for checkpoint proposal exceeding per-slot cap`, {
|
|
1412
1508
|
...checkpoint.toCheckpointInfo(),
|
|
1413
1509
|
count,
|
|
@@ -1419,7 +1515,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1419
1515
|
metadata: {
|
|
1420
1516
|
isEquivocated,
|
|
1421
1517
|
processBlock
|
|
1422
|
-
}
|
|
1518
|
+
},
|
|
1519
|
+
severity: PeerErrorSeverity.HighToleranceError
|
|
1423
1520
|
};
|
|
1424
1521
|
}
|
|
1425
1522
|
// If this was a duplicate proposal, do not process it, but do invoke the duplicate callback,
|
|
@@ -1689,9 +1786,17 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1689
1786
|
}
|
|
1690
1787
|
/** Creates the first stage (fast) validators for gossiped transactions. */ async createFirstStageMessageValidators(currentBlockNumber, nextSlotTimestamp) {
|
|
1691
1788
|
const gasFees = await this.getGasFees(currentBlockNumber);
|
|
1692
|
-
const allowedInSetup =
|
|
1789
|
+
const allowedInSetup = [
|
|
1790
|
+
...await getDefaultAllowedSetupFunctions(),
|
|
1791
|
+
...this.config.txPublicSetupAllowListExtend ?? []
|
|
1792
|
+
];
|
|
1693
1793
|
const blockNumber = BlockNumber(currentBlockNumber + 1);
|
|
1694
|
-
|
|
1794
|
+
const l1Constants = await this.archiver.getL1Constants();
|
|
1795
|
+
return createFirstStageTxValidationsForGossipedTransactions(nextSlotTimestamp, blockNumber, this.worldStateSynchronizer, gasFees, this.config.l1ChainId, this.config.rollupVersion, protocolContractsHash, this.archiver, !this.config.disableTransactions, allowedInSetup, this.logger.getBindings(), {
|
|
1796
|
+
rollupManaLimit: l1Constants.rollupManaLimit,
|
|
1797
|
+
maxBlockL2Gas: this.config.validateMaxL2BlockGas,
|
|
1798
|
+
maxBlockDAGas: this.config.validateMaxDABlockGas
|
|
1799
|
+
});
|
|
1695
1800
|
}
|
|
1696
1801
|
/** Creates the second stage (expensive proof verification) validators for gossiped transactions. */ createSecondStageMessageValidators() {
|
|
1697
1802
|
return createSecondStageTxValidationsForGossipedTransactions(this.proofVerifier, this.logger.getBindings());
|
|
@@ -1712,8 +1817,10 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1712
1817
|
});
|
|
1713
1818
|
// A promise that resolves when all validations have been run
|
|
1714
1819
|
const allValidations = await Promise.all(validationPromises);
|
|
1715
|
-
const
|
|
1716
|
-
if (
|
|
1820
|
+
const failures = allValidations.filter((x)=>!x.isValid);
|
|
1821
|
+
if (failures.length > 0) {
|
|
1822
|
+
// Pick the most severe failure (lowest tolerance = harshest penalty)
|
|
1823
|
+
const failed = maxBy(failures, (f)=>PeerErrorSeverityByHarshness.indexOf(f.severity));
|
|
1717
1824
|
return {
|
|
1718
1825
|
allPassed: false,
|
|
1719
1826
|
failure: {
|
|
@@ -1760,19 +1867,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1760
1867
|
}
|
|
1761
1868
|
return PeerErrorSeverity.HighToleranceError;
|
|
1762
1869
|
}
|
|
1763
|
-
/**
|
|
1764
|
-
* Validate a checkpoint attestation.
|
|
1765
|
-
*
|
|
1766
|
-
* @param attestation - The checkpoint attestation to validate.
|
|
1767
|
-
* @returns True if the checkpoint attestation is valid, false otherwise.
|
|
1768
|
-
*/ async validateCheckpointAttestation(peerId, attestation) {
|
|
1769
|
-
const result = await this.checkpointAttestationValidator.validate(attestation);
|
|
1770
|
-
if (result.result === 'reject') {
|
|
1771
|
-
this.logger.warn(`Penalizing peer ${peerId} for checkpoint attestation validation failure`);
|
|
1772
|
-
this.peerManager.penalizePeer(peerId, result.severity);
|
|
1773
|
-
}
|
|
1774
|
-
return result;
|
|
1775
|
-
}
|
|
1776
1870
|
getPeerScore(peerId) {
|
|
1777
1871
|
return this.node.services.pubsub.score.score(peerId.toString());
|
|
1778
1872
|
}
|
|
@@ -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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"}
|