@lodestar/fork-choice 1.41.0-dev.20f622cc52 → 1.41.0-dev.21d4a81d4e

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.
@@ -17,7 +17,7 @@ export type CheckpointWithHex = phase0.Checkpoint & {
17
17
  * Pre-Gloas: payloadStatus is always FULL (payload embedded in block)
18
18
  * Gloas: determined by state.execution_payload_availability
19
19
  */
20
- export type CheckpointWithPayload = CheckpointWithHex & {
20
+ export type CheckpointWithPayloadStatus = CheckpointWithHex & {
21
21
  payloadStatus: PayloadStatus;
22
22
  };
23
23
  export type JustifiedBalances = EffectiveBalanceIncrements;
@@ -27,7 +27,7 @@ export type JustifiedBalances = EffectiveBalanceIncrements;
27
27
  * `blockState` is maybe used as a fallback state to get balances since it's very close to desired justified state.
28
28
  * @param blockState state that declares justified checkpoint `checkpoint`
29
29
  */
30
- export type JustifiedBalancesGetter = (checkpoint: CheckpointWithPayload, blockState: CachedBeaconStateAllForks) => JustifiedBalances;
30
+ export type JustifiedBalancesGetter = (checkpoint: CheckpointWithPayloadStatus, blockState: CachedBeaconStateAllForks) => JustifiedBalances;
31
31
  /**
32
32
  * Approximates the `Store` in "Ethereum Consensus -- Beacon Chain Fork Choice":
33
33
  *
@@ -45,8 +45,8 @@ export interface IForkChoiceStore {
45
45
  get justified(): CheckpointWithPayloadAndTotalBalance;
46
46
  set justified(justified: CheckpointWithPayloadAndBalance);
47
47
  unrealizedJustified: CheckpointWithPayloadAndBalance;
48
- finalizedCheckpoint: CheckpointWithPayload;
49
- unrealizedFinalizedCheckpoint: CheckpointWithPayload;
48
+ finalizedCheckpoint: CheckpointWithPayloadStatus;
49
+ unrealizedFinalizedCheckpoint: CheckpointWithPayloadStatus;
50
50
  justifiedBalancesGetter: JustifiedBalancesGetter;
51
51
  equivocatingIndices: Set<ValidatorIndex>;
52
52
  }
@@ -58,7 +58,7 @@ export declare class ForkChoiceStore implements IForkChoiceStore {
58
58
  private _justified;
59
59
  unrealizedJustified: CheckpointWithPayloadAndBalance;
60
60
  private _finalizedCheckpoint;
61
- unrealizedFinalizedCheckpoint: CheckpointWithPayload;
61
+ unrealizedFinalizedCheckpoint: CheckpointWithPayloadStatus;
62
62
  equivocatingIndices: Set<number>;
63
63
  justifiedBalancesGetter: JustifiedBalancesGetter;
64
64
  currentSlot: Slot;
@@ -75,16 +75,16 @@ export declare class ForkChoiceStore implements IForkChoiceStore {
75
75
  * Gloas: determined by state.execution_payload_availability
76
76
  */
77
77
  finalizedPayloadStatus: PayloadStatus, events?: {
78
- onJustified: (cp: CheckpointWithPayload) => void;
79
- onFinalized: (cp: CheckpointWithPayload) => void;
78
+ onJustified: (cp: CheckpointWithPayloadStatus) => void;
79
+ onFinalized: (cp: CheckpointWithPayloadStatus) => void;
80
80
  } | undefined);
81
81
  get justified(): CheckpointWithPayloadAndTotalBalance;
82
82
  set justified(justified: CheckpointWithPayloadAndBalance);
83
- get finalizedCheckpoint(): CheckpointWithPayload;
84
- set finalizedCheckpoint(checkpoint: CheckpointWithPayload);
83
+ get finalizedCheckpoint(): CheckpointWithPayloadStatus;
84
+ set finalizedCheckpoint(checkpoint: CheckpointWithPayloadStatus);
85
85
  }
86
86
  export declare function toCheckpointWithHex(checkpoint: phase0.Checkpoint): CheckpointWithHex;
87
- export declare function toCheckpointWithPayload(checkpoint: phase0.Checkpoint, payloadStatus: PayloadStatus): CheckpointWithPayload;
87
+ export declare function toCheckpointWithPayload(checkpoint: phase0.Checkpoint, payloadStatus: PayloadStatus): CheckpointWithPayloadStatus;
88
88
  export declare function equalCheckpointWithHex(a: CheckpointWithHex, b: CheckpointWithHex): boolean;
89
89
  export declare function computeTotalBalance(balances: EffectiveBalanceIncrements): number;
