@chainsafe/lodestar 1.35.0-rc.1 → 1.35.0-rc.2
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/.git-data.json +1 -1
- package/lib/applyPreset.js +1 -1
- package/lib/applyPreset.js.map +1 -1
- package/lib/cmds/validator/options.d.ts.map +1 -1
- package/lib/cmds/validator/options.js +5 -3
- package/lib/cmds/validator/options.js.map +1 -1
- package/lib/options/beaconNodeOptions/api.d.ts +6 -0
- package/lib/options/beaconNodeOptions/api.d.ts.map +1 -1
- package/lib/options/beaconNodeOptions/api.js +14 -6
- package/lib/options/beaconNodeOptions/api.js.map +1 -1
- package/lib/util/hasher_bun.d.ts +3 -0
- package/lib/util/hasher_bun.d.ts.map +1 -0
- package/lib/util/hasher_bun.js +118 -0
- package/lib/util/hasher_bun.js.map +1 -0
- package/lib/util/hasher_nodejs.d.ts +3 -0
- package/lib/util/hasher_nodejs.d.ts.map +1 -0
- package/lib/util/hasher_nodejs.js +3 -0
- package/lib/util/hasher_nodejs.js.map +1 -0
- package/lib/util/logger.js +1 -1
- package/lib/util/logger.js.map +1 -1
- package/package.json +27 -15
- package/src/applyPreset.ts +2 -1
- package/src/cmds/validator/options.ts +5 -3
- package/src/options/beaconNodeOptions/api.ts +16 -6
- package/src/util/hasher_bun.ts +133 -0
- package/src/util/hasher_nodejs.ts +3 -0
- package/src/util/logger.ts +1 -1
package/.git-data.json
CHANGED
package/lib/applyPreset.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// MUST import this file first before anything and not import any Lodestar code.
|
|
2
|
+
import { hasher as hashtreeHasher } from "#hashtree-hasher";
|
|
2
3
|
import { setHasher } from "@chainsafe/persistent-merkle-tree";
|
|
3
|
-
import { hasher as hashtreeHasher } from "@chainsafe/persistent-merkle-tree/hasher/hashtree";
|
|
4
4
|
// Without setting this first, persistent-merkle-tree will use noble instead
|
|
5
5
|
setHasher(hashtreeHasher);
|
|
6
6
|
//
|
package/lib/applyPreset.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applyPreset.js","sourceRoot":"","sources":["../src/applyPreset.ts"],"names":[],"mappings":"AAAA,gFAAgF;
|
|
1
|
+
{"version":3,"file":"applyPreset.js","sourceRoot":"","sources":["../src/applyPreset.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/cmds/validator/options.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/cmds/validator/options.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { WireFormat, defaultInit } from "@lodestar/api";
|
|
2
2
|
import { defaultOptions } from "@lodestar/validator";
|
|
3
|
+
import { coerceCors, enabledAllBashFriendly } from "../../options/beaconNodeOptions/api.js";
|
|
3
4
|
import { logOptions } from "../../options/logOptions.js";
|
|
4
5
|
import { ensure0xPrefix } from "../../util/index.js";
|
|
5
6
|
import { keymanagerRestApiServerOptsDefault } from "./keymanager/server.js";
|
|
@@ -51,9 +52,10 @@ export const keymanagerOptions = {
|
|
|
51
52
|
},
|
|
52
53
|
"keymanager.cors": {
|
|
53
54
|
type: "string",
|
|
54
|
-
description:
|
|
55
|
+
description: `Configures the Access-Control-Allow-Origin CORS header for key manager API. Use '${enabledAllBashFriendly}' to allow all origins`,
|
|
55
56
|
defaultDescription: keymanagerRestApiServerOptsDefault.cors,
|
|
56
57
|
group: "keymanager",
|
|
58
|
+
coerce: coerceCors,
|
|
57
59
|
},
|
|
58
60
|
"keymanager.headerLimit": {
|
|
59
61
|
hidden: true,
|
|
@@ -124,12 +126,12 @@ export const validatorOptions = {
|
|
|
124
126
|
},
|
|
125
127
|
afterBlockDelaySlotFraction: {
|
|
126
128
|
hidden: true,
|
|
127
|
-
description: "Delay before publishing attestations if block comes early, as a fraction of
|
|
129
|
+
description: "Delay before publishing attestations if block comes early, as a fraction of SLOT_DURATION_MS (value is from 0 inclusive to 1 exclusive)",
|
|
128
130
|
type: "number",
|
|
129
131
|
},
|
|
130
132
|
scAfterBlockDelaySlotFraction: {
|
|
131
133
|
hidden: true,
|
|
132
|
-
description: "Delay before publishing SyncCommitteeSignature if block comes early, as a fraction of
|
|
134
|
+
description: "Delay before publishing SyncCommitteeSignature if block comes early, as a fraction of SLOT_DURATION_MS (value is from 0 inclusive to 1 exclusive)",
|
|
133
135
|
type: "number",
|
|
134
136
|
},
|
|
135
137
|
proposerSettingsFile: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/cmds/validator/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,WAAW,EAAC,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAU,UAAU,EAAC,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAC,kCAAkC,EAAC,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAC,mBAAmB,EAAE,qBAAqB,EAAC,MAAM,YAAY,CAAC;AAStE,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,WAAW;CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC/C,QAAQ,EAAE,MAAM;IAChB,YAAY,EAAE,MAAM;IACpB,cAAc,EAAE,MAAM;IACtB,kBAAkB,EAAE,KAAK;CAC1B,CAAC;AAEF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAmE1C,MAAM,CAAC,MAAM,iBAAiB,GAAsC;IAClE,UAAU,EAAE;QACV,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,+BAA+B;QAC5C,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,YAAY;KACpB;IACD,iBAAiB,EAAE;QACjB,KAAK,EAAE,CAAC,wBAAwB,CAAC;QACjC,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,+DAA+D;QAC5E,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,YAAY;KACpB;IACD,sBAAsB,EAAE;QACtB,KAAK,EAAE,CAAC,WAAW,CAAC;QACpB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,8EAA8E;QAC3F,KAAK,EAAE,YAAY;KACpB;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,8BAA8B;QAC3C,kBAAkB,EAAE,MAAM,CAAC,kCAAkC,CAAC,IAAI,CAAC;QACnE,KAAK,EAAE,YAAY;KACpB;IACD,oBAAoB,EAAE;QACpB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,8BAA8B;QAC3C,kBAAkB,EAAE,kCAAkC,CAAC,OAAO;QAC9D,KAAK,EAAE,YAAY;KACpB;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/cmds/validator/options.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { IBeaconNodeOptions } from "@lodestar/beacon-node";
|
|
2
2
|
import { CliCommandOptions } from "@lodestar/utils";
|
|
3
|
+
export declare const enabledAll = "*";
|
|
4
|
+
export declare const enabledAllBashFriendly = "all";
|
|
5
|
+
/**
|
|
6
|
+
* Coerce function to transform bash-friendly 'all' to CORS spec '*'
|
|
7
|
+
*/
|
|
8
|
+
export declare function coerceCors(cors: string): string;
|
|
3
9
|
export type ApiArgs = {
|
|
4
10
|
"api.maxGindicesInProof"?: number;
|
|
5
11
|
"rest.namespace"?: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/options/beaconNodeOptions/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAgC,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/options/beaconNodeOptions/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAgC,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAElD,eAAO,MAAM,UAAU,MAAM,CAAC;AAC9B,eAAO,MAAM,sBAAsB,QAAQ,CAAC;AAE5C;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAelE;AAED,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,OAAO,CA4E9C,CAAC"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { allNamespaces, defaultOptions } from "@lodestar/beacon-node";
|
|
2
|
-
const enabledAll = "*";
|
|
2
|
+
export const enabledAll = "*";
|
|
3
|
+
export const enabledAllBashFriendly = "all";
|
|
4
|
+
/**
|
|
5
|
+
* Coerce function to transform bash-friendly 'all' to CORS spec '*'
|
|
6
|
+
*/
|
|
7
|
+
export function coerceCors(cors) {
|
|
8
|
+
return cors === enabledAllBashFriendly ? enabledAll : cors;
|
|
9
|
+
}
|
|
3
10
|
export function parseArgs(args) {
|
|
4
11
|
return {
|
|
5
12
|
maxGindicesInProof: args["api.maxGindicesInProof"],
|
|
@@ -32,23 +39,24 @@ export const options = {
|
|
|
32
39
|
},
|
|
33
40
|
"rest.namespace": {
|
|
34
41
|
type: "array",
|
|
35
|
-
choices: [...allNamespaces, enabledAll],
|
|
36
|
-
description: `Pick namespaces to expose for HTTP API. Set to '${enabledAll}' to enable all namespaces`,
|
|
42
|
+
choices: [...allNamespaces, enabledAll, enabledAllBashFriendly],
|
|
43
|
+
description: `Pick namespaces to expose for HTTP API. Set to '${enabledAllBashFriendly}' (or '${enabledAll}') to enable all namespaces`,
|
|
37
44
|
defaultDescription: JSON.stringify(defaultOptions.api.rest.api),
|
|
38
45
|
group: "api",
|
|
39
46
|
coerce: (namespaces) => {
|
|
40
|
-
|
|
41
|
-
if (namespaces.includes(enabledAll))
|
|
47
|
+
if (namespaces.includes(enabledAll) || namespaces.includes(enabledAllBashFriendly)) {
|
|
42
48
|
return allNamespaces;
|
|
49
|
+
}
|
|
43
50
|
// Parse ["debug,lodestar"] to ["debug", "lodestar"]
|
|
44
51
|
return namespaces.flatMap((val) => val.split(","));
|
|
45
52
|
},
|
|
46
53
|
},
|
|
47
54
|
"rest.cors": {
|
|
48
55
|
type: "string",
|
|
49
|
-
description:
|
|
56
|
+
description: `Configures the Access-Control-Allow-Origin CORS header for HTTP API. Use '${enabledAllBashFriendly}' to allow all origins`,
|
|
50
57
|
defaultDescription: defaultOptions.api.rest.cors,
|
|
51
58
|
group: "api",
|
|
59
|
+
coerce: coerceCors,
|
|
52
60
|
},
|
|
53
61
|
"rest.address": {
|
|
54
62
|
type: "string",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/options/beaconNodeOptions/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,aAAa,EAAE,cAAc,EAAC,MAAM,uBAAuB,CAAC;AAGxF,MAAM,UAAU,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/options/beaconNodeOptions/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hasher_bun.d.ts","sourceRoot":"","sources":["../../src/util/hasher_bun.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,MAAM,EAKP,MAAM,mCAAmC,CAAC;AAsB3C,eAAO,MAAM,MAAM,EAAE,MAsEpB,CAAC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { byteArrayIntoHashObject } from "@chainsafe/as-sha256";
|
|
2
|
+
import { doDigestNLevel, doMerkleizeBlockArray, doMerkleizeBlocksBytes, } from "@chainsafe/persistent-merkle-tree";
|
|
3
|
+
import { digest2Bytes32, digest2Bytes32Into, hashInto } from "@lodestar/bun";
|
|
4
|
+
/**
|
|
5
|
+
* Best SIMD implementation is in 512 bits = 64 bytes
|
|
6
|
+
* If not, hashtree will make a loop inside
|
|
7
|
+
* Given sha256 operates on a block of 4 bytes, we can hash 16 inputs at once
|
|
8
|
+
* Each input is 64 bytes
|
|
9
|
+
*/
|
|
10
|
+
const PARALLEL_FACTOR = 16;
|
|
11
|
+
const MAX_INPUT_SIZE = PARALLEL_FACTOR * 64;
|
|
12
|
+
const uint8Input = new Uint8Array(MAX_INPUT_SIZE);
|
|
13
|
+
const uint32Input = new Uint32Array(uint8Input.buffer);
|
|
14
|
+
const uint8Output = new Uint8Array(PARALLEL_FACTOR * 32);
|
|
15
|
+
// having this will cause more memory to extract uint32
|
|
16
|
+
// const uint32Output = new Uint32Array(uint8Output.buffer);
|
|
17
|
+
// convenient reusable Uint8Array for hash64
|
|
18
|
+
const hash64Input = uint8Input.subarray(0, 64);
|
|
19
|
+
const hash64Output = uint8Output.subarray(0, 32);
|
|
20
|
+
// size input array to 2 HashObject per computation * 32 bytes per object
|
|
21
|
+
const destNodes = new Array(PARALLEL_FACTOR);
|
|
22
|
+
export const hasher = {
|
|
23
|
+
name: "hashtree-bun",
|
|
24
|
+
hashInto,
|
|
25
|
+
digest64(obj1, obj2) {
|
|
26
|
+
return digest2Bytes32(obj1, obj2);
|
|
27
|
+
},
|
|
28
|
+
digest64Into: (obj1, obj2, output) => {
|
|
29
|
+
digest2Bytes32Into(obj1, obj2, output);
|
|
30
|
+
},
|
|
31
|
+
digest64HashObjects(left, right, parent) {
|
|
32
|
+
hashObjectsToUint32Array(left, right, uint32Input);
|
|
33
|
+
hashInto(hash64Input, hash64Output);
|
|
34
|
+
byteArrayIntoHashObject(hash64Output, 0, parent);
|
|
35
|
+
},
|
|
36
|
+
merkleizeBlocksBytes(blocksBytes, padFor, output, offset) {
|
|
37
|
+
doMerkleizeBlocksBytes(blocksBytes, padFor, output, offset, hashInto);
|
|
38
|
+
},
|
|
39
|
+
merkleizeBlockArray(blocks, blockLimit, padFor, output, offset) {
|
|
40
|
+
doMerkleizeBlockArray(blocks, blockLimit, padFor, output, offset, hashInto, uint8Input);
|
|
41
|
+
},
|
|
42
|
+
digestNLevel(data, nLevel) {
|
|
43
|
+
return doDigestNLevel(data, nLevel, hashInto);
|
|
44
|
+
},
|
|
45
|
+
executeHashComputations(hashComputations) {
|
|
46
|
+
for (let level = hashComputations.length - 1; level >= 0; level--) {
|
|
47
|
+
const hcArr = hashComputations[level];
|
|
48
|
+
if (!hcArr) {
|
|
49
|
+
// should not happen
|
|
50
|
+
throw Error(`no hash computations for level ${level}`);
|
|
51
|
+
}
|
|
52
|
+
if (hcArr.length === 0) {
|
|
53
|
+
// nothing to hash
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
// hash every 16 inputs at once to avoid memory allocation
|
|
57
|
+
let i = 0;
|
|
58
|
+
for (const { src0, src1, dest } of hcArr) {
|
|
59
|
+
if (!src0 || !src1 || !dest) {
|
|
60
|
+
throw new Error(`Invalid HashComputation at index ${i}`);
|
|
61
|
+
}
|
|
62
|
+
const indexInBatch = i % PARALLEL_FACTOR;
|
|
63
|
+
const offset = indexInBatch * 16;
|
|
64
|
+
hashObjectToUint32Array(src0, uint32Input, offset);
|
|
65
|
+
hashObjectToUint32Array(src1, uint32Input, offset + 8);
|
|
66
|
+
destNodes[indexInBatch] = dest;
|
|
67
|
+
if (indexInBatch === PARALLEL_FACTOR - 1) {
|
|
68
|
+
hashInto(uint8Input, uint8Output);
|
|
69
|
+
for (const [j, destNode] of destNodes.entries()) {
|
|
70
|
+
byteArrayIntoHashObject(uint8Output, j * 32, destNode);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
i++;
|
|
74
|
+
}
|
|
75
|
+
const remaining = hcArr.length % PARALLEL_FACTOR;
|
|
76
|
+
// we prepared data in input, now hash the remaining
|
|
77
|
+
if (remaining > 0) {
|
|
78
|
+
const remainingInput = uint8Input.subarray(0, remaining * 64);
|
|
79
|
+
const remainingOutput = uint8Output.subarray(0, remaining * 32);
|
|
80
|
+
hashInto(remainingInput, remainingOutput);
|
|
81
|
+
// destNodes was prepared above
|
|
82
|
+
for (let j = 0; j < remaining; j++) {
|
|
83
|
+
byteArrayIntoHashObject(remainingOutput, j * 32, destNodes[j]);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
function hashObjectToUint32Array(obj, arr, offset) {
|
|
90
|
+
arr[offset] = obj.h0;
|
|
91
|
+
arr[offset + 1] = obj.h1;
|
|
92
|
+
arr[offset + 2] = obj.h2;
|
|
93
|
+
arr[offset + 3] = obj.h3;
|
|
94
|
+
arr[offset + 4] = obj.h4;
|
|
95
|
+
arr[offset + 5] = obj.h5;
|
|
96
|
+
arr[offset + 6] = obj.h6;
|
|
97
|
+
arr[offset + 7] = obj.h7;
|
|
98
|
+
}
|
|
99
|
+
// note that uint32ArrayToHashObject will cause more memory
|
|
100
|
+
function hashObjectsToUint32Array(obj1, obj2, arr) {
|
|
101
|
+
arr[0] = obj1.h0;
|
|
102
|
+
arr[1] = obj1.h1;
|
|
103
|
+
arr[2] = obj1.h2;
|
|
104
|
+
arr[3] = obj1.h3;
|
|
105
|
+
arr[4] = obj1.h4;
|
|
106
|
+
arr[5] = obj1.h5;
|
|
107
|
+
arr[6] = obj1.h6;
|
|
108
|
+
arr[7] = obj1.h7;
|
|
109
|
+
arr[8] = obj2.h0;
|
|
110
|
+
arr[9] = obj2.h1;
|
|
111
|
+
arr[10] = obj2.h2;
|
|
112
|
+
arr[11] = obj2.h3;
|
|
113
|
+
arr[12] = obj2.h4;
|
|
114
|
+
arr[13] = obj2.h5;
|
|
115
|
+
arr[14] = obj2.h6;
|
|
116
|
+
arr[15] = obj2.h7;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=hasher_bun.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hasher_bun.js","sourceRoot":"","sources":["../../src/util/hasher_bun.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hasher_nodejs.d.ts","sourceRoot":"","sources":["../../src/util/hasher_nodejs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,mDAAmD,CAAC;AAEzE,OAAO,EAAC,MAAM,EAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hasher_nodejs.js","sourceRoot":"","sources":["../../src/util/hasher_nodejs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,mDAAmD,CAAC;AAEzE,OAAO,EAAC,MAAM,EAAC,CAAC"}
|
package/lib/util/logger.js
CHANGED
|
@@ -26,7 +26,7 @@ export function parseLoggerArgs(args, paths, config, opts) {
|
|
|
26
26
|
? {
|
|
27
27
|
format: TimestampFormatCode.EpochSlot,
|
|
28
28
|
genesisTime: args.logFormatGenesisTime,
|
|
29
|
-
secondsPerSlot: config.
|
|
29
|
+
secondsPerSlot: config.SLOT_DURATION_MS / 1000,
|
|
30
30
|
slotsPerEpoch: SLOTS_PER_EPOCH,
|
|
31
31
|
}
|
|
32
32
|
: {
|
package/lib/util/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/util/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAY,mBAAmB,EAAE,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAE5E,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AAIzC,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAE/C;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,IAA2C,EAC3C,KAAmC,EACnC,MAAuB,EACvB,IAAgC;IAEhC,OAAO;QACL,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnC,IAAI,EACF,IAAI,CAAC,OAAO,KAAK,wBAAwB;YACvC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC;gBACE,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,kBAAkB;gBAClD,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC;gBACvC,WAAW,EAAE,IAAI,CAAC,kBAAkB;aACrC;QACP,MAAM,EAAE,IAAI,CAAC,SAAS;QACtB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;QACnE,WAAW,EAAE,IAAI,CAAC,cAAc,IAAI,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5E,eAAe,EAAE,IAAI,EAAE,aAAa;YAClC,CAAC,CAAC,EAAC,MAAM,EAAE,mBAAmB,CAAC,MAAM,EAAC;YACtC,CAAC,CAAC,IAAI,CAAC,oBAAoB,KAAK,SAAS;gBACvC,CAAC,CAAC;oBACE,MAAM,EAAE,mBAAmB,CAAC,SAAS;oBACrC,WAAW,EAAE,IAAI,CAAC,oBAAoB;oBACtC,cAAc,EAAE,MAAM,CAAC,gBAAgB;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/util/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAY,mBAAmB,EAAE,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAE5E,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AAIzC,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAE/C;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,IAA2C,EAC3C,KAAmC,EACnC,MAAuB,EACvB,IAAgC;IAEhC,OAAO;QACL,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnC,IAAI,EACF,IAAI,CAAC,OAAO,KAAK,wBAAwB;YACvC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC;gBACE,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,kBAAkB;gBAClD,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC;gBACvC,WAAW,EAAE,IAAI,CAAC,kBAAkB;aACrC;QACP,MAAM,EAAE,IAAI,CAAC,SAAS;QACtB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;QACnE,WAAW,EAAE,IAAI,CAAC,cAAc,IAAI,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5E,eAAe,EAAE,IAAI,EAAE,aAAa;YAClC,CAAC,CAAC,EAAC,MAAM,EAAE,mBAAmB,CAAC,MAAM,EAAC;YACtC,CAAC,CAAC,IAAI,CAAC,oBAAoB,KAAK,SAAS;gBACvC,CAAC,CAAC;oBACE,MAAM,EAAE,mBAAmB,CAAC,SAAS;oBACrC,WAAW,EAAE,IAAI,CAAC,oBAAoB;oBACtC,cAAc,EAAE,MAAM,CAAC,gBAAgB,GAAG,IAAI;oBAC9C,aAAa,EAAE,eAAe;iBAC/B;gBACH,CAAC,CAAC;oBACE,MAAM,EAAE,mBAAmB,CAAC,WAAW;iBACxC;KACR,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,MAAc;IACpC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAmB,CAAC,EAAE,CAAC;QAC9C,MAAM,KAAK,CAAC,sBAAsB,MAAM,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,MAAmB,CAAC;AAC7B,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,IAAI,QAAQ,CAAC,KAAiB,CAAC,KAAK,SAAS,EAAE,CAAC;QAC9C,MAAM,KAAK,CAAC,sBAAsB,KAAK,GAAG,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,KAAiB,CAAC;AAC3B,CAAC;AAED,SAAS,mBAAmB,CAAC,iBAA2B;IACtD,MAAM,WAAW,GAA6B,EAAE,CAAC;IACjD,KAAK,MAAM,cAAc,IAAI,iBAAiB,EAAE,CAAC;QAC/C,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrD,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAa,EAAE,KAAmC;IACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,kBAAkB,CAAC;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,EAAE;SAChB,WAAW,CAAC,MAAM,EAAE,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC;SAC1C,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;SAC3B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;SACpB,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;SACrG,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IACxD,eAAe;IACf,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;QAChC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,SAAiB,EAAE,WAAmB,EAAE,QAAgB;IAC1G,MAAM,eAAe,GAAG,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACvD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,iCAAiC,SAAS,EAAE,CAAC,CAAC,CAAC;IACnG,kEAAkE;IAClE,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,eAAe,EAAE,CAAC;QAC9E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chainsafe/lodestar",
|
|
3
|
-
"version": "1.35.0-rc.
|
|
3
|
+
"version": "1.35.0-rc.2",
|
|
4
4
|
"description": "Command line interface for lodestar",
|
|
5
5
|
"author": "ChainSafe Systems",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -9,7 +9,18 @@
|
|
|
9
9
|
},
|
|
10
10
|
"homepage": "https://github.com/ChainSafe/lodestar#readme",
|
|
11
11
|
"type": "module",
|
|
12
|
-
"exports":
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"bun": "./src/index.ts",
|
|
15
|
+
"import": "./lib/index.js"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"imports": {
|
|
19
|
+
"#hashtree-hasher": {
|
|
20
|
+
"bun": "./src/util/hasher_bun.ts",
|
|
21
|
+
"import": "./lib/util/hasher_nodejs.js"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
13
24
|
"files": [
|
|
14
25
|
"src",
|
|
15
26
|
"lib",
|
|
@@ -63,17 +74,18 @@
|
|
|
63
74
|
"@libp2p/crypto": "^5.0.15",
|
|
64
75
|
"@libp2p/interface": "^2.7.0",
|
|
65
76
|
"@libp2p/peer-id": "^5.1.0",
|
|
66
|
-
"@lodestar/api": "1.35.0-rc.
|
|
67
|
-
"@lodestar/beacon-node": "1.35.0-rc.
|
|
68
|
-
"@lodestar/
|
|
69
|
-
"@lodestar/
|
|
70
|
-
"@lodestar/
|
|
71
|
-
"@lodestar/
|
|
72
|
-
"@lodestar/
|
|
73
|
-
"@lodestar/
|
|
74
|
-
"@lodestar/
|
|
75
|
-
"@lodestar/
|
|
76
|
-
"@lodestar/
|
|
77
|
+
"@lodestar/api": "1.35.0-rc.2",
|
|
78
|
+
"@lodestar/beacon-node": "1.35.0-rc.2",
|
|
79
|
+
"@lodestar/bun": "git+https://github.com/ChainSafe/lodestar-bun.git",
|
|
80
|
+
"@lodestar/config": "1.35.0-rc.2",
|
|
81
|
+
"@lodestar/db": "1.35.0-rc.2",
|
|
82
|
+
"@lodestar/light-client": "1.35.0-rc.2",
|
|
83
|
+
"@lodestar/logger": "1.35.0-rc.2",
|
|
84
|
+
"@lodestar/params": "1.35.0-rc.2",
|
|
85
|
+
"@lodestar/state-transition": "1.35.0-rc.2",
|
|
86
|
+
"@lodestar/types": "1.35.0-rc.2",
|
|
87
|
+
"@lodestar/utils": "1.35.0-rc.2",
|
|
88
|
+
"@lodestar/validator": "1.35.0-rc.2",
|
|
77
89
|
"@multiformats/multiaddr": "^12.1.3",
|
|
78
90
|
"deepmerge": "^4.3.1",
|
|
79
91
|
"ethers": "^6.7.0",
|
|
@@ -88,12 +100,12 @@
|
|
|
88
100
|
"yargs": "^17.7.1"
|
|
89
101
|
},
|
|
90
102
|
"devDependencies": {
|
|
91
|
-
"@lodestar/test-utils": "1.35.0-rc.
|
|
103
|
+
"@lodestar/test-utils": "1.35.0-rc.2",
|
|
92
104
|
"@types/debug": "^4.1.7",
|
|
93
105
|
"@types/inquirer": "^9.0.3",
|
|
94
106
|
"@types/proper-lockfile": "^4.1.4",
|
|
95
107
|
"@types/yargs": "^17.0.24",
|
|
96
108
|
"fastify": "^5.2.1"
|
|
97
109
|
},
|
|
98
|
-
"gitHead": "
|
|
110
|
+
"gitHead": "f621d71a81568fbe5d339e23ed4ac5fabcf735dc"
|
|
99
111
|
}
|
package/src/applyPreset.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// MUST import this file first before anything and not import any Lodestar code.
|
|
2
|
+
|
|
3
|
+
import {hasher as hashtreeHasher} from "#hashtree-hasher";
|
|
2
4
|
import {setHasher} from "@chainsafe/persistent-merkle-tree";
|
|
3
|
-
import {hasher as hashtreeHasher} from "@chainsafe/persistent-merkle-tree/hasher/hashtree";
|
|
4
5
|
|
|
5
6
|
// Without setting this first, persistent-merkle-tree will use noble instead
|
|
6
7
|
setHasher(hashtreeHasher);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {WireFormat, defaultInit} from "@lodestar/api";
|
|
2
2
|
import {CliCommandOptions} from "@lodestar/utils";
|
|
3
3
|
import {defaultOptions} from "@lodestar/validator";
|
|
4
|
+
import {coerceCors, enabledAllBashFriendly} from "../../options/beaconNodeOptions/api.js";
|
|
4
5
|
import {LogArgs, logOptions} from "../../options/logOptions.js";
|
|
5
6
|
import {ensure0xPrefix} from "../../util/index.js";
|
|
6
7
|
import {keymanagerRestApiServerOptsDefault} from "./keymanager/server.js";
|
|
@@ -128,9 +129,10 @@ export const keymanagerOptions: CliCommandOptions<KeymanagerArgs> = {
|
|
|
128
129
|
},
|
|
129
130
|
"keymanager.cors": {
|
|
130
131
|
type: "string",
|
|
131
|
-
description:
|
|
132
|
+
description: `Configures the Access-Control-Allow-Origin CORS header for key manager API. Use '${enabledAllBashFriendly}' to allow all origins`,
|
|
132
133
|
defaultDescription: keymanagerRestApiServerOptsDefault.cors,
|
|
133
134
|
group: "keymanager",
|
|
135
|
+
coerce: coerceCors,
|
|
134
136
|
},
|
|
135
137
|
"keymanager.headerLimit": {
|
|
136
138
|
hidden: true,
|
|
@@ -212,14 +214,14 @@ export const validatorOptions: CliCommandOptions<IValidatorCliArgs> = {
|
|
|
212
214
|
afterBlockDelaySlotFraction: {
|
|
213
215
|
hidden: true,
|
|
214
216
|
description:
|
|
215
|
-
"Delay before publishing attestations if block comes early, as a fraction of
|
|
217
|
+
"Delay before publishing attestations if block comes early, as a fraction of SLOT_DURATION_MS (value is from 0 inclusive to 1 exclusive)",
|
|
216
218
|
type: "number",
|
|
217
219
|
},
|
|
218
220
|
|
|
219
221
|
scAfterBlockDelaySlotFraction: {
|
|
220
222
|
hidden: true,
|
|
221
223
|
description:
|
|
222
|
-
"Delay before publishing SyncCommitteeSignature if block comes early, as a fraction of
|
|
224
|
+
"Delay before publishing SyncCommitteeSignature if block comes early, as a fraction of SLOT_DURATION_MS (value is from 0 inclusive to 1 exclusive)",
|
|
223
225
|
type: "number",
|
|
224
226
|
},
|
|
225
227
|
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import {IBeaconNodeOptions, allNamespaces, defaultOptions} from "@lodestar/beacon-node";
|
|
2
2
|
import {CliCommandOptions} from "@lodestar/utils";
|
|
3
3
|
|
|
4
|
-
const enabledAll = "*";
|
|
4
|
+
export const enabledAll = "*";
|
|
5
|
+
export const enabledAllBashFriendly = "all";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Coerce function to transform bash-friendly 'all' to CORS spec '*'
|
|
9
|
+
*/
|
|
10
|
+
export function coerceCors(cors: string): string {
|
|
11
|
+
return cors === enabledAllBashFriendly ? enabledAll : cors;
|
|
12
|
+
}
|
|
5
13
|
|
|
6
14
|
export type ApiArgs = {
|
|
7
15
|
"api.maxGindicesInProof"?: number;
|
|
@@ -51,13 +59,14 @@ export const options: CliCommandOptions<ApiArgs> = {
|
|
|
51
59
|
|
|
52
60
|
"rest.namespace": {
|
|
53
61
|
type: "array",
|
|
54
|
-
choices: [...allNamespaces, enabledAll],
|
|
55
|
-
description: `Pick namespaces to expose for HTTP API. Set to '${enabledAll}' to enable all namespaces`,
|
|
62
|
+
choices: [...allNamespaces, enabledAll, enabledAllBashFriendly],
|
|
63
|
+
description: `Pick namespaces to expose for HTTP API. Set to '${enabledAllBashFriendly}' (or '${enabledAll}') to enable all namespaces`,
|
|
56
64
|
defaultDescription: JSON.stringify(defaultOptions.api.rest.api),
|
|
57
65
|
group: "api",
|
|
58
66
|
coerce: (namespaces: string[]): string[] => {
|
|
59
|
-
|
|
60
|
-
|
|
67
|
+
if (namespaces.includes(enabledAll) || namespaces.includes(enabledAllBashFriendly)) {
|
|
68
|
+
return allNamespaces;
|
|
69
|
+
}
|
|
61
70
|
// Parse ["debug,lodestar"] to ["debug", "lodestar"]
|
|
62
71
|
return namespaces.flatMap((val) => val.split(","));
|
|
63
72
|
},
|
|
@@ -65,9 +74,10 @@ export const options: CliCommandOptions<ApiArgs> = {
|
|
|
65
74
|
|
|
66
75
|
"rest.cors": {
|
|
67
76
|
type: "string",
|
|
68
|
-
description:
|
|
77
|
+
description: `Configures the Access-Control-Allow-Origin CORS header for HTTP API. Use '${enabledAllBashFriendly}' to allow all origins`,
|
|
69
78
|
defaultDescription: defaultOptions.api.rest.cors,
|
|
70
79
|
group: "api",
|
|
80
|
+
coerce: coerceCors,
|
|
71
81
|
},
|
|
72
82
|
|
|
73
83
|
"rest.address": {
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import {byteArrayIntoHashObject} from "@chainsafe/as-sha256";
|
|
2
|
+
import {
|
|
3
|
+
HashComputationLevel,
|
|
4
|
+
HashObject,
|
|
5
|
+
Hasher,
|
|
6
|
+
Node,
|
|
7
|
+
doDigestNLevel,
|
|
8
|
+
doMerkleizeBlockArray,
|
|
9
|
+
doMerkleizeBlocksBytes,
|
|
10
|
+
} from "@chainsafe/persistent-merkle-tree";
|
|
11
|
+
import {digest2Bytes32, digest2Bytes32Into, hashInto} from "@lodestar/bun";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Best SIMD implementation is in 512 bits = 64 bytes
|
|
15
|
+
* If not, hashtree will make a loop inside
|
|
16
|
+
* Given sha256 operates on a block of 4 bytes, we can hash 16 inputs at once
|
|
17
|
+
* Each input is 64 bytes
|
|
18
|
+
*/
|
|
19
|
+
const PARALLEL_FACTOR = 16;
|
|
20
|
+
const MAX_INPUT_SIZE = PARALLEL_FACTOR * 64;
|
|
21
|
+
const uint8Input = new Uint8Array(MAX_INPUT_SIZE);
|
|
22
|
+
const uint32Input = new Uint32Array(uint8Input.buffer);
|
|
23
|
+
const uint8Output = new Uint8Array(PARALLEL_FACTOR * 32);
|
|
24
|
+
// having this will cause more memory to extract uint32
|
|
25
|
+
// const uint32Output = new Uint32Array(uint8Output.buffer);
|
|
26
|
+
// convenient reusable Uint8Array for hash64
|
|
27
|
+
const hash64Input = uint8Input.subarray(0, 64);
|
|
28
|
+
const hash64Output = uint8Output.subarray(0, 32);
|
|
29
|
+
// size input array to 2 HashObject per computation * 32 bytes per object
|
|
30
|
+
const destNodes: Node[] = new Array<Node>(PARALLEL_FACTOR);
|
|
31
|
+
|
|
32
|
+
export const hasher: Hasher = {
|
|
33
|
+
name: "hashtree-bun",
|
|
34
|
+
hashInto,
|
|
35
|
+
digest64(obj1: Uint8Array, obj2: Uint8Array): Uint8Array {
|
|
36
|
+
return digest2Bytes32(obj1, obj2);
|
|
37
|
+
},
|
|
38
|
+
digest64Into: (obj1: Uint8Array, obj2: Uint8Array, output: Uint8Array): void => {
|
|
39
|
+
digest2Bytes32Into(obj1, obj2, output);
|
|
40
|
+
},
|
|
41
|
+
digest64HashObjects(left: HashObject, right: HashObject, parent: HashObject): void {
|
|
42
|
+
hashObjectsToUint32Array(left, right, uint32Input);
|
|
43
|
+
hashInto(hash64Input, hash64Output);
|
|
44
|
+
byteArrayIntoHashObject(hash64Output, 0, parent);
|
|
45
|
+
},
|
|
46
|
+
merkleizeBlocksBytes(blocksBytes: Uint8Array, padFor: number, output: Uint8Array, offset: number): void {
|
|
47
|
+
doMerkleizeBlocksBytes(blocksBytes, padFor, output, offset, hashInto);
|
|
48
|
+
},
|
|
49
|
+
merkleizeBlockArray(blocks, blockLimit, padFor, output, offset) {
|
|
50
|
+
doMerkleizeBlockArray(blocks, blockLimit, padFor, output, offset, hashInto, uint8Input);
|
|
51
|
+
},
|
|
52
|
+
digestNLevel(data: Uint8Array, nLevel: number): Uint8Array {
|
|
53
|
+
return doDigestNLevel(data, nLevel, hashInto);
|
|
54
|
+
},
|
|
55
|
+
executeHashComputations(hashComputations: HashComputationLevel[]): void {
|
|
56
|
+
for (let level = hashComputations.length - 1; level >= 0; level--) {
|
|
57
|
+
const hcArr = hashComputations[level];
|
|
58
|
+
if (!hcArr) {
|
|
59
|
+
// should not happen
|
|
60
|
+
throw Error(`no hash computations for level ${level}`);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (hcArr.length === 0) {
|
|
64
|
+
// nothing to hash
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// hash every 16 inputs at once to avoid memory allocation
|
|
69
|
+
let i = 0;
|
|
70
|
+
for (const {src0, src1, dest} of hcArr) {
|
|
71
|
+
if (!src0 || !src1 || !dest) {
|
|
72
|
+
throw new Error(`Invalid HashComputation at index ${i}`);
|
|
73
|
+
}
|
|
74
|
+
const indexInBatch = i % PARALLEL_FACTOR;
|
|
75
|
+
const offset = indexInBatch * 16;
|
|
76
|
+
|
|
77
|
+
hashObjectToUint32Array(src0, uint32Input, offset);
|
|
78
|
+
hashObjectToUint32Array(src1, uint32Input, offset + 8);
|
|
79
|
+
destNodes[indexInBatch] = dest;
|
|
80
|
+
if (indexInBatch === PARALLEL_FACTOR - 1) {
|
|
81
|
+
hashInto(uint8Input, uint8Output);
|
|
82
|
+
for (const [j, destNode] of destNodes.entries()) {
|
|
83
|
+
byteArrayIntoHashObject(uint8Output, j * 32, destNode);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
i++;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const remaining = hcArr.length % PARALLEL_FACTOR;
|
|
90
|
+
// we prepared data in input, now hash the remaining
|
|
91
|
+
if (remaining > 0) {
|
|
92
|
+
const remainingInput = uint8Input.subarray(0, remaining * 64);
|
|
93
|
+
const remainingOutput = uint8Output.subarray(0, remaining * 32);
|
|
94
|
+
hashInto(remainingInput, remainingOutput);
|
|
95
|
+
// destNodes was prepared above
|
|
96
|
+
for (let j = 0; j < remaining; j++) {
|
|
97
|
+
byteArrayIntoHashObject(remainingOutput, j * 32, destNodes[j]);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
function hashObjectToUint32Array(obj: HashObject, arr: Uint32Array, offset: number): void {
|
|
105
|
+
arr[offset] = obj.h0;
|
|
106
|
+
arr[offset + 1] = obj.h1;
|
|
107
|
+
arr[offset + 2] = obj.h2;
|
|
108
|
+
arr[offset + 3] = obj.h3;
|
|
109
|
+
arr[offset + 4] = obj.h4;
|
|
110
|
+
arr[offset + 5] = obj.h5;
|
|
111
|
+
arr[offset + 6] = obj.h6;
|
|
112
|
+
arr[offset + 7] = obj.h7;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// note that uint32ArrayToHashObject will cause more memory
|
|
116
|
+
function hashObjectsToUint32Array(obj1: HashObject, obj2: HashObject, arr: Uint32Array): void {
|
|
117
|
+
arr[0] = obj1.h0;
|
|
118
|
+
arr[1] = obj1.h1;
|
|
119
|
+
arr[2] = obj1.h2;
|
|
120
|
+
arr[3] = obj1.h3;
|
|
121
|
+
arr[4] = obj1.h4;
|
|
122
|
+
arr[5] = obj1.h5;
|
|
123
|
+
arr[6] = obj1.h6;
|
|
124
|
+
arr[7] = obj1.h7;
|
|
125
|
+
arr[8] = obj2.h0;
|
|
126
|
+
arr[9] = obj2.h1;
|
|
127
|
+
arr[10] = obj2.h2;
|
|
128
|
+
arr[11] = obj2.h3;
|
|
129
|
+
arr[12] = obj2.h4;
|
|
130
|
+
arr[13] = obj2.h5;
|
|
131
|
+
arr[14] = obj2.h6;
|
|
132
|
+
arr[15] = obj2.h7;
|
|
133
|
+
}
|
package/src/util/logger.ts
CHANGED
|
@@ -38,7 +38,7 @@ export function parseLoggerArgs(
|
|
|
38
38
|
? {
|
|
39
39
|
format: TimestampFormatCode.EpochSlot,
|
|
40
40
|
genesisTime: args.logFormatGenesisTime,
|
|
41
|
-
secondsPerSlot: config.
|
|
41
|
+
secondsPerSlot: config.SLOT_DURATION_MS / 1000,
|
|
42
42
|
slotsPerEpoch: SLOTS_PER_EPOCH,
|
|
43
43
|
}
|
|
44
44
|
: {
|