@aztec/p2p 0.0.1-commit.033589e → 0.0.1-commit.03b9a845c
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 +24 -2
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +66 -7
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +3 -3
- package/dest/mem_pools/attestation_pool/attestation_pool.js +3 -3
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +6 -6
- 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 +3 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +21 -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 +5 -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 +5 -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 +12 -9
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator.js +51 -49
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +1 -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 +21 -32
- 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 +21 -1
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/phases_validator.js +49 -2
- 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 +161 -72
- 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 +4 -2
- 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 +92 -4
- package/src/mem_pools/attestation_pool/attestation_pool.ts +3 -3
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +6 -6
- 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 +13 -1
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +23 -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 +13 -3
- package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +19 -6
- package/src/msg_validators/proposal_validator/proposal_validator.ts +63 -53
- package/src/msg_validators/tx_validator/README.md +5 -1
- package/src/msg_validators/tx_validator/allowed_public_setup.ts +16 -35
- 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 +60 -1
- package/src/services/discv5/discV5_service.ts +4 -2
- package/src/services/encoding.ts +9 -1
- package/src/services/libp2p/libp2p_service.ts +160 -83
- package/src/services/peer-manager/peer_manager.ts +5 -2
- 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 -24
- 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 -378
- 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 -373
- package/src/services/tx_collection/missing_txs_tracker.ts +0 -52
|
@@ -6,7 +6,7 @@ import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
|
6
6
|
import type { EthAddress, L2Block, L2BlockSource } from '@aztec/stdlib/block';
|
|
7
7
|
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
8
8
|
import type { ClientProtocolCircuitVerifier, PeerInfo, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
9
|
-
import { BlockProposal, CheckpointAttestation, CheckpointProposal, type CheckpointProposalCore, type Gossipable,
|
|
9
|
+
import { BlockProposal, CheckpointAttestation, CheckpointProposal, type CheckpointProposalCore, type Gossipable, PeerErrorSeverity, TopicType } from '@aztec/stdlib/p2p';
|
|
10
10
|
import { Tx, type TxValidator } from '@aztec/stdlib/tx';
|
|
11
11
|
import type { UInt64 } from '@aztec/stdlib/types';
|
|
12
12
|
import { type TelemetryClient, WithTracer } from '@aztec/telemetry-client';
|
|
@@ -29,6 +29,7 @@ type ReceivedMessageValidationResult<T, M = undefined> = {
|
|
|
29
29
|
obj?: T;
|
|
30
30
|
result: TopicValidatorResult.Reject;
|
|
31
31
|
metadata?: M;
|
|
32
|
+
severity: PeerErrorSeverity;
|
|
32
33
|
};
|
|
33
34
|
/**
|
|
34
35
|
* Lib P2P implementation of the P2PService interface.
|
|
@@ -69,6 +70,9 @@ export declare class LibP2PService extends WithTracer implements P2PService {
|
|
|
69
70
|
*/
|
|
70
71
|
private checkpointReceivedCallback;
|
|
71
72
|
private gossipSubEventHandler;
|
|
73
|
+
private ipChangedHandler?;
|
|
74
|
+
/** Discovered public IP address (set when queryForIp is enabled and no static IP was configured). */
|
|
75
|
+
private discoveredP2pIp?;
|
|
72
76
|
private instrumentation;
|
|
73
77
|
private telemetry;
|
|
74
78
|
protected logger: Logger;
|
|
@@ -166,6 +170,7 @@ export declare class LibP2PService extends WithTracer implements P2PService {
|
|
|
166
170
|
*/
|
|
167
171
|
protected handleNewGossipMessage(msg: Message, msgId: string, source: PeerId): Promise<void>;
|
|
168
172
|
protected validateReceivedMessage<T, M = undefined>(validationFunc: () => Promise<ReceivedMessageValidationResult<T, M>>, msgId: string, source: PeerId, topicType: TopicType): Promise<ReceivedMessageValidationResult<T, M>>;
|
|
173
|
+
private tryDeserialize;
|
|
169
174
|
protected handleGossipedTx(payloadData: Buffer, msgId: string, source: PeerId): Promise<void>;
|
|
170
175
|
private processCheckpointAttestationFromPeer;
|
|
171
176
|
/** Validates a checkpoint attestation and adds it to the pool. Penalizes the peer if validation fails. */
|
|
@@ -234,17 +239,10 @@ export declare class LibP2PService extends WithTracer implements P2PService {
|
|
|
234
239
|
protected createSecondStageMessageValidators(): Record<string, TransactionValidator>;
|
|
235
240
|
private runValidations;
|
|
236
241
|
private handleDoubleSpendFailure;
|
|
237
|
-
/**
|
|
238
|
-
* Validate a checkpoint attestation.
|
|
239
|
-
*
|
|
240
|
-
* @param attestation - The checkpoint attestation to validate.
|
|
241
|
-
* @returns True if the checkpoint attestation is valid, false otherwise.
|
|
242
|
-
*/
|
|
243
|
-
validateCheckpointAttestation(peerId: PeerId, attestation: CheckpointAttestation): Promise<P2PValidationResult>;
|
|
244
242
|
getPeerScore(peerId: PeerId): number;
|
|
245
243
|
handleAuthRequestFromPeer(authRequest: AuthRequest, peerId: PeerId): Promise<StatusMessage>;
|
|
246
244
|
private sendToPeers;
|
|
247
245
|
private stopLibP2P;
|
|
248
246
|
}
|
|
249
247
|
export {};
|
|
250
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
248
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicDJwX3NlcnZpY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9saWJwMnAvbGlicDJwX3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFL0UsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBNkMsTUFBTSx1QkFBdUIsQ0FBQztBQUcvRixPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUUsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVqRSxPQUFPLEtBQUssRUFBRSw2QkFBNkIsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2SCxPQUFPLEVBQ0wsYUFBYSxFQUNiLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIsS0FBSyxzQkFBc0IsRUFDM0IsS0FBSyxVQUFVLEVBRWYsaUJBQWlCLEVBRWpCLFNBQVMsRUFJVixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE9BQU8sRUFBRSxFQUFFLEVBQXdDLEtBQUssV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUYsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQsT0FBTyxFQUlMLEtBQUssZUFBZSxFQUNwQixVQUFVLEVBRVgsTUFBTSx5QkFBeUIsQ0FBQztBQWNqQyxPQUFPLEVBQUUsS0FBSyxPQUFPLEVB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libp2p_service.d.ts","sourceRoot":"","sources":["../../../src/services/libp2p/libp2p_service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"libp2p_service.d.ts","sourceRoot":"","sources":["../../../src/services/libp2p/libp2p_service.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,21 +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
|
-
maxTxsPerBlock: config.maxTxsPerBlock
|
|
546
|
-
});
|
|
547
|
-
this.checkpointProposalValidator = new CheckpointProposalValidator(epochCache, {
|
|
538
|
+
const proposalValidatorOpts = {
|
|
548
539
|
txsPermitted: !config.disableTransactions,
|
|
549
|
-
maxTxsPerBlock: config.
|
|
550
|
-
}
|
|
540
|
+
maxTxsPerBlock: config.validateMaxTxsPerBlock ?? config.validateMaxTxsPerCheckpoint
|
|
541
|
+
};
|
|
542
|
+
this.blockProposalValidator = new BlockProposalValidator(epochCache, proposalValidatorOpts);
|
|
543
|
+
this.checkpointProposalValidator = new CheckpointProposalValidator(epochCache, proposalValidatorOpts);
|
|
551
544
|
this.checkpointAttestationValidator = config.fishermanMode ? new FishermanAttestationValidator(epochCache, mempools.attestationPool, telemetry) : new CheckpointAttestationValidator(epochCache);
|
|
552
545
|
this.gossipSubEventHandler = this.handleGossipSubEvent.bind(this);
|
|
553
546
|
this.blockReceivedCallback = async (block)=>{
|
|
554
|
-
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.`, {
|
|
555
548
|
p2pMessageIdentifier: await block.p2pMessageLoggingIdentifier()
|
|
556
549
|
});
|
|
557
|
-
return
|
|
550
|
+
return true;
|
|
558
551
|
};
|
|
559
552
|
this.checkpointReceivedCallback = (checkpoint)=>{
|
|
560
553
|
this.logger.debug(`Handler not yet registered: Checkpoint received callback not set. Received checkpoint for slot ${checkpoint.slotNumber} from peer.`);
|
|
@@ -719,7 +712,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
719
712
|
})
|
|
720
713
|
}),
|
|
721
714
|
components: (components)=>({
|
|
722
|
-
connectionManager: components.connectionManager
|
|
715
|
+
connectionManager: components.connectionManager,
|
|
716
|
+
addressManager: components.addressManager
|
|
723
717
|
})
|
|
724
718
|
},
|
|
725
719
|
logger: createLibp2pComponentLogger(logger.module, logger.getBindings())
|
|
@@ -746,10 +740,10 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
746
740
|
}
|
|
747
741
|
// Get listen & announce addresses for logging
|
|
748
742
|
const { p2pIp, p2pPort } = this.config;
|
|
749
|
-
if (!p2pIp) {
|
|
743
|
+
if (!p2pIp && !this.config.queryForIp) {
|
|
750
744
|
throw new Error('Announce address not provided.');
|
|
751
745
|
}
|
|
752
|
-
const announceTcpMultiaddr = convertToMultiaddr(p2pIp, p2pPort, 'tcp');
|
|
746
|
+
const announceTcpMultiaddr = p2pIp ? convertToMultiaddr(p2pIp, p2pPort, 'tcp') : undefined;
|
|
753
747
|
// Create request response protocol handlers
|
|
754
748
|
const txHandler = reqRespTxHandler(this.mempools);
|
|
755
749
|
const goodbyeHandler = reqGoodbyeHandler(this.peerManager);
|
|
@@ -788,6 +782,29 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
788
782
|
if (!this.config.p2pDiscoveryDisabled) {
|
|
789
783
|
await this.peerDiscoveryService.start();
|
|
790
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
|
+
}
|
|
791
808
|
this.discoveryRunningPromise = new RunningPromise(async ()=>{
|
|
792
809
|
await this.peerManager.heartbeat();
|
|
793
810
|
}, this.logger, this.config.peerCheckIntervalMS);
|
|
@@ -795,7 +812,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
795
812
|
this.logger.info(`Started P2P service`, {
|
|
796
813
|
listen: this.config.listenAddress,
|
|
797
814
|
port: this.config.p2pPort,
|
|
798
|
-
announce: announceTcpMultiaddr,
|
|
815
|
+
announce: announceTcpMultiaddr ?? 'pending (queryForIp=true)',
|
|
799
816
|
peerId: this.node.peerId.toString()
|
|
800
817
|
});
|
|
801
818
|
}
|
|
@@ -805,6 +822,11 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
805
822
|
*/ async stop() {
|
|
806
823
|
// Remove gossip sub listener
|
|
807
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
|
+
}
|
|
808
830
|
// Stop peer manager
|
|
809
831
|
this.logger.debug('Stopping peer manager...');
|
|
810
832
|
await this.peerManager.stop();
|
|
@@ -928,6 +950,12 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
928
950
|
if (!validator || !validator.addMessage(msgId)) {
|
|
929
951
|
this.instrumentation.incMessagePrevalidationStatus(false, topicType);
|
|
930
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
|
+
}
|
|
931
959
|
return {
|
|
932
960
|
result: false,
|
|
933
961
|
topicType
|
|
@@ -1033,29 +1061,67 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1033
1061
|
return;
|
|
1034
1062
|
}
|
|
1035
1063
|
async validateReceivedMessage(validationFunc, msgId, source, topicType) {
|
|
1064
|
+
// Default to reject result with a penalty if validation function throws an error
|
|
1036
1065
|
let resultAndObj = {
|
|
1037
|
-
result: TopicValidatorResult.Reject
|
|
1066
|
+
result: TopicValidatorResult.Reject,
|
|
1067
|
+
severity: PeerErrorSeverity.MidToleranceError
|
|
1038
1068
|
};
|
|
1039
1069
|
const timer = new Timer();
|
|
1040
1070
|
try {
|
|
1041
1071
|
resultAndObj = await validationFunc();
|
|
1042
1072
|
} catch (err) {
|
|
1043
|
-
this.
|
|
1044
|
-
this.logger.error(`Error deserializing and validating gossipsub message`, err, {
|
|
1073
|
+
this.logger.error(`Error validating gossipsub message`, err, {
|
|
1045
1074
|
msgId,
|
|
1046
1075
|
source: source.toString(),
|
|
1047
1076
|
topicType
|
|
1048
1077
|
});
|
|
1049
1078
|
}
|
|
1050
1079
|
if (resultAndObj.result === TopicValidatorResult.Accept) {
|
|
1080
|
+
this.logger.debug(`Message ${topicType} accepted by validator`, {
|
|
1081
|
+
msgId,
|
|
1082
|
+
source: source.toString(),
|
|
1083
|
+
topicType
|
|
1084
|
+
});
|
|
1051
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
|
+
});
|
|
1052
1100
|
}
|
|
1053
1101
|
this.node.services.pubsub.reportMessageValidationResult(msgId, source.toString(), resultAndObj.result);
|
|
1054
1102
|
return resultAndObj;
|
|
1055
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
|
+
}
|
|
1056
1116
|
async handleGossipedTx(payloadData, msgId, source) {
|
|
1057
1117
|
const validationFunc = async ()=>{
|
|
1058
|
-
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
|
+
}
|
|
1059
1125
|
const currentBlockNumber = await this.archiver.getBlockNumber();
|
|
1060
1126
|
const { ts: nextSlotTimestamp } = this.epochCache.getEpochAndSlotInNextL1Slot();
|
|
1061
1127
|
// Stage 1: fast validators (metadata, data, timestamps, double-spend, gas, phases, block header)
|
|
@@ -1071,14 +1137,22 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1071
1137
|
const txBlockNumber = BlockNumber(currentBlockNumber + 1);
|
|
1072
1138
|
severity = await this.handleDoubleSpendFailure(tx, txBlockNumber);
|
|
1073
1139
|
}
|
|
1074
|
-
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
|
+
});
|
|
1075
1145
|
return {
|
|
1076
|
-
result: TopicValidatorResult.Reject
|
|
1146
|
+
result: TopicValidatorResult.Reject,
|
|
1147
|
+
severity
|
|
1077
1148
|
};
|
|
1078
1149
|
}
|
|
1079
1150
|
// Pool pre-check: see if the pool would accept this tx before doing expensive proof verification
|
|
1080
1151
|
const canAdd = await this.mempools.txPool.canAddPendingTx(tx);
|
|
1081
1152
|
if (canAdd === 'ignored') {
|
|
1153
|
+
this.logger.verbose(`Ignoring gossiped tx ${tx.getTxHash().toString()}: pool pre-check returned ignored`, {
|
|
1154
|
+
source: source.toString()
|
|
1155
|
+
});
|
|
1082
1156
|
return {
|
|
1083
1157
|
result: TopicValidatorResult.Ignore,
|
|
1084
1158
|
obj: tx
|
|
@@ -1088,10 +1162,15 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1088
1162
|
const secondStageValidators = this.createSecondStageMessageValidators();
|
|
1089
1163
|
const secondStageOutcome = await this.runValidations(tx, secondStageValidators);
|
|
1090
1164
|
if (!secondStageOutcome.allPassed) {
|
|
1091
|
-
const { severity } = secondStageOutcome.failure;
|
|
1092
|
-
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
|
+
});
|
|
1093
1171
|
return {
|
|
1094
|
-
result: TopicValidatorResult.Reject
|
|
1172
|
+
result: TopicValidatorResult.Reject,
|
|
1173
|
+
severity
|
|
1095
1174
|
};
|
|
1096
1175
|
}
|
|
1097
1176
|
// Pool add: persist the tx
|
|
@@ -1103,7 +1182,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1103
1182
|
});
|
|
1104
1183
|
const wasAccepted = addResult.accepted.some((h)=>h.equals(txHash));
|
|
1105
1184
|
const wasIgnored = addResult.ignored.some((h)=>h.equals(txHash));
|
|
1106
|
-
this.logger.
|
|
1185
|
+
this.logger.verbose(`Validate propagated tx ${txHash.toString()}`, {
|
|
1107
1186
|
wasAccepted,
|
|
1108
1187
|
wasIgnored,
|
|
1109
1188
|
[Attributes.P2P_ID]: source.toString()
|
|
@@ -1119,8 +1198,13 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1119
1198
|
obj: tx
|
|
1120
1199
|
};
|
|
1121
1200
|
} else {
|
|
1201
|
+
this.logger.warn(`Gossiped tx ${txHash.toString()} unexpectedly rejected by pool`, {
|
|
1202
|
+
source: source.toString(),
|
|
1203
|
+
txHash: txHash.toString()
|
|
1204
|
+
});
|
|
1122
1205
|
return {
|
|
1123
|
-
result: TopicValidatorResult.Reject
|
|
1206
|
+
result: TopicValidatorResult.Reject,
|
|
1207
|
+
severity: PeerErrorSeverity.HighToleranceError
|
|
1124
1208
|
};
|
|
1125
1209
|
}
|
|
1126
1210
|
};
|
|
@@ -1141,7 +1225,16 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1141
1225
|
* Process a checkpoint attestation from a peer.
|
|
1142
1226
|
* Validates the attestation and adds it to the pool.
|
|
1143
1227
|
*/ async processCheckpointAttestationFromPeer(payloadData, msgId, source) {
|
|
1144
|
-
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);
|
|
1145
1238
|
if (result !== TopicValidatorResult.Accept || !attestation) {
|
|
1146
1239
|
return;
|
|
1147
1240
|
}
|
|
@@ -1156,9 +1249,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1156
1249
|
const validationResult = await this.checkpointAttestationValidator.validate(attestation);
|
|
1157
1250
|
if (validationResult.result === 'reject') {
|
|
1158
1251
|
this.logger.warn(`Penalizing peer ${peerId} for checkpoint attestation validation failure`);
|
|
1159
|
-
this.peerManager.penalizePeer(peerId, validationResult.severity);
|
|
1160
1252
|
return {
|
|
1161
|
-
result: TopicValidatorResult.Reject
|
|
1253
|
+
result: TopicValidatorResult.Reject,
|
|
1254
|
+
severity: validationResult.severity
|
|
1162
1255
|
};
|
|
1163
1256
|
}
|
|
1164
1257
|
if (validationResult.result === 'ignore') {
|
|
@@ -1185,9 +1278,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1185
1278
|
obj: attestation
|
|
1186
1279
|
};
|
|
1187
1280
|
}
|
|
1188
|
-
// Could not add (cap reached for signer),
|
|
1281
|
+
// Could not add (cap reached for signer), penalize and do not re-broadcast
|
|
1189
1282
|
if (!added) {
|
|
1190
|
-
this.logger.warn(`
|
|
1283
|
+
this.logger.warn(`Rejecting checkpoint attestation due to cap`, {
|
|
1191
1284
|
slot: slot.toString(),
|
|
1192
1285
|
archive: attestation.archive.toString(),
|
|
1193
1286
|
source: peerId.toString(),
|
|
@@ -1195,8 +1288,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1195
1288
|
count
|
|
1196
1289
|
});
|
|
1197
1290
|
return {
|
|
1198
|
-
result: TopicValidatorResult.
|
|
1199
|
-
|
|
1291
|
+
result: TopicValidatorResult.Reject,
|
|
1292
|
+
severity: PeerErrorSeverity.HighToleranceError
|
|
1200
1293
|
};
|
|
1201
1294
|
}
|
|
1202
1295
|
// Check if this is a duplicate attestation (signer attested to a different proposal at the same slot)
|
|
@@ -1234,9 +1327,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1234
1327
|
const validationResult = await this.blockProposalValidator.validate(block);
|
|
1235
1328
|
if (validationResult.result === 'reject') {
|
|
1236
1329
|
this.logger.warn(`Penalizing peer ${peerId} for block proposal validation failure`);
|
|
1237
|
-
this.peerManager.penalizePeer(peerId, validationResult.severity);
|
|
1238
1330
|
return {
|
|
1239
|
-
result: TopicValidatorResult.Reject
|
|
1331
|
+
result: TopicValidatorResult.Reject,
|
|
1332
|
+
severity: validationResult.severity
|
|
1240
1333
|
};
|
|
1241
1334
|
}
|
|
1242
1335
|
if (validationResult.result === 'ignore') {
|
|
@@ -1266,7 +1359,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1266
1359
|
}
|
|
1267
1360
|
// Too many blocks received for this slot and index, penalize peer and do not re-broadcast
|
|
1268
1361
|
if (!added) {
|
|
1269
|
-
this.peerManager.penalizePeer(peerId, PeerErrorSeverity.HighToleranceError);
|
|
1270
1362
|
this.logger.warn(`Penalizing peer for block proposal exceeding per-position cap`, {
|
|
1271
1363
|
...block.toBlockInfo(),
|
|
1272
1364
|
indexWithinCheckpoint: block.indexWithinCheckpoint,
|
|
@@ -1278,7 +1370,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1278
1370
|
result: TopicValidatorResult.Reject,
|
|
1279
1371
|
metadata: {
|
|
1280
1372
|
isEquivocated
|
|
1281
|
-
}
|
|
1373
|
+
},
|
|
1374
|
+
severity: PeerErrorSeverity.HighToleranceError
|
|
1282
1375
|
};
|
|
1283
1376
|
}
|
|
1284
1377
|
// If this was a duplicate proposal, do not process it, but do invoke the duplicate callback,
|
|
@@ -1327,7 +1420,7 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1327
1420
|
// Note: Validators do NOT attest to individual blocks, only to checkpoint proposals.
|
|
1328
1421
|
const isValid = await this.blockReceivedCallback(block, sender);
|
|
1329
1422
|
if (!isValid) {
|
|
1330
|
-
this.logger.
|
|
1423
|
+
this.logger.info(`Block proposal validation failed for block ${block.blockNumber}`, block.toBlockInfo());
|
|
1331
1424
|
}
|
|
1332
1425
|
}
|
|
1333
1426
|
/**
|
|
@@ -1352,9 +1445,9 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1352
1445
|
const validationResult = await this.checkpointProposalValidator.validate(checkpoint);
|
|
1353
1446
|
if (validationResult.result === 'reject') {
|
|
1354
1447
|
this.logger.warn(`Penalizing peer ${peerId} for checkpoint proposal validation failure`);
|
|
1355
|
-
this.peerManager.penalizePeer(peerId, validationResult.severity);
|
|
1356
1448
|
return {
|
|
1357
|
-
result: TopicValidatorResult.Reject
|
|
1449
|
+
result: TopicValidatorResult.Reject,
|
|
1450
|
+
severity: validationResult.severity
|
|
1358
1451
|
};
|
|
1359
1452
|
}
|
|
1360
1453
|
if (validationResult.result === 'ignore') {
|
|
@@ -1371,18 +1464,20 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1371
1464
|
[Attributes.SLOT_NUMBER]: checkpoint.slotNumber.toString(),
|
|
1372
1465
|
[Attributes.P2P_ID]: peerId.toString()
|
|
1373
1466
|
});
|
|
1374
|
-
const
|
|
1375
|
-
|
|
1467
|
+
const blockProposalResult = await this.validateAndStoreBlockProposal(peerId, blockProposal);
|
|
1468
|
+
const { obj, metadata: { isEquivocated } = {} } = blockProposalResult;
|
|
1469
|
+
if (blockProposalResult.result === TopicValidatorResult.Reject || !obj || isEquivocated) {
|
|
1376
1470
|
this.logger.debug(`Rejecting checkpoint due to invalid last block proposal`, {
|
|
1377
1471
|
[Attributes.SLOT_NUMBER]: checkpoint.slotNumber.toString(),
|
|
1378
1472
|
[Attributes.P2P_ID]: peerId.toString(),
|
|
1379
1473
|
isEquivocated,
|
|
1380
|
-
result
|
|
1474
|
+
result: blockProposalResult.result
|
|
1381
1475
|
});
|
|
1382
1476
|
return {
|
|
1383
|
-
result: TopicValidatorResult.Reject
|
|
1477
|
+
result: TopicValidatorResult.Reject,
|
|
1478
|
+
severity: 'severity' in blockProposalResult ? blockProposalResult.severity : PeerErrorSeverity.MidToleranceError
|
|
1384
1479
|
};
|
|
1385
|
-
} else if (result === TopicValidatorResult.Accept && obj && !isEquivocated) {
|
|
1480
|
+
} else if (blockProposalResult.result === TopicValidatorResult.Accept && obj && !isEquivocated) {
|
|
1386
1481
|
processBlock = true;
|
|
1387
1482
|
}
|
|
1388
1483
|
}
|
|
@@ -1409,7 +1504,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1409
1504
|
// Too many checkpoint proposals received for this slot, penalize peer and do not re-broadcast
|
|
1410
1505
|
// Note: We still return the checkpoint obj so the lastBlock can be processed if valid
|
|
1411
1506
|
if (!added) {
|
|
1412
|
-
this.peerManager.penalizePeer(peerId, PeerErrorSeverity.HighToleranceError);
|
|
1413
1507
|
this.logger.warn(`Penalizing peer for checkpoint proposal exceeding per-slot cap`, {
|
|
1414
1508
|
...checkpoint.toCheckpointInfo(),
|
|
1415
1509
|
count,
|
|
@@ -1421,7 +1515,8 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1421
1515
|
metadata: {
|
|
1422
1516
|
isEquivocated,
|
|
1423
1517
|
processBlock
|
|
1424
|
-
}
|
|
1518
|
+
},
|
|
1519
|
+
severity: PeerErrorSeverity.HighToleranceError
|
|
1425
1520
|
};
|
|
1426
1521
|
}
|
|
1427
1522
|
// If this was a duplicate proposal, do not process it, but do invoke the duplicate callback,
|
|
@@ -1696,7 +1791,12 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1696
1791
|
...this.config.txPublicSetupAllowListExtend ?? []
|
|
1697
1792
|
];
|
|
1698
1793
|
const blockNumber = BlockNumber(currentBlockNumber + 1);
|
|
1699
|
-
|
|
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
|
+
});
|
|
1700
1800
|
}
|
|
1701
1801
|
/** Creates the second stage (expensive proof verification) validators for gossiped transactions. */ createSecondStageMessageValidators() {
|
|
1702
1802
|
return createSecondStageTxValidationsForGossipedTransactions(this.proofVerifier, this.logger.getBindings());
|
|
@@ -1717,8 +1817,10 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1717
1817
|
});
|
|
1718
1818
|
// A promise that resolves when all validations have been run
|
|
1719
1819
|
const allValidations = await Promise.all(validationPromises);
|
|
1720
|
-
const
|
|
1721
|
-
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));
|
|
1722
1824
|
return {
|
|
1723
1825
|
allPassed: false,
|
|
1724
1826
|
failure: {
|
|
@@ -1765,19 +1867,6 @@ _dec = trackSpan('Libp2pService.validateAndStoreCheckpointAttestation', (_peerId
|
|
|
1765
1867
|
}
|
|
1766
1868
|
return PeerErrorSeverity.HighToleranceError;
|
|
1767
1869
|
}
|
|
1768
|
-
/**
|
|
1769
|
-
* Validate a checkpoint attestation.
|
|
1770
|
-
*
|
|
1771
|
-
* @param attestation - The checkpoint attestation to validate.
|
|
1772
|
-
* @returns True if the checkpoint attestation is valid, false otherwise.
|
|
1773
|
-
*/ async validateCheckpointAttestation(peerId, attestation) {
|
|
1774
|
-
const result = await this.checkpointAttestationValidator.validate(attestation);
|
|
1775
|
-
if (result.result === 'reject') {
|
|
1776
|
-
this.logger.warn(`Penalizing peer ${peerId} for checkpoint attestation validation failure`);
|
|
1777
|
-
this.peerManager.penalizePeer(peerId, result.severity);
|
|
1778
|
-
}
|
|
1779
|
-
return result;
|
|
1780
|
-
}
|
|
1781
1870
|
getPeerScore(peerId) {
|
|
1782
1871
|
return this.node.services.pubsub.score.score(peerId.toString());
|
|
1783
1872
|
}
|