@lodestar/beacon-node 1.47.0-dev.931ecbec99 → 1.47.0-dev.9572bcc698
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.d.ts.map +1 -1
- package/lib/api/impl/beacon/blocks/index.js +3 -2
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
- package/lib/api/impl/beacon/pool/index.js +21 -2
- package/lib/api/impl/beacon/pool/index.js.map +1 -1
- package/lib/api/impl/events/index.d.ts.map +1 -1
- package/lib/api/impl/events/index.js +2 -0
- package/lib/api/impl/events/index.js.map +1 -1
- package/lib/api/rest/base.d.ts.map +1 -1
- package/lib/api/rest/base.js +7 -0
- package/lib/api/rest/base.js.map +1 -1
- package/lib/chain/blocks/importExecutionPayload.d.ts +3 -2
- package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
- package/lib/chain/blocks/importExecutionPayload.js +10 -8
- package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
- package/lib/chain/blocks/index.d.ts.map +1 -1
- package/lib/chain/blocks/index.js +14 -6
- package/lib/chain/blocks/index.js.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts +2 -1
- package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js +6 -2
- package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts +14 -5
- package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeInput/types.js +5 -0
- package/lib/chain/blocks/payloadEnvelopeInput/types.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js +22 -12
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
- package/lib/chain/chain.d.ts +2 -1
- package/lib/chain/chain.d.ts.map +1 -1
- package/lib/chain/chain.js +10 -2
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/errors/blockError.d.ts +1 -0
- package/lib/chain/errors/blockError.d.ts.map +1 -1
- package/lib/chain/errors/blockError.js +6 -1
- package/lib/chain/errors/blockError.js.map +1 -1
- package/lib/chain/interface.d.ts +2 -1
- package/lib/chain/interface.d.ts.map +1 -1
- package/lib/chain/interface.js.map +1 -1
- package/lib/chain/opPools/deferredVoluntaryExitPool.d.ts +16 -0
- package/lib/chain/opPools/deferredVoluntaryExitPool.d.ts.map +1 -0
- package/lib/chain/opPools/deferredVoluntaryExitPool.js +57 -0
- package/lib/chain/opPools/deferredVoluntaryExitPool.js.map +1 -0
- package/lib/chain/opPools/index.d.ts +1 -0
- package/lib/chain/opPools/index.d.ts.map +1 -1
- package/lib/chain/opPools/index.js +1 -0
- package/lib/chain/opPools/index.js.map +1 -1
- package/lib/chain/regen/interface.d.ts +2 -0
- package/lib/chain/regen/interface.d.ts.map +1 -1
- package/lib/chain/regen/interface.js +2 -0
- package/lib/chain/regen/interface.js.map +1 -1
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +28 -1
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -1
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +121 -13
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -1
- package/lib/chain/validation/voluntaryExit.d.ts +9 -1
- package/lib/chain/validation/voluntaryExit.d.ts.map +1 -1
- package/lib/chain/validation/voluntaryExit.js +46 -1
- package/lib/chain/validation/voluntaryExit.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +17 -4
- package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
- package/lib/metrics/metrics/lodestar.js +20 -2
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/network/gossip/topic.d.ts +13 -0
- package/lib/network/gossip/topic.d.ts.map +1 -1
- package/lib/network/gossip/topic.js +37 -0
- package/lib/network/gossip/topic.js.map +1 -1
- package/lib/network/network.d.ts.map +1 -1
- package/lib/network/network.js +22 -43
- package/lib/network/network.js.map +1 -1
- package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
- package/lib/network/processor/gossipHandlers.js +5 -1
- package/lib/network/processor/gossipHandlers.js.map +1 -1
- package/lib/network/util.d.ts +0 -1
- package/lib/network/util.d.ts.map +1 -1
- package/lib/network/util.js +0 -4
- package/lib/network/util.js.map +1 -1
- package/lib/node/deferredVoluntaryExitPublisher.d.ts +15 -0
- package/lib/node/deferredVoluntaryExitPublisher.d.ts.map +1 -0
- package/lib/node/deferredVoluntaryExitPublisher.js +38 -0
- package/lib/node/deferredVoluntaryExitPublisher.js.map +1 -0
- package/lib/node/nodejs.d.ts.map +1 -1
- package/lib/node/nodejs.js +2 -0
- package/lib/node/nodejs.js.map +1 -1
- package/lib/sync/range/batch.d.ts +23 -5
- package/lib/sync/range/batch.d.ts.map +1 -1
- package/lib/sync/range/batch.js +61 -22
- package/lib/sync/range/batch.js.map +1 -1
- package/lib/sync/range/chain.d.ts +2 -1
- package/lib/sync/range/chain.d.ts.map +1 -1
- package/lib/sync/range/chain.js +23 -10
- package/lib/sync/range/chain.js.map +1 -1
- package/lib/sync/types.d.ts +32 -0
- package/lib/sync/types.d.ts.map +1 -1
- package/lib/sync/types.js +33 -0
- package/lib/sync/types.js.map +1 -1
- package/lib/sync/unknownBlock.d.ts.map +1 -1
- package/lib/sync/unknownBlock.js +95 -51
- package/lib/sync/unknownBlock.js.map +1 -1
- package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
- package/lib/sync/utils/downloadByRange.js +16 -11
- package/lib/sync/utils/downloadByRange.js.map +1 -1
- package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
- package/lib/sync/utils/downloadByRoot.js +3 -1
- package/lib/sync/utils/downloadByRoot.js.map +1 -1
- package/package.json +34 -34
- package/src/api/impl/beacon/blocks/index.ts +3 -2
- package/src/api/impl/beacon/pool/index.ts +22 -2
- package/src/api/impl/events/index.ts +3 -1
- package/src/api/rest/base.ts +7 -0
- package/src/chain/blocks/importExecutionPayload.ts +12 -10
- package/src/chain/blocks/index.ts +18 -6
- package/src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts +8 -2
- package/src/chain/blocks/payloadEnvelopeInput/types.ts +17 -4
- package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +25 -16
- package/src/chain/chain.ts +10 -1
- package/src/chain/errors/blockError.ts +8 -2
- package/src/chain/interface.ts +2 -0
- package/src/chain/opPools/deferredVoluntaryExitPool.ts +65 -0
- package/src/chain/opPools/index.ts +1 -0
- package/src/chain/regen/interface.ts +2 -0
- package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +143 -14
- package/src/chain/validation/voluntaryExit.ts +59 -2
- package/src/metrics/metrics/lodestar.ts +27 -6
- package/src/network/gossip/topic.ts +38 -0
- package/src/network/network.ts +27 -55
- package/src/network/processor/gossipHandlers.ts +5 -1
- package/src/network/util.ts +0 -5
- package/src/node/deferredVoluntaryExitPublisher.ts +54 -0
- package/src/node/nodejs.ts +3 -0
- package/src/sync/range/batch.ts +83 -28
- package/src/sync/range/chain.ts +26 -11
- package/src/sync/types.ts +33 -0
- package/src/sync/unknownBlock.ts +105 -55
- package/src/sync/utils/downloadByRange.ts +21 -12
- package/src/sync/utils/downloadByRoot.ts +3 -1
|
@@ -2,11 +2,14 @@ import { ChainForkConfig } from "@lodestar/config";
|
|
|
2
2
|
import { IForkChoice, ProtoBlock } from "@lodestar/fork-choice";
|
|
3
3
|
import { RootHex } from "@lodestar/types";
|
|
4
4
|
import { Logger } from "@lodestar/utils";
|
|
5
|
+
import { IBeaconDb } from "../../db/index.js";
|
|
5
6
|
import { Metrics } from "../../metrics/metrics.js";
|
|
6
7
|
import { IClock } from "../../util/clock.js";
|
|
8
|
+
import { CustodyConfig } from "../../util/dataColumns.js";
|
|
7
9
|
import { SerializedCache } from "../../util/serializedCache.js";
|
|
8
10
|
import { CreateFromBidProps, CreateFromBlockProps, PayloadEnvelopeInput } from "../blocks/payloadEnvelopeInput/index.js";
|
|
9
11
|
import { ChainEventEmitter } from "../emitter.js";
|
|
12
|
+
import { SeenBlockInput } from "./seenGossipBlockInput.js";
|
|
10
13
|
export type { PayloadEnvelopeInputState } from "../blocks/payloadEnvelopeInput/index.js";
|
|
11
14
|
export { PayloadEnvelopeInput } from "../blocks/payloadEnvelopeInput/index.js";
|
|
12
15
|
export type SeenPayloadEnvelopeInputModules = {
|
|
@@ -16,6 +19,9 @@ export type SeenPayloadEnvelopeInputModules = {
|
|
|
16
19
|
chainEvents: ChainEventEmitter;
|
|
17
20
|
signal: AbortSignal;
|
|
18
21
|
serializedCache: SerializedCache;
|
|
22
|
+
db: IBeaconDb;
|
|
23
|
+
seenBlockInputCache: SeenBlockInput;
|
|
24
|
+
custodyConfig: CustodyConfig;
|
|
19
25
|
metrics: Metrics | null;
|
|
20
26
|
logger?: Logger;
|
|
21
27
|
};
|
|
@@ -35,10 +41,14 @@ export declare class SeenPayloadEnvelopeInput {
|
|
|
35
41
|
private readonly chainEvents;
|
|
36
42
|
private readonly signal;
|
|
37
43
|
private readonly serializedCache;
|
|
44
|
+
private readonly db;
|
|
45
|
+
private readonly seenBlockInputCache;
|
|
46
|
+
private readonly custodyConfig;
|
|
38
47
|
private readonly metrics;
|
|
39
48
|
private readonly logger?;
|
|
40
49
|
private payloadInputs;
|
|
41
|
-
|
|
50
|
+
private readonly reloading;
|
|
51
|
+
constructor({ config, clock, forkChoice, chainEvents, signal, serializedCache, db, seenBlockInputCache, custodyConfig, metrics, logger, }: SeenPayloadEnvelopeInputModules);
|
|
42
52
|
private pruneFinalized;
|
|
43
53
|
add(props: Omit<CreateFromBlockProps, "daOutOfRange">): PayloadEnvelopeInput;
|
|
44
54
|
/**
|
|
@@ -47,10 +57,27 @@ export declare class SeenPayloadEnvelopeInput {
|
|
|
47
57
|
*/
|
|
48
58
|
addFromBid(props: Omit<CreateFromBidProps, "daOutOfRange">): PayloadEnvelopeInput;
|
|
49
59
|
get(blockRootHex: RootHex): PayloadEnvelopeInput | undefined;
|
|
60
|
+
/**
|
|
61
|
+
* Like `get()`, but on a cache miss reconstruct the shell (bid + versionedHashes) from the block
|
|
62
|
+
* in `seenBlockInputCache` or the hot DB.
|
|
63
|
+
* This api is meant for BlockInputSync when a late/weird payloads for old blocks
|
|
64
|
+
*
|
|
65
|
+
* NOTE: the reconstructed entry is always EMPTY even when the block is actually FULL (its
|
|
66
|
+
* payload envelope + columns persisted in the DB). The consumer should consult fork choice if it needs to.
|
|
67
|
+
*/
|
|
68
|
+
getOrReload(blockRootHex: RootHex): Promise<PayloadEnvelopeInput | undefined>;
|
|
69
|
+
private reloadFromDb;
|
|
50
70
|
hasPayload(blockRootHex: RootHex): boolean;
|
|
51
71
|
size(): number;
|
|
52
72
|
prune(blockRootHex: RootHex): void;
|
|
53
73
|
pruneBelowParent(parentBlock: ProtoBlock): void;
|
|
74
|
+
/**
|
|
75
|
+
* Bound this cache to have at most MAX_PAYLOAD_ENVELOPE_INPUT_CACHE_SIZE items.
|
|
76
|
+
* Evicts by insertion order so a just-reloaded old-slot entry is not evicted right after.
|
|
77
|
+
* On unstable network, we may need to query an evicted item, UnknownBlockInput will recover
|
|
78
|
+
* it from db via getOrReload() api. Runs after every single insert, so it evicts ~1 per call.
|
|
79
|
+
*/
|
|
80
|
+
private pruneToMaxSize;
|
|
54
81
|
private evictPayloadInput;
|
|
55
82
|
}
|
|
56
83
|
//# sourceMappingURL=seenPayloadEnvelopeInput.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seenPayloadEnvelopeInput.d.ts","sourceRoot":"","sources":["../../../src/chain/seenCache/seenPayloadEnvelopeInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAoB,WAAW,EAAiB,UAAU,EAAC,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"seenPayloadEnvelopeInput.d.ts","sourceRoot":"","sources":["../../../src/chain/seenCache/seenPayloadEnvelopeInput.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { PayloadStatus } from "@lodestar/fork-choice";
|
|
2
|
+
import { SLOTS_PER_EPOCH, isForkPostGloas } from "@lodestar/params";
|
|
2
3
|
import { computeStartSlotAtEpoch } from "@lodestar/state-transition";
|
|
4
|
+
import { fromHex } from "@lodestar/utils";
|
|
5
|
+
import { MAX_LOOK_AHEAD_EPOCHS } from "../../sync/constants.js";
|
|
3
6
|
import { isDaOutOfRange } from "../blocks/blockInput/index.js";
|
|
4
|
-
import { PayloadEnvelopeInput } from "../blocks/payloadEnvelopeInput/index.js";
|
|
7
|
+
import { PayloadEnvelopeInput, PayloadEnvelopeInputSource, } from "../blocks/payloadEnvelopeInput/index.js";
|
|
5
8
|
import { ChainEvent } from "../emitter.js";
|
|
6
9
|
export { PayloadEnvelopeInput } from "../blocks/payloadEnvelopeInput/index.js";
|
|
10
|
+
// Bound this cache by this max size, this is the same to SeenBlockInput
|
|
11
|
+
const MAX_PAYLOAD_ENVELOPE_INPUT_CACHE_SIZE = (MAX_LOOK_AHEAD_EPOCHS + 1) * SLOTS_PER_EPOCH;
|
|
7
12
|
/**
|
|
8
13
|
* Cache for tracking PayloadEnvelopeInput instances, keyed by beacon block root.
|
|
9
14
|
*
|
|
@@ -20,16 +25,24 @@ export class SeenPayloadEnvelopeInput {
|
|
|
20
25
|
chainEvents;
|
|
21
26
|
signal;
|
|
22
27
|
serializedCache;
|
|
28
|
+
db;
|
|
29
|
+
seenBlockInputCache;
|
|
30
|
+
custodyConfig;
|
|
23
31
|
metrics;
|
|
24
32
|
logger;
|
|
25
33
|
payloadInputs = new Map();
|
|
26
|
-
|
|
34
|
+
// Dedup concurrent DB reloads of the same root so callers share one reconstructed object.
|
|
35
|
+
reloading = new Map();
|
|
36
|
+
constructor({ config, clock, forkChoice, chainEvents, signal, serializedCache, db, seenBlockInputCache, custodyConfig, metrics, logger, }) {
|
|
27
37
|
this.config = config;
|
|
28
38
|
this.clock = clock;
|
|
29
39
|
this.forkChoice = forkChoice;
|
|
30
40
|
this.chainEvents = chainEvents;
|
|
31
41
|
this.signal = signal;
|
|
32
42
|
this.serializedCache = serializedCache;
|
|
43
|
+
this.db = db;
|
|
44
|
+
this.seenBlockInputCache = seenBlockInputCache;
|
|
45
|
+
this.custodyConfig = custodyConfig;
|
|
33
46
|
this.metrics = metrics;
|
|
34
47
|
this.logger = logger;
|
|
35
48
|
if (metrics) {
|
|
@@ -48,7 +61,7 @@ export class SeenPayloadEnvelopeInput {
|
|
|
48
61
|
let deletedCount = 0;
|
|
49
62
|
for (const [, input] of this.payloadInputs) {
|
|
50
63
|
if (input.slot < finalizedSlot) {
|
|
51
|
-
this.evictPayloadInput(input);
|
|
64
|
+
this.evictPayloadInput(input, "finalized");
|
|
52
65
|
deletedCount++;
|
|
53
66
|
}
|
|
54
67
|
}
|
|
@@ -70,12 +83,13 @@ export class SeenPayloadEnvelopeInput {
|
|
|
70
83
|
const daOutOfRange = isDaOutOfRange(this.config, props.forkName, props.block.message.slot, this.clock.currentEpoch);
|
|
71
84
|
const input = PayloadEnvelopeInput.createFromBlock({ ...props, daOutOfRange });
|
|
72
85
|
this.payloadInputs.set(props.blockRootHex, input);
|
|
73
|
-
this.metrics?.seenCache.payloadEnvelopeInput.created.inc();
|
|
86
|
+
this.metrics?.seenCache.payloadEnvelopeInput.created.inc({ source: props.source });
|
|
74
87
|
this.logger?.verbose("SeenPayloadEnvelopeInput.add created new entry", {
|
|
75
88
|
slot: input.slot,
|
|
76
89
|
root: props.blockRootHex,
|
|
77
90
|
daOutOfRange,
|
|
78
91
|
});
|
|
92
|
+
this.pruneToMaxSize();
|
|
79
93
|
return input;
|
|
80
94
|
}
|
|
81
95
|
/**
|
|
@@ -90,17 +104,87 @@ export class SeenPayloadEnvelopeInput {
|
|
|
90
104
|
const daOutOfRange = isDaOutOfRange(this.config, props.forkName, props.slot, this.clock.currentEpoch);
|
|
91
105
|
const input = PayloadEnvelopeInput.createFromBid({ ...props, daOutOfRange });
|
|
92
106
|
this.payloadInputs.set(props.blockRootHex, input);
|
|
93
|
-
this.metrics?.seenCache.payloadEnvelopeInput.created.inc();
|
|
107
|
+
this.metrics?.seenCache.payloadEnvelopeInput.created.inc({ source: props.source });
|
|
94
108
|
this.logger?.verbose("SeenPayloadEnvelopeInput.addFromBid created new entry", {
|
|
95
109
|
slot: input.slot,
|
|
96
110
|
root: props.blockRootHex,
|
|
97
111
|
daOutOfRange,
|
|
98
112
|
});
|
|
113
|
+
this.pruneToMaxSize();
|
|
99
114
|
return input;
|
|
100
115
|
}
|
|
101
116
|
get(blockRootHex) {
|
|
102
117
|
return this.payloadInputs.get(blockRootHex);
|
|
103
118
|
}
|
|
119
|
+
/**
|
|
120
|
+
* Like `get()`, but on a cache miss reconstruct the shell (bid + versionedHashes) from the block
|
|
121
|
+
* in `seenBlockInputCache` or the hot DB.
|
|
122
|
+
* This api is meant for BlockInputSync when a late/weird payloads for old blocks
|
|
123
|
+
*
|
|
124
|
+
* NOTE: the reconstructed entry is always EMPTY even when the block is actually FULL (its
|
|
125
|
+
* payload envelope + columns persisted in the DB). The consumer should consult fork choice if it needs to.
|
|
126
|
+
*/
|
|
127
|
+
async getOrReload(blockRootHex) {
|
|
128
|
+
const existing = this.payloadInputs.get(blockRootHex);
|
|
129
|
+
if (existing !== undefined) {
|
|
130
|
+
return existing;
|
|
131
|
+
}
|
|
132
|
+
// Without this dedup, two concurrent misses each db.block.get + createFromBlock a DIFFERENT shell
|
|
133
|
+
// for the same root; processPayloadEnvelopeJob's WeakMap (keyed by object) can't dedup the import.
|
|
134
|
+
const inflight = this.reloading.get(blockRootHex);
|
|
135
|
+
if (inflight !== undefined) {
|
|
136
|
+
return inflight;
|
|
137
|
+
}
|
|
138
|
+
const promise = this.reloadFromDb(blockRootHex);
|
|
139
|
+
this.reloading.set(blockRootHex, promise);
|
|
140
|
+
try {
|
|
141
|
+
return await promise;
|
|
142
|
+
}
|
|
143
|
+
finally {
|
|
144
|
+
this.reloading.delete(blockRootHex);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
async reloadFromDb(blockRootHex) {
|
|
148
|
+
// Only recover unfinalized, fork-choice-known blocks. Do not read the finalized archive. The gate
|
|
149
|
+
// also filters out un-imported blocks that may sit in seenBlockInputCache before validation.
|
|
150
|
+
if (!this.forkChoice.hasBlockHex(blockRootHex)) {
|
|
151
|
+
return undefined;
|
|
152
|
+
}
|
|
153
|
+
// In-memory first: persistBlockInput writes db.block THEN prunes seenBlockInputCache, so a
|
|
154
|
+
// just-imported block whose async write (unfinalizedBlockWrites) has not flushed yet is still here;
|
|
155
|
+
// older blocks (already pruned from the cache) fall through to the hot db.
|
|
156
|
+
const cachedBlockInput = this.seenBlockInputCache.get(blockRootHex);
|
|
157
|
+
const block = cachedBlockInput?.hasBlock()
|
|
158
|
+
? cachedBlockInput.getBlock()
|
|
159
|
+
: await this.db.block.get(fromHex(blockRootHex));
|
|
160
|
+
if (block == null) {
|
|
161
|
+
return undefined;
|
|
162
|
+
}
|
|
163
|
+
const forkName = this.config.getForkName(block.message.slot);
|
|
164
|
+
if (!isForkPostGloas(forkName)) {
|
|
165
|
+
return undefined;
|
|
166
|
+
}
|
|
167
|
+
const daOutOfRange = isDaOutOfRange(this.config, forkName, block.message.slot, this.clock.currentEpoch);
|
|
168
|
+
const input = PayloadEnvelopeInput.createFromBlock({
|
|
169
|
+
blockRootHex,
|
|
170
|
+
block: block,
|
|
171
|
+
forkName,
|
|
172
|
+
sampledColumns: this.custodyConfig.sampledColumns,
|
|
173
|
+
custodyColumns: this.custodyConfig.custodyColumns,
|
|
174
|
+
seenTimestampSec: Date.now() / 1000,
|
|
175
|
+
source: PayloadEnvelopeInputSource.reload,
|
|
176
|
+
daOutOfRange,
|
|
177
|
+
});
|
|
178
|
+
this.payloadInputs.set(blockRootHex, input);
|
|
179
|
+
this.metrics?.seenCache.payloadEnvelopeInput.created.inc({ source: PayloadEnvelopeInputSource.reload });
|
|
180
|
+
this.logger?.verbose("SeenPayloadEnvelopeInput.getOrReload reconstructed entry from db", {
|
|
181
|
+
slot: input.slot,
|
|
182
|
+
root: blockRootHex,
|
|
183
|
+
});
|
|
184
|
+
// Set above (entry is at the back of the insertion order), so the cap never evicts what we just reloaded.
|
|
185
|
+
this.pruneToMaxSize();
|
|
186
|
+
return input;
|
|
187
|
+
}
|
|
104
188
|
hasPayload(blockRootHex) {
|
|
105
189
|
return this.payloadInputs.get(blockRootHex)?.hasPayloadEnvelope() ?? false;
|
|
106
190
|
}
|
|
@@ -110,8 +194,7 @@ export class SeenPayloadEnvelopeInput {
|
|
|
110
194
|
prune(blockRootHex) {
|
|
111
195
|
const input = this.payloadInputs.get(blockRootHex);
|
|
112
196
|
if (input) {
|
|
113
|
-
this.evictPayloadInput(input);
|
|
114
|
-
this.logger?.verbose("SeenPayloadEnvelopeInput.prune deleted", { slot: input.slot, root: blockRootHex });
|
|
197
|
+
this.evictPayloadInput(input, "prune");
|
|
115
198
|
}
|
|
116
199
|
}
|
|
117
200
|
pruneBelowParent(parentBlock) {
|
|
@@ -124,16 +207,41 @@ export class SeenPayloadEnvelopeInput {
|
|
|
124
207
|
// ...and don't evict while columns are still being gathered: writeDataColumnsToDb awaits the
|
|
125
208
|
// same hasComputedAllData() before persisting. Such entries are pruned by a later call.
|
|
126
209
|
if (input?.hasComputedAllData()) {
|
|
127
|
-
this.evictPayloadInput(input);
|
|
128
|
-
this.logger?.verbose("SeenPayloadEnvelopeInput.pruneBelowParent deleted", {
|
|
129
|
-
slot: block.slot,
|
|
130
|
-
root: block.blockRoot,
|
|
131
|
-
});
|
|
210
|
+
this.evictPayloadInput(input, "belowParent");
|
|
132
211
|
}
|
|
133
212
|
}
|
|
134
213
|
}
|
|
135
214
|
}
|
|
136
|
-
|
|
215
|
+
/**
|
|
216
|
+
* Bound this cache to have at most MAX_PAYLOAD_ENVELOPE_INPUT_CACHE_SIZE items.
|
|
217
|
+
* Evicts by insertion order so a just-reloaded old-slot entry is not evicted right after.
|
|
218
|
+
* On unstable network, we may need to query an evicted item, UnknownBlockInput will recover
|
|
219
|
+
* it from db via getOrReload() api. Runs after every single insert, so it evicts ~1 per call.
|
|
220
|
+
*/
|
|
221
|
+
pruneToMaxSize() {
|
|
222
|
+
let evicted = 0;
|
|
223
|
+
for (const input of this.payloadInputs.values()) {
|
|
224
|
+
if (this.payloadInputs.size <= MAX_PAYLOAD_ENVELOPE_INPUT_CACHE_SIZE) {
|
|
225
|
+
break;
|
|
226
|
+
}
|
|
227
|
+
this.evictPayloadInput(input, "cap");
|
|
228
|
+
evicted++;
|
|
229
|
+
}
|
|
230
|
+
if (evicted > 0) {
|
|
231
|
+
this.logger?.debug("SeenPayloadEnvelopeInput.pruneToMaxSize evicted", {
|
|
232
|
+
evicted,
|
|
233
|
+
size: this.payloadInputs.size,
|
|
234
|
+
max: MAX_PAYLOAD_ENVELOPE_INPUT_CACHE_SIZE,
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
evictPayloadInput(payloadInput, reason) {
|
|
239
|
+
this.metrics?.seenCache.payloadEnvelopeInput.pruned.inc({ reason });
|
|
240
|
+
this.logger?.debug("SeenPayloadEnvelopeInput evicted", {
|
|
241
|
+
slot: payloadInput.slot,
|
|
242
|
+
root: payloadInput.blockRootHex,
|
|
243
|
+
reason,
|
|
244
|
+
});
|
|
137
245
|
this.serializedCache.delete(payloadInput.getSerializedCacheKeys());
|
|
138
246
|
this.payloadInputs.delete(payloadInput.blockRootHex);
|
|
139
247
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seenPayloadEnvelopeInput.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenPayloadEnvelopeInput.ts"],"names":[],"mappings":"AACA,OAAO,EAAiC,aAAa,EAAa,MAAM,uBAAuB,CAAC;AAChG,OAAO,EAAC,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"seenPayloadEnvelopeInput.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenPayloadEnvelopeInput.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
|
+
import { VoluntaryExitValidity } from "@lodestar/state-transition";
|
|
1
2
|
import { phase0 } from "@lodestar/types";
|
|
2
3
|
import { IBeaconChain } from "../index.js";
|
|
3
|
-
export
|
|
4
|
+
export type ApiVoluntaryExitResult = {
|
|
5
|
+
status: "published";
|
|
6
|
+
} | {
|
|
7
|
+
status: "deferred";
|
|
8
|
+
validity: VoluntaryExitValidity;
|
|
9
|
+
};
|
|
10
|
+
export declare function isTransientExitValidity(v: VoluntaryExitValidity): boolean;
|
|
11
|
+
export declare function validateApiVoluntaryExit(chain: IBeaconChain, voluntaryExit: phase0.SignedVoluntaryExit): Promise<ApiVoluntaryExitResult>;
|
|
4
12
|
export declare function validateGossipVoluntaryExit(chain: IBeaconChain, voluntaryExit: phase0.SignedVoluntaryExit): Promise<void>;
|
|
5
13
|
//# sourceMappingURL=voluntaryExit.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voluntaryExit.d.ts","sourceRoot":"","sources":["../../../src/chain/validation/voluntaryExit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"voluntaryExit.d.ts","sourceRoot":"","sources":["../../../src/chain/validation/voluntaryExit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,qBAAqB,EAA+B,MAAM,4BAA4B,CAAC;AAC/F,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAOvC,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAGzC,MAAM,MAAM,sBAAsB,GAAG;IAAC,MAAM,EAAE,WAAW,CAAA;CAAC,GAAG;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,qBAAqB,CAAA;CAAC,CAAC;AAWnH,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAYzE;AAGD,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,YAAY,EACnB,aAAa,EAAE,MAAM,CAAC,mBAAmB,GACxC,OAAO,CAAC,sBAAsB,CAAC,CAkCjC;AAED,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,YAAY,EACnB,aAAa,EAAE,MAAM,CAAC,mBAAmB,GACxC,OAAO,CAAC,IAAI,CAAC,CAEf"}
|
|
@@ -1,9 +1,54 @@
|
|
|
1
1
|
import { VoluntaryExitValidity, getVoluntaryExitSignatureSet } from "@lodestar/state-transition";
|
|
2
2
|
import { GossipAction, VoluntaryExitError, VoluntaryExitErrorCode, voluntaryExitValidityToErrorCode, } from "../errors/index.js";
|
|
3
3
|
import { RegenCaller } from "../regen/index.js";
|
|
4
|
+
// Variants that can become valid in a future epoch without user action.
|
|
5
|
+
// - earlyEpoch: exit.message.epoch is in the future; valid once current epoch catches up
|
|
6
|
+
// - shortTimeActive: validator active < SHARD_COMMITTEE_PERIOD; valid once enough time passes
|
|
7
|
+
// - pendingWithdrawals: Electra; valid once pending partial withdrawals drain
|
|
8
|
+
// Note: VoluntaryExitValidity.inactive is intentionally excluded. It conflates
|
|
9
|
+
// "validator does not exist" (permanent) with "validator not yet activated"
|
|
10
|
+
// (transient), and cleanly classifying it requires splitting the enum variant
|
|
11
|
+
// upstream. Left for a future follow-up.
|
|
12
|
+
export function isTransientExitValidity(v) {
|
|
13
|
+
switch (v) {
|
|
14
|
+
case VoluntaryExitValidity.earlyEpoch:
|
|
15
|
+
case VoluntaryExitValidity.shortTimeActive:
|
|
16
|
+
case VoluntaryExitValidity.pendingWithdrawals:
|
|
17
|
+
return true;
|
|
18
|
+
case VoluntaryExitValidity.valid:
|
|
19
|
+
case VoluntaryExitValidity.inactive:
|
|
20
|
+
case VoluntaryExitValidity.alreadyExited:
|
|
21
|
+
case VoluntaryExitValidity.invalidSignature:
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
// Comments for each call are present inside `validateVoluntaryExit`.
|
|
4
26
|
export async function validateApiVoluntaryExit(chain, voluntaryExit) {
|
|
5
27
|
const prioritizeBls = true;
|
|
6
|
-
|
|
28
|
+
if (chain.opPool.hasSeenVoluntaryExit(voluntaryExit.message.validatorIndex) ||
|
|
29
|
+
chain.deferredVoluntaryExitPool.has(voluntaryExit.message.validatorIndex)) {
|
|
30
|
+
throw new VoluntaryExitError(GossipAction.IGNORE, {
|
|
31
|
+
code: VoluntaryExitErrorCode.ALREADY_EXISTS,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
const state = await chain.getHeadStateAtCurrentEpoch(RegenCaller.validateApiVoluntaryExit);
|
|
35
|
+
const validity = state.getVoluntaryExitValidity(voluntaryExit, false);
|
|
36
|
+
if (validity !== VoluntaryExitValidity.valid && !isTransientExitValidity(validity)) {
|
|
37
|
+
throw new VoluntaryExitError(GossipAction.REJECT, {
|
|
38
|
+
code: voluntaryExitValidityToErrorCode(validity),
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
const signatureSet = getVoluntaryExitSignatureSet(chain.config, state, voluntaryExit);
|
|
42
|
+
if (!(await chain.bls.verifySignatureSets([signatureSet], { batchable: true, priority: prioritizeBls }))) {
|
|
43
|
+
throw new VoluntaryExitError(GossipAction.REJECT, {
|
|
44
|
+
code: VoluntaryExitErrorCode.INVALID_SIGNATURE,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
if (validity !== VoluntaryExitValidity.valid) {
|
|
48
|
+
// Transient failure — signature is good, defer
|
|
49
|
+
return { status: "deferred", validity };
|
|
50
|
+
}
|
|
51
|
+
return { status: "published" };
|
|
7
52
|
}
|
|
8
53
|
export async function validateGossipVoluntaryExit(chain, voluntaryExit) {
|
|
9
54
|
return validateVoluntaryExit(chain, voluntaryExit);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voluntaryExit.js","sourceRoot":"","sources":["../../../src/chain/validation/voluntaryExit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,qBAAqB,EAAE,4BAA4B,EAAC,MAAM,4BAA4B,CAAC;AAE/F,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,EACtB,gCAAgC,GACjC,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"voluntaryExit.js","sourceRoot":"","sources":["../../../src/chain/validation/voluntaryExit.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { ArchiveStoreTask } from "../../chain/archiveStore/archiveStore.js";
|
|
|
4
4
|
import { FrequencyStateArchiveStep } from "../../chain/archiveStore/strategies/frequencyStateArchiveStrategy.js";
|
|
5
5
|
import { BlockInputSource } from "../../chain/blocks/blockInput/index.js";
|
|
6
6
|
import { PayloadErrorCode } from "../../chain/blocks/importExecutionPayload.js";
|
|
7
|
-
import { PayloadEnvelopeInputSource } from "../../chain/blocks/payloadEnvelopeInput/index.js";
|
|
7
|
+
import { PayloadEnvelopeInputPruneReason, PayloadEnvelopeInputSource } from "../../chain/blocks/payloadEnvelopeInput/index.js";
|
|
8
8
|
import { JobQueueItemType } from "../../chain/bls/index.js";
|
|
9
9
|
import { AttestationErrorCode, BlockErrorCode } from "../../chain/errors/index.js";
|
|
10
10
|
import { type InvalidAttestationData, ScannedSlotsTerminationReason } from "../../chain/opPools/aggregatedAttestationPool.js";
|
|
@@ -18,7 +18,7 @@ import { ExecutionPayloadStatus } from "../../execution/index.js";
|
|
|
18
18
|
import { GossipType } from "../../network/index.js";
|
|
19
19
|
import { CannotAcceptWorkReason, ReprocessRejectReason } from "../../network/processor/index.js";
|
|
20
20
|
import { BackfillSyncMethod } from "../../sync/backfill/backfill.js";
|
|
21
|
-
import { PendingBlockType } from "../../sync/types.js";
|
|
21
|
+
import { DroppedItemReason, PendingBlockType } from "../../sync/types.js";
|
|
22
22
|
import { PeerSyncType, RangeSyncType } from "../../sync/utils/remoteSyncType.js";
|
|
23
23
|
import { AllocSource } from "../../util/bufferPool.js";
|
|
24
24
|
import { DataColumnReconstructionCode } from "../../util/dataColumns.js";
|
|
@@ -268,7 +268,12 @@ export declare function createLodestarMetrics(register: RegistryMetricCreator, m
|
|
|
268
268
|
processedBlocksError: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
269
269
|
downloadedBlocksSuccess: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
270
270
|
downloadedBlocksError: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
271
|
-
removedBlocks: import("@lodestar/utils").GaugeExtra<
|
|
271
|
+
removedBlocks: import("@lodestar/utils").GaugeExtra<{
|
|
272
|
+
reason: DroppedItemReason;
|
|
273
|
+
}>;
|
|
274
|
+
removedPayloads: import("@lodestar/utils").GaugeExtra<{
|
|
275
|
+
reason: DroppedItemReason;
|
|
276
|
+
}>;
|
|
272
277
|
elapsedTimeTillReceived: import("@lodestar/utils").Histogram<import("@lodestar/utils").NoLabels>;
|
|
273
278
|
resolveAvailabilitySource: import("@lodestar/utils").GaugeExtra<{
|
|
274
279
|
source: BlockInputSource;
|
|
@@ -513,6 +518,9 @@ export declare function createLodestarMetrics(register: RegistryMetricCreator, m
|
|
|
513
518
|
getAggregateCacheMisses: import("@lodestar/utils").Counter<import("@lodestar/utils").NoLabels>;
|
|
514
519
|
};
|
|
515
520
|
attesterSlashingPoolSize: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
521
|
+
deferredVoluntaryExitPool: {
|
|
522
|
+
size: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
523
|
+
};
|
|
516
524
|
proposerSlashingPoolSize: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
517
525
|
proposerSlashingsProduced: import("@lodestar/utils").Counter<import("@lodestar/utils").NoLabels>;
|
|
518
526
|
voluntaryExitPoolSize: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
@@ -665,7 +673,12 @@ export declare function createLodestarMetrics(register: RegistryMetricCreator, m
|
|
|
665
673
|
payloadEnvelopeInput: {
|
|
666
674
|
count: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
667
675
|
serializedObjectRefs: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
668
|
-
created: import("@lodestar/utils").Counter<
|
|
676
|
+
created: import("@lodestar/utils").Counter<{
|
|
677
|
+
source: PayloadEnvelopeInputSource;
|
|
678
|
+
}>;
|
|
679
|
+
pruned: import("@lodestar/utils").Counter<{
|
|
680
|
+
reason: PayloadEnvelopeInputPruneReason;
|
|
681
|
+
}>;
|
|
669
682
|
};
|
|
670
683
|
};
|
|
671
684
|
processFinalizedCheckpoint: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lodestar.d.ts","sourceRoot":"","sources":["../../../src/metrics/metrics/lodestar.ts"],"names":[],"mappings":"AAAA,+HAA+H;AAC/H,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,gBAAgB,EAAC,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAC,yBAAyB,EAAC,MAAM,sEAAsE,CAAC;AAC/G,OAAO,EAAC,gBAAgB,EAAC,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAC,gBAAgB,EAAC,MAAM,8CAA8C,CAAC;AAC9E,OAAO,
|
|
1
|
+
{"version":3,"file":"lodestar.d.ts","sourceRoot":"","sources":["../../../src/metrics/metrics/lodestar.ts"],"names":[],"mappings":"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"}
|
|
@@ -615,7 +615,13 @@ export function createLodestarMetrics(register, metadata, genesisTime) {
|
|
|
615
615
|
}),
|
|
616
616
|
removedBlocks: register.gauge({
|
|
617
617
|
name: "lodestar_sync_unknown_block_removed_blocks_total",
|
|
618
|
-
help: "Total
|
|
618
|
+
help: "Total pending blocks dropped from BlockInputSync without completing, by reason",
|
|
619
|
+
labelNames: ["reason"],
|
|
620
|
+
}),
|
|
621
|
+
removedPayloads: register.gauge({
|
|
622
|
+
name: "lodestar_sync_unknown_block_removed_payloads_total",
|
|
623
|
+
help: "Total pending payloads dropped from BlockInputSync without completing, by reason",
|
|
624
|
+
labelNames: ["reason"],
|
|
619
625
|
}),
|
|
620
626
|
elapsedTimeTillReceived: register.histogram({
|
|
621
627
|
name: "lodestar_sync_unknown_block_elapsed_time_till_received",
|
|
@@ -1153,6 +1159,12 @@ export function createLodestarMetrics(register, metadata, genesisTime) {
|
|
|
1153
1159
|
name: "lodestar_oppool_attester_slashing_pool_size",
|
|
1154
1160
|
help: "Current size of the AttesterSlashingPool",
|
|
1155
1161
|
}),
|
|
1162
|
+
deferredVoluntaryExitPool: {
|
|
1163
|
+
size: register.gauge({
|
|
1164
|
+
name: "lodestar_oppool_deferred_voluntary_exit_pool_size",
|
|
1165
|
+
help: "Current size of the DeferredVoluntaryExitPool",
|
|
1166
|
+
}),
|
|
1167
|
+
},
|
|
1156
1168
|
proposerSlashingPoolSize: register.gauge({
|
|
1157
1169
|
name: "lodestar_oppool_proposer_slashing_pool_size",
|
|
1158
1170
|
help: "Current size of the ProposerSlashingPool",
|
|
@@ -1564,7 +1576,13 @@ export function createLodestarMetrics(register, metadata, genesisTime) {
|
|
|
1564
1576
|
}),
|
|
1565
1577
|
created: register.counter({
|
|
1566
1578
|
name: "lodestar_seen_payload_envelope_input_cache_items_created_total",
|
|
1567
|
-
help: "Number of PayloadEnvelopeInputs created",
|
|
1579
|
+
help: "Number of PayloadEnvelopeInputs created by source",
|
|
1580
|
+
labelNames: ["source"],
|
|
1581
|
+
}),
|
|
1582
|
+
pruned: register.counter({
|
|
1583
|
+
name: "lodestar_seen_payload_envelope_input_cache_items_pruned_total",
|
|
1584
|
+
help: "Number of PayloadEnvelopeInputs evicted by reason",
|
|
1585
|
+
labelNames: ["reason"],
|
|
1568
1586
|
}),
|
|
1569
1587
|
},
|
|
1570
1588
|
},
|