@lodestar/fork-choice 1.41.0-dev.bb33751bfd → 1.41.0-dev.be5acbb8f7

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.
Files changed (44) hide show
  1. package/lib/forkChoice/errors.d.ts +9 -1
  2. package/lib/forkChoice/errors.d.ts.map +1 -1
  3. package/lib/forkChoice/errors.js +4 -0
  4. package/lib/forkChoice/errors.js.map +1 -1
  5. package/lib/forkChoice/forkChoice.d.ts +73 -17
  6. package/lib/forkChoice/forkChoice.d.ts.map +1 -1
  7. package/lib/forkChoice/forkChoice.js +299 -116
  8. package/lib/forkChoice/forkChoice.js.map +1 -1
  9. package/lib/forkChoice/interface.d.ts +53 -20
  10. package/lib/forkChoice/interface.d.ts.map +1 -1
  11. package/lib/forkChoice/interface.js.map +1 -1
  12. package/lib/forkChoice/store.d.ts +40 -16
  13. package/lib/forkChoice/store.d.ts.map +1 -1
  14. package/lib/forkChoice/store.js +22 -4
  15. package/lib/forkChoice/store.js.map +1 -1
  16. package/lib/index.d.ts +4 -4
  17. package/lib/index.d.ts.map +1 -1
  18. package/lib/index.js +2 -2
  19. package/lib/index.js.map +1 -1
  20. package/lib/protoArray/computeDeltas.d.ts.map +1 -1
  21. package/lib/protoArray/computeDeltas.js +3 -0
  22. package/lib/protoArray/computeDeltas.js.map +1 -1
  23. package/lib/protoArray/errors.d.ts +15 -2
  24. package/lib/protoArray/errors.d.ts.map +1 -1
  25. package/lib/protoArray/errors.js +3 -0
  26. package/lib/protoArray/errors.js.map +1 -1
  27. package/lib/protoArray/interface.d.ts +20 -2
  28. package/lib/protoArray/interface.d.ts.map +1 -1
  29. package/lib/protoArray/interface.js +16 -0
  30. package/lib/protoArray/interface.js.map +1 -1
  31. package/lib/protoArray/protoArray.d.ts +217 -22
  32. package/lib/protoArray/protoArray.d.ts.map +1 -1
  33. package/lib/protoArray/protoArray.js +748 -133
  34. package/lib/protoArray/protoArray.js.map +1 -1
  35. package/package.json +7 -7
  36. package/src/forkChoice/errors.ts +7 -2
  37. package/src/forkChoice/forkChoice.ts +384 -126
  38. package/src/forkChoice/interface.ts +72 -20
  39. package/src/forkChoice/store.ts +52 -20
  40. package/src/index.ts +10 -2
  41. package/src/protoArray/computeDeltas.ts +6 -0
  42. package/src/protoArray/errors.ts +7 -1
  43. package/src/protoArray/interface.ts +36 -3
  44. package/src/protoArray/protoArray.ts +880 -134