90
90
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/forkChoice/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,yBAAyB,EAAE,0BAA0B,EAAC,MAAM,4BAA4B,CAAC;AACjG,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEtE,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAC,+BAA+B,EAAE,oCAAoC,EAAC,MAAM,gBAAgB,CAAC;AAErG;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,UAAU,GAAG;IAAC,OAAO,EAAE,OAAO,CAAA;CAAC,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,GAAG;IAAC,aAAa,EAAE,aAAa,CAAA;CAAC,CAAC;AAEvF,MAAM,MAAM,iBAAiB,GAAG,0BAA0B,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,GAAG,CACpC,UAAU,EAAE,qBAAqB,EACjC,UAAU,EAAE,yBAAyB,KAClC,iBAAiB,CAAC;AAEvB;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,IAAI,CAAC;IAClB,IAAI,SAAS,IAAI,oCAAoC,CAAC;IACtD,IAAI,SAAS,CAAC,SAAS,EAAE,+BAA+B,EAAE;IAC1D,mBAAmB,EAAE,+BAA+B,CAAC;IACrD,mBAAmB,EAAE,qBAAqB,CAAC;IAC3C,6BAA6B,EAAE,qBAAqB,CAAC;IACrD,uBAAuB,EAAE,uBAAuB,CAAC;IACjD,mBAAmB,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC1C;AAED;;GAEG;AACH,qBAAa,eAAgB,YAAW,gBAAgB;IA2BpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IA1B1B,OAAO,CAAC,UAAU,CAAuC;IACzD,mBAAmB,EAAE,+BAA+B,CAAC;IACrD,OAAO,CAAC,oBAAoB,CAAwB;IACpD,6BAA6B,EAAE,qBAAqB,CAAC;IACrD,mBAAmB,cAA6B;IAChD,uBAAuB,EAAE,uBAAuB,CAAC;IACjD,WAAW,EAAE,IAAI,CAAC;gBAGhB,WAAW,EAAE,IAAI,EACjB,mBAAmB,EAAE,MAAM,CAAC,UAAU,EACtC,mBAAmB,EAAE,MAAM,CAAC,UAAU,EACtC,iBAAiB,EAAE,0BAA0B,EAC7C,uBAAuB,EAAE,uBAAuB;IAChD;;;;OAIG;IACH,sBAAsB,EAAE,aAAa;IACrC;;;;OAIG;IACH,sBAAsB,EAAE,aAAa,EACpB,MAAM,CAAC,EAAE;QACxB,WAAW,EAAE,CAAC,EAAE,EAAE,qBAAqB,KAAK,IAAI,CAAC;QACjD,WAAW,EAAE,CAAC,EAAE,EAAE,qBAAqB,KAAK,IAAI,CAAC;KAClD,YAAA;IAeH,IAAI,SAAS,IAAI,oCAAoC,CAEpD;IACD,IAAI,SAAS,CAAC,SAAS,EAAE,+BAA+B,EAGvD;IAED,IAAI,mBAAmB,IAAI,qBAAqB,CAE/C;IACD,IAAI,mBAAmB,CAAC,UAAU,EAAE,qBAAqB,EAIxD;CACF;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,iBAAiB,CASpF;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,CAAC,UAAU,EAC7B,aAAa,EAAE,aAAa,GAC3B,qBAAqB,CAKvB;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAE1F;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,0BAA0B,GAAG,MAAM,CAMhF"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/forkChoice/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,yBAAyB,EAAE,0BAA0B,EAAC,MAAM,4BAA4B,CAAC;AACjG,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEtE,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAC,+BAA+B,EAAE,oCAAoC,EAAC,MAAM,gBAAgB,CAAC;AAErG;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,UAAU,GAAG;IAAC,OAAO,EAAE,OAAO,CAAA;CAAC,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,MAAM,2BAA2B,GAAG,iBAAiB,GAAG;IAAC,aAAa,EAAE,aAAa,CAAA;CAAC,CAAC;AAE7F,MAAM,MAAM,iBAAiB,GAAG,0BAA0B,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,GAAG,CACpC,UAAU,EAAE,2BAA2B,EACvC,UAAU,EAAE,yBAAyB,KAClC,iBAAiB,CAAC;AAEvB;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,IAAI,CAAC;IAClB,IAAI,SAAS,IAAI,oCAAoC,CAAC;IACtD,IAAI,SAAS,CAAC,SAAS,EAAE,+BAA+B,EAAE;IAC1D,mBAAmB,EAAE,+BAA+B,CAAC;IACrD,mBAAmB,EAAE,2BAA2B,CAAC;IACjD,6BAA6B,EAAE,2BAA2B,CAAC;IAC3D,uBAAuB,EAAE,uBAAuB,CAAC;IACjD,mBAAmB,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC1C;AAED;;GAEG;AACH,qBAAa,eAAgB,YAAW,gBAAgB;IA2BpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IA1B1B,OAAO,CAAC,UAAU,CAAuC;IACzD,mBAAmB,EAAE,+BAA+B,CAAC;IACrD,OAAO,CAAC,oBAAoB,CAA8B;IAC1D,6BAA6B,EAAE,2BAA2B,CAAC;IAC3D,mBAAmB,cAA6B;IAChD,uBAAuB,EAAE,uBAAuB,CAAC;IACjD,WAAW,EAAE,IAAI,CAAC;IAElB,YACE,WAAW,EAAE,IAAI,EACjB,mBAAmB,EAAE,MAAM,CAAC,UAAU,EACtC,mBAAmB,EAAE,MAAM,CAAC,UAAU,EACtC,iBAAiB,EAAE,0BAA0B,EAC7C,uBAAuB,EAAE,uBAAuB;IAChD;;;;OAIG;IACH,sBAAsB,EAAE,aAAa;IACrC;;;;OAIG;IACH,sBAAsB,EAAE,aAAa,EACpB,MAAM,CAAC;;;iBAGvB,EAaF;IAED,IAAI,SAAS,IAAI,oCAAoC,CAEpD;IACD,IAAI,SAAS,CAAC,SAAS,EAAE,+BAA+B,EAGvD;IAED,IAAI,mBAAmB,IAAI,2BAA2B,CAErD;IACD,IAAI,mBAAmB,CAAC,UAAU,EAAE,2BAA2B,EAI9D;CACF;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,iBAAiB,CASpF;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,CAAC,UAAU,EAC7B,aAAa,EAAE,aAAa,GAC3B,2BAA2B,CAK7B;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAE1F;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,0BAA0B,GAAG,MAAM,CAMhF"}
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/forkChoice/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/forkChoice/store.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -2,7 +2,7 @@ export { ForkChoiceError, ForkChoiceErrorCode, type InvalidAttestation, InvalidA
2
2
  export { ForkChoice, type ForkChoiceOpts, UpdateHeadOpt, getCheckpointPayloadStatus, } from "./forkChoice/forkChoice.js";
3
3
  export { type AncestorResult, AncestorStatus, type CheckpointWithPayloadAndBalance, type CheckpointWithPayloadAndTotalBalance, EpochDifference, type IForkChoice, NotReorgedReason, } from "./forkChoice/interface.js";
4
4
  export * from "./forkChoice/safeBlocks.js";
5
- export { type CheckpointWithHex, type CheckpointWithPayload, ForkChoiceStore, type IForkChoiceStore, type JustifiedBalancesGetter, } from "./forkChoice/store.js";
5
+ export { type CheckpointWithHex, type CheckpointWithPayloadStatus, ForkChoiceStore, type IForkChoiceStore, type JustifiedBalancesGetter, } from "./forkChoice/store.js";
6
6
  export { type ForkChoiceMetrics, getForkChoiceMetrics } from "./metrics.js";
7
7
  export type { BlockExtraMeta, LVHInvalidResponse, LVHValidResponse, MaybeValidExecutionStatus, ProtoBlock, ProtoNode, } from "./protoArray/interface.js";
8
8
  export { ExecutionStatus, PayloadStatus } from "./protoArray/interface.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,sBAAsB,EACtB,KAAK,YAAY,EACjB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,UAAU,EACV,KAAK,cAAc,EACnB,aAAa,EACb,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,KAAK,cAAc,EACnB,cAAc,EACd,KAAK,+BAA+B,EACpC,KAAK,oCAAoC,EACzC,eAAe,EACf,KAAK,WAAW,EAChB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,KAAK,iBAAiB,EAAE,oBAAoB,EAAC,MAAM,cAAc,CAAC;AAC1E,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,EACzB,UAAU,EACV,SAAS,GACV,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAC,eAAe,EAAE,aAAa,EAAC,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAC,UAAU,EAAC,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,sBAAsB,EACtB,KAAK,YAAY,EACjB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,UAAU,EACV,KAAK,cAAc,EACnB,aAAa,EACb,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,KAAK,cAAc,EACnB,cAAc,EACd,KAAK,+BAA+B,EACpC,KAAK,oCAAoC,EACzC,eAAe,EACf,KAAK,WAAW,EAChB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,2BAA2B,EAChC,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,KAAK,iBAAiB,EAAE,oBAAoB,EAAC,MAAM,cAAc,CAAC;AAC1E,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,EACzB,UAAU,EACV,SAAS,GACV,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAC,eAAe,EAAE,aAAa,EAAC,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAC,UAAU,EAAC,MAAM,4BAA4B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAC,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAE3D,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,oBAAoB;;;oBAGvB,MAAM;;;;wBAUR,aAAa;;;;;;;;;;;;oBA4CL,gBAAgB;;;;;;;;;;;;;EA0CjE"}
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAC,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAE3D,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmGlE"}
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"computeDeltas.js","sourceRoot":"","sources":["../../src/protoArray/computeDeltas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"computeDeltas.js","sourceRoot":"","sources":["../../src/protoArray/computeDeltas.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,13 @@
1
1
  import { LodestarError } from "@lodestar/utils";
2
- export var LVHExecErrorCode;
2
+ export { LVHExecErrorCode };
3
+ var LVHExecErrorCode;
3
4
  (function (LVHExecErrorCode) {
4
5
  LVHExecErrorCode["PreMergeToInvalid"] = "PreMergeToInvalid";
5
6
  LVHExecErrorCode["ValidToInvalid"] = "ValidToInvalid";
6
7
  LVHExecErrorCode["InvalidToValid"] = "InvalidToValid";
7
8
  })(LVHExecErrorCode || (LVHExecErrorCode = {}));
8
- export var ProtoArrayErrorCode;
9
+ export { ProtoArrayErrorCode };
10
+ var ProtoArrayErrorCode;
9
11
  (function (ProtoArrayErrorCode) {
10
12
  ProtoArrayErrorCode["FINALIZED_NODE_UNKNOWN"] = "PROTO_ARRAY_ERROR_FINALIZED_NODE_UNKNOWN";
11
13
  ProtoArrayErrorCode["JUSTIFIED_NODE_UNKNOWN"] = "PROTO_ARRAY_ERROR_JUSTIFIED_NODE_UNKNOWN";
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/protoArray/errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAE9C,MAAM,CAAN,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,2DAAuC,CAAA;IACvC,qDAAiC,CAAA;IACjC,qDAAiC,CAAA;AACnC,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B;AAID,MAAM,CAAN,IAAY,mBAqBX;AArBD,WAAY,mBAAmB;IAC7B,0FAAmE,CAAA;IACnE,0FAAmE,CAAA;IACnE,wEAAiD,CAAA;IACjD,sFAA+D,CAAA;IAC/D,wGAAiF,CAAA;IACjF,kFAA2D,CAAA;IAC3D,sFAA+D,CAAA;IAC/D,8FAAuE,CAAA;IACvE,4FAAqE,CAAA;IACrE,wGAAiF,CAAA;IACjF,sFAA+D,CAAA;IAC/D,kFAA2D,CAAA;IAC3D,0EAAmD,CAAA;IACnD,gFAAyD,CAAA;IACzD,8FAAuE,CAAA;IACvE,gFAAyD,CAAA;IACzD,oGAA6E,CAAA;IAC7E,4GAAqF,CAAA;IACrF,oGAA6E,CAAA;IAC7E,4EAAqD,CAAA;AACvD,CAAC,EArBW,mBAAmB,KAAnB,mBAAmB,QAqB9B;AAgCD,MAAM,OAAO,eAAgB,SAAQ,aAAkC;CAAG"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/protoArray/errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;SAElC,gBAAgB;AAA5B,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,2DAAuC,CAAA;IACvC,qDAAiC,CAAA;IACjC,qDAAiC,CAAA;AAAC,CACpC,EAJY,gBAAgB,KAAhB,gBAAgB,QAI3B;SAIW,mBAAmB;AAA/B,IAAY,mBAqBX;AArBD,WAAY,mBAAmB;IAC7B,0FAAmE,CAAA;IACnE,0FAAmE,CAAA;IACnE,wEAAiD,CAAA;IACjD,sFAA+D,CAAA;IAC/D,wGAAiF,CAAA;IACjF,kFAA2D,CAAA;IAC3D,sFAA+D,CAAA;IAC/D,8FAAuE,CAAA;IACvE,4FAAqE,CAAA;IACrE,wGAAiF,CAAA;IACjF,sFAA+D,CAAA;IAC/D,kFAA2D,CAAA;IAC3D,0EAAmD,CAAA;IACnD,gFAAyD,CAAA;IACzD,8FAAuE,CAAA;IACvE,gFAAyD,CAAA;IACzD,oGAA6E,CAAA;IAC7E,4GAAqF,CAAA;IACrF,oGAA6E,CAAA;IAC7E,4EAAqD,CAAA;AAAC,CACxD,EArBY,mBAAmB,KAAnB,mBAAmB,QAqB9B;AAgCD,MAAM,OAAO,eAAgB,SAAQ,aAAkC;CAAG"}
@@ -7,6 +7,7 @@ export const HEX_ZERO_HASH = "0x000000000000000000000000000000000000000000000000
7
7
  * The number of proto nodes will never exceed this value because it represents (0xffffffff / 365 / 24 / 60 / 5), ie > 1634 years of non-finalized network.
8
8
  */
9
9
  export const NULL_VOTE_INDEX = 0xffffffff;
10
+ export { ExecutionStatus };
10
11
  /**
11
12
  * Execution status of a block in fork choice.
12
13
  *
@@ -18,7 +19,7 @@ export const NULL_VOTE_INDEX = 0xffffffff;
18
19
  * The execution payload arrives separately via SignedExecutionPayloadEnvelope.
19
20
  * Gloas blocks WITH execution payload (FULL variant) use Valid/Invalid/Syncing.
20
21
  */
21
- export var ExecutionStatus;
22
+ var ExecutionStatus;
22
23
  (function (ExecutionStatus) {
23
24
  ExecutionStatus["Valid"] = "Valid";
24
25
  ExecutionStatus["Syncing"] = "Syncing";
@@ -26,11 +27,12 @@ export var ExecutionStatus;
26
27
  ExecutionStatus["Invalid"] = "Invalid";
27
28
  ExecutionStatus["PayloadSeparated"] = "PayloadSeparated";
28
29
  })(ExecutionStatus || (ExecutionStatus = {}));
30
+ export { PayloadStatus };
29
31
  /**
30
32
  * Payload status for ePBS (Gloas fork)
31
33
  * Spec: gloas/fork-choice.md#constants
32
34
  */
33
- export var PayloadStatus;
35
+ var PayloadStatus;
34
36
  (function (PayloadStatus) {
35
37
  PayloadStatus[PayloadStatus["PENDING"] = 0] = "PENDING";
36
38
  PayloadStatus[PayloadStatus["EMPTY"] = 1] = "EMPTY";
@@ -1 +1 @@
1
- {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/protoArray/interface.ts"],"names":[],"mappings":"AAGA,oCAAoC;AACpC,2CAA2C;AAC3C,MAAM,CAAC,MAAM,aAAa,GAAG,oEAAoE,CAAC;AAElG;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;AAO1C;;;;;;;;;;GAUG;AACH,MAAM,CAAN,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,kCAAe,CAAA;IACf,sCAAmB,CAAA;IACnB,wCAAqB,CAAA;IACrB,sCAAmB,CAAA;IACnB,wDAAqC,CAAA;AACvC,CAAC,EANW,eAAe,KAAf,eAAe,QAM1B;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,uDAAW,CAAA;IACX,mDAAS,CAAA;IACT,iDAAQ,CAAA;AACV,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAiB;IAC5C,OAAO,KAAK,CAAC,eAAe,KAAK,IAAI,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/protoArray/interface.ts"],"names":[],"mappings":"AAGA,oCAAoC;AACpC,2CAA2C;AAC3C,MAAM,CAAC,MAAM,aAAa,GAAG,oEAAoE,CAAC;AAElG;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;SAkB9B,eAAe;AAX3B;;;;;;;;;;GAUG;AACH,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,kCAAe,CAAA;IACf,sCAAmB,CAAA;IACnB,wCAAqB,CAAA;IACrB,sCAAmB,CAAA;IACnB,wDAAqC,CAAA;AAAC,CACxC,EANY,eAAe,KAAf,eAAe,QAM1B;SAMW,aAAa;AAJzB;;;GAGG;AACH,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,uDAAW,CAAA;IACX,mDAAS,CAAA;IACT,iDAAQ,CAAA;AAAC,CACX,EAJY,aAAa,KAAb,aAAa,QAIxB;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAiB,EAAW;IACvD,OAAO,KAAK,CAAC,eAAe,KAAK,IAAI,CAAC;AAAA,CACvC"}
@@ -36,15 +36,15 @@ export declare class ProtoArray {
36
36
  lvhError?: LVHExecError;
37
37
  private previousProposerBoost;
38
38
  /**
39
- * PTC (Payload Timeliness Committee) votes per block
40
- * Maps block root to boolean array of size PTC_SIZE (from params: 512 mainnet, 2 minimal)
39
+ * PTC (Payload Timeliness Committee) votes per block as bitvectors
40
+ * Maps block root to BitArray of PTC_SIZE bits (512 mainnet, 2 minimal)
41
41
  * Spec: gloas/fork-choice.md#modified-store (line 148)
42
42
  *
43
- * ptcVotes[blockRoot][i] = true if PTC member i voted payload_present=true
43
+ * Bit i is set if PTC member i voted payload_present=true
44
44
  * Used by is_payload_timely() to determine if payload is timely
45
45
  */
46
46
  private ptcVotes;
47
- constructor({ pruneThreshold, justifiedEpoch, justifiedRoot, finalizedEpoch, finalizedRoot, }: {
47
+ constructor({ pruneThreshold, justifiedEpoch, justifiedRoot, finalizedEpoch, finalizedRoot }: {
48
48
  pruneThreshold: number;
49
49
  justifiedEpoch: Epoch;
50
50
  justifiedRoot: RootHex;
@@ -75,6 +75,12 @@ export declare class ProtoArray {
75
75
  * @returns PayloadStatus.FULL for pre-Gloas, PayloadStatus.PENDING for Gloas, undefined if block not found
76
76
  */
77
77
  getDefaultVariant(blockRoot: RootHex): PayloadStatus | undefined;
78
+ /**
79
+ * Get the node index for the default/canonical variant in a single hash lookup.
80
+ * - Pre-Gloas blocks: returns the FULL variant index
81
+ * - Gloas blocks: returns the PENDING variant index
82
+ */
83
+ getDefaultNodeIndex(blockRoot: RootHex): number | undefined;
78
84
  /**
79
85
  * Determine which parent payload status a block extends
80
86
  * Spec: gloas/fork-choice.md#new-get_parent_payload_status
@@ -115,7 +121,7 @@ export declare class ProtoArray {
115
121
  * should become the best child.
116
122
  * - If required, update the parents best-descendant with the current node or its best-descendant.
117
123
  */
118
- applyScoreChanges({ deltas, proposerBoost, justifiedEpoch, justifiedRoot, finalizedEpoch, finalizedRoot, currentSlot, }: {
124
+ applyScoreChanges({ deltas, proposerBoost, justifiedEpoch, justifiedRoot, finalizedEpoch, finalizedRoot, currentSlot }: {
119
125
  deltas: number[];
120
126
  proposerBoost: ProposerBoost | null;
121
127
  justifiedEpoch: Epoch;
@@ -301,7 +307,7 @@ export declare class ProtoArray {
301
307
  * For Gloas blocks: returns EMPTY/FULL variants (not PENDING) based on parent payload status
302
308
  * For pre-Gloas blocks: returns FULL variants
303
309
  */
304
- iterateAncestorNodes(blockRoot: RootHex): IterableIterator<ProtoNode>;
310
+ iterateAncestorNodes(blockRoot: RootHex, payloadStatus: PayloadStatus): IterableIterator<ProtoNode>;
305
311
  /**
306
312
  * Iterate from a node backwards over ancestor nodes
307
313
  * For Gloas blocks: returns EMPTY/FULL variants (not PENDING) based on parent payload status
@@ -314,7 +320,7 @@ export declare class ProtoArray {
314
320
  * For Gloas blocks: returns EMPTY/FULL variants (not PENDING) based on parent payload status
315
321
  * For pre-Gloas blocks: returns FULL variants
316
322
  */
317
- getAllAncestorNodes(blockRoot: RootHex): ProtoNode[];
323
+ getAllAncestorNodes(blockRoot: RootHex, payloadStatus: PayloadStatus): ProtoNode[];
318
324
  /**
319
325
  * The opposite of iterateNodes.
320
326
  * iterateNodes is to find ancestor nodes of a blockRoot.
@@ -323,13 +329,13 @@ export declare class ProtoArray {
323
329
  * For Gloas blocks: returns EMPTY/FULL variants (not PENDING) based on parent payload status
324
330
  * For pre-Gloas blocks: returns FULL variants
325
331
  */
326
- getAllNonAncestorNodes(blockRoot: RootHex): ProtoNode[];
332
+ getAllNonAncestorNodes(blockRoot: RootHex, payloadStatus: PayloadStatus): ProtoNode[];
327
333
  /**
328
334
  * Returns both ancestor and non-ancestor nodes in a single traversal.
329
335
  * For Gloas blocks: returns EMPTY/FULL variants (not PENDING) based on parent payload status
330
336
  * For pre-Gloas blocks: returns FULL variants
331
337
  */
332
- getAllAncestorAndNonAncestorNodes(blockRoot: RootHex): {
338
+ getAllAncestorAndNonAncestorNodes(blockRoot: RootHex, payloadStatus: PayloadStatus): {
333
339
  ancestors: ProtoNode[];
334
340
  nonAncestors: ProtoNode[];
335
341
  };
@@ -375,9 +381,9 @@ export declare class ProtoArray {
375
381
  /**
376
382
  * Returns `true` if the `descendantRoot` has an ancestor with `ancestorRoot`.
377
383
  * Always returns `false` if either input roots are unknown.
378
- * Still returns `true` if `ancestorRoot` === `descendantRoot` (and the roots are known)
384
+ * Still returns `true` if `ancestorRoot` === `descendantRoot` and payload statuses match.
379
385
  */
380
- isDescendant(ancestorRoot: RootHex, descendantRoot: RootHex): boolean;
386
+ isDescendant(ancestorRoot: RootHex, ancestorPayloadStatus: PayloadStatus, descendantRoot: RootHex, descendantPayloadStatus: PayloadStatus): boolean;
381
387
  /**
382
388
  * Returns a common ancestor for nodeA or nodeB or null if there's none
383
389
  */
@@ -1 +1 @@
1
- {"version":3,"file":"protoArray.d.ts","sourceRoot":"","sources":["../../src/protoArray/protoArray.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protoArray.d.ts","sourceRoot":"","sources":["../../src/protoArray/protoArray.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;AAGrD,OAAO,EAAC,YAAY,EAAyD,MAAM,aAAa,CAAC;AACjG,OAAO,EAGL,eAAe,EACf,aAAa,EACb,UAAU,EACV,SAAS,EAEV,MAAM,gBAAgB,CAAC;AAQxB,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,KAAK,aAAa,GAAG;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAAC;AAIpD,yEAAyE;AACzE,KAAK,oBAAoB,GAAG,MAAM,CAAC;AACnC;;;;GAIG;AACH,KAAK,mBAAmB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACvE,KAAK,cAAc,GAAG,oBAAoB,GAAG,mBAAmB,CAAC;AAEjE,qBAAa,UAAU;IAGrB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,KAAK,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,KAAK,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,SAAS,EAAE,CAAM;IACxB;;;;;;;;;OASG;IACH,OAAO,8BAAsC;IAC7C,QAAQ,CAAC,EAAE,YAAY,CAAC;IAExB,OAAO,CAAC,qBAAqB,CAA8B;IAE3D;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,CAAgC;IAEhD,YAAY,EACV,cAAc,EACd,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACd,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,KAAK,CAAC;QACtB,aAAa,EAAE,OAAO,CAAC;QACvB,cAAc,EAAE,KAAK,CAAC;QACtB,aAAa,EAAE,OAAO,CAAC;KACxB,EAMA;IAED,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,WAAW,EAAE,IAAI,GAAG,UAAU,CAkBtF;IAED;;;;;;;;;;;;OAYG;IACH,2BAA2B,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAqB3F;IAED;;;;;;;OAOG;IACH,iBAAiB,CAAC,SAAS,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,CAa/D;IAED;;;;OAIG;IACH,mBAAmB,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAa1D;IAED;;;;;;;;;;;;;;;OAeG;IACH,sBAAsB,CAAC,KAAK,EAAE,UAAU,GAAG,aAAa,CAiBvD;IAED;;OAEG;IACH,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,GAAG,IAAI,GAAG,UAAU,GAAG,IAAI,CAoBjF;IAED;;OAEG;IACH,uBAAuB,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CA8BjF;IAED;;;;;;;;;;;;;;OAcG;IACH,iBAAiB,CAAC,EAChB,MAAM,EACN,aAAa,EACb,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACb,WAAW,EACZ,EAAE;QACD,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;QACpC,cAAc,EAAE,KAAK,CAAC;QACtB,aAAa,EAAE,OAAO,CAAC;QACvB,cAAc,EAAE,KAAK,CAAC;QACtB,aAAa,EAAE,OAAO,CAAC;QACvB,WAAW,EAAE,IAAI,CAAC;KACnB,GAAG,IAAI,CA8FP;IAED;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CA8GrF;IAED;;;;;;OAMG;IACH,kBAAkB,CAChB,SAAS,EAAE,OAAO,EAClB,WAAW,EAAE,IAAI,EACjB,yBAAyB,EAAE,OAAO,EAClC,sBAAsB,EAAE,MAAM,EAC9B,yBAAyB,EAAE,OAAO,EAClC,iBAAiB,EAAE,OAAO,GAAG,IAAI,GAChC,IAAI,CA+DN;IAED;;;;;;;OAOG;IACH,iBAAiB,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,OAAO,GAAG,IAAI,CAczF;IAED;;;;;;;;;;OAUG;IACH,eAAe,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAiB3C;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAE3C;IAED;;;;;;;;;;;;OAYG;IACH,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CA+BlF;IAED;;;;OAIG;IAEH,kBAAkB,CAAC,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,IAAI,GAAG,IAAI,CAwEzE;IAED,OAAO,CAAC,oCAAoC;IAmB5C;;;;;;;;OAQG;IAEH,OAAO,CAAC,sCAAsC;IAoC9C,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,qBAAqB;IAmC7B,OAAO,CAAC,mBAAmB;IAoB3B;;;;;;;;;OASG;IACH,OAAO,CAAC,0BAA0B;IAsBlC;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,GAAG,SAAS,CA8D7D;IAED;;;;;;;;;;;;;;OAcG;IACH,UAAU,CAAC,aAAa,EAAE,OAAO,GAAG,UAAU,EAAE,CAuG/C;IAED;;;;;;;;;;;;;OAaG;IAEH,iCAAiC,CAC/B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,IAAI,EACjB,iBAAiB,EAAE,OAAO,GAAG,IAAI,GAChC,IAAI,CAsHN;IAED;;;OAGG;IACH,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,GAAG,OAAO,CAiBjE;IAED;;;;;;;OAOG;IACH,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,GAAG,OAAO,CAqB/D;IAED;;;;OAIG;IACH,2BAA2B,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAgBpD;IAED;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,CAM1E;IAED;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,GAAG,SAAS,CAwE7D;IAED;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;;;OAIG;IACF,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAenG;IAED;;;;;OAKG;IACF,4BAA4B,CAAC,IAAI,EAAE,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAU1E;IAED;;;;OAIG;IACH,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,GAAG,SAAS,EAAE,CAgCjF;IAED;;;;;;;OAOG;IACH,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,GAAG,SAAS,EAAE,CAkCpF;IAED;;;;OAIG;IACH,iCAAiC,CAC/B,SAAS,EAAE,OAAO,EAClB,aAAa,EAAE,aAAa,GAC3B;QAAC,SAAS,EAAE,SAAS,EAAE,CAAC;QAAC,YAAY,EAAE,SAAS,EAAE,CAAA;KAAC,CA4CrD;IAED;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAEpC;IAED;;;;;;;;;OASG;IACH,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,GAAG,SAAS,GAAG,SAAS,CAM/E;IAED;;;;;;;;;OASG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,GAAG,UAAU,GAAG,SAAS,CAQjF;IAED;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,GAAG,UAAU,CAM7E;IAED;;;;OAIG;IACH,YAAY,CACV,YAAY,EAAE,OAAO,EACrB,qBAAqB,EAAE,aAAa,EACpC,cAAc,EAAE,OAAO,EACvB,uBAAuB,EAAE,aAAa,GACrC,OAAO,CAmBT;IAED;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,CAmCtE;IAED,MAAM,IAAI,MAAM,CAEf;IAED,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,eAAe;CAcxB"}
@@ -1,6 +1,7 @@
1
+ import { BitArray } from "@chainsafe/ssz";
1
2
  import { GENESIS_EPOCH, PTC_SIZE } from "@lodestar/params";
2
3
  import { computeEpochAtSlot, computeStartSlotAtEpoch } from "@lodestar/state-transition";
3
- import { toRootHex } from "@lodestar/utils";
4
+ import { bitCount, toRootHex } from "@lodestar/utils";
4
5
  import { ForkChoiceError, ForkChoiceErrorCode } from "../forkChoice/errors.js";
5
6
  import { LVHExecErrorCode, ProtoArrayError, ProtoArrayErrorCode } from "./errors.js";
6
7
  import { ExecutionStatus, HEX_ZERO_HASH, PayloadStatus, isGloasBlock, } from "./interface.js";
@@ -34,11 +35,11 @@ export class ProtoArray {
34
35
  lvhError;
35
36
  previousProposerBoost = null;
36
37
  /**
37
- * PTC (Payload Timeliness Committee) votes per block
38
- * Maps block root to boolean array of size PTC_SIZE (from params: 512 mainnet, 2 minimal)
38
+ * PTC (Payload Timeliness Committee) votes per block as bitvectors
39
+ * Maps block root to BitArray of PTC_SIZE bits (512 mainnet, 2 minimal)
39
40
  * Spec: gloas/fork-choice.md#modified-store (line 148)
40
41
  *
41
- * ptcVotes[blockRoot][i] = true if PTC member i voted payload_present=true
42
+ * Bit i is set if PTC member i voted payload_present=true
42
43
  * Used by is_payload_timely() to determine if payload is timely
43
44
  */
44
45
  ptcVotes = new Map();
@@ -117,6 +118,23 @@ export class ProtoArray {
117
118
  // Gloas: multiple variants exist, PENDING is canonical
118
119
  return PayloadStatus.PENDING;
119
120
  }
121
+ /**
122
+ * Get the node index for the default/canonical variant in a single hash lookup.
123
+ * - Pre-Gloas blocks: returns the FULL variant index
124
+ * - Gloas blocks: returns the PENDING variant index
125
+ */
126
+ getDefaultNodeIndex(blockRoot) {
127
+ const variantOrArr = this.indices.get(blockRoot);
128
+ if (variantOrArr == null) {
129
+ return undefined;
130
+ }
131
+ // Pre-Gloas: value is the index directly
132
+ if (!Array.isArray(variantOrArr)) {
133
+ return variantOrArr;
134
+ }
135
+ // Gloas: PENDING is the canonical variant
136
+ return variantOrArr[PayloadStatus.PENDING];
137
+ }
120
138
  /**
121
139
  * Determine which parent payload status a block extends
122
140
  * Spec: gloas/fork-choice.md#new-get_parent_payload_status
@@ -279,6 +297,7 @@ export class ProtoArray {
279
297
  // We _must_ perform these functions separate from the weight-updating loop above to ensure
280
298
  // that we have a fully coherent set of weights before updating parent
281
299
  // best-child/descendant.
300
+ const proposerBoostRoot = proposerBoost?.root ?? null;
282
301
  for (let nodeIndex = this.nodes.length - 1; nodeIndex >= 0; nodeIndex--) {
283
302
  const node = this.nodes[nodeIndex];
284
303
  if (node === undefined) {
@@ -290,7 +309,7 @@ export class ProtoArray {
290
309
  // If the node has a parent, try to update its best-child and best-descendant.
291
310
  const parentIndex = node.parent;
292
311
  if (parentIndex !== undefined) {
293
- this.maybeUpdateBestChildAndDescendant(parentIndex, nodeIndex, currentSlot, proposerBoost?.root ?? null);
312
+ this.maybeUpdateBestChildAndDescendant(parentIndex, nodeIndex, currentSlot, proposerBoostRoot);
294
313
  }
295
314
  }
296
315
  // Update the previous proposer boost
@@ -371,7 +390,7 @@ export class ProtoArray {
371
390
  this.maybeUpdateBestChildAndDescendant(pendingIndex, emptyIndex, currentSlot, proposerBoostRoot);
372
391
  // Initialize PTC votes for this block (all false initially)
373
392
  // Spec: gloas/fork-choice.md#modified-on_block (line 645)
374
- this.ptcVotes.set(block.blockRoot, new Array(PTC_SIZE).fill(false));
393
+ this.ptcVotes.set(block.blockRoot, BitArray.fromBitLen(PTC_SIZE));
375
394
  }
376
395
  else {
377
396
  // Pre-Gloas: Only create FULL node (payload embedded in block)
@@ -478,8 +497,7 @@ export class ProtoArray {
478
497
  if (ptcIndex < 0 || ptcIndex >= PTC_SIZE) {
479
498
  throw new Error(`Invalid PTC index: ${ptcIndex}, must be 0..${PTC_SIZE - 1}`);
480
499
  }
481
- // Update the vote
482
- votes[ptcIndex] = payloadPresent;
500
+ votes.set(ptcIndex, payloadPresent);
483
501
  }
484
502
  }
485
503
  /**
@@ -506,7 +524,7 @@ export class ProtoArray {
506
524
  return false;
507
525
  }
508
526
  // Count votes for payload_present=true
509
- const yesVotes = votes.filter((v) => v).length;
527
+ const yesVotes = bitCount(votes.uint8Array);
510
528
  return yesVotes > PAYLOAD_TIMELY_THRESHOLD;
511
529
  }
512
530
  /**
@@ -542,8 +560,8 @@ export class ProtoArray {
542
560
  }
543
561
  // Get proposer boost block
544
562
  // We don't care about variant here, just need proposer boost block info
545
- const defaultStatus = this.getDefaultVariant(proposerBoostRoot);
546
- const proposerBoostBlock = defaultStatus !== undefined ? this.getNode(proposerBoostRoot, defaultStatus) : undefined;
563
+ const proposerBoostIndex = this.getDefaultNodeIndex(proposerBoostRoot);
564
+ const proposerBoostBlock = proposerBoostIndex !== undefined ? this.getNodeByIndex(proposerBoostIndex) : undefined;
547
565
  if (!proposerBoostBlock) {
548
566
  // Proposer boost block not found, default to extending payload
549
567
  return true;
@@ -605,11 +623,8 @@ export class ProtoArray {
605
623
  // if its in fcU.
606
624
  //
607
625
  const { invalidateFromParentBlockRoot, latestValidExecHash } = execResponse;
608
- // TODO GLOAS: verify if getting default variant is correct here
609
- const defaultStatus = this.getDefaultVariant(invalidateFromParentBlockRoot);
610
- const invalidateFromParentIndex = defaultStatus !== undefined
611
- ? this.getNodeIndexByRootAndStatus(invalidateFromParentBlockRoot, defaultStatus)
612
- : undefined;
626
+ // TODO GLOAS: verify if getting the default/canonical node index is correct here
627
+ const invalidateFromParentIndex = this.getDefaultNodeIndex(invalidateFromParentBlockRoot);
613
628
  if (invalidateFromParentIndex === undefined) {
614
629
  throw Error(`Unable to find invalidateFromParentBlockRoot=${invalidateFromParentBlockRoot} in forkChoice`);
615
630
  }
@@ -793,8 +808,7 @@ export class ProtoArray {
793
808
  });
794
809
  }
795
810
  // Get canonical node: FULL for pre-Gloas, PENDING for Gloas
796
- const defaultStatus = this.getDefaultVariant(justifiedRoot);
797
- const justifiedIndex = defaultStatus !== undefined ? this.getNodeIndexByRootAndStatus(justifiedRoot, defaultStatus) : undefined;
811
+ const justifiedIndex = this.getDefaultNodeIndex(justifiedRoot);
798
812
  if (justifiedIndex === undefined) {
799
813
  throw new ProtoArrayError({
800
814
  code: ProtoArrayErrorCode.JUSTIFIED_NODE_UNKNOWN,
@@ -1246,10 +1260,8 @@ export class ProtoArray {
1246
1260
  * For Gloas blocks: returns EMPTY/FULL variants (not PENDING) based on parent payload status
1247
1261
  * For pre-Gloas blocks: returns FULL variants
1248
1262
  */
1249
- *iterateAncestorNodes(blockRoot) {
1250
- // Get canonical node: FULL for pre-Gloas, PENDING for Gloas
1251
- const defaultStatus = this.getDefaultVariant(blockRoot);
1252
- const startIndex = defaultStatus !== undefined ? this.getNodeIndexByRootAndStatus(blockRoot, defaultStatus) : undefined;
1263
+ *iterateAncestorNodes(blockRoot, payloadStatus) {
1264
+ const startIndex = this.getNodeIndexByRootAndStatus(blockRoot, payloadStatus);
1253
1265
  if (startIndex === undefined) {
1254
1266
  return;
1255
1267
  }
@@ -1283,10 +1295,8 @@ export class ProtoArray {
1283
1295
  * For Gloas blocks: returns EMPTY/FULL variants (not PENDING) based on parent payload status
1284
1296
  * For pre-Gloas blocks: returns FULL variants
1285
1297
  */
1286
- getAllAncestorNodes(blockRoot) {
1287
- // Get canonical node: FULL for pre-Gloas, PENDING for Gloas
1288
- const defaultStatus = this.getDefaultVariant(blockRoot);
1289
- const startIndex = defaultStatus !== undefined ? this.getNodeIndexByRootAndStatus(blockRoot, defaultStatus) : undefined;
1298
+ getAllAncestorNodes(blockRoot, payloadStatus) {
1299
+ const startIndex = this.getNodeIndexByRootAndStatus(blockRoot, payloadStatus);
1290
1300
  if (startIndex === undefined) {
1291
1301
  return [];
1292
1302
  }
@@ -1297,11 +1307,9 @@ export class ProtoArray {
1297
1307
  index: startIndex,
1298
1308
  });
1299
1309
  }
1300
- // Include starting node if node is pre-gloas
1301
- // Reason why we exclude post-gloas is because node is always default variant (PENDING)
1302
- // which we want to exclude.
1310
+ // Exclude PENDING variant from returned ancestors.
1303
1311
  const nodes = [];
1304
- if (!isGloasBlock(node)) {
1312
+ if (node.payloadStatus !== PayloadStatus.PENDING) {
1305
1313
  nodes.push(node);
1306
1314
  }
1307
1315
  while (node.parent !== undefined) {
@@ -1322,13 +1330,8 @@ export class ProtoArray {
1322
1330
  * For Gloas blocks: returns EMPTY/FULL variants (not PENDING) based on parent payload status
1323
1331
  * For pre-Gloas blocks: returns FULL variants
1324
1332
  */
1325
- getAllNonAncestorNodes(blockRoot) {
1326
- // Get canonical node: FULL for pre-Gloas, PENDING for Gloas
1327
- const defaultStatus = this.getDefaultVariant(blockRoot);
1328
- if (defaultStatus === undefined) {
1329
- return [];
1330
- }
1331
- const startIndex = this.getNodeIndexByRootAndStatus(blockRoot, defaultStatus);
1333
+ getAllNonAncestorNodes(blockRoot, payloadStatus) {
1334
+ const startIndex = this.getNodeIndexByRootAndStatus(blockRoot, payloadStatus);
1332
1335
  if (startIndex === undefined) {
1333
1336
  return [];
1334
1337
  }
@@ -1362,10 +1365,8 @@ export class ProtoArray {
1362
1365
  * For Gloas blocks: returns EMPTY/FULL variants (not PENDING) based on parent payload status
1363
1366
  * For pre-Gloas blocks: returns FULL variants
1364
1367
  */
1365
- getAllAncestorAndNonAncestorNodes(blockRoot) {
1366
- // Get canonical node: FULL for pre-Gloas, PENDING for Gloas
1367
- const defaultStatus = this.getDefaultVariant(blockRoot);
1368
- const startIndex = defaultStatus !== undefined ? this.getNodeIndexByRootAndStatus(blockRoot, defaultStatus) : undefined;
1368
+ getAllAncestorAndNonAncestorNodes(blockRoot, payloadStatus) {
1369
+ const startIndex = this.getNodeIndexByRootAndStatus(blockRoot, payloadStatus);
1369
1370
  if (startIndex === undefined) {
1370
1371
  return { ancestors: [], nonAncestors: [] };
1371
1372
  }
@@ -1404,12 +1405,7 @@ export class ProtoArray {
1404
1405
  * Uses default variant (PENDING for Gloas, FULL for pre-Gloas)
1405
1406
  */
1406
1407
  hasBlock(blockRoot) {
1407
- const defaultVariant = this.getDefaultVariant(blockRoot);
1408
- if (defaultVariant === undefined) {
1409
- return false;
1410
- }
1411
- const index = this.getNodeIndexByRootAndStatus(blockRoot, defaultVariant);
1412
- return index !== undefined;
1408
+ return this.getDefaultNodeIndex(blockRoot) !== undefined;
1413
1409
  }
1414
1410
  /**
1415
1411
  * Return ProtoNode for blockRoot with explicit payload status
@@ -1468,24 +1464,21 @@ export class ProtoArray {
1468
1464
  /**
1469
1465
  * Returns `true` if the `descendantRoot` has an ancestor with `ancestorRoot`.
1470
1466
  * Always returns `false` if either input roots are unknown.
1471
- * Still returns `true` if `ancestorRoot` === `descendantRoot` (and the roots are known)
1467
+ * Still returns `true` if `ancestorRoot` === `descendantRoot` and payload statuses match.
1472
1468
  */
1473
- isDescendant(ancestorRoot, descendantRoot) {
1474
- // We use the default variant (PENDING for Gloas, FULL for pre-Gloas)
1475
- // We cannot use FULL/EMPTY variants for Gloas because they may not be canonical
1476
- const defaultStatus = this.getDefaultVariant(ancestorRoot);
1477
- const ancestorNode = defaultStatus !== undefined ? this.getNode(ancestorRoot, defaultStatus) : undefined;
1469
+ isDescendant(ancestorRoot, ancestorPayloadStatus, descendantRoot, descendantPayloadStatus) {
1470
+ const ancestorNode = this.getNode(ancestorRoot, ancestorPayloadStatus);
1478
1471
  if (!ancestorNode) {
1479
1472
  return false;
1480
1473
  }
1481
- if (ancestorRoot === descendantRoot) {
1474
+ if (ancestorRoot === descendantRoot && ancestorPayloadStatus === descendantPayloadStatus) {
1482
1475
  return true;
1483
1476
  }
1484
- for (const node of this.iterateAncestorNodes(descendantRoot)) {
1477
+ for (const node of this.iterateAncestorNodes(descendantRoot, descendantPayloadStatus)) {
1485
1478
  if (node.slot < ancestorNode.slot) {
1486
1479
  return false;
1487
1480
  }
1488
- if (node.blockRoot === ancestorNode.blockRoot) {
1481
+ if (node.blockRoot === ancestorNode.blockRoot && node.payloadStatus === ancestorNode.payloadStatus) {
1489
1482
  return true;
1490
1483
  }
1491
1484
  }