@lodestar/fork-choice 1.41.0-dev.f2caa915ab → 1.41.0-dev.f7a5f4ddda
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/forkChoice/errors.d.ts +9 -1
- package/lib/forkChoice/errors.d.ts.map +1 -1
- package/lib/forkChoice/errors.js +10 -3
- package/lib/forkChoice/errors.js.map +1 -1
- package/lib/forkChoice/forkChoice.d.ts +75 -19
- package/lib/forkChoice/forkChoice.d.ts.map +1 -1
- package/lib/forkChoice/forkChoice.js +301 -117
- package/lib/forkChoice/forkChoice.js.map +1 -1
- package/lib/forkChoice/interface.d.ts +54 -21
- package/lib/forkChoice/interface.d.ts.map +1 -1
- package/lib/forkChoice/interface.js +6 -3
- package/lib/forkChoice/interface.js.map +1 -1
- package/lib/forkChoice/safeBlocks.js.map +1 -1
- package/lib/forkChoice/store.d.ts +40 -16
- package/lib/forkChoice/store.d.ts.map +1 -1
- package/lib/forkChoice/store.js +22 -4
- package/lib/forkChoice/store.js.map +1 -1
- package/lib/index.d.ts +4 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/metrics.d.ts.map +1 -1
- package/lib/metrics.js.map +1 -1
- package/lib/protoArray/computeDeltas.d.ts.map +1 -1
- package/lib/protoArray/computeDeltas.js +3 -0
- package/lib/protoArray/computeDeltas.js.map +1 -1
- package/lib/protoArray/errors.d.ts +15 -2
- package/lib/protoArray/errors.d.ts.map +1 -1
- package/lib/protoArray/errors.js +7 -2
- package/lib/protoArray/errors.js.map +1 -1
- package/lib/protoArray/interface.d.ts +20 -2
- package/lib/protoArray/interface.d.ts.map +1 -1
- package/lib/protoArray/interface.js +19 -1
- package/lib/protoArray/interface.js.map +1 -1
- package/lib/protoArray/protoArray.d.ts +219 -24
- package/lib/protoArray/protoArray.d.ts.map +1 -1
- package/lib/protoArray/protoArray.js +748 -133
- package/lib/protoArray/protoArray.js.map +1 -1
- package/package.json +9 -9
- package/src/forkChoice/errors.ts +7 -2
- package/src/forkChoice/forkChoice.ts +384 -126
- package/src/forkChoice/interface.ts +72 -20
- package/src/forkChoice/store.ts +52 -20
- package/src/index.ts +10 -2
- package/src/protoArray/computeDeltas.ts +6 -0
- package/src/protoArray/errors.ts +7 -1
- package/src/protoArray/interface.ts +36 -3
- package/src/protoArray/protoArray.ts +880 -134
|
@@ -9,6 +9,7 @@ export declare enum InvalidBlockCode {
|
|
|
9
9
|
export type InvalidBlock = {
|
|
10
10
|
code: InvalidBlockCode.UNKNOWN_PARENT;
|
|
11
11
|
root: RootHex;
|
|
12
|
+
hash: RootHex | null;
|
|
12
13
|
} | {
|
|
13
14
|
code: InvalidBlockCode.FUTURE_SLOT;
|
|
14
15
|
currentSlot: Slot;
|
|
@@ -60,7 +61,11 @@ export declare enum InvalidAttestationCode {
|
|
|
60
61
|
* Attestations can only affect the fork choice of subsequent slots.
|
|
61
62
|
* Delay consideration in the fork choice until their slot is in the past.
|
|
62
63
|
*/
|
|
63
|
-
FUTURE_SLOT = "FUTURE_SLOT"
|
|
64
|
+
FUTURE_SLOT = "FUTURE_SLOT",
|
|
65
|
+
/**
|
|
66
|
+
* The attestation data index is invalid for a Gloas block (must be 0 or 1).
|
|
67
|
+
*/
|
|
68
|
+
INVALID_DATA_INDEX = "INVALID_DATA_INDEX"
|
|
64
69
|
}
|
|
65
70
|
export type InvalidAttestation = {
|
|
66
71
|
code: InvalidAttestationCode.EMPTY_AGGREGATION_BITFIELD;
|
|
@@ -94,6 +99,9 @@ export type InvalidAttestation = {
|
|
|
94
99
|
code: InvalidAttestationCode.FUTURE_SLOT;
|
|
95
100
|
attestationSlot: Slot;
|
|
96
101
|
latestPermissibleSlot: Slot;
|
|
102
|
+
} | {
|
|
103
|
+
code: InvalidAttestationCode.INVALID_DATA_INDEX;
|
|
104
|
+
index: number;
|
|
97
105
|
};
|
|
98
106
|
export declare enum ForkChoiceErrorCode {
|
|
99
107
|
INVALID_ATTESTATION = "FORKCHOICE_ERROR_INVALID_ATTESTATION",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/forkChoice/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAE9C,oBAAY,gBAAgB;IAC1B,cAAc,mBAAmB;IACjC,WAAW,gBAAgB;IAC3B,cAAc,mBAAmB;IACjC,wBAAwB,6BAA6B;CACtD;AAED,MAAM,MAAM,YAAY,GACpB;IAAC,IAAI,EAAE,gBAAgB,CAAC,cAAc,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAC,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/forkChoice/errors.ts"],"names":[],"mappings":"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"}
|
package/lib/forkChoice/errors.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { LodestarError } from "@lodestar/utils";
|
|
2
|
-
export
|
|
2
|
+
export { InvalidBlockCode };
|
|
3
|
+
var InvalidBlockCode;
|
|
3
4
|
(function (InvalidBlockCode) {
|
|
4
5
|
InvalidBlockCode["UNKNOWN_PARENT"] = "UNKNOWN_PARENT";
|
|
5
6
|
InvalidBlockCode["FUTURE_SLOT"] = "FUTURE_SLOT";
|
|
6
7
|
InvalidBlockCode["FINALIZED_SLOT"] = "FINALIZED_SLOT";
|
|
7
8
|
InvalidBlockCode["NOT_FINALIZED_DESCENDANT"] = "NOT_FINALIZED_DESCENDANT";
|
|
8
9
|
})(InvalidBlockCode || (InvalidBlockCode = {}));
|
|
9
|
-
export
|
|
10
|
+
export { InvalidAttestationCode };
|
|
11
|
+
var InvalidAttestationCode;
|
|
10
12
|
(function (InvalidAttestationCode) {
|
|
11
13
|
/**
|
|
12
14
|
* The attestations aggregation bits were empty when they shouldn't be.
|
|
@@ -46,8 +48,13 @@ export var InvalidAttestationCode;
|
|
|
46
48
|
* Delay consideration in the fork choice until their slot is in the past.
|
|
47
49
|
*/
|
|
48
50
|
InvalidAttestationCode["FUTURE_SLOT"] = "FUTURE_SLOT";
|
|
51
|
+
/**
|
|
52
|
+
* The attestation data index is invalid for a Gloas block (must be 0 or 1).
|
|
53
|
+
*/
|
|
54
|
+
InvalidAttestationCode["INVALID_DATA_INDEX"] = "INVALID_DATA_INDEX";
|
|
49
55
|
})(InvalidAttestationCode || (InvalidAttestationCode = {}));
|
|
50
|
-
export
|
|
56
|
+
export { ForkChoiceErrorCode };
|
|
57
|
+
var ForkChoiceErrorCode;
|
|
51
58
|
(function (ForkChoiceErrorCode) {
|
|
52
59
|
ForkChoiceErrorCode["INVALID_ATTESTATION"] = "FORKCHOICE_ERROR_INVALID_ATTESTATION";
|
|
53
60
|
ForkChoiceErrorCode["INVALID_BLOCK"] = "FORKCHOICE_ERROR_INVALID_BLOCK";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/forkChoice/errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/forkChoice/errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;SAElC,gBAAgB;AAA5B,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC1B,qDAAiC,CAAA;IACjC,+CAA2B,CAAA;IAC3B,qDAAiC,CAAA;IACjC,yEAAqD,CAAA;AAAC,CACxD,EALY,gBAAgB,KAAhB,gBAAgB,QAK3B;SAQW,sBAAsB;AAAlC,IAAY,sBA2CX;AA3CD,WAAY,sBAAsB;IAChC;;OAEG;IACH,mFAAyD,CAAA;IACzD;;OAEG;IACH,mEAAyC,CAAA;IACzC;;;OAGG;IACH,+DAAqC,CAAA;IACrC;;OAEG;IACH,qEAA2C,CAAA;IAC3C;;OAEG;IACH,uDAA6B,CAAA;IAC7B;;OAEG;IACH,mDAAyB,CAAA;IACzB;;OAEG;IACH,2DAAiC,CAAA;IACjC;;OAEG;IACH,6EAAmD,CAAA;IACnD;;;OAGG;IACH,qDAA2B,CAAA;IAC3B;;OAEG;IACH,mEAAyC,CAAA;AAAC,CAC5C,EA3CY,sBAAsB,KAAtB,sBAAsB,QA2CjC;SAcW,mBAAmB;AAA/B,IAAY,mBAaX;AAbD,WAAY,mBAAmB;IAC7B,mFAA4D,CAAA;IAC5D,uEAAgD,CAAA;IAChD,+EAAwD,CAAA;IACxD,+FAAwE,CAAA;IACxE,+FAAwE,CAAA;IACxE,6EAAsD,CAAA;IACtD,qFAA8D,CAAA;IAC9D,iFAA0D,CAAA;IAC1D,2GAAoF,CAAA;IACpF,2FAAoE,CAAA;IACpE,iHAA0F,CAAA;IAC1F,iFAA0D,CAAA;AAAC,CAC7D,EAbY,mBAAmB,KAAnB,mBAAmB,QAa9B;AAgBD,MAAM,OAAO,eAAgB,SAAQ,aAAkC;CAAG"}
|
|
@@ -3,18 +3,18 @@ import { CachedBeaconStateAllForks, DataAvailabilityStatus } from "@lodestar/sta
|
|
|
3
3
|
import { AttesterSlashing, BeaconBlock, IndexedAttestation, Root, RootHex, Slot } from "@lodestar/types";
|
|
4
4
|
import { Logger } from "@lodestar/utils";
|
|
5
5
|
import { ForkChoiceMetrics } from "../metrics.js";
|
|
6
|
-
import { LVHExecResponse, MaybeValidExecutionStatus, ProtoBlock, ProtoNode } from "../protoArray/interface.js";
|
|
6
|
+
import { LVHExecResponse, MaybeValidExecutionStatus, PayloadStatus, ProtoBlock, ProtoNode } from "../protoArray/interface.js";
|
|
7
7
|
import { ProtoArray } from "../protoArray/protoArray.js";
|
|
8
8
|
import { AncestorResult, EpochDifference, IForkChoice, NotReorgedReason, ShouldOverrideForkChoiceUpdateResult } from "./interface.js";
|
|
9
|
-
import {
|
|
9
|
+
import { CheckpointWithPayloadStatus, IForkChoiceStore } from "./store.js";
|
|
10
10
|
export type ForkChoiceOpts = {
|
|
11
11
|
proposerBoost?: boolean;
|
|
12
12
|
proposerBoostReorg?: boolean;
|
|
13
13
|
computeUnrealized?: boolean;
|
|
14
14
|
};
|
|
15
15
|
export declare enum UpdateHeadOpt {
|
|
16
|
-
GetCanonicalHead = "getCanonicalHead"
|
|
17
|
-
GetProposerHead = "getProposerHead"
|
|
16
|
+
GetCanonicalHead = "getCanonicalHead",
|
|
17
|
+
GetProposerHead = "getProposerHead",
|
|
18
18
|
GetPredictedProposerHead = "getPredictedProposerHead"
|
|
19
19
|
}
|
|
20
20
|
export type UpdateAndGetHeadOpt = {
|
|
@@ -56,14 +56,24 @@ export declare class ForkChoice implements IForkChoice {
|
|
|
56
56
|
irrecoverableError?: Error;
|
|
57
57
|
/**
|
|
58
58
|
* Votes currently tracked in the protoArray. Instead of tracking a VoteTracker of currentIndex, nextIndex and epoch,
|
|
59
|
-
* we decompose the struct and track them in
|
|
59
|
+
* we decompose the struct and track them in separate arrays for performance reason.
|
|
60
|
+
*
|
|
61
|
+
* For Gloas (ePBS), LatestMessage tracks slot instead of epoch and includes payload_present flag.
|
|
62
|
+
* Spec: gloas/fork-choice.md#modified-latestmessage
|
|
63
|
+
*
|
|
64
|
+
* IMPORTANT: voteCurrentIndices and voteNextIndices point to the EXACT variant node index.
|
|
65
|
+
* The payload status is encoded in the node index itself (different variants have different indices).
|
|
66
|
+
* For example, if a validator votes for the EMPTY variant, voteNextIndices[i] points to that specific EMPTY node.
|
|
60
67
|
*/
|
|
61
68
|
private readonly voteCurrentIndices;
|
|
62
69
|
private readonly voteNextIndices;
|
|
63
|
-
private readonly
|
|
70
|
+
private readonly voteNextSlots;
|
|
64
71
|
/**
|
|
65
72
|
* Attestations that arrived at the current slot and must be queued for later processing.
|
|
66
73
|
* NOT currently tracked in the protoArray
|
|
74
|
+
*
|
|
75
|
+
* Modified for Gloas to track PayloadStatus per validator.
|
|
76
|
+
* Maps: Slot -> BlockRoot -> ValidatorIndex -> PayloadStatus
|
|
67
77
|
*/
|
|
68
78
|
private readonly queuedAttestations;
|
|
69
79
|
/**
|
|
@@ -103,7 +113,7 @@ export declare class ForkChoice implements IForkChoice {
|
|
|
103
113
|
*
|
|
104
114
|
* https://github.com/ethereum/consensus-specs/blob/v1.1.10/specs/phase0/fork-choice.md#get_ancestor
|
|
105
115
|
*/
|
|
106
|
-
getAncestor(blockRoot: RootHex, ancestorSlot: Slot):
|
|
116
|
+
getAncestor(blockRoot: RootHex, ancestorSlot: Slot): ProtoNode;
|
|
107
117
|
/**
|
|
108
118
|
* Get the cached head root
|
|
109
119
|
*/
|
|
@@ -127,7 +137,7 @@ export declare class ForkChoice implements IForkChoice {
|
|
|
127
137
|
isHeadTimely?: boolean;
|
|
128
138
|
notReorgedReason?: NotReorgedReason;
|
|
129
139
|
};
|
|
130
|
-
shouldOverrideForkChoiceUpdate(
|
|
140
|
+
shouldOverrideForkChoiceUpdate(headBlock: ProtoBlock, secFromSlot: number, currentSlot: Slot): ShouldOverrideForkChoiceUpdateResult;
|
|
131
141
|
/**
|
|
132
142
|
* Get the proposer boost root
|
|
133
143
|
*/
|
|
@@ -179,8 +189,8 @@ export declare class ForkChoice implements IForkChoice {
|
|
|
179
189
|
getHeads(): ProtoBlock[];
|
|
180
190
|
/** This is for the debug API only */
|
|
181
191
|
getAllNodes(): ProtoNode[];
|
|
182
|
-
getFinalizedCheckpoint():
|
|
183
|
-
getJustifiedCheckpoint():
|
|
192
|
+
getFinalizedCheckpoint(): CheckpointWithPayloadStatus;
|
|
193
|
+
getJustifiedCheckpoint(): CheckpointWithPayloadStatus;
|
|
184
194
|
/**
|
|
185
195
|
* Add `block` to the fork choice DAG.
|
|
186
196
|
*
|
|
@@ -226,6 +236,18 @@ export declare class ForkChoice implements IForkChoice {
|
|
|
226
236
|
* in state transition so no need to do it again
|
|
227
237
|
*/
|
|
228
238
|
onAttesterSlashing(attesterSlashing: AttesterSlashing): void;
|
|
239
|
+
/**
|
|
240
|
+
* Process a PTC (Payload Timeliness Committee) message
|
|
241
|
+
* Updates the PTC votes for multiple validators attesting to a block
|
|
242
|
+
* Spec: gloas/fork-choice.md#new-on_payload_attestation_message
|
|
243
|
+
*/
|
|
244
|
+
notifyPtcMessages(blockRoot: RootHex, ptcIndices: number[], payloadPresent: boolean): void;
|
|
245
|
+
/**
|
|
246
|
+
* Notify fork choice that an execution payload has arrived (Gloas fork)
|
|
247
|
+
* Creates the FULL variant of a Gloas block when the payload becomes available
|
|
248
|
+
* Spec: gloas/fork-choice.md#new-on_execution_payload
|
|
249
|
+
*/
|
|
250
|
+
onExecutionPayload(blockRoot: RootHex, executionPayloadBlockHash: RootHex, executionPayloadNumber: number, executionPayloadStateRoot: RootHex): void;
|
|
229
251
|
/**
|
|
230
252
|
* Call `onTick` for all slots between `fcStore.getCurrentSlot()` and the provided `currentSlot`.
|
|
231
253
|
* This should only be called once per slot because:
|
|
@@ -239,9 +261,11 @@ export declare class ForkChoice implements IForkChoice {
|
|
|
239
261
|
/** Returns `true` if the block is known **and** a descendant of the finalized root. */
|
|
240
262
|
hasBlock(blockRoot: Root): boolean;
|
|
241
263
|
/** Returns a `ProtoBlock` if the block is known **and** a descendant of the finalized root. */
|
|
242
|
-
getBlock(blockRoot: Root): ProtoBlock | null;
|
|
264
|
+
getBlock(blockRoot: Root, payloadStatus: PayloadStatus): ProtoBlock | null;
|
|
265
|
+
getBlockDefaultStatus(blockRoot: Root): ProtoBlock | null;
|
|
243
266
|
/**
|
|
244
267
|
* Returns `true` if the block is known **and** a descendant of the finalized root.
|
|
268
|
+
* Uses default variant (PENDING for Gloas, FULL for pre-Gloas).
|
|
245
269
|
*/
|
|
246
270
|
hasBlockHex(blockRoot: RootHex): boolean;
|
|
247
271
|
/**
|
|
@@ -255,7 +279,20 @@ export declare class ForkChoice implements IForkChoice {
|
|
|
255
279
|
/**
|
|
256
280
|
* Returns a MUTABLE `ProtoBlock` if the block is known **and** a descendant of the finalized root.
|
|
257
281
|
*/
|
|
258
|
-
getBlockHex(blockRoot: RootHex): ProtoBlock | null;
|
|
282
|
+
getBlockHex(blockRoot: RootHex, payloadStatus: PayloadStatus): ProtoBlock | null;
|
|
283
|
+
/**
|
|
284
|
+
* Returns a `ProtoBlock` with the default variant for the given block root
|
|
285
|
+
* - Pre-Gloas blocks: returns FULL variant (only variant)
|
|
286
|
+
* - Gloas blocks: returns PENDING variant
|
|
287
|
+
*
|
|
288
|
+
* Use this when you need the canonical block reference regardless of payload status.
|
|
289
|
+
* For searching by execution payload hash and variant-specific info, use `getBlockHexAndBlockHash` instead.
|
|
290
|
+
*/
|
|
291
|
+
getBlockHexDefaultStatus(blockRoot: RootHex): ProtoBlock | null;
|
|
292
|
+
/**
|
|
293
|
+
* Returns EMPTY or FULL `ProtoBlock` that has matching block root and block hash
|
|
294
|
+
*/
|
|
295
|
+
getBlockHexAndBlockHash(blockRoot: RootHex, blockHash: RootHex): ProtoBlock | null;
|
|
259
296
|
getJustifiedBlock(): ProtoBlock;
|
|
260
297
|
getFinalizedBlock(): ProtoBlock;
|
|
261
298
|
getFinalizedCheckpointSlot(): Slot;
|
|
@@ -265,7 +302,7 @@ export declare class ForkChoice implements IForkChoice {
|
|
|
265
302
|
* Always returns `false` if either input roots are unknown.
|
|
266
303
|
* Still returns `true` if `ancestorRoot===descendantRoot` (and the roots are known)
|
|
267
304
|
*/
|
|
268
|
-
isDescendant(ancestorRoot: RootHex, descendantRoot: RootHex): boolean;
|
|
305
|
+
isDescendant(ancestorRoot: RootHex, ancestorPayloadStatus: PayloadStatus, descendantRoot: RootHex, descendantPayloadStatus: PayloadStatus): boolean;
|
|
269
306
|
/**
|
|
270
307
|
* All indices in votes are relative to proto array so always keep it up to date
|
|
271
308
|
*/
|
|
@@ -275,28 +312,29 @@ export declare class ForkChoice implements IForkChoice {
|
|
|
275
312
|
* Iterates backwards through block summaries, starting from a block root.
|
|
276
313
|
* Return only the non-finalized blocks.
|
|
277
314
|
*/
|
|
278
|
-
iterateAncestorBlocks(blockRoot: RootHex): IterableIterator<ProtoBlock>;
|
|
315
|
+
iterateAncestorBlocks(blockRoot: RootHex, payloadStatus: PayloadStatus): IterableIterator<ProtoBlock>;
|
|
279
316
|
/**
|
|
280
317
|
* Returns all blocks backwards starting from a block root.
|
|
281
318
|
* Return only the non-finalized blocks.
|
|
282
319
|
*/
|
|
283
|
-
getAllAncestorBlocks(blockRoot: RootHex): ProtoBlock[];
|
|
320
|
+
getAllAncestorBlocks(blockRoot: RootHex, payloadStatus: PayloadStatus): ProtoBlock[];
|
|
284
321
|
/**
|
|
285
322
|
* The same to iterateAncestorBlocks but this gets non-ancestor nodes instead of ancestor nodes.
|
|
286
323
|
*/
|
|
287
|
-
getAllNonAncestorBlocks(blockRoot: RootHex): ProtoBlock[];
|
|
324
|
+
getAllNonAncestorBlocks(blockRoot: RootHex, payloadStatus: PayloadStatus): ProtoBlock[];
|
|
288
325
|
/**
|
|
289
326
|
* Returns both ancestor and non-ancestor blocks in a single traversal.
|
|
290
327
|
*/
|
|
291
|
-
getAllAncestorAndNonAncestorBlocks(blockRoot: RootHex): {
|
|
328
|
+
getAllAncestorAndNonAncestorBlocks(blockRoot: RootHex, payloadStatus: PayloadStatus): {
|
|
292
329
|
ancestors: ProtoBlock[];
|
|
293
330
|
nonAncestors: ProtoBlock[];
|
|
294
331
|
};
|
|
332
|
+
getCanonicalBlockByRoot(blockRoot: Root): ProtoBlock | null;
|
|
295
333
|
getCanonicalBlockAtSlot(slot: Slot): ProtoBlock | null;
|
|
296
334
|
getCanonicalBlockClosestLteSlot(slot: Slot): ProtoBlock | null;
|
|
297
335
|
/** Very expensive function, iterates the entire ProtoArray. TODO: Is this function even necessary? */
|
|
298
336
|
forwarditerateAncestorBlocks(): ProtoBlock[];
|
|
299
|
-
forwardIterateDescendants(blockRoot: RootHex): IterableIterator<ProtoBlock>;
|
|
337
|
+
forwardIterateDescendants(blockRoot: RootHex, payloadStatus: PayloadStatus): IterableIterator<ProtoBlock>;
|
|
300
338
|
/** Very expensive function, iterates the entire ProtoArray. TODO: Is this function even necessary? */
|
|
301
339
|
getBlockSummariesByParentRoot(parentRoot: RootHex): ProtoBlock[];
|
|
302
340
|
/** Very expensive function, iterates the entire ProtoArray. TODO: Is this function even necessary? */
|
|
@@ -340,6 +378,7 @@ export declare class ForkChoice implements IForkChoice {
|
|
|
340
378
|
private getPreMergeExecStatus;
|
|
341
379
|
private getPreMergeDataStatus;
|
|
342
380
|
private getPreGloasExecStatus;
|
|
381
|
+
private getPostGloasExecStatus;
|
|
343
382
|
/**
|
|
344
383
|
* Why `getJustifiedBalances` getter?
|
|
345
384
|
* - updateCheckpoints() is called in both on_block and on_tick.
|
|
@@ -357,7 +396,7 @@ export declare class ForkChoice implements IForkChoice {
|
|
|
357
396
|
*
|
|
358
397
|
* **`on_tick`**
|
|
359
398
|
* May need the justified balances of:
|
|
360
|
-
* - unrealizedJustified: Already available in `
|
|
399
|
+
* - unrealizedJustified: Already available in `CheckpointWithPayloadAndBalance`
|
|
361
400
|
* Since this balances are already available the getter is just `() => balances`, without cache interaction
|
|
362
401
|
*/
|
|
363
402
|
private updateCheckpoints;
|
|
@@ -379,6 +418,13 @@ export declare class ForkChoice implements IForkChoice {
|
|
|
379
418
|
/**
|
|
380
419
|
* Add a validator's latest message to the tracked votes.
|
|
381
420
|
* Always sync voteCurrentIndices and voteNextIndices so that it'll not throw in computeDeltas()
|
|
421
|
+
*
|
|
422
|
+
* Modified for Gloas to accept slot and payloadPresent.
|
|
423
|
+
* Spec: gloas/fork-choice.md#modified-update_latest_messages
|
|
424
|
+
*
|
|
425
|
+
* For backward compatibility with Fulu (pre-Gloas):
|
|
426
|
+
* - Accepts both epoch-derived and slot parameters
|
|
427
|
+
* - payloadPresent defaults to true for Fulu (payloads embedded in blocks)
|
|
382
428
|
*/
|
|
383
429
|
private addLatestMessage;
|
|
384
430
|
/**
|
|
@@ -408,4 +454,14 @@ export declare function getCommitteeFraction(justifiedTotalActiveBalanceByIncrem
|
|
|
408
454
|
slotsPerEpoch: number;
|
|
409
455
|
committeePercent: number;
|
|
410
456
|
}): number;
|
|
457
|
+
/**
|
|
458
|
+
* Get the payload status for a checkpoint.
|
|
459
|
+
*
|
|
460
|
+
* Pre-Gloas: always FULL (payload embedded in block)
|
|
461
|
+
* Gloas: determined by state.execution_payload_availability
|
|
462
|
+
*
|
|
463
|
+
* @param state - The state to check execution_payload_availability
|
|
464
|
+
* @param checkpointEpoch - The epoch of the checkpoint
|
|
465
|
+
*/
|
|
466
|
+
export declare function getCheckpointPayloadStatus(state: CachedBeaconStateAllForks, checkpointEpoch: number): PayloadStatus;
|
|
411
467
|
//# sourceMappingURL=forkChoice.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forkChoice.d.ts","sourceRoot":"","sources":["../../src/forkChoice/forkChoice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EACL,yBAAyB,
|
|
1
|
+
{"version":3,"file":"forkChoice.d.ts","sourceRoot":"","sources":["../../src/forkChoice/forkChoice.ts"],"names":[],"mappings":"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"}
|