@@ -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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"}
@@ -13,6 +13,8 @@ export type LVHExecError = {
13
13
  export declare enum ProtoArrayErrorCode {
14
14
  FINALIZED_NODE_UNKNOWN = "PROTO_ARRAY_ERROR_FINALIZED_NODE_UNKNOWN",
15
15
  JUSTIFIED_NODE_UNKNOWN = "PROTO_ARRAY_ERROR_JUSTIFIED_NODE_UNKNOWN",
16
+ UNKNOWN_BLOCK = "PROTO_ARRAY_ERROR_UNKNOWN_BLOCK",
17
+ UNKNOWN_PARENT_BLOCK = "PROTO_ARRAY_ERROR_UNKNOWN_PARENT_BLOCK",
16
18
  INVALID_FINALIZED_ROOT_CHANGE = "PROTO_ARRAY_ERROR_INVALID_FINALIZED_ROOT_CHANGE",
17
19
  INVALID_NODE_INDEX = "PROTO_ARRAY_ERROR_INVALID_NODE_INDEX",
18
20
  INVALID_PARENT_INDEX = "PROTO_ARRAY_ERROR_INVALID_PARENT_INDEX",
@@ -27,7 +29,8 @@ export declare enum ProtoArrayErrorCode {
27
29
  INVALID_BEST_NODE = "PROTO_ARRAY_ERROR_INVALID_BEST_NODE",
28
30
  INVALID_BLOCK_EXECUTION_STATUS = "PROTO_ARRAY_INVALID_BLOCK_EXECUTION_STATUS",
29
31
  INVALID_JUSTIFIED_EXECUTION_STATUS = "PROTO_ARRAY_INVALID_JUSTIFIED_EXECUTION_STATUS",
30
- INVALID_LVH_EXECUTION_RESPONSE = "PROTO_ARRAY_INVALID_LVH_EXECUTION_RESPONSE"
32
+ INVALID_LVH_EXECUTION_RESPONSE = "PROTO_ARRAY_INVALID_LVH_EXECUTION_RESPONSE",
33
+ PRE_GLOAS_BLOCK = "PROTO_ARRAY_ERROR_PRE_GLOAS_BLOCK"
31
34
  }
32
35
  export type ProtoArrayErrorType = {
33
36
  code: ProtoArrayErrorCode.FINALIZED_NODE_UNKNOWN;
@@ -35,6 +38,13 @@ export type ProtoArrayErrorType = {
35
38
  } | {
36
39
  code: ProtoArrayErrorCode.JUSTIFIED_NODE_UNKNOWN;
37
40
  root: RootHex;
41
+ } | {
42
+ code: ProtoArrayErrorCode.UNKNOWN_BLOCK;
43
+ root: RootHex;
44
+ } | {
45
+ code: ProtoArrayErrorCode.UNKNOWN_PARENT_BLOCK;
46
+ parentRoot: RootHex;
47
+ parentHash: RootHex | null;
38
48
  } | {
39
49
  code: ProtoArrayErrorCode.INVALID_FINALIZED_ROOT_CHANGE;
40
50
  } | {
@@ -85,7 +95,10 @@ export type ProtoArrayErrorType = {
85
95
  root: RootHex;
86
96
  } | ({
87
97
  code: ProtoArrayErrorCode.INVALID_LVH_EXECUTION_RESPONSE;
88
- } & LVHExecError);
98
+ } & LVHExecError) | {
99
+ code: ProtoArrayErrorCode.PRE_GLOAS_BLOCK;
100
+ root: RootHex;
101
+ };
89
102
  export declare class ProtoArrayError extends LodestarError<ProtoArrayErrorType> {
90
103
  }
91
104
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/protoArray/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/protoArray/errors.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,8 @@ export var ProtoArrayErrorCode;
9
9
  (function (ProtoArrayErrorCode) {
10
10
  ProtoArrayErrorCode["FINALIZED_NODE_UNKNOWN"] = "PROTO_ARRAY_ERROR_FINALIZED_NODE_UNKNOWN";
11
11
  ProtoArrayErrorCode["JUSTIFIED_NODE_UNKNOWN"] = "PROTO_ARRAY_ERROR_JUSTIFIED_NODE_UNKNOWN";
12
+ ProtoArrayErrorCode["UNKNOWN_BLOCK"] = "PROTO_ARRAY_ERROR_UNKNOWN_BLOCK";
13
+ ProtoArrayErrorCode["UNKNOWN_PARENT_BLOCK"] = "PROTO_ARRAY_ERROR_UNKNOWN_PARENT_BLOCK";
12
14
  ProtoArrayErrorCode["INVALID_FINALIZED_ROOT_CHANGE"] = "PROTO_ARRAY_ERROR_INVALID_FINALIZED_ROOT_CHANGE";
13
15
  ProtoArrayErrorCode["INVALID_NODE_INDEX"] = "PROTO_ARRAY_ERROR_INVALID_NODE_INDEX";
14
16
  ProtoArrayErrorCode["INVALID_PARENT_INDEX"] = "PROTO_ARRAY_ERROR_INVALID_PARENT_INDEX";
@@ -24,6 +26,7 @@ export var ProtoArrayErrorCode;
24
26
  ProtoArrayErrorCode["INVALID_BLOCK_EXECUTION_STATUS"] = "PROTO_ARRAY_INVALID_BLOCK_EXECUTION_STATUS";
25
27
  ProtoArrayErrorCode["INVALID_JUSTIFIED_EXECUTION_STATUS"] = "PROTO_ARRAY_INVALID_JUSTIFIED_EXECUTION_STATUS";
26
28
  ProtoArrayErrorCode["INVALID_LVH_EXECUTION_RESPONSE"] = "PROTO_ARRAY_INVALID_LVH_EXECUTION_RESPONSE";
29
+ ProtoArrayErrorCode["PRE_GLOAS_BLOCK"] = "PROTO_ARRAY_ERROR_PRE_GLOAS_BLOCK";
27
30
  })(ProtoArrayErrorCode || (ProtoArrayErrorCode = {}));
28
31
  export class ProtoArrayError extends LodestarError {
29
32
  }
@@ -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,mBAkBX;AAlBD,WAAY,mBAAmB;IAC7B,0FAAmE,CAAA;IACnE,0FAAmE,CAAA;IACnE,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;AAC/E,CAAC,EAlBW,mBAAmB,KAAnB,mBAAmB,QAkB9B;AA6BD,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;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"}
@@ -29,6 +29,19 @@ export declare enum ExecutionStatus {
29
29
  Invalid = "Invalid",
30
30
  PayloadSeparated = "PayloadSeparated"
31
31
  }
32
+ /**
33
+ * Payload status for ePBS (Gloas fork)
34
+ * Spec: gloas/fork-choice.md#constants
35
+ */
36
+ export declare enum PayloadStatus {
37
+ PENDING = 0,
38
+ EMPTY = 1,
39
+ FULL = 2
40
+ }
41
+ /**
42
+ * Check if a block is in the Gloas fork (ePBS enabled)
43
+ */
44
+ export declare function isGloasBlock(block: ProtoBlock): boolean;
32
45
  export type LVHValidResponse = {
33
46
  executionStatus: ExecutionStatus.Valid;
34
47
  latestValidExecHash: RootHex;
@@ -85,12 +98,17 @@ export type ProtoBlock = BlockExtraMeta & {
85
98
  unrealizedFinalizedEpoch: Epoch;
86
99
  unrealizedFinalizedRoot: RootHex;
87
100
  timeliness: boolean;
88
- builderIndex?: number;
89
- blockHashHex?: RootHex;
101
+ /** Payload status for this node (Gloas fork). Always FULL in pre-gloas */
102
+ payloadStatus: PayloadStatus;
103
+ builderIndex: number | null;
104
+ blockHashFromBid: RootHex | null;
105
+ parentBlockHash: RootHex | null;
90
106
  };
91
107
  /**
92
108
  * A block root with additional metadata required to form a DAG
93
109
  * with vote weights and best blocks stored as metadata
110
+ *
111
+ * It is also used as ForkChoiceNode in fork choice spec
94
112
  */
95
113
  export type ProtoNode = ProtoBlock & {
96
114
  parent?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/protoArray/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAIhE,eAAO,MAAM,aAAa,uEAAuE,CAAC;AAElG;;;;GAIG;AACH,eAAO,MAAM,eAAe,aAAa,CAAC;AAE1C;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B;;;;;;;;;;GAUG;AACH,oBAAY,eAAe;IACzB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,gBAAgB,qBAAqB;CACtC;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,eAAe,EAAE,eAAe,CAAC,KAAK,CAAC;IACvC,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,eAAe,EAAE,eAAe,CAAC,OAAO,CAAC;IACzC,mBAAmB,EAAE,OAAO,GAAG,IAAI,CAAC;IACpC,6BAA6B,EAAE,OAAO,CAAC;CACxC,CAAC;AACF,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;AAEpE,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAAC,eAAe,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;AAE1F,MAAM,MAAM,cAAc,GACtB;IACE,yBAAyB,EAAE,OAAO,CAAC;IACnC,sBAAsB,EAAE,SAAS,CAAC;IAClC,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IACpE,sBAAsB,EAAE,sBAAsB,CAAC;CAChD,GACD;IACE,yBAAyB,EAAE,IAAI,CAAC;IAChC,eAAe,EAAE,eAAe,CAAC,QAAQ,CAAC;IAC1C,sBAAsB,EAAE,sBAAsB,CAAC,OAAO,CAAC;CACxD,CAAC;AAEN;;;;GAIG;AAEH,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG;IACxC;;;;OAIG;IACH,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB,cAAc,EAAE,KAAK,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,KAAK,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,wBAAwB,EAAE,KAAK,CAAC;IAChC,uBAAuB,EAAE,OAAO,CAAC;IACjC,wBAAwB,EAAE,KAAK,CAAC;IAChC,uBAAuB,EAAE,OAAO,CAAC;IAGjC,UAAU,EAAE,OAAO,CAAC;IAGpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC"}
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/protoArray/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAIhE,eAAO,MAAM,aAAa,uEAAuE,CAAC;AAElG;;;;GAIG;AACH,eAAO,MAAM,eAAe,aAAa,CAAC;AAE1C;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B;;;;;;;;;;GAUG;AACH,oBAAY,eAAe;IACzB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,gBAAgB,qBAAqB;CACtC;AAED;;;GAGG;AACH,oBAAY,aAAa;IACvB,OAAO,IAAI;IACX,KAAK,IAAI;IACT,IAAI,IAAI;CACT;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAEvD;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,eAAe,EAAE,eAAe,CAAC,KAAK,CAAC;IACvC,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,eAAe,EAAE,eAAe,CAAC,OAAO,CAAC;IACzC,mBAAmB,EAAE,OAAO,GAAG,IAAI,CAAC;IACpC,6BAA6B,EAAE,OAAO,CAAC;CACxC,CAAC;AACF,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;AAEpE,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAAC,eAAe,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;AAE1F,MAAM,MAAM,cAAc,GACtB;IAME,yBAAyB,EAAE,OAAO,CAAC;IACnC,sBAAsB,EAAE,SAAS,CAAC;IAClC,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IACpE,sBAAsB,EAAE,sBAAsB,CAAC;CAChD,GACD;IACE,yBAAyB,EAAE,IAAI,CAAC;IAChC,eAAe,EAAE,eAAe,CAAC,QAAQ,CAAC;IAC1C,sBAAsB,EAAE,sBAAsB,CAAC,OAAO,CAAC;CACxD,CAAC;AAEN;;;;GAIG;AAEH,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG;IACxC;;;;OAIG;IACH,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB,cAAc,EAAE,KAAK,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,KAAK,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,wBAAwB,EAAE,KAAK,CAAC;IAChC,uBAAuB,EAAE,OAAO,CAAC;IACjC,wBAAwB,EAAE,KAAK,CAAC;IAChC,uBAAuB,EAAE,OAAO,CAAC;IAGjC,UAAU,EAAE,OAAO,CAAC;IAEpB,0EAA0E;IAC1E,aAAa,EAAE,aAAa,CAAC;IAI7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5B,gBAAgB,EAAE,OAAO,GAAG,IAAI,CAAC;IAIjC,eAAe,EAAE,OAAO,GAAG,IAAI,CAAC;CACjC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC"}
@@ -26,4 +26,20 @@ export var ExecutionStatus;
26
26
  ExecutionStatus["Invalid"] = "Invalid";
27
27
  ExecutionStatus["PayloadSeparated"] = "PayloadSeparated";
28
28
  })(ExecutionStatus || (ExecutionStatus = {}));
29
+ /**
30
+ * Payload status for ePBS (Gloas fork)
31
+ * Spec: gloas/fork-choice.md#constants
32
+ */
33
+ export var PayloadStatus;
34
+ (function (PayloadStatus) {
35
+ PayloadStatus[PayloadStatus["PENDING"] = 0] = "PENDING";
36
+ PayloadStatus[PayloadStatus["EMPTY"] = 1] = "EMPTY";
37
+ PayloadStatus[PayloadStatus["FULL"] = 2] = "FULL";
38
+ })(PayloadStatus || (PayloadStatus = {}));
39
+ /**
40
+ * Check if a block is in the Gloas fork (ePBS enabled)
41
+ */
42
+ export function isGloasBlock(block) {
43
+ return block.parentBlockHash !== null;
44
+ }
29
45
  //# sourceMappingURL=interface.js.map
@@ -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"}
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,11 +1,20 @@
1
1
  import { Epoch, RootHex, Slot } from "@lodestar/types";
2
2
  import { LVHExecError } from "./errors.js";
3
- import { LVHExecResponse, ProtoBlock, ProtoNode } from "./interface.js";
3
+ import { LVHExecResponse, PayloadStatus, ProtoBlock, ProtoNode } from "./interface.js";
4
4
  export declare const DEFAULT_PRUNE_THRESHOLD = 0;
5
5
  type ProposerBoost = {
6
6
  root: RootHex;
7
7
  score: number;
8
8
  };
9
+ /** Pre-Gloas: single element, FULL index (for backward compatibility) */
10
+ type PreGloasVariantIndex = number;
11
+ /**
12
+ * Post-Gloas: array length is 2 or 3
13
+ * - Length 2: [PENDING_INDEX, EMPTY_INDEX] when payload hasn't arrived yet
14
+ * - Length 3: [PENDING_INDEX, EMPTY_INDEX, FULL_INDEX] when payload has arrived
15
+ */
16
+ type GloasVariantIndices = [number, number] | [number, number, number];
17
+ type VariantIndices = PreGloasVariantIndex | GloasVariantIndices;
9
18
  export declare class ProtoArray {
10
19
  pruneThreshold: number;
11
20
  justifiedEpoch: Epoch;
@@ -13,9 +22,28 @@ export declare class ProtoArray {
13
22
  finalizedEpoch: Epoch;
14
23
  finalizedRoot: RootHex;
15
24
  nodes: ProtoNode[];
16
- indices: Map<string, number>;
25
+ /**
26
+ * Maps block root to array of node indices for each payload status variant
27
+ *
28
+ * Array structure: [PENDING, EMPTY, FULL] where indices correspond to PayloadStatus enum values
29
+ * - number[0] = PENDING variant index (PayloadStatus.PENDING = 0)
30
+ * - number[1] = EMPTY variant index (PayloadStatus.EMPTY = 1)
31
+ * - number[2] = FULL variant index (PayloadStatus.FULL = 2)
32
+ *
33
+ * Note: undefined array elements indicate that variant doesn't exist for this block
34
+ */
35
+ indices: Map<string, VariantIndices>;
17
36
  lvhError?: LVHExecError;
18
37
  private previousProposerBoost;
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)
41
+ * Spec: gloas/fork-choice.md#modified-store (line 148)
42
+ *
43
+ * ptcVotes[blockRoot][i] = true if PTC member i voted payload_present=true
44
+ * Used by is_payload_timely() to determine if payload is timely
45
+ */
46
+ private ptcVotes;
19
47
  constructor({ pruneThreshold, justifiedEpoch, justifiedRoot, finalizedEpoch, finalizedRoot, }: {
20
48
  pruneThreshold: number;
21
49
  justifiedEpoch: Epoch;
@@ -24,6 +52,54 @@ export declare class ProtoArray {
24
52
  finalizedRoot: RootHex;
25
53
  });
26
54
  static initialize(block: Omit<ProtoBlock, "targetRoot">, currentSlot: Slot): ProtoArray;
55
+ /**
56
+ * Get node index for a block root and payload status
57
+ *
58
+ * @param root - The block root to look up
59
+ * @param payloadStatus - The specific payload status variant (PENDING/EMPTY/FULL)
60
+ * @returns The node index for the specified variant, or undefined if not found
61
+ *
62
+ * Behavior:
63
+ * - Pre-Gloas blocks: only FULL is valid, PENDING/EMPTY throw error
64
+ * - Gloas blocks: returns the specified variant index, or undefined if that variant doesn't exist
65
+ *
66
+ * Note: payloadStatus is required. Use getDefaultVariant() to get the canonical variant.
67
+ */
68
+ getNodeIndexByRootAndStatus(root: RootHex, payloadStatus: PayloadStatus): number | undefined;
69
+ /**
70
+ * Get the default/canonical payload status for a block root
71
+ * - Pre-Gloas blocks: Returns FULL (payload embedded in block)
72
+ * - Gloas blocks: Returns PENDING (canonical variant)
73
+ *
74
+ * @param blockRoot - The block root to check
75
+ * @returns PayloadStatus.FULL for pre-Gloas, PayloadStatus.PENDING for Gloas, undefined if block not found
76
+ */
77
+ getDefaultVariant(blockRoot: RootHex): PayloadStatus | undefined;
78
+ /**
79
+ * Determine which parent payload status a block extends
80
+ * Spec: gloas/fork-choice.md#new-get_parent_payload_status
81
+ * def get_parent_payload_status(store: Store, block: BeaconBlock) -> PayloadStatus:
82
+ * parent = store.blocks[block.parent_root]
83
+ * parent_block_hash = block.body.signed_execution_payload_bid.message.parent_block_hash
84
+ * message_block_hash = parent.body.signed_execution_payload_bid.message.block_hash
85
+ * return PAYLOAD_STATUS_FULL if parent_block_hash == message_block_hash else PAYLOAD_STATUS_EMPTY
86
+ *
87
+ * In lodestar forkchoice, we don't store the full bid, so we compares parent_block_hash in child's bid with executionPayloadBlockHash in parent:
88
+ * - If it matches EMPTY variant, return EMPTY
89
+ * - If it matches FULL variant, return FULL
90
+ * - If no match, throw UNKNOWN_PARENT_BLOCK error
91
+ *
92
+ * For pre-Gloas blocks: always returns FULL
93
+ */
94
+ getParentPayloadStatus(block: ProtoBlock): PayloadStatus;
95
+ /**
96
+ * Return the parent `ProtoBlock` given its root and block hash.
97
+ */
98
+ getParent(parentRoot: RootHex, parentBlockHash: RootHex | null): ProtoBlock | null;
99
+ /**
100
+ * Returns an EMPTY or FULL `ProtoBlock` that has matching block root and block hash
101
+ */
102
+ getBlockHexAndBlockHash(blockRoot: RootHex, blockHash: RootHex): ProtoBlock | null;
27
103
  /**
28
104
  * Iterate backwards through the array, touching all nodes and their parents and potentially
29
105
  * the best-child of each parent.
@@ -53,7 +129,57 @@ export declare class ProtoArray {
53
129
  *
54
130
  * It is only sane to supply an undefined parent for the genesis block
55
131
  */
56
- onBlock(block: ProtoBlock, currentSlot: Slot): void;
132
+ onBlock(block: ProtoBlock, currentSlot: Slot, proposerBoostRoot: RootHex | null): void;
133
+ /**
134
+ * Called when an execution payload is received for a block (Gloas only)
135
+ * Creates a FULL variant node as a sibling to the existing EMPTY variant
136
+ * Both EMPTY and FULL have parent = own PENDING node
137
+ *
138
+ * Spec: gloas/fork-choice.md (on_execution_payload event)
139
+ */
140
+ onExecutionPayload(blockRoot: RootHex, currentSlot: Slot, executionPayloadBlockHash: RootHex, executionPayloadNumber: number, executionPayloadStateRoot: RootHex, proposerBoostRoot: RootHex | null): void;
141
+ /**
142
+ * Update PTC votes for multiple validators attesting to a block
143
+ * Spec: gloas/fork-choice.md#new-on_payload_attestation_message
144
+ *
145
+ * @param blockRoot - The beacon block root being attested
146
+ * @param ptcIndices - Array of PTC committee indices that voted (0..PTC_SIZE-1)
147
+ * @param payloadPresent - Whether the validators attest the payload is present
148
+ */
149
+ notifyPtcMessages(blockRoot: RootHex, ptcIndices: number[], payloadPresent: boolean): void;
150
+ /**
151
+ * Check if execution payload for a block is timely
152
+ * Spec: gloas/fork-choice.md#new-is_payload_timely
153
+ *
154
+ * Returns true if:
155
+ * 1. Block has PTC votes tracked
156
+ * 2. Payload is locally available (FULL variant exists in proto array)
157
+ * 3. More than PAYLOAD_TIMELY_THRESHOLD (>50% of PTC) members voted payload_present=true
158
+ *
159
+ * @param blockRoot - The beacon block root to check
160
+ */
161
+ isPayloadTimely(blockRoot: RootHex): boolean;
162
+ /**
163
+ * Check if parent node is FULL
164
+ * Spec: gloas/fork-choice.md#new-is_parent_node_full
165
+ *
166
+ * Returns true if the parent payload status (determined by block.parentBlockHash) is FULL
167
+ */
168
+ isParentNodeFull(block: ProtoBlock): boolean;
169
+ /**
170
+ * Determine if we should extend the payload (prefer FULL over EMPTY)
171
+ * Spec: gloas/fork-choice.md#new-should_extend_payload
172
+ *
173
+ * Returns true if:
174
+ * 1. Payload is timely, OR
175
+ * 2. No proposer boost root (empty/zero hash), OR
176
+ * 3. Proposer boost root's parent is not this block, OR
177
+ * 4. Proposer boost root extends FULL parent
178
+ *
179
+ * @param blockRoot - The block root to check
180
+ * @param proposerBoostRoot - Current proposer boost root (from ForkChoice)
181
+ */
182
+ shouldExtendPayload(blockRoot: RootHex, proposerBoostRoot: RootHex | null): boolean;
57
183
  /**
58
184
  * Optimistic sync validate till validated latest hash, invalidate any descendant branch
59
185
  * if invalidate till hash provided. If consensus fails, this will invalidate entire
@@ -74,10 +200,25 @@ export declare class ProtoArray {
74
200
  private getNodeIndexFromLVH;
75
201
  private invalidateNodeByIndex;
76
202
  private validateNodeByIndex;
203
+ /**
204
+ * Get payload status tiebreaker for fork choice comparison
205
+ * Spec: gloas/fork-choice.md#new-get_payload_status_tiebreaker
206
+ *
207
+ * For PENDING nodes: always returns 0
208
+ * For EMPTY/FULL variants from slot n-1: implements tiebreaker logic based on should_extend_payload
209
+ * For older blocks: returns node.payloadStatus
210
+ *
211
+ * Note: pre-gloas logic won't reach here. Pre-Gloas blocks have different roots, so they are always resolved by the weight and root tiebreaker before reaching here.
212
+ */
213
+ private getPayloadStatusTiebreaker;
77
214
  /**
78
215
  * Follows the best-descendant links to find the best-block (i.e., head-block).
216
+ *
217
+ * Returns the ProtoNode representing the head.
218
+ * For pre-Gloas forks, only FULL variants exist (payload embedded).
219
+ * For Gloas, may return PENDING/EMPTY/FULL variants.
79
220
  */
80
- findHead(justifiedRoot: RootHex, currentSlot: Slot): RootHex;
221
+ findHead(justifiedRoot: RootHex, currentSlot: Slot): ProtoNode;
81
222
  /**
82
223
  * Update the tree with new finalization information. The tree is only actually pruned if both
83
224
  * of the two following criteria are met:
@@ -108,7 +249,7 @@ export declare class ProtoArray {
108
249
  * - The child is not the best child but becomes the best child.
109
250
  * - The child is not the best child and does not become the best child.
110
251
  */
111
- maybeUpdateBestChildAndDescendant(parentIndex: number, childIndex: number, currentSlot: Slot): void;
252
+ maybeUpdateBestChildAndDescendant(parentIndex: number, childIndex: number, currentSlot: Slot, proposerBoostRoot: RootHex | null): void;
112
253
  /**
113
254
  * Indicates if the node itself is viable for the head, or if it's best descendant is viable
114
255
  * for the head.
@@ -132,57 +273,111 @@ export declare class ProtoArray {
132
273
  /**
133
274
  * Same to getAncestor but it may return null instead of throwing error
134
275
  */
135
- getAncestorOrNull(blockRoot: RootHex, ancestorSlot: Slot): RootHex | null;
276
+ getAncestorOrNull(blockRoot: RootHex, ancestorSlot: Slot): ProtoNode | null;
136
277
  /**
137
- * Returns the block root of an ancestor of `blockRoot` at the given `slot`.
278
+ * Returns the node identifier of an ancestor of `blockRoot` at the given `slot`.
138
279
  * (Note: `slot` refers to the block that is *returned*, not the one that is supplied.)
139
280
  *
140
281
  * NOTE: May be expensive: potentially walks through the entire fork of head to finalized block
141
282
  *
142
283
  * ### Specification
143
284
  *
144
- * Equivalent to:
285
+ * Modified for Gloas to return node identifier instead of just root:
286
+ * https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.1/specs/gloas/fork-choice.md#modified-get_ancestor
145
287
  *
146
- * https://github.com/ethereum/consensus-specs/blob/v1.1.10/specs/phase0/fork-choice.md#get_ancestor
288
+ * Pre-Gloas: Returns (root, PAYLOAD_STATUS_FULL)
289
+ * Gloas: Returns (root, payloadStatus) based on actual node state
147
290
  */
148
- getAncestor(blockRoot: RootHex, ancestorSlot: Slot): RootHex;
291
+ getAncestor(blockRoot: RootHex, ancestorSlot: Slot): ProtoNode;
149
292
  /**
150
- * Iterate from a block root backwards over nodes
293
+ * Get the parent node index for traversal
294
+ * For Gloas blocks: returns the correct EMPTY/FULL variant based on parent payload status
295
+ * For pre-Gloas blocks: returns the simple parent index
296
+ * Returns undefined if parent doesn't exist or can't be found
151
297
  */
152
- iterateAncestorNodes(blockRoot: RootHex): IterableIterator<ProtoNode>;
298
+ private getParentNodeIndex;
153
299
  /**
154
300
  * Iterate from a block root backwards over nodes
301
+ * For Gloas blocks: returns EMPTY/FULL variants (not PENDING) based on parent payload status
302
+ * For pre-Gloas blocks: returns FULL variants
303
+ */
304
+ iterateAncestorNodes(blockRoot: RootHex, payloadStatus: PayloadStatus): IterableIterator<ProtoNode>;
305
+ /**
306
+ * Iterate from a node backwards over ancestor nodes
307
+ * For Gloas blocks: returns EMPTY/FULL variants (not PENDING) based on parent payload status
308
+ * For pre-Gloas blocks: returns FULL variants
309
+ * Handles fork transition from Gloas to pre-Gloas blocks
155
310
  */
156
311
  iterateAncestorNodesFromNode(node: ProtoNode): IterableIterator<ProtoNode>;
157
312
  /**
158
313
  * Get all nodes from a block root backwards
314
+ * For Gloas blocks: returns EMPTY/FULL variants (not PENDING) based on parent payload status
315
+ * For pre-Gloas blocks: returns FULL variants
159
316
  */
160
- getAllAncestorNodes(blockRoot: RootHex): ProtoNode[];
317
+ getAllAncestorNodes(blockRoot: RootHex, payloadStatus: PayloadStatus): ProtoNode[];
161
318
  /**
162
319
  * The opposite of iterateNodes.
163
320
  * iterateNodes is to find ancestor nodes of a blockRoot.
164
321
  * this is to find non-ancestor nodes of a blockRoot.
322
+ *
323
+ * For Gloas blocks: returns EMPTY/FULL variants (not PENDING) based on parent payload status
324
+ * For pre-Gloas blocks: returns FULL variants
165
325
  */
166
- getAllNonAncestorNodes(blockRoot: RootHex): ProtoNode[];
326
+ getAllNonAncestorNodes(blockRoot: RootHex, payloadStatus: PayloadStatus): ProtoNode[];
167
327
  /**
168
328
  * Returns both ancestor and non-ancestor nodes in a single traversal.
329
+ * For Gloas blocks: returns EMPTY/FULL variants (not PENDING) based on parent payload status
330
+ * For pre-Gloas blocks: returns FULL variants
169
331
  */
170
- getAllAncestorAndNonAncestorNodes(blockRoot: RootHex): {
332
+ getAllAncestorAndNonAncestorNodes(blockRoot: RootHex, payloadStatus: PayloadStatus): {
171
333
  ancestors: ProtoNode[];
172
334
  nonAncestors: ProtoNode[];
173
335
  };
336
+ /**
337
+ * Check if a block exists in the proto array
338
+ * Uses default variant (PENDING for Gloas, FULL for pre-Gloas)
339
+ */
174
340
  hasBlock(blockRoot: RootHex): boolean;
175
- getNode(blockRoot: RootHex): ProtoNode | undefined;
176
- /** Return MUTABLE ProtoBlock for blockRoot (spreads properties) */
177
- getBlock(blockRoot: RootHex): ProtoBlock | undefined;
178
- /** Return NON-MUTABLE ProtoBlock for blockRoot (does not spread properties) */
179
- getBlockReadonly(blockRoot: RootHex): ProtoBlock;
341
+ /**
342
+ * Return ProtoNode for blockRoot with explicit payload status
343
+ *
344
+ * @param blockRoot - The block root to look up
345
+ * @param payloadStatus - The specific payload status variant (PENDING/EMPTY/FULL)
346
+ * @returns The ProtoNode for the specified variant, or undefined if not found
347
+ *
348
+ * Note: Callers must explicitly specify which variant they need.
349
+ * Use getDefaultVariant() to get the canonical variant for a block.
350
+ */
351
+ getNode(blockRoot: RootHex, payloadStatus: PayloadStatus): ProtoNode | undefined;
352
+ /**
353
+ * Return MUTABLE ProtoBlock for blockRoot with explicit payload status
354
+ *
355
+ * @param blockRoot - The block root to look up
356
+ * @param payloadStatus - The specific payload status variant (PENDING/EMPTY/FULL)
357
+ * @returns The ProtoBlock for the specified variant (spreads properties), or undefined if not found
358
+ *
359
+ * Note: Callers must explicitly specify which variant they need.
360
+ * Use getDefaultVariant() to get the canonical variant for a block.
361
+ */
362
+ getBlock(blockRoot: RootHex, payloadStatus: PayloadStatus): ProtoBlock | undefined;
363
+ /**
364
+ * Return NON-MUTABLE ProtoBlock for blockRoot with explicit payload status
365
+ *
366
+ * @param blockRoot - The block root to look up
367
+ * @param payloadStatus - The specific payload status variant (PENDING/EMPTY/FULL)
368
+ * @returns The ProtoBlock for the specified variant (does not spread properties)
369
+ * @throws Error if block not found
370
+ *
371
+ * Note: Callers must explicitly specify which variant they need.
372
+ * Use getDefaultVariant() to get the canonical variant for a block.
373
+ */
374
+ getBlockReadonly(blockRoot: RootHex, payloadStatus: PayloadStatus): ProtoBlock;
180
375
  /**
181
376
  * Returns `true` if the `descendantRoot` has an ancestor with `ancestorRoot`.
182
377
  * Always returns `false` if either input roots are unknown.
183
- * Still returns `true` if `ancestorRoot` === `descendantRoot` (and the roots are known)
378
+ * Still returns `true` if `ancestorRoot` === `descendantRoot` and payload statuses match.
184
379
  */
185
- isDescendant(ancestorRoot: RootHex, descendantRoot: RootHex): boolean;
380
+ isDescendant(ancestorRoot: RootHex, ancestorPayloadStatus: PayloadStatus, descendantRoot: RootHex, descendantPayloadStatus: PayloadStatus): boolean;
186
381
  /**
187
382
  * Returns a common ancestor for nodeA or nodeB or null if there's none
188
383
  */
@@ -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":"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"}