@lodestar/era 1.45.0-dev.67b1b61d1b → 1.45.0-dev.8d73a6a8cb
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/era/reader.d.ts +3 -3
- package/lib/era/reader.d.ts.map +1 -1
- package/lib/era/reader.js +6 -6
- package/lib/era/reader.js.map +1 -1
- package/lib/era/util.d.ts +6 -6
- package/lib/era/util.d.ts.map +1 -1
- package/lib/era/util.js +3 -3
- package/lib/era/util.js.map +1 -1
- package/lib/era/writer.d.ts +3 -3
- package/lib/era/writer.d.ts.map +1 -1
- package/lib/era/writer.js +8 -8
- package/lib/era/writer.js.map +1 -1
- package/package.json +7 -7
- package/src/era/reader.ts +12 -6
- package/src/era/util.ts +7 -7
- package/src/era/writer.ts +14 -9
package/lib/era/reader.d.ts
CHANGED
|
@@ -13,11 +13,11 @@ export declare class EraReader {
|
|
|
13
13
|
readonly fh: FileHandle;
|
|
14
14
|
/** The era number retrieved from the file name */
|
|
15
15
|
readonly eraNumber: number;
|
|
16
|
-
/** The short
|
|
17
|
-
readonly
|
|
16
|
+
/** The short historical root retrieved from the file name */
|
|
17
|
+
readonly shortHistoricalRoot: string;
|
|
18
18
|
/** An array of state and block indices, one per group */
|
|
19
19
|
readonly groups: EraIndices[];
|
|
20
|
-
constructor(config: ChainForkConfig, fh: FileHandle, eraNumber: number,
|
|
20
|
+
constructor(config: ChainForkConfig, fh: FileHandle, eraNumber: number, shortHistoricalRoot: string, indices: EraIndices[]);
|
|
21
21
|
static open(config: ChainForkConfig, path: string): Promise<EraReader>;
|
|
22
22
|
/**
|
|
23
23
|
* Close the underlying file descriptor
|
package/lib/era/reader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../src/era/reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,UAAU,EAAO,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAC,eAAe,EAAsB,MAAM,kBAAkB,CAAC;AAEtE,OAAO,EAAC,WAAW,EAAE,iBAAiB,EAAE,IAAI,EAAM,MAAM,iBAAiB,CAAC;AAI1E,OAAO,EACL,UAAU,EAKX,MAAM,WAAW,CAAC;AAEnB;;;;GAIG;AACH,qBAAa,SAAS;IACpB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,iCAAiC;IACjC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC;IACxB,kDAAkD;IAClD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,
|
|
1
|
+
{"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../src/era/reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,UAAU,EAAO,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAC,eAAe,EAAsB,MAAM,kBAAkB,CAAC;AAEtE,OAAO,EAAC,WAAW,EAAE,iBAAiB,EAAE,IAAI,EAAM,MAAM,iBAAiB,CAAC;AAI1E,OAAO,EACL,UAAU,EAKX,MAAM,WAAW,CAAC;AAEnB;;;;GAIG;AACH,qBAAa,SAAS;IACpB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,iCAAiC;IACjC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC;IACxB,kDAAkD;IAClD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,6DAA6D;IAC7D,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,yDAAyD;IACzD,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC;IAE9B,YACE,MAAM,EAAE,eAAe,EACvB,EAAE,EAAE,UAAU,EACd,SAAS,EAAE,MAAM,EACjB,mBAAmB,EAAE,MAAM,EAC3B,OAAO,EAAE,UAAU,EAAE,EAOtB;IAED,OAAa,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAS3E;IAED;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;IAEK,mBAAmB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAajE;IAEK,mBAAmB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAGjE;IAEK,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAIxD;IAEK,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAqBhE;IAEK,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAIhE;IAEK,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAI7D;IAED;;;;;;OAMG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAgE9B;CACF"}
|
package/lib/era/reader.js
CHANGED
|
@@ -19,26 +19,26 @@ export class EraReader {
|
|
|
19
19
|
fh;
|
|
20
20
|
/** The era number retrieved from the file name */
|
|
21
21
|
eraNumber;
|
|
22
|
-
/** The short
|
|
23
|
-
|
|
22
|
+
/** The short historical root retrieved from the file name */
|
|
23
|
+
shortHistoricalRoot;
|
|
24
24
|
/** An array of state and block indices, one per group */
|
|
25
25
|
groups;
|
|
26
|
-
constructor(config, fh, eraNumber,
|
|
26
|
+
constructor(config, fh, eraNumber, shortHistoricalRoot, indices) {
|
|
27
27
|
this.config = config;
|
|
28
28
|
this.fh = fh;
|
|
29
29
|
this.eraNumber = eraNumber;
|
|
30
|
-
this.
|
|
30
|
+
this.shortHistoricalRoot = shortHistoricalRoot;
|
|
31
31
|
this.groups = indices;
|
|
32
32
|
}
|
|
33
33
|
static async open(config, path) {
|
|
34
34
|
const fh = await open(path, "r");
|
|
35
35
|
const name = basename(path);
|
|
36
|
-
const { configName, eraNumber,
|
|
36
|
+
const { configName, eraNumber, shortHistoricalRoot } = parseEraName(name);
|
|
37
37
|
if (config.CONFIG_NAME !== configName) {
|
|
38
38
|
throw new Error(`Config name mismatch: expected ${config.CONFIG_NAME}, got ${configName}`);
|
|
39
39
|
}
|
|
40
40
|
const indices = await readAllEraIndices(fh);
|
|
41
|
-
return new EraReader(config, fh, eraNumber,
|
|
41
|
+
return new EraReader(config, fh, eraNumber, shortHistoricalRoot, indices);
|
|
42
42
|
}
|
|
43
43
|
/**
|
|
44
44
|
* Close the underlying file descriptor
|
package/lib/era/reader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reader.js","sourceRoot":"","sources":["../../src/era/reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,IAAI,EAAC,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAC,QAAQ,EAAC,MAAM,WAAW,CAAC;AACnC,OAAO,EAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAkB,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAC,sBAAsB,EAAE,YAAY,EAAE,yBAAyB,EAAC,MAAM,kBAAkB,CAAC;AACjG,OAAO,EAAuC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAC,eAAe,EAAC,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAC,mBAAmB,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAC,MAAM,WAAW,CAAC;AACjF,OAAO,EAAC,gBAAgB,EAAC,MAAM,YAAY,CAAC;AAC5C,OAAO,EAEL,6BAA6B,EAC7B,YAAY,EACZ,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,WAAW,CAAC;AAEnB;;;;GAIG;AACH,MAAM,OAAO,SAAS;IACX,MAAM,CAAkB;IACjC,iCAAiC;IACxB,EAAE,CAAa;IACxB,kDAAkD;IACzC,SAAS,CAAS;IAC3B,
|
|
1
|
+
{"version":3,"file":"reader.js","sourceRoot":"","sources":["../../src/era/reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,IAAI,EAAC,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAC,QAAQ,EAAC,MAAM,WAAW,CAAC;AACnC,OAAO,EAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAkB,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAC,sBAAsB,EAAE,YAAY,EAAE,yBAAyB,EAAC,MAAM,kBAAkB,CAAC;AACjG,OAAO,EAAuC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAC,eAAe,EAAC,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAC,mBAAmB,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAC,MAAM,WAAW,CAAC;AACjF,OAAO,EAAC,gBAAgB,EAAC,MAAM,YAAY,CAAC;AAC5C,OAAO,EAEL,6BAA6B,EAC7B,YAAY,EACZ,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,WAAW,CAAC;AAEnB;;;;GAIG;AACH,MAAM,OAAO,SAAS;IACX,MAAM,CAAkB;IACjC,iCAAiC;IACxB,EAAE,CAAa;IACxB,kDAAkD;IACzC,SAAS,CAAS;IAC3B,6DAA6D;IACpD,mBAAmB,CAAS;IACrC,yDAAyD;IAChD,MAAM,CAAe;IAE9B,YACE,MAAuB,EACvB,EAAc,EACd,SAAiB,EACjB,mBAA2B,EAC3B,OAAqB,EACrB;QACA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;IAAA,CACvB;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAuB,EAAE,IAAY,EAAsB;QAC3E,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,EAAC,UAAU,EAAE,SAAS,EAAE,mBAAmB,EAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACxE,IAAI,MAAM,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,kCAAkC,MAAM,CAAC,WAAW,SAAS,UAAU,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAC;IAAA,CAC3E;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK,GAAkB;QAC3B,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAAA,CACvB;IAED,KAAK,CAAC,mBAAmB,CAAC,SAAkB,EAAuB;QACjE,SAAS,GAAG,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,iCAAiC,SAAS,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnG,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,qBAAqB,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,uCAAuC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC;IAAA,CACnB;IAED,KAAK,CAAC,mBAAmB,CAAC,SAAkB,EAAuB;QACjE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAC7D,OAAO,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAAA,CACrC;IAED,KAAK,CAAC,SAAS,CAAC,SAAkB,EAAwB;QACxD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,4BAA4B,CAAC,UAAU,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAAA,CAChF;IAED,KAAK,CAAC,mBAAmB,CAAC,IAAU,EAA8B;QAChE,MAAM,OAAO,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,kBAAkB,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,uCAAuC,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,oCAAoC;QACpC,MAAM,WAAW,GAAG,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC;QACvD,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACtF,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,CAAC,aAAa;QAC5B,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC/C,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,2BAA2B,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CAAC,6CAA6C,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC;QACrG,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC;IAAA,CACnB;IAED,KAAK,CAAC,mBAAmB,CAAC,IAAU,EAA8B;QAChE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,UAAU,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACrC,OAAO,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAAA,CACrC;IAED,KAAK,CAAC,SAAS,CAAC,IAAU,EAAqC;QAC7D,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,UAAU,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACrC,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAAA,CACjF;IAED;;;;;;OAMG;IACH,KAAK,CAAC,QAAQ,GAAkB;QAC9B,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC;YACvE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAEtC,yBAAyB;YACzB,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW;gBAC7B,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,mBAAmB;gBACpF,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC;YACrF,MAAM,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAElC,iBAAiB;YACjB,4EAA4E;YAC5E,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC9C,MAAM,aAAa,GAAG,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAC;YAEpF,IAAI,SAAS,KAAK,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;gBACzC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;YACtE,CAAC;YACD,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;gBACpB,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;oBACvB,MAAM,IAAI,KAAK,CAAC,OAAO,SAAS,0BAA0B,CAAC,CAAC;gBAC9D,CAAC;gBAED,kBAAkB;gBAClB,KACE,IAAI,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,EACtC,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EACrE,IAAI,EAAE,EACN,CAAC;oBACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBACzC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;wBACnB,IAAI,IAAI,KAAK,KAAK,CAAC,WAAW,CAAC,SAAS;4BAAE,SAAS,CAAC,kDAAkD;wBACtG,IACE,CAAC,eAAe,CACd,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,yBAAyB,CAAC,EACxD,KAAK,CAAC,UAAU,CAAC,IAAI,GAAG,yBAAyB,CAAC,CACnD,EACD,CAAC;4BACD,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,iBAAiB,CAAC,CAAC;wBACxE,CAAC;wBACD,SAAS;oBACX,CAAC;oBAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACzF,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,GAAG,yBAAyB,CAAC,CAAC,EAAE,CAAC;wBACpF,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;oBACzD,CAAC;oBACD,6CAA6C;oBAC7C,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;wBAC1B,SAAS;oBACX,CAAC;oBACD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC;wBAC9C,UAAU,EAAE,SAAS;wBACrB,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,sBAAsB,CAAC;qBAC9D,CAAC,CAAC;oBACH,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;oBACrF,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBACjD,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;wBACtC,MAAM,IAAI,KAAK,CAAC,+CAA+C,IAAI,EAAE,CAAC,CAAC;oBACzE,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IAAA,CACF;CACF"}
|
package/lib/era/util.d.ts
CHANGED
|
@@ -4,15 +4,15 @@ import { BeaconState, Slot } from "@lodestar/types";
|
|
|
4
4
|
import { SlotIndex } from "../e2s.js";
|
|
5
5
|
/**
|
|
6
6
|
* Parsed components of an .era file name.
|
|
7
|
-
* Format: <config-name>-<era-number>-<short-
|
|
7
|
+
* Format: <config-name>-<era-number>-<short-historical-root>.era
|
|
8
8
|
*/
|
|
9
9
|
export interface EraFileName {
|
|
10
10
|
/** CONFIG_NAME field of runtime config (mainnet, sepolia, hoodi, etc.) */
|
|
11
11
|
configName: string;
|
|
12
12
|
/** Number of the first era stored in file, 5-digit zero-padded (00000, 00001, etc.) */
|
|
13
13
|
eraNumber: number;
|
|
14
|
-
/** First 4 bytes of last
|
|
15
|
-
|
|
14
|
+
/** First 4 bytes of last historical root, lower-case hex-encoded (8 chars) */
|
|
15
|
+
shortHistoricalRoot: string;
|
|
16
16
|
}
|
|
17
17
|
export interface EraIndices {
|
|
18
18
|
stateIndex: SlotIndex;
|
|
@@ -26,12 +26,12 @@ export declare function computeStartBlockSlotFromEraNumber(eraNumber: number): S
|
|
|
26
26
|
/**
|
|
27
27
|
* Parse era filename.
|
|
28
28
|
*
|
|
29
|
-
* Format: `<config-name>-<era-number>-<short-
|
|
29
|
+
* Format: `<config-name>-<era-number>-<short-historical-root>.era`
|
|
30
30
|
*/
|
|
31
31
|
export declare function parseEraName(filename: string): {
|
|
32
32
|
configName: string;
|
|
33
33
|
eraNumber: number;
|
|
34
|
-
|
|
34
|
+
shortHistoricalRoot: string;
|
|
35
35
|
};
|
|
36
36
|
/**
|
|
37
37
|
* Read all indices from an era file.
|
|
@@ -42,5 +42,5 @@ export declare function readAllEraIndices(fh: FileHandle): Promise<EraIndices[]>
|
|
|
42
42
|
*/
|
|
43
43
|
export declare function readEraIndexes(fh: FileHandle, end: number): Promise<EraIndices>;
|
|
44
44
|
export declare function readSlotFromBeaconStateBytes(beaconStateBytes: Uint8Array): Slot;
|
|
45
|
-
export declare function
|
|
45
|
+
export declare function getShortHistoricalRoot(config: ChainForkConfig, state: BeaconState): string;
|
|
46
46
|
//# sourceMappingURL=util.d.ts.map
|
package/lib/era/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/era/util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAC,WAAW,EAAE,IAAI,EAAe,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAsB,SAAS,EAAgB,MAAM,WAAW,CAAC;AAGxE;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,0EAA0E;IAC1E,UAAU,EAAE,MAAM,CAAC;IACnB,uFAAuF;IACvF,SAAS,EAAE,MAAM,CAAC;IAClB,
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/era/util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAC,WAAW,EAAE,IAAI,EAAe,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAsB,SAAS,EAAgB,MAAM,WAAW,CAAC;AAGxE;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,0EAA0E;IAC1E,UAAU,EAAE,MAAM,CAAC;IACnB,uFAAuF;IACvF,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,SAAS,CAAC;IACtB,WAAW,CAAC,EAAE,SAAS,CAAC;CACzB;AAED,oDAAoD;AACpD,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAEpE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAE1E;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAEhE;AAED,wBAAgB,kCAAkC,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAK1E;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAA;CAAC,CAUnH;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAY7E;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CA2BrF;AAED,wBAAgB,4BAA4B,CAAC,gBAAgB,EAAE,UAAU,GAAG,IAAI,CAO/E;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,CAa1F"}
|
package/lib/era/util.js
CHANGED
|
@@ -21,7 +21,7 @@ export function computeStartBlockSlotFromEraNumber(eraNumber) {
|
|
|
21
21
|
/**
|
|
22
22
|
* Parse era filename.
|
|
23
23
|
*
|
|
24
|
-
* Format: `<config-name>-<era-number>-<short-
|
|
24
|
+
* Format: `<config-name>-<era-number>-<short-historical-root>.era`
|
|
25
25
|
*/
|
|
26
26
|
export function parseEraName(filename) {
|
|
27
27
|
const match = filename.match(/^(.*)-(\d{5})-([0-9a-f]{8})\.era$/);
|
|
@@ -31,7 +31,7 @@ export function parseEraName(filename) {
|
|
|
31
31
|
return {
|
|
32
32
|
configName: match[1],
|
|
33
33
|
eraNumber: parseInt(match[2], 10),
|
|
34
|
-
|
|
34
|
+
shortHistoricalRoot: match[3],
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
37
|
/**
|
|
@@ -79,7 +79,7 @@ export function readSlotFromBeaconStateBytes(beaconStateBytes) {
|
|
|
79
79
|
// slot is at offset 40: 8 (genesisTime) + 32 (genesisValidatorsRoot)
|
|
80
80
|
40);
|
|
81
81
|
}
|
|
82
|
-
export function
|
|
82
|
+
export function getShortHistoricalRoot(config, state) {
|
|
83
83
|
return Buffer.from(state.slot === 0
|
|
84
84
|
? state.genesisValidatorsRoot
|
|
85
85
|
: // Post-Capella, historical_roots is replaced by historical_summaries
|
package/lib/era/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/era/util.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,yBAAyB,EAAE,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAA6B,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAC,mBAAmB,EAAa,aAAa,EAAC,MAAM,WAAW,CAAC;AACxE,OAAO,EAAC,UAAU,EAAC,MAAM,YAAY,CAAC;AAoBtC,oDAAoD;AACpD,MAAM,UAAU,aAAa,CAAC,IAAU,EAAE,SAAiB,EAAW;IACpE,OAAO,6BAA6B,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;AAAA,CAC1D;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAU,EAAE,SAAiB,EAAW;IAC1E,OAAO,IAAI,GAAG,yBAAyB,KAAK,CAAC,IAAI,IAAI,GAAG,yBAAyB,KAAK,SAAS,CAAC;AAAA,CACjG;AAED,MAAM,UAAU,6BAA6B,CAAC,IAAU,EAAU;IAChE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC;AAAA,CACzD;AAED,MAAM,UAAU,kCAAkC,CAAC,SAAiB,EAAQ;IAC1E,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,yBAAyB,CAAC;AAAA,CACpD;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB,
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/era/util.ts"],"names":[],"mappings":"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"}
|
package/lib/era/writer.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ type WriterState = {
|
|
|
20
20
|
type: WriterStateType.FinishedGroup;
|
|
21
21
|
eraNumber: number;
|
|
22
22
|
currentOffset: number;
|
|
23
|
-
|
|
23
|
+
shortHistoricalRoot: string;
|
|
24
24
|
};
|
|
25
25
|
/**
|
|
26
26
|
* EraWriter is responsible for writing ERA files.
|
|
@@ -37,8 +37,8 @@ export declare class EraWriter {
|
|
|
37
37
|
static create(config: ChainForkConfig, path: string, eraNumber: number): Promise<EraWriter>;
|
|
38
38
|
finish(): Promise<string>;
|
|
39
39
|
writeVersion(): Promise<void>;
|
|
40
|
-
writeCompressedState(slot: Slot,
|
|
41
|
-
writeSerializedState(slot: Slot,
|
|
40
|
+
writeCompressedState(slot: Slot, shortHistoricalRoot: string, data: Uint8Array): Promise<void>;
|
|
41
|
+
writeSerializedState(slot: Slot, shortHistoricalRoot: string, data: Uint8Array): Promise<void>;
|
|
42
42
|
writeState(state: BeaconState): Promise<void>;
|
|
43
43
|
writeCompressedBlock(slot: Slot, data: Uint8Array): Promise<void>;
|
|
44
44
|
writeSerializedBlock(slot: Slot, data: Uint8Array): Promise<void>;
|
package/lib/era/writer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/era/writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,UAAU,EAAe,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAC,WAAW,EAAE,iBAAiB,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/era/writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,UAAU,EAAe,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAC,WAAW,EAAE,iBAAiB,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;AAUrE,aAAK,eAAe;IAClB,SAAS,IAAA;IACT,UAAU,IAAA;IACV,aAAa,IAAA;CACd;AAED,KAAK,WAAW,GACZ;IACE,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IACE,IAAI,EAAE,eAAe,CAAC,UAAU,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,IAAI,CAAC;CAChB,GACD;IACE,IAAI,EAAE,eAAe,CAAC,aAAa,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEN;;;;GAIG;AACH,qBAAa,SAAS;IACpB,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,UAAU,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,WAAW,CAAC;IAEnB,YAAY,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAUnF;IAED,OAAa,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAGhG;IAEK,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAc9B;IAEK,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAoBlC;IAEK,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA6CnG;IAEK,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAGnG;IAEK,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAMlD;IAEK,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBtE;IAEK,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAGtE;IAEK,UAAU,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAKxD;CACF"}
|
package/lib/era/writer.js
CHANGED
|
@@ -3,7 +3,7 @@ import { format, parse } from "node:path";
|
|
|
3
3
|
import { SLOTS_PER_HISTORICAL_ROOT } from "@lodestar/params";
|
|
4
4
|
import { E2STORE_HEADER_SIZE, EntryType, serializeSlotIndex, writeEntry } from "../e2s.js";
|
|
5
5
|
import { snappyCompress } from "../util.js";
|
|
6
|
-
import { computeStartBlockSlotFromEraNumber,
|
|
6
|
+
import { computeStartBlockSlotFromEraNumber, getShortHistoricalRoot, isSlotInRange, isValidEraStateSlot, } from "./util.js";
|
|
7
7
|
var WriterStateType;
|
|
8
8
|
(function (WriterStateType) {
|
|
9
9
|
WriterStateType[WriterStateType["InitGroup"] = 0] = "InitGroup";
|
|
@@ -44,7 +44,7 @@ export class EraWriter {
|
|
|
44
44
|
const pathParts = parse(this.path);
|
|
45
45
|
const newPath = format({
|
|
46
46
|
...pathParts,
|
|
47
|
-
base: `${this.config.CONFIG_NAME}-${String(this.eraNumber).padStart(5, "0")}-${this.state.
|
|
47
|
+
base: `${this.config.CONFIG_NAME}-${String(this.eraNumber).padStart(5, "0")}-${this.state.shortHistoricalRoot}.era`,
|
|
48
48
|
});
|
|
49
49
|
await rename(this.path, newPath);
|
|
50
50
|
return newPath;
|
|
@@ -70,7 +70,7 @@ export class EraWriter {
|
|
|
70
70
|
lastSlot: computeStartBlockSlotFromEraNumber(this.state.eraNumber) - 1,
|
|
71
71
|
};
|
|
72
72
|
}
|
|
73
|
-
async writeCompressedState(slot,
|
|
73
|
+
async writeCompressedState(slot, shortHistoricalRoot, data) {
|
|
74
74
|
if (this.state.type === WriterStateType.InitGroup) {
|
|
75
75
|
await this.writeVersion();
|
|
76
76
|
}
|
|
@@ -111,18 +111,18 @@ export class EraWriter {
|
|
|
111
111
|
type: WriterStateType.FinishedGroup,
|
|
112
112
|
eraNumber: this.state.eraNumber,
|
|
113
113
|
currentOffset: this.state.currentOffset,
|
|
114
|
-
|
|
114
|
+
shortHistoricalRoot,
|
|
115
115
|
};
|
|
116
116
|
}
|
|
117
|
-
async writeSerializedState(slot,
|
|
117
|
+
async writeSerializedState(slot, shortHistoricalRoot, data) {
|
|
118
118
|
const compressed = await snappyCompress(data);
|
|
119
|
-
await this.writeCompressedState(slot,
|
|
119
|
+
await this.writeCompressedState(slot, shortHistoricalRoot, compressed);
|
|
120
120
|
}
|
|
121
121
|
async writeState(state) {
|
|
122
122
|
const slot = state.slot;
|
|
123
|
-
const
|
|
123
|
+
const shortHistoricalRoot = getShortHistoricalRoot(this.config, state);
|
|
124
124
|
const ssz = this.config.getForkTypes(slot).BeaconState.serialize(state);
|
|
125
|
-
await this.writeSerializedState(slot,
|
|
125
|
+
await this.writeSerializedState(slot, shortHistoricalRoot, ssz);
|
|
126
126
|
}
|
|
127
127
|
async writeCompressedBlock(slot, data) {
|
|
128
128
|
if (this.state.type === WriterStateType.InitGroup) {
|
package/lib/era/writer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/era/writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,IAAI,EAAE,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAC,MAAM,EAAE,KAAK,EAAC,MAAM,WAAW,CAAC;AAExC,OAAO,EAAC,yBAAyB,EAAC,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAC,mBAAmB,EAAE,SAAS,EAAa,kBAAkB,EAAE,UAAU,EAAC,MAAM,WAAW,CAAC;AACpG,OAAO,EAAC,cAAc,EAAC,MAAM,YAAY,CAAC;AAC1C,OAAO,
|
|
1
|
+
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/era/writer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"bugs": {
|
|
12
12
|
"url": "https://github.com/ChainSafe/lodestar/issues"
|
|
13
13
|
},
|
|
14
|
-
"version": "1.45.0-dev.
|
|
14
|
+
"version": "1.45.0-dev.8d73a6a8cb",
|
|
15
15
|
"type": "module",
|
|
16
16
|
"exports": {
|
|
17
17
|
".": {
|
|
@@ -40,11 +40,11 @@
|
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"@chainsafe/blst": "^2.2.0",
|
|
43
|
-
"@lodestar/config": "^1.45.0-dev.
|
|
44
|
-
"@lodestar/params": "^1.45.0-dev.
|
|
45
|
-
"@lodestar/reqresp": "^1.45.0-dev.
|
|
46
|
-
"@lodestar/types": "^1.45.0-dev.
|
|
47
|
-
"@lodestar/utils": "^1.45.0-dev.
|
|
43
|
+
"@lodestar/config": "^1.45.0-dev.8d73a6a8cb",
|
|
44
|
+
"@lodestar/params": "^1.45.0-dev.8d73a6a8cb",
|
|
45
|
+
"@lodestar/reqresp": "^1.45.0-dev.8d73a6a8cb",
|
|
46
|
+
"@lodestar/types": "^1.45.0-dev.8d73a6a8cb",
|
|
47
|
+
"@lodestar/utils": "^1.45.0-dev.8d73a6a8cb"
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "0537390960812671bc4a513d0c47f5fe2ef1ae30"
|
|
50
50
|
}
|
package/src/era/reader.ts
CHANGED
|
@@ -26,28 +26,34 @@ export class EraReader {
|
|
|
26
26
|
readonly fh: FileHandle;
|
|
27
27
|
/** The era number retrieved from the file name */
|
|
28
28
|
readonly eraNumber: number;
|
|
29
|
-
/** The short
|
|
30
|
-
readonly
|
|
29
|
+
/** The short historical root retrieved from the file name */
|
|
30
|
+
readonly shortHistoricalRoot: string;
|
|
31
31
|
/** An array of state and block indices, one per group */
|
|
32
32
|
readonly groups: EraIndices[];
|
|
33
33
|
|
|
34
|
-
constructor(
|
|
34
|
+
constructor(
|
|
35
|
+
config: ChainForkConfig,
|
|
36
|
+
fh: FileHandle,
|
|
37
|
+
eraNumber: number,
|
|
38
|
+
shortHistoricalRoot: string,
|
|
39
|
+
indices: EraIndices[]
|
|
40
|
+
) {
|
|
35
41
|
this.config = config;
|
|
36
42
|
this.fh = fh;
|
|
37
43
|
this.eraNumber = eraNumber;
|
|
38
|
-
this.
|
|
44
|
+
this.shortHistoricalRoot = shortHistoricalRoot;
|
|
39
45
|
this.groups = indices;
|
|
40
46
|
}
|
|
41
47
|
|
|
42
48
|
static async open(config: ChainForkConfig, path: string): Promise<EraReader> {
|
|
43
49
|
const fh = await open(path, "r");
|
|
44
50
|
const name = basename(path);
|
|
45
|
-
const {configName, eraNumber,
|
|
51
|
+
const {configName, eraNumber, shortHistoricalRoot} = parseEraName(name);
|
|
46
52
|
if (config.CONFIG_NAME !== configName) {
|
|
47
53
|
throw new Error(`Config name mismatch: expected ${config.CONFIG_NAME}, got ${configName}`);
|
|
48
54
|
}
|
|
49
55
|
const indices = await readAllEraIndices(fh);
|
|
50
|
-
return new EraReader(config, fh, eraNumber,
|
|
56
|
+
return new EraReader(config, fh, eraNumber, shortHistoricalRoot, indices);
|
|
51
57
|
}
|
|
52
58
|
|
|
53
59
|
/**
|
package/src/era/util.ts
CHANGED
|
@@ -7,15 +7,15 @@ import {readUint48} from "../util.js";
|
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Parsed components of an .era file name.
|
|
10
|
-
* Format: <config-name>-<era-number>-<short-
|
|
10
|
+
* Format: <config-name>-<era-number>-<short-historical-root>.era
|
|
11
11
|
*/
|
|
12
12
|
export interface EraFileName {
|
|
13
13
|
/** CONFIG_NAME field of runtime config (mainnet, sepolia, hoodi, etc.) */
|
|
14
14
|
configName: string;
|
|
15
15
|
/** Number of the first era stored in file, 5-digit zero-padded (00000, 00001, etc.) */
|
|
16
16
|
eraNumber: number;
|
|
17
|
-
/** First 4 bytes of last
|
|
18
|
-
|
|
17
|
+
/** First 4 bytes of last historical root, lower-case hex-encoded (8 chars) */
|
|
18
|
+
shortHistoricalRoot: string;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
export interface EraIndices {
|
|
@@ -46,9 +46,9 @@ export function computeStartBlockSlotFromEraNumber(eraNumber: number): Slot {
|
|
|
46
46
|
/**
|
|
47
47
|
* Parse era filename.
|
|
48
48
|
*
|
|
49
|
-
* Format: `<config-name>-<era-number>-<short-
|
|
49
|
+
* Format: `<config-name>-<era-number>-<short-historical-root>.era`
|
|
50
50
|
*/
|
|
51
|
-
export function parseEraName(filename: string): {configName: string; eraNumber: number;
|
|
51
|
+
export function parseEraName(filename: string): {configName: string; eraNumber: number; shortHistoricalRoot: string} {
|
|
52
52
|
const match = filename.match(/^(.*)-(\d{5})-([0-9a-f]{8})\.era$/);
|
|
53
53
|
if (!match) {
|
|
54
54
|
throw new Error(`Invalid era filename format: ${filename}`);
|
|
@@ -56,7 +56,7 @@ export function parseEraName(filename: string): {configName: string; eraNumber:
|
|
|
56
56
|
return {
|
|
57
57
|
configName: match[1],
|
|
58
58
|
eraNumber: parseInt(match[2], 10),
|
|
59
|
-
|
|
59
|
+
shortHistoricalRoot: match[3],
|
|
60
60
|
};
|
|
61
61
|
}
|
|
62
62
|
|
|
@@ -118,7 +118,7 @@ export function readSlotFromBeaconStateBytes(beaconStateBytes: Uint8Array): Slot
|
|
|
118
118
|
);
|
|
119
119
|
}
|
|
120
120
|
|
|
121
|
-
export function
|
|
121
|
+
export function getShortHistoricalRoot(config: ChainForkConfig, state: BeaconState): string {
|
|
122
122
|
return Buffer.from(
|
|
123
123
|
state.slot === 0
|
|
124
124
|
? state.genesisValidatorsRoot
|
package/src/era/writer.ts
CHANGED
|
@@ -5,7 +5,12 @@ import {SLOTS_PER_HISTORICAL_ROOT} from "@lodestar/params";
|
|
|
5
5
|
import {BeaconState, SignedBeaconBlock, Slot} from "@lodestar/types";
|
|
6
6
|
import {E2STORE_HEADER_SIZE, EntryType, SlotIndex, serializeSlotIndex, writeEntry} from "../e2s.js";
|
|
7
7
|
import {snappyCompress} from "../util.js";
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
computeStartBlockSlotFromEraNumber,
|
|
10
|
+
getShortHistoricalRoot,
|
|
11
|
+
isSlotInRange,
|
|
12
|
+
isValidEraStateSlot,
|
|
13
|
+
} from "./util.js";
|
|
9
14
|
|
|
10
15
|
enum WriterStateType {
|
|
11
16
|
InitGroup,
|
|
@@ -30,7 +35,7 @@ type WriterState =
|
|
|
30
35
|
type: WriterStateType.FinishedGroup;
|
|
31
36
|
eraNumber: number;
|
|
32
37
|
currentOffset: number;
|
|
33
|
-
|
|
38
|
+
shortHistoricalRoot: string;
|
|
34
39
|
};
|
|
35
40
|
|
|
36
41
|
/**
|
|
@@ -71,7 +76,7 @@ export class EraWriter {
|
|
|
71
76
|
const pathParts = parse(this.path);
|
|
72
77
|
const newPath = format({
|
|
73
78
|
...pathParts,
|
|
74
|
-
base: `${this.config.CONFIG_NAME}-${String(this.eraNumber).padStart(5, "0")}-${this.state.
|
|
79
|
+
base: `${this.config.CONFIG_NAME}-${String(this.eraNumber).padStart(5, "0")}-${this.state.shortHistoricalRoot}.era`,
|
|
75
80
|
});
|
|
76
81
|
await rename(this.path, newPath);
|
|
77
82
|
|
|
@@ -100,7 +105,7 @@ export class EraWriter {
|
|
|
100
105
|
};
|
|
101
106
|
}
|
|
102
107
|
|
|
103
|
-
async writeCompressedState(slot: Slot,
|
|
108
|
+
async writeCompressedState(slot: Slot, shortHistoricalRoot: string, data: Uint8Array): Promise<void> {
|
|
104
109
|
if (this.state.type === WriterStateType.InitGroup) {
|
|
105
110
|
await this.writeVersion();
|
|
106
111
|
}
|
|
@@ -143,21 +148,21 @@ export class EraWriter {
|
|
|
143
148
|
type: WriterStateType.FinishedGroup,
|
|
144
149
|
eraNumber: this.state.eraNumber,
|
|
145
150
|
currentOffset: this.state.currentOffset,
|
|
146
|
-
|
|
151
|
+
shortHistoricalRoot,
|
|
147
152
|
};
|
|
148
153
|
}
|
|
149
154
|
|
|
150
|
-
async writeSerializedState(slot: Slot,
|
|
155
|
+
async writeSerializedState(slot: Slot, shortHistoricalRoot: string, data: Uint8Array): Promise<void> {
|
|
151
156
|
const compressed = await snappyCompress(data);
|
|
152
|
-
await this.writeCompressedState(slot,
|
|
157
|
+
await this.writeCompressedState(slot, shortHistoricalRoot, compressed);
|
|
153
158
|
}
|
|
154
159
|
|
|
155
160
|
async writeState(state: BeaconState): Promise<void> {
|
|
156
161
|
const slot = state.slot;
|
|
157
|
-
const
|
|
162
|
+
const shortHistoricalRoot = getShortHistoricalRoot(this.config, state);
|
|
158
163
|
const ssz = this.config.getForkTypes(slot).BeaconState.serialize(state);
|
|
159
164
|
|
|
160
|
-
await this.writeSerializedState(slot,
|
|
165
|
+
await this.writeSerializedState(slot, shortHistoricalRoot, ssz);
|
|
161
166
|
}
|
|
162
167
|
|
|
163
168
|
async writeCompressedBlock(slot: Slot, data: Uint8Array): Promise<void> {
|