@lodestar/beacon-node 1.34.0-dev.d5a4e7a09c → 1.34.0-dev.d9fc7bb103
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/lib/api/impl/beacon/blocks/index.js +162 -55
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/beacon/pool/index.js +3 -3
- package/lib/api/impl/beacon/pool/index.js.map +1 -1
- package/lib/api/impl/beacon/state/index.js +15 -16
- package/lib/api/impl/beacon/state/index.js.map +1 -1
- package/lib/api/impl/debug/index.d.ts +1 -1
- package/lib/api/impl/debug/index.js +24 -1
- package/lib/api/impl/debug/index.js.map +1 -1
- package/lib/api/impl/validator/index.js +37 -26
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/api/impl/validator/utils.d.ts +3 -3
- package/lib/api/impl/validator/utils.js +2 -2
- package/lib/api/impl/validator/utils.js.map +1 -1
- package/lib/chain/archiveStore/archiveStore.d.ts +1 -1
- package/lib/chain/archiveStore/archiveStore.js +2 -2
- package/lib/chain/archiveStore/interface.d.ts +1 -1
- package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +1 -1
- package/lib/chain/archiveStore/utils/archiveBlocks.js +89 -22
- package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
- package/lib/chain/beaconProposerCache.d.ts +1 -0
- package/lib/chain/beaconProposerCache.js +3 -0
- package/lib/chain/beaconProposerCache.js.map +1 -1
- package/lib/chain/blocks/importBlock.js +3 -2
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/blocks/types.d.ts +66 -23
- package/lib/chain/blocks/types.js +39 -5
- package/lib/chain/blocks/types.js.map +1 -1
- package/lib/chain/blocks/utils/zebraBanner.d.ts +2 -0
- package/lib/chain/blocks/utils/zebraBanner.js +45 -0
- package/lib/chain/blocks/utils/zebraBanner.js.map +1 -0
- package/lib/chain/blocks/verifyBlock.js +18 -5
- package/lib/chain/blocks/verifyBlock.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksDataAvailability.js +21 -10
- package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
- package/lib/chain/blocks/writeBlockInputToDb.js +63 -16
- package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
- package/lib/chain/chain.d.ts +18 -101
- package/lib/chain/chain.js +107 -68
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/emitter.d.ts +18 -2
- package/lib/chain/emitter.js +13 -0
- package/lib/chain/emitter.js.map +1 -1
- package/lib/chain/errors/dataColumnSidecarError.d.ts +69 -0
- package/lib/chain/errors/dataColumnSidecarError.js +21 -0
- package/lib/chain/errors/dataColumnSidecarError.js.map +1 -0
- package/lib/chain/errors/index.d.ts +1 -0
- package/lib/chain/errors/index.js +1 -0
- package/lib/chain/errors/index.js.map +1 -1
- package/lib/chain/interface.d.ts +6 -7
- package/lib/chain/interface.js.map +1 -1
- package/lib/chain/options.d.ts +4 -1
- package/lib/chain/options.js +1 -0
- package/lib/chain/options.js.map +1 -1
- package/lib/chain/prepareNextSlot.js +2 -1
- package/lib/chain/prepareNextSlot.js.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts +30 -16
- package/lib/chain/produceBlock/produceBlockBody.js +28 -28
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts +6 -3
- package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js +28 -4
- package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
- package/lib/chain/seenCache/seenGossipBlockInput.d.ts +64 -18
- package/lib/chain/seenCache/seenGossipBlockInput.js +321 -53
- package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
- package/lib/chain/validation/dataColumnSidecar.d.ts +29 -0
- package/lib/chain/validation/dataColumnSidecar.js +248 -0
- package/lib/chain/validation/dataColumnSidecar.js.map +1 -0
- package/lib/db/beacon.d.ts +3 -1
- package/lib/db/beacon.js +3 -1
- package/lib/db/beacon.js.map +1 -1
- package/lib/db/buckets.d.ts +3 -1
- package/lib/db/buckets.js +2 -0
- package/lib/db/buckets.js.map +1 -1
- package/lib/db/interface.d.ts +3 -1
- package/lib/db/repositories/dataColumnSidecar.d.ts +26 -0
- package/lib/db/repositories/dataColumnSidecar.js +39 -0
- package/lib/db/repositories/dataColumnSidecar.js.map +1 -0
- package/lib/db/repositories/dataColumnSidecarArchive.d.ts +24 -0
- package/lib/db/repositories/dataColumnSidecarArchive.js +39 -0
- package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -0
- package/lib/db/repositories/index.d.ts +2 -0
- package/lib/db/repositories/index.js +2 -0
- package/lib/db/repositories/index.js.map +1 -1
- package/lib/execution/builder/http.d.ts +20 -4
- package/lib/execution/builder/http.js +30 -11
- package/lib/execution/builder/http.js.map +1 -1
- package/lib/execution/builder/interface.d.ts +5 -4
- package/lib/execution/engine/http.d.ts +8 -5
- package/lib/execution/engine/http.js +56 -42
- package/lib/execution/engine/http.js.map +1 -1
- package/lib/execution/engine/interface.d.ts +6 -13
- package/lib/execution/engine/interface.js +1 -1
- package/lib/execution/engine/interface.js.map +1 -1
- package/lib/execution/engine/mock.d.ts +1 -0
- package/lib/execution/engine/mock.js +5 -0
- package/lib/execution/engine/mock.js.map +1 -1
- package/lib/execution/engine/types.d.ts +12 -2
- package/lib/execution/engine/types.js +8 -2
- package/lib/execution/engine/types.js.map +1 -1
- package/lib/metrics/metrics/beacon.d.ts +15 -5
- package/lib/metrics/metrics/beacon.js +61 -14
- package/lib/metrics/metrics/beacon.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +29 -1
- package/lib/metrics/metrics/lodestar.js +59 -0
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/network/core/metrics.d.ts +10 -3
- package/lib/network/core/metrics.js +22 -4
- package/lib/network/core/metrics.js.map +1 -1
- package/lib/network/core/networkCore.d.ts +15 -4
- package/lib/network/core/networkCore.js +73 -23
- package/lib/network/core/networkCore.js.map +1 -1
- package/lib/network/core/networkCoreWorker.js +2 -0
- package/lib/network/core/networkCoreWorker.js.map +1 -1
- package/lib/network/core/networkCoreWorkerHandler.d.ts +5 -3
- package/lib/network/core/networkCoreWorkerHandler.js +6 -1
- package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
- package/lib/network/core/types.d.ts +7 -4
- package/lib/network/events.d.ts +4 -2
- package/lib/network/events.js.map +1 -1
- package/lib/network/gossip/gossipsub.d.ts +2 -2
- package/lib/network/gossip/gossipsub.js +8 -6
- package/lib/network/gossip/gossipsub.js.map +1 -1
- package/lib/network/gossip/interface.d.ts +8 -1
- package/lib/network/gossip/interface.js +1 -0
- package/lib/network/gossip/interface.js.map +1 -1
- package/lib/network/gossip/scoringParameters.d.ts +6 -2
- package/lib/network/gossip/scoringParameters.js.map +1 -1
- package/lib/network/gossip/topic.d.ts +2033 -1484
- package/lib/network/gossip/topic.js +29 -1
- package/lib/network/gossip/topic.js.map +1 -1
- package/lib/network/interface.d.ts +11 -3
- package/lib/network/metadata.d.ts +9 -5
- package/lib/network/metadata.js +26 -5
- package/lib/network/metadata.js.map +1 -1
- package/lib/network/network.d.ts +14 -4
- package/lib/network/network.js +73 -11
- package/lib/network/network.js.map +1 -1
- package/lib/network/networkConfig.d.ts +12 -0
- package/lib/network/networkConfig.js +2 -0
- package/lib/network/networkConfig.js.map +1 -0
- package/lib/network/options.d.ts +1 -0
- package/lib/network/options.js +5 -0
- package/lib/network/options.js.map +1 -1
- package/lib/network/peers/discover.d.ts +8 -3
- package/lib/network/peers/discover.js +99 -14
- package/lib/network/peers/discover.js.map +1 -1
- package/lib/network/peers/peerManager.d.ts +10 -4
- package/lib/network/peers/peerManager.js +105 -19
- package/lib/network/peers/peerManager.js.map +1 -1
- package/lib/network/peers/peersData.d.ts +17 -3
- package/lib/network/peers/peersData.js.map +1 -1
- package/lib/network/peers/score/interface.d.ts +1 -1
- package/lib/network/peers/score/score.d.ts +2 -2
- package/lib/network/peers/score/score.js +4 -1
- package/lib/network/peers/score/score.js.map +1 -1
- package/lib/network/peers/score/store.d.ts +3 -1
- package/lib/network/peers/score/store.js +6 -2
- package/lib/network/peers/score/store.js.map +1 -1
- package/lib/network/peers/utils/assertPeerRelevance.d.ts +7 -3
- package/lib/network/peers/utils/assertPeerRelevance.js +10 -1
- package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
- package/lib/network/peers/utils/prioritizePeers.d.ts +19 -7
- package/lib/network/peers/utils/prioritizePeers.js +42 -6
- package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
- package/lib/network/processor/extractSlotRootFns.js +8 -1
- package/lib/network/processor/extractSlotRootFns.js.map +1 -1
- package/lib/network/processor/gossipHandlers.js +165 -16
- package/lib/network/processor/gossipHandlers.js.map +1 -1
- package/lib/network/processor/gossipQueues/index.js +5 -0
- package/lib/network/processor/gossipQueues/index.js.map +1 -1
- package/lib/network/processor/index.js +1 -0
- package/lib/network/processor/index.js.map +1 -1
- package/lib/network/reqresp/ReqRespBeaconNode.d.ts +2 -2
- package/lib/network/reqresp/ReqRespBeaconNode.js +36 -14
- package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.d.ts +24 -4
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js +259 -20
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +1 -1
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.d.ts +37 -6
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js +283 -28
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.js +3 -3
- package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts +2 -2
- package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts +2 -2
- package/lib/network/reqresp/handlers/blobSidecarsByRange.js +2 -3
- package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts +8 -0
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +73 -0
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -0
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts +6 -0
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +36 -0
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -0
- package/lib/network/reqresp/handlers/index.js +13 -2
- package/lib/network/reqresp/handlers/index.js.map +1 -1
- package/lib/network/reqresp/protocols.d.ts +4 -0
- package/lib/network/reqresp/protocols.js +20 -0
- package/lib/network/reqresp/protocols.js.map +1 -1
- package/lib/network/reqresp/rateLimit.js +19 -3
- package/lib/network/reqresp/rateLimit.js.map +1 -1
- package/lib/network/reqresp/score.js +3 -0
- package/lib/network/reqresp/score.js.map +1 -1
- package/lib/network/reqresp/types.d.ts +13 -6
- package/lib/network/reqresp/types.js +14 -5
- package/lib/network/reqresp/types.js.map +1 -1
- package/lib/network/statusCache.d.ts +5 -5
- package/lib/network/statusCache.js.map +1 -1
- package/lib/network/subnets/interface.d.ts +3 -0
- package/lib/network/subnets/interface.js +14 -1
- package/lib/network/subnets/interface.js.map +1 -1
- package/lib/network/subnets/syncnetsService.js +4 -5
- package/lib/network/subnets/syncnetsService.js.map +1 -1
- package/lib/node/nodejs.js +1 -0
- package/lib/node/nodejs.js.map +1 -1
- package/lib/sync/constants.d.ts +18 -3
- package/lib/sync/constants.js +21 -3
- package/lib/sync/constants.js.map +1 -1
- package/lib/sync/interface.d.ts +2 -2
- package/lib/sync/interface.js +1 -1
- package/lib/sync/interface.js.map +1 -1
- package/lib/sync/range/batch.d.ts +17 -2
- package/lib/sync/range/batch.js +39 -7
- package/lib/sync/range/batch.js.map +1 -1
- package/lib/sync/range/chain.d.ts +15 -1
- package/lib/sync/range/chain.js +124 -33
- package/lib/sync/range/chain.js.map +1 -1
- package/lib/sync/range/range.d.ts +3 -2
- package/lib/sync/range/range.js +9 -3
- package/lib/sync/range/range.js.map +1 -1
- package/lib/sync/range/utils/chainTarget.d.ts +5 -1
- package/lib/sync/range/utils/chainTarget.js +26 -1
- package/lib/sync/range/utils/chainTarget.js.map +1 -1
- package/lib/sync/range/utils/peerBalancer.d.ts +19 -5
- package/lib/sync/range/utils/peerBalancer.js +104 -10
- package/lib/sync/range/utils/peerBalancer.js.map +1 -1
- package/lib/sync/sync.js +1 -1
- package/lib/sync/sync.js.map +1 -1
- package/lib/sync/unknownBlock.d.ts +54 -5
- package/lib/sync/unknownBlock.js +321 -61
- package/lib/sync/unknownBlock.js.map +1 -1
- package/lib/sync/utils/remoteSyncType.d.ts +4 -4
- package/lib/sync/utils/remoteSyncType.js.map +1 -1
- package/lib/util/blobs.d.ts +16 -4
- package/lib/util/blobs.js +122 -5
- package/lib/util/blobs.js.map +1 -1
- package/lib/util/dataColumns.d.ts +137 -0
- package/lib/util/dataColumns.js +358 -0
- package/lib/util/dataColumns.js.map +1 -0
- package/lib/util/metadata.d.ts +5 -0
- package/lib/util/metadata.js +10 -0
- package/lib/util/metadata.js.map +1 -1
- package/lib/util/sszBytes.d.ts +1 -0
- package/lib/util/sszBytes.js +17 -0
- package/lib/util/sszBytes.js.map +1 -1
- package/lib/util/types.d.ts +7 -0
- package/lib/util/types.js +3 -0
- package/lib/util/types.js.map +1 -1
- package/package.json +18 -18
- package/lib/network/reqresp/handlers/status.d.ts +0 -4
- package/lib/network/reqresp/handlers/status.js +0 -11
- package/lib/network/reqresp/handlers/status.js.map +0 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isForkPostFulu } from "@lodestar/params";
|
|
1
2
|
import { ssz } from "@lodestar/types";
|
|
2
3
|
import { toHex, toRootHex } from "@lodestar/utils";
|
|
3
4
|
// TODO: Why this value? (From Lighthouse)
|
|
@@ -7,12 +8,13 @@ export var IrrelevantPeerCode;
|
|
|
7
8
|
IrrelevantPeerCode["INCOMPATIBLE_FORKS"] = "IRRELEVANT_PEER_INCOMPATIBLE_FORKS";
|
|
8
9
|
IrrelevantPeerCode["DIFFERENT_CLOCKS"] = "IRRELEVANT_PEER_DIFFERENT_CLOCKS";
|
|
9
10
|
IrrelevantPeerCode["DIFFERENT_FINALIZED"] = "IRRELEVANT_PEER_DIFFERENT_FINALIZED";
|
|
11
|
+
IrrelevantPeerCode["NO_EARLIEST_AVAILABLE_SLOT"] = "NO_EARLIEST_AVAILABLE_SLOT";
|
|
10
12
|
})(IrrelevantPeerCode || (IrrelevantPeerCode = {}));
|
|
11
13
|
/**
|
|
12
14
|
* Process a `Status` message to determine if a peer is relevant to us. If the peer is
|
|
13
15
|
* irrelevant the reason is returned.
|
|
14
16
|
*/
|
|
15
|
-
export function assertPeerRelevance(remote, local, currentSlot) {
|
|
17
|
+
export function assertPeerRelevance(forkName, remote, local, currentSlot) {
|
|
16
18
|
// The node is on a different network/fork
|
|
17
19
|
if (!ssz.ForkDigest.equals(local.forkDigest, remote.forkDigest)) {
|
|
18
20
|
return {
|
|
@@ -48,6 +50,11 @@ export function assertPeerRelevance(remote, local, currentSlot) {
|
|
|
48
50
|
};
|
|
49
51
|
}
|
|
50
52
|
}
|
|
53
|
+
if (isForkPostFulu(forkName) && remote.earliestAvailableSlot === undefined) {
|
|
54
|
+
return {
|
|
55
|
+
code: IrrelevantPeerCode.NO_EARLIEST_AVAILABLE_SLOT,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
51
58
|
// Note: Accept request status finalized checkpoint in the future, we do not know if it is a true finalized root
|
|
52
59
|
return null;
|
|
53
60
|
}
|
|
@@ -63,6 +70,8 @@ export function renderIrrelevantPeerType(type) {
|
|
|
63
70
|
return `DIFFERENT_CLOCKS slotDiff: ${type.slotDiff}`;
|
|
64
71
|
case IrrelevantPeerCode.DIFFERENT_FINALIZED:
|
|
65
72
|
return `DIFFERENT_FINALIZED root: ${toRootHex(type.remoteRoot)} expected: ${toRootHex(type.expectedRoot)}`;
|
|
73
|
+
case IrrelevantPeerCode.NO_EARLIEST_AVAILABLE_SLOT:
|
|
74
|
+
return "No earliestAvailableSlot announced via peer Status";
|
|
66
75
|
}
|
|
67
76
|
}
|
|
68
77
|
//# sourceMappingURL=assertPeerRelevance.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertPeerRelevance.js","sourceRoot":"","sources":["../../../../src/network/peers/utils/assertPeerRelevance.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"assertPeerRelevance.js","sourceRoot":"","sources":["../../../../src/network/peers/utils/assertPeerRelevance.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import { Direction, PeerId } from "@libp2p/interface";
|
|
2
|
-
import {
|
|
2
|
+
import { ChainConfig } from "@lodestar/config";
|
|
3
|
+
import { CustodyIndex, Status, SubnetID, altair, phase0 } from "@lodestar/types";
|
|
4
|
+
import { NetworkCoreMetrics } from "../../core/metrics.js";
|
|
3
5
|
import { RequestedSubnet } from "./subnetMap.js";
|
|
4
6
|
type SubnetDiscvQuery = {
|
|
5
7
|
subnet: SubnetID;
|
|
6
8
|
toSlot: number;
|
|
7
9
|
maxPeersToDiscover: number;
|
|
8
10
|
};
|
|
11
|
+
/**
|
|
12
|
+
* A map of das custody group index to maxPeersToDiscover
|
|
13
|
+
*/
|
|
14
|
+
export type CustodyGroupQueries = Map<CustodyIndex, number>;
|
|
9
15
|
/**
|
|
10
16
|
* Comparison of our status vs a peer's status.
|
|
11
17
|
*
|
|
@@ -25,20 +31,22 @@ type PeerInfo = {
|
|
|
25
31
|
statusScore: StatusScore;
|
|
26
32
|
attnets: phase0.AttestationSubnets;
|
|
27
33
|
syncnets: altair.SyncSubnets;
|
|
34
|
+
samplingGroups: CustodyIndex[];
|
|
28
35
|
attnetsTrueBitIndices: number[];
|
|
29
36
|
syncnetsTrueBitIndices: number[];
|
|
30
37
|
score: number;
|
|
31
38
|
};
|
|
32
|
-
export
|
|
39
|
+
export type PrioritizePeersOpts = {
|
|
33
40
|
targetPeers: number;
|
|
34
41
|
maxPeers: number;
|
|
35
|
-
|
|
42
|
+
targetGroupPeers: number;
|
|
43
|
+
status: Status;
|
|
36
44
|
starved: boolean;
|
|
37
45
|
starvationPruneRatio: number;
|
|
38
46
|
starvationThresholdSlots: number;
|
|
39
47
|
outboundPeersRatio?: number;
|
|
40
48
|
targetSubnetPeers?: number;
|
|
41
|
-
}
|
|
49
|
+
};
|
|
42
50
|
export declare enum ExcessPeerDisconnectReason {
|
|
43
51
|
LOW_SCORE = "low_score",
|
|
44
52
|
NO_LONG_LIVED_SUBNET = "no_long_lived_subnet",
|
|
@@ -50,21 +58,25 @@ export declare enum ExcessPeerDisconnectReason {
|
|
|
50
58
|
* - Reach `targetPeers`
|
|
51
59
|
* - If we're starved for data, prune additional peers
|
|
52
60
|
* - Don't exceed `maxPeers`
|
|
53
|
-
* - Ensure there are enough peers per
|
|
61
|
+
* - Ensure there are enough peers per column subnets, attestation subnets and sync committee subnets
|
|
54
62
|
* - Prioritize peers with good score
|
|
63
|
+
*
|
|
64
|
+
* pre-fulu samplingGroups is not used and this function returns empty custodyGroupQueries
|
|
55
65
|
*/
|
|
56
66
|
export declare function prioritizePeers(connectedPeersInfo: {
|
|
57
67
|
id: PeerId;
|
|
58
68
|
direction: Direction | null;
|
|
59
|
-
status:
|
|
69
|
+
status: Status | null;
|
|
60
70
|
attnets: phase0.AttestationSubnets | null;
|
|
61
71
|
syncnets: altair.SyncSubnets | null;
|
|
72
|
+
samplingGroups: CustodyIndex[] | null;
|
|
62
73
|
score: number;
|
|
63
|
-
}[], activeAttnets: RequestedSubnet[], activeSyncnets: RequestedSubnet[], opts: PrioritizePeersOpts): {
|
|
74
|
+
}[], activeAttnets: RequestedSubnet[], activeSyncnets: RequestedSubnet[], samplingGroups: CustodyIndex[] | undefined, opts: PrioritizePeersOpts, config: ChainConfig, metrics: NetworkCoreMetrics | null): {
|
|
64
75
|
peersToConnect: number;
|
|
65
76
|
peersToDisconnect: Map<ExcessPeerDisconnectReason, PeerId[]>;
|
|
66
77
|
attnetQueries: SubnetDiscvQuery[];
|
|
67
78
|
syncnetQueries: SubnetDiscvQuery[];
|
|
79
|
+
custodyGroupQueries: CustodyGroupQueries;
|
|
68
80
|
};
|
|
69
81
|
/**
|
|
70
82
|
* Sort peers ascending, peer-0 has the most chance to prune, peer-n has the least.
|
|
@@ -5,6 +5,11 @@ import { shuffle } from "../../../util/shuffle.js";
|
|
|
5
5
|
import { sortBy } from "../../../util/sortBy.js";
|
|
6
6
|
/** Target number of peers we'd like to have connected to a given long-lived subnet */
|
|
7
7
|
const TARGET_SUBNET_PEERS = 6;
|
|
8
|
+
/**
|
|
9
|
+
* This is for non-sampling groups only. This is a very easy number to achieve given an average of 6.25 peers per column subnet on public networks.
|
|
10
|
+
* This is needed to always maintain some minimum peers on all subnets so that when we publish a block, we're sure we pubish to all column subnets.
|
|
11
|
+
*/
|
|
12
|
+
const TARGET_GROUP_PEERS_PER_SUBNET = 4;
|
|
8
13
|
/**
|
|
9
14
|
* This is used in the pruning logic. We avoid pruning peers on sync-committees if doing so would
|
|
10
15
|
* lower our peer count below this number. Instead we favour a non-uniform distribution of subnet
|
|
@@ -75,10 +80,12 @@ export var ExcessPeerDisconnectReason;
|
|
|
75
80
|
* - Reach `targetPeers`
|
|
76
81
|
* - If we're starved for data, prune additional peers
|
|
77
82
|
* - Don't exceed `maxPeers`
|
|
78
|
-
* - Ensure there are enough peers per
|
|
83
|
+
* - Ensure there are enough peers per column subnets, attestation subnets and sync committee subnets
|
|
79
84
|
* - Prioritize peers with good score
|
|
85
|
+
*
|
|
86
|
+
* pre-fulu samplingGroups is not used and this function returns empty custodyGroupQueries
|
|
80
87
|
*/
|
|
81
|
-
export function prioritizePeers(connectedPeersInfo, activeAttnets, activeSyncnets, opts) {
|
|
88
|
+
export function prioritizePeers(connectedPeersInfo, activeAttnets, activeSyncnets, samplingGroups, opts, config, metrics) {
|
|
82
89
|
const { targetPeers, maxPeers } = opts;
|
|
83
90
|
let peersToConnect = 0;
|
|
84
91
|
const peersToDisconnect = new MapDef(() => []);
|
|
@@ -89,11 +96,12 @@ export function prioritizePeers(connectedPeersInfo, activeAttnets, activeSyncnet
|
|
|
89
96
|
statusScore: computeStatusScore(opts.status, peer.status, opts),
|
|
90
97
|
attnets: peer.attnets ?? attnetsZero,
|
|
91
98
|
syncnets: peer.syncnets ?? syncnetsZero,
|
|
99
|
+
samplingGroups: peer.samplingGroups ?? [],
|
|
92
100
|
attnetsTrueBitIndices: peer.attnets?.getTrueBitIndexes() ?? [],
|
|
93
101
|
syncnetsTrueBitIndices: peer.syncnets?.getTrueBitIndexes() ?? [],
|
|
94
102
|
score: peer.score,
|
|
95
103
|
}));
|
|
96
|
-
const { attnetQueries, syncnetQueries, dutiesByPeer } =
|
|
104
|
+
const { attnetQueries, syncnetQueries, custodyGroupQueries, dutiesByPeer } = requestSubnetPeers(connectedPeers, activeAttnets, activeSyncnets, samplingGroups, opts, config, metrics);
|
|
97
105
|
const connectedPeerCount = connectedPeers.length;
|
|
98
106
|
if (connectedPeerCount < targetPeers) {
|
|
99
107
|
// Need more peers.
|
|
@@ -112,12 +120,14 @@ export function prioritizePeers(connectedPeersInfo, activeAttnets, activeSyncnet
|
|
|
112
120
|
peersToDisconnect,
|
|
113
121
|
attnetQueries,
|
|
114
122
|
syncnetQueries,
|
|
123
|
+
custodyGroupQueries,
|
|
115
124
|
};
|
|
116
125
|
}
|
|
117
126
|
/**
|
|
118
|
-
* If more peers are needed in attnets and syncnets, create SubnetDiscvQuery for each subnet
|
|
127
|
+
* If more peers are needed in attnets and syncnets and column subnets, create SubnetDiscvQuery for each subnet
|
|
128
|
+
* pre-fulu samplingGroups is not used and this function returns empty custodyGroupQueries
|
|
119
129
|
*/
|
|
120
|
-
function
|
|
130
|
+
function requestSubnetPeers(connectedPeers, activeAttnets, activeSyncnets, ourSamplingGroups, opts, config, metrics) {
|
|
121
131
|
const { targetSubnetPeers = TARGET_SUBNET_PEERS } = opts;
|
|
122
132
|
const attnetQueries = [];
|
|
123
133
|
const syncnetQueries = [];
|
|
@@ -169,7 +179,33 @@ function requestAttnetPeers(connectedPeers, activeAttnets, activeSyncnets, opts)
|
|
|
169
179
|
}
|
|
170
180
|
}
|
|
171
181
|
}
|
|
172
|
-
|
|
182
|
+
const custodyGroupQueries = new Map();
|
|
183
|
+
// pre-fulu
|
|
184
|
+
if (ourSamplingGroups == null) {
|
|
185
|
+
return { attnetQueries, syncnetQueries, custodyGroupQueries, dutiesByPeer };
|
|
186
|
+
}
|
|
187
|
+
// column subnets, do we need queries for more peers
|
|
188
|
+
const targetGroupPeersPerSamplingGroup = opts.targetGroupPeers;
|
|
189
|
+
const peersPerGroup = new Map();
|
|
190
|
+
for (const peer of connectedPeers) {
|
|
191
|
+
const peerSamplingGroups = peer.samplingGroups;
|
|
192
|
+
for (const group of peerSamplingGroups) {
|
|
193
|
+
peersPerGroup.set(group, 1 + (peersPerGroup.get(group) ?? 0));
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
const ourSamplingGroupSet = new Set(ourSamplingGroups);
|
|
197
|
+
for (let groupIndex = 0; groupIndex < config.NUMBER_OF_CUSTODY_GROUPS; groupIndex++) {
|
|
198
|
+
const peersInGroup = peersPerGroup.get(groupIndex) ?? 0;
|
|
199
|
+
metrics?.peerCountPerSamplingGroup.set({ groupIndex }, peersInGroup);
|
|
200
|
+
const targetGroupPeers = ourSamplingGroupSet.has(groupIndex)
|
|
201
|
+
? targetGroupPeersPerSamplingGroup
|
|
202
|
+
: TARGET_GROUP_PEERS_PER_SUBNET;
|
|
203
|
+
if (peersInGroup < targetGroupPeers) {
|
|
204
|
+
// We need more peers
|
|
205
|
+
custodyGroupQueries.set(groupIndex, targetGroupPeers - peersInGroup);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return { attnetQueries, syncnetQueries, custodyGroupQueries, dutiesByPeer };
|
|
173
209
|
}
|
|
174
210
|
/**
|
|
175
211
|
* Remove excess peers back down to our target values.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prioritizePeers.js","sourceRoot":"","sources":["../../../../src/network/peers/utils/prioritizePeers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prioritizePeers.js","sourceRoot":"","sources":["../../../../src/network/peers/utils/prioritizePeers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getBlockRootFromBeaconAttestationSerialized, getBlockRootFromSignedAggregateAndProofSerialized, getSlotFromBeaconAttestationSerialized, getSlotFromBlobSidecarSerialized, getSlotFromSignedAggregateAndProofSerialized, getSlotFromSignedBeaconBlockSerialized, } from "../../util/sszBytes.js";
|
|
1
|
+
import { getBlockRootFromBeaconAttestationSerialized, getBlockRootFromSignedAggregateAndProofSerialized, getSlotFromBeaconAttestationSerialized, getSlotFromBlobSidecarSerialized, getSlotFromDataColumnSidecarSerialized, getSlotFromSignedAggregateAndProofSerialized, getSlotFromSignedBeaconBlockSerialized, } from "../../util/sszBytes.js";
|
|
2
2
|
import { GossipType } from "../gossip/index.js";
|
|
3
3
|
/**
|
|
4
4
|
* Extract the slot and block root of a gossip message form serialized data.
|
|
@@ -36,6 +36,13 @@ export function createExtractBlockSlotRootFns() {
|
|
|
36
36
|
}
|
|
37
37
|
return { slot };
|
|
38
38
|
},
|
|
39
|
+
[GossipType.data_column_sidecar]: (data) => {
|
|
40
|
+
const slot = getSlotFromDataColumnSidecarSerialized(data);
|
|
41
|
+
if (slot === null) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
return { slot };
|
|
45
|
+
},
|
|
39
46
|
};
|
|
40
47
|
}
|
|
41
48
|
//# sourceMappingURL=extractSlotRootFns.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractSlotRootFns.js","sourceRoot":"","sources":["../../../src/network/processor/extractSlotRootFns.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,2CAA2C,EAC3C,iDAAiD,EACjD,sCAAsC,EACtC,gCAAgC,EAChC,4CAA4C,EAC5C,sCAAsC,GACvC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAG9C;;;GAGG;AACH,MAAM,UAAU,6BAA6B;IAC3C,OAAO;QACL,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC,IAAgB,EAAE,IAAc,EAAsB,EAAE;YACxF,MAAM,IAAI,GAAG,sCAAsC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,2CAA2C,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAErE,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBACnC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC;QACtB,CAAC;QACD,CAAC,UAAU,CAAC,0BAA0B,CAAC,EAAE,CAAC,IAAgB,EAAsB,EAAE;YAChF,MAAM,IAAI,GAAG,4CAA4C,CAAC,IAAI,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,iDAAiD,CAAC,IAAI,CAAC,CAAC;YAErE,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBACnC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC;QACtB,CAAC;QACD,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,IAAgB,EAA2B,EAAE;YACvE,MAAM,IAAI,GAAG,sCAAsC,CAAC,IAAI,CAAC,CAAC;YAE1D,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,EAAC,IAAI,EAAC,CAAC;QAChB,CAAC;QACD,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,IAAgB,EAA2B,EAAE;YACvE,MAAM,IAAI,GAAG,gCAAgC,CAAC,IAAI,CAAC,CAAC;YAEpD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,EAAC,IAAI,EAAC,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"extractSlotRootFns.js","sourceRoot":"","sources":["../../../src/network/processor/extractSlotRootFns.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,2CAA2C,EAC3C,iDAAiD,EACjD,sCAAsC,EACtC,gCAAgC,EAChC,sCAAsC,EACtC,4CAA4C,EAC5C,sCAAsC,GACvC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAG9C;;;GAGG;AACH,MAAM,UAAU,6BAA6B;IAC3C,OAAO;QACL,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC,IAAgB,EAAE,IAAc,EAAsB,EAAE;YACxF,MAAM,IAAI,GAAG,sCAAsC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,2CAA2C,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAErE,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBACnC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC;QACtB,CAAC;QACD,CAAC,UAAU,CAAC,0BAA0B,CAAC,EAAE,CAAC,IAAgB,EAAsB,EAAE;YAChF,MAAM,IAAI,GAAG,4CAA4C,CAAC,IAAI,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,iDAAiD,CAAC,IAAI,CAAC,CAAC;YAErE,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBACnC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC;QACtB,CAAC;QACD,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,IAAgB,EAA2B,EAAE;YACvE,MAAM,IAAI,GAAG,sCAAsC,CAAC,IAAI,CAAC,CAAC;YAE1D,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,EAAC,IAAI,EAAC,CAAC;QAChB,CAAC;QACD,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,IAAgB,EAA2B,EAAE;YACvE,MAAM,IAAI,GAAG,gCAAgC,CAAC,IAAI,CAAC,CAAC;YAEpD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,EAAC,IAAI,EAAC,CAAC;QAChB,CAAC;QACD,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC,IAAgB,EAA2B,EAAE;YAC9E,MAAM,IAAI,GAAG,sCAAsC,CAAC,IAAI,CAAC,CAAC;YAE1D,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,EAAC,IAAI,EAAC,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -3,9 +3,10 @@ import { ForkSeq, isForkPostElectra } from "@lodestar/params";
|
|
|
3
3
|
import { computeTimeAtSlot } from "@lodestar/state-transition";
|
|
4
4
|
import { ssz, sszTypesFor, } from "@lodestar/types";
|
|
5
5
|
import { LogLevel, prettyBytes, toHex, toRootHex } from "@lodestar/utils";
|
|
6
|
-
import { BlobSidecarValidation, BlockInputType, GossipedInputType, } from "../../chain/blocks/types.js";
|
|
7
|
-
import { AttestationError, AttestationErrorCode, BlobSidecarErrorCode, BlobSidecarGossipError, BlockError, BlockErrorCode, BlockGossipError, GossipAction, GossipActionError, SyncCommitteeError, } from "../../chain/errors/index.js";
|
|
6
|
+
import { BlobSidecarValidation, BlockInputType, DataColumnsSource, GossipedInputType, } from "../../chain/blocks/types.js";
|
|
7
|
+
import { AttestationError, AttestationErrorCode, BlobSidecarErrorCode, BlobSidecarGossipError, BlockError, BlockErrorCode, BlockGossipError, DataColumnSidecarGossipError, GossipAction, GossipActionError, SyncCommitteeError, } from "../../chain/errors/index.js";
|
|
8
8
|
import { validateGossipBlobSidecar } from "../../chain/validation/blobSidecar.js";
|
|
9
|
+
import { validateGossipDataColumnSidecar } from "../../chain/validation/dataColumnSidecar.js";
|
|
9
10
|
import { toElectraSingleAttestation, validateGossipAggregateAndProof, validateGossipAttestationsSameAttData, validateGossipAttesterSlashing, validateGossipBlock, validateGossipBlsToExecutionChange, validateGossipProposerSlashing, validateGossipSyncCommittee, validateGossipVoluntaryExit, validateSyncCommitteeGossipContributionAndProof, } from "../../chain/validation/index.js";
|
|
10
11
|
import { validateLightClientFinalityUpdate } from "../../chain/validation/lightClientFinalityUpdate.js";
|
|
11
12
|
import { validateLightClientOptimisticUpdate } from "../../chain/validation/lightClientOptimisticUpdate.js";
|
|
@@ -48,6 +49,8 @@ function getSequentialHandlers(modules, options) {
|
|
|
48
49
|
const delaySec = chain.clock.secFromSlot(slot, seenTimestampSec);
|
|
49
50
|
const recvToValLatency = Date.now() / 1000 - seenTimestampSec;
|
|
50
51
|
// always set block to seen cache for all forks so that we don't need to download it
|
|
52
|
+
// TODO: validate block before adding to cache
|
|
53
|
+
// tracked in https://github.com/ChainSafe/lodestar/issues/7957
|
|
51
54
|
const blockInputRes = chain.seenGossipBlockInput.getGossipBlockInput(config, {
|
|
52
55
|
type: GossipedInputType.block,
|
|
53
56
|
signedBlock,
|
|
@@ -102,12 +105,12 @@ function getSequentialHandlers(modules, options) {
|
|
|
102
105
|
const blockShortHex = prettyBytes(blockRootHex);
|
|
103
106
|
const delaySec = chain.clock.secFromSlot(slot, seenTimestampSec);
|
|
104
107
|
const recvToValLatency = Date.now() / 1000 - seenTimestampSec;
|
|
105
|
-
const { blockInput, blockInputMeta } = chain.seenGossipBlockInput.getGossipBlockInput(config, {
|
|
106
|
-
type: GossipedInputType.blob,
|
|
107
|
-
blobSidecar,
|
|
108
|
-
}, metrics);
|
|
109
108
|
try {
|
|
110
109
|
await validateGossipBlobSidecar(fork, chain, blobSidecar, subnet);
|
|
110
|
+
const { blockInput, blockInputMeta } = chain.seenGossipBlockInput.getGossipBlockInput(config, {
|
|
111
|
+
type: GossipedInputType.blob,
|
|
112
|
+
blobSidecar,
|
|
113
|
+
}, metrics);
|
|
111
114
|
const recvToValidation = Date.now() / 1000 - seenTimestampSec;
|
|
112
115
|
const validationTime = recvToValidation - recvToValLatency;
|
|
113
116
|
metrics?.gossipBlob.recvToValidation.observe(recvToValidation);
|
|
@@ -138,9 +141,9 @@ function getSequentialHandlers(modules, options) {
|
|
|
138
141
|
catch (e) {
|
|
139
142
|
if (e instanceof BlobSidecarGossipError) {
|
|
140
143
|
// Don't trigger this yet if full block and blobs haven't arrived yet
|
|
141
|
-
if (e.type.code === BlobSidecarErrorCode.PARENT_UNKNOWN
|
|
144
|
+
if (e.type.code === BlobSidecarErrorCode.PARENT_UNKNOWN) {
|
|
142
145
|
logger.debug("Gossip blob has error", { slot, root: blockShortHex, code: e.type.code });
|
|
143
|
-
|
|
146
|
+
// no need to trigger `unknownBlockParent` event here, as we already did it in `validateBeaconBlock()`
|
|
144
147
|
}
|
|
145
148
|
if (e.action === GossipAction.REJECT) {
|
|
146
149
|
chain.persistInvalidSszValue(ssz.deneb.BlobSidecar, blobSidecar, `gossip_reject_slot_${slot}_index_${blobSidecar.index}`);
|
|
@@ -149,6 +152,59 @@ function getSequentialHandlers(modules, options) {
|
|
|
149
152
|
throw e;
|
|
150
153
|
}
|
|
151
154
|
}
|
|
155
|
+
async function validateBeaconDataColumn(dataColumnSidecar, dataColumnBytes, gossipSubnet, peerIdStr, seenTimestampSec) {
|
|
156
|
+
metrics?.peerDas.dataColumnSidecarProcessingRequests.inc();
|
|
157
|
+
const verificationTimer = metrics?.peerDas.dataColumnSidecarGossipVerificationTime.startTimer();
|
|
158
|
+
const dataColumnBlockHeader = dataColumnSidecar.signedBlockHeader.message;
|
|
159
|
+
const slot = dataColumnBlockHeader.slot;
|
|
160
|
+
const blockRootHex = toRootHex(ssz.phase0.BeaconBlockHeader.hashTreeRoot(dataColumnBlockHeader));
|
|
161
|
+
const blockShortHex = prettyBytes(blockRootHex);
|
|
162
|
+
const delaySec = chain.clock.secFromSlot(slot, seenTimestampSec);
|
|
163
|
+
const recvToValLatency = Date.now() / 1000 - seenTimestampSec;
|
|
164
|
+
try {
|
|
165
|
+
await validateGossipDataColumnSidecar(chain, dataColumnSidecar, gossipSubnet, metrics);
|
|
166
|
+
const { blockInput, blockInputMeta } = chain.seenGossipBlockInput.getGossipBlockInput(config, {
|
|
167
|
+
type: GossipedInputType.dataColumn,
|
|
168
|
+
dataColumnSidecar,
|
|
169
|
+
dataColumnBytes,
|
|
170
|
+
}, metrics);
|
|
171
|
+
const recvToValidation = Date.now() / 1000 - seenTimestampSec;
|
|
172
|
+
const validationTime = recvToValidation - recvToValLatency;
|
|
173
|
+
metrics?.peerDas.dataColumnSidecarProcessingSuccesses.inc();
|
|
174
|
+
metrics?.gossipBlob.recvToValidation.observe(recvToValidation);
|
|
175
|
+
metrics?.gossipBlob.validationTime.observe(validationTime);
|
|
176
|
+
chain.emitter.emit(routes.events.EventType.dataColumnSidecar, {
|
|
177
|
+
blockRoot: blockRootHex,
|
|
178
|
+
slot,
|
|
179
|
+
index: dataColumnSidecar.index,
|
|
180
|
+
kzgCommitments: dataColumnSidecar.kzgCommitments.map(toHex),
|
|
181
|
+
});
|
|
182
|
+
logger.debug("Received gossip dataColumn", {
|
|
183
|
+
slot: slot,
|
|
184
|
+
root: blockShortHex,
|
|
185
|
+
currentSlot: chain.clock.currentSlot,
|
|
186
|
+
peerId: peerIdStr,
|
|
187
|
+
delaySec,
|
|
188
|
+
gossipSubnet,
|
|
189
|
+
columnIndex: dataColumnSidecar.index,
|
|
190
|
+
...blockInputMeta,
|
|
191
|
+
recvToValLatency,
|
|
192
|
+
recvToValidation,
|
|
193
|
+
validationTime,
|
|
194
|
+
});
|
|
195
|
+
return blockInput;
|
|
196
|
+
}
|
|
197
|
+
catch (e) {
|
|
198
|
+
if (e instanceof DataColumnSidecarGossipError && e.action === GossipAction.REJECT) {
|
|
199
|
+
chain.persistInvalidSszValue(ssz.fulu.DataColumnSidecar, dataColumnSidecar, `gossip_reject_slot_${slot}_index_${dataColumnSidecar.index}`);
|
|
200
|
+
// no need to trigger `unknownBlockParent` event here, as we already did it in `validateBeaconBlock()`
|
|
201
|
+
}
|
|
202
|
+
throw e;
|
|
203
|
+
}
|
|
204
|
+
finally {
|
|
205
|
+
verificationTimer?.();
|
|
206
|
+
}
|
|
207
|
+
}
|
|
152
208
|
function handleValidBeaconBlock(blockInput, peerIdStr, seenTimestampSec) {
|
|
153
209
|
const signedBlock = blockInput.block;
|
|
154
210
|
// Handler - MUST NOT `await`, to allow validation result to be propagated
|
|
@@ -161,7 +217,7 @@ function getSequentialHandlers(modules, options) {
|
|
|
161
217
|
}
|
|
162
218
|
else if (blockInput.type === BlockInputType.availableData) {
|
|
163
219
|
metrics?.blockInputFetchStats.totalDataAvailableBlockInputs.inc();
|
|
164
|
-
metrics?.blockInputFetchStats.totalDataAvailableBlockInputBlobs.inc(blockInput.
|
|
220
|
+
metrics?.blockInputFetchStats.totalDataAvailableBlockInputBlobs.inc(blockInput.block.message.body.blobKzgCommitments.length);
|
|
165
221
|
}
|
|
166
222
|
chain
|
|
167
223
|
.processBlock(blockInput, {
|
|
@@ -228,6 +284,20 @@ function getSequentialHandlers(modules, options) {
|
|
|
228
284
|
logger[logLevel]("Error receiving block", { slot: signedBlock.message.slot, peer: peerIdStr }, e);
|
|
229
285
|
chain.seenGossipBlockInput.prune();
|
|
230
286
|
});
|
|
287
|
+
if (blockInput.type === BlockInputType.dataPromise) {
|
|
288
|
+
const blockSlot = blockInput.block.message.slot;
|
|
289
|
+
// if blobs are not yet fully available start an aggressive blob pull
|
|
290
|
+
chain.logger.debug("Block under processing is not available, racing with cutoff to add to unknownBlockInput", {
|
|
291
|
+
blockSlot,
|
|
292
|
+
});
|
|
293
|
+
raceWithCutoff(chain, blockSlot, blockInput.cachedData.availabilityPromise, BLOCK_AVAILABILITY_CUTOFF_MS).catch((_e) => {
|
|
294
|
+
chain.logger.debug("Block under processing not yet available, racing with cutoff to add to unknownBlockInput", {
|
|
295
|
+
blockSlot,
|
|
296
|
+
});
|
|
297
|
+
events.emit(NetworkEvent.unknownBlockInput, { blockInput, peer: peerIdStr });
|
|
298
|
+
return null;
|
|
299
|
+
});
|
|
300
|
+
}
|
|
231
301
|
}
|
|
232
302
|
return {
|
|
233
303
|
[GossipType.beacon_block]: async ({ gossipData, topic, peerIdStr, seenTimestampSec, }) => {
|
|
@@ -247,10 +317,18 @@ function getSequentialHandlers(modules, options) {
|
|
|
247
317
|
}
|
|
248
318
|
const blockInput = await validateBeaconBlob(blobSidecar, topic.subnet, peerIdStr, seenTimestampSec);
|
|
249
319
|
if (blockInput.block !== null) {
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
320
|
+
if (blockInput.type === BlockInputType.dataPromise) {
|
|
321
|
+
chain.logger.debug("Block corresponding to blob is available but waiting for data availability", {
|
|
322
|
+
blobSlot,
|
|
323
|
+
index,
|
|
324
|
+
});
|
|
325
|
+
await raceWithCutoff(chain, blobSlot, blockInput.cachedData.availabilityPromise, BLOCK_AVAILABILITY_CUTOFF_MS).catch((_e) => {
|
|
326
|
+
chain.logger.debug("Block under processing not yet fully available adding to unknownBlockInput", {
|
|
327
|
+
blobSlot,
|
|
328
|
+
});
|
|
329
|
+
events.emit(NetworkEvent.unknownBlockInput, { blockInput, peer: peerIdStr });
|
|
330
|
+
});
|
|
331
|
+
}
|
|
254
332
|
}
|
|
255
333
|
else {
|
|
256
334
|
// wait for the block to arrive till some cutoff else emit unknownBlockInput event
|
|
@@ -259,7 +337,6 @@ function getSequentialHandlers(modules, options) {
|
|
|
259
337
|
return null;
|
|
260
338
|
});
|
|
261
339
|
if (normalBlockInput !== null) {
|
|
262
|
-
chain.logger.debug("Block corresponding to blob is now available for processing", { blobSlot, index });
|
|
263
340
|
// we can directly send it for processing but block gossip handler will queue it up anyway
|
|
264
341
|
// if we see any issues later, we can send it to handleValidBeaconBlock
|
|
265
342
|
//
|
|
@@ -268,11 +345,83 @@ function getSequentialHandlers(modules, options) {
|
|
|
268
345
|
// however we can emit the event which will atleast add the peer to the list of peers to pull
|
|
269
346
|
// data from
|
|
270
347
|
if (normalBlockInput.type === BlockInputType.dataPromise) {
|
|
271
|
-
|
|
348
|
+
chain.logger.debug("Block corresponding to blob is now available but waiting for data availability", {
|
|
349
|
+
blobSlot,
|
|
350
|
+
index,
|
|
351
|
+
});
|
|
352
|
+
await raceWithCutoff(chain, blobSlot, normalBlockInput.cachedData.availabilityPromise, BLOCK_AVAILABILITY_CUTOFF_MS).catch((_e) => {
|
|
353
|
+
chain.logger.debug("Block under processing not yet fully available adding to unknownBlockInput", {
|
|
354
|
+
blobSlot,
|
|
355
|
+
});
|
|
356
|
+
events.emit(NetworkEvent.unknownBlockInput, { blockInput: normalBlockInput, peer: peerIdStr });
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
else {
|
|
360
|
+
chain.logger.debug("Block corresponding to blob is now available for processing", { blobSlot, index });
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
else {
|
|
364
|
+
chain.logger.debug("Block corresponding to blob not available till BLOCK_AVAILABILITY_CUTOFF_MS adding to unknownBlockInput", { blobSlot, index });
|
|
365
|
+
events.emit(NetworkEvent.unknownBlockInput, { blockInput, peer: peerIdStr });
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
},
|
|
369
|
+
[GossipType.data_column_sidecar]: async ({ gossipData, topic, peerIdStr, seenTimestampSec, }) => {
|
|
370
|
+
const { serializedData } = gossipData;
|
|
371
|
+
const dataColumnSidecar = sszDeserialize(topic, serializedData);
|
|
372
|
+
const dataColumnSlot = dataColumnSidecar.signedBlockHeader.message.slot;
|
|
373
|
+
const index = dataColumnSidecar.index;
|
|
374
|
+
if (config.getForkSeq(dataColumnSlot) < ForkSeq.fulu) {
|
|
375
|
+
throw new GossipActionError(GossipAction.REJECT, { code: "PRE_FULU_BLOCK" });
|
|
376
|
+
}
|
|
377
|
+
const delaySec = chain.clock.secFromSlot(dataColumnSlot, seenTimestampSec);
|
|
378
|
+
metrics?.dataColumns.elapsedTimeTillReceived.observe({ source: DataColumnsSource.gossip }, delaySec);
|
|
379
|
+
const blockInput = await validateBeaconDataColumn(dataColumnSidecar, serializedData, topic.subnet, peerIdStr, seenTimestampSec);
|
|
380
|
+
if (blockInput.block !== null) {
|
|
381
|
+
if (blockInput.type === BlockInputType.dataPromise) {
|
|
382
|
+
chain.logger.debug("Block corresponding to data column is available but waiting for data availability", {
|
|
383
|
+
dataColumnSlot,
|
|
384
|
+
index,
|
|
385
|
+
});
|
|
386
|
+
await raceWithCutoff(chain, dataColumnSlot, blockInput.cachedData.availabilityPromise, BLOCK_AVAILABILITY_CUTOFF_MS).catch((_e) => {
|
|
387
|
+
chain.logger.debug("Block under processing not yet fully available adding to unknownBlockInput", {
|
|
388
|
+
dataColumnSlot,
|
|
389
|
+
});
|
|
390
|
+
events.emit(NetworkEvent.unknownBlockInput, { blockInput, peer: peerIdStr });
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
else {
|
|
395
|
+
// wait for the block to arrive till some cutoff else emit unknownBlockInput event
|
|
396
|
+
chain.logger.debug("Block not yet available, racing with cutoff", { dataColumnSlot, index });
|
|
397
|
+
const normalBlockInput = await raceWithCutoff(chain, dataColumnSlot, blockInput.blockInputPromise, BLOCK_AVAILABILITY_CUTOFF_MS).catch((_e) => {
|
|
398
|
+
return null;
|
|
399
|
+
});
|
|
400
|
+
if (normalBlockInput !== null) {
|
|
401
|
+
if (normalBlockInput.type === BlockInputType.dataPromise) {
|
|
402
|
+
chain.logger.debug("Block corresponding to data column is now available but waiting for data availability", {
|
|
403
|
+
dataColumnSlot,
|
|
404
|
+
index,
|
|
405
|
+
});
|
|
406
|
+
await raceWithCutoff(chain, dataColumnSlot, normalBlockInput.cachedData.availabilityPromise, BLOCK_AVAILABILITY_CUTOFF_MS).catch((_e) => {
|
|
407
|
+
chain.logger.debug("Block under processing not yet fully available adding to unknownBlockInput", {
|
|
408
|
+
dataColumnSlot,
|
|
409
|
+
});
|
|
410
|
+
events.emit(NetworkEvent.unknownBlockInput, { blockInput: normalBlockInput, peer: peerIdStr });
|
|
411
|
+
});
|
|
412
|
+
}
|
|
413
|
+
else {
|
|
414
|
+
chain.logger.debug("Block corresponding to data column is now available for processing", {
|
|
415
|
+
dataColumnSlot,
|
|
416
|
+
index,
|
|
417
|
+
});
|
|
272
418
|
}
|
|
273
419
|
}
|
|
274
420
|
else {
|
|
275
|
-
chain.logger.debug("Block not available till BLOCK_AVAILABILITY_CUTOFF_MS", {
|
|
421
|
+
chain.logger.debug("Block not available till BLOCK_AVAILABILITY_CUTOFF_MS", {
|
|
422
|
+
dataColumnSlot,
|
|
423
|
+
index,
|
|
424
|
+
});
|
|
276
425
|
events.emit(NetworkEvent.unknownBlockInput, { blockInput, peer: peerIdStr });
|
|
277
426
|
}
|
|
278
427
|
}
|