@lodestar/beacon-node 1.32.0-dev.d01ed1576a → 1.32.0-dev.d9dc44442e
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/api/impl/beacon/blocks/index.js +22 -5
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/beacon/state/index.js +13 -1
- package/lib/api/impl/beacon/state/index.js.map +1 -1
- package/lib/api/impl/validator/index.js +43 -29
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/chain/archiveStore/archiveStore.js +1 -1
- package/lib/chain/archiveStore/archiveStore.js.map +1 -1
- package/lib/chain/archiveStore/historicalState/metrics.js +13 -0
- package/lib/chain/archiveStore/historicalState/metrics.js.map +1 -1
- package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +1 -1
- package/lib/chain/archiveStore/utils/archiveBlocks.js +29 -1
- package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
- package/lib/chain/blocks/importBlock.js +1 -16
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksDataAvailability.js +1 -1
- package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
- package/lib/chain/chain.d.ts +4 -4
- package/lib/chain/chain.js +9 -2
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/interface.d.ts +2 -2
- package/lib/chain/options.d.ts +2 -2
- package/lib/chain/produceBlock/produceBlockBody.d.ts +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js +141 -108
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/validation/blobSidecar.d.ts +1 -1
- package/lib/chain/validation/blobSidecar.js +6 -6
- package/lib/chain/validation/blobSidecar.js.map +1 -1
- package/lib/execution/engine/mock.js +3 -3
- package/lib/execution/engine/mock.js.map +1 -1
- package/lib/metrics/metrics/beacon.d.ts +3 -0
- package/lib/metrics/metrics/beacon.js +13 -0
- package/lib/metrics/metrics/beacon.js.map +1 -1
- package/lib/network/core/networkCore.d.ts +4 -4
- package/lib/network/core/networkCore.js +45 -43
- package/lib/network/core/networkCore.js.map +1 -1
- package/lib/network/core/types.d.ts +4 -0
- package/lib/network/discv5/index.d.ts +1 -0
- package/lib/network/discv5/index.js +1 -0
- package/lib/network/discv5/index.js.map +1 -1
- package/lib/network/discv5/types.d.ts +1 -0
- package/lib/network/discv5/utils.d.ts +3 -1
- package/lib/network/discv5/utils.js +12 -2
- package/lib/network/discv5/utils.js.map +1 -1
- package/lib/network/discv5/worker.js +5 -1
- package/lib/network/discv5/worker.js.map +1 -1
- package/lib/network/forks.d.ts +2 -0
- package/lib/network/forks.js +4 -0
- package/lib/network/forks.js.map +1 -1
- package/lib/network/gossip/encoding.js +1 -1
- package/lib/network/gossip/encoding.js.map +1 -1
- package/lib/network/gossip/gossipsub.js +6 -4
- package/lib/network/gossip/gossipsub.js.map +1 -1
- package/lib/network/gossip/interface.d.ts +2 -2
- package/lib/network/gossip/scoringParameters.js +10 -10
- package/lib/network/gossip/scoringParameters.js.map +1 -1
- package/lib/network/gossip/topic.d.ts +2059 -1512
- package/lib/network/gossip/topic.js +13 -12
- package/lib/network/gossip/topic.js.map +1 -1
- package/lib/network/network.js +40 -28
- package/lib/network/network.js.map +1 -1
- package/lib/network/peers/discover.d.ts +2 -0
- package/lib/network/peers/discover.js +1 -0
- package/lib/network/peers/discover.js.map +1 -1
- package/lib/network/processor/gossipHandlers.js +22 -10
- package/lib/network/processor/gossipHandlers.js.map +1 -1
- package/lib/network/processor/gossipQueues/index.js +1 -1
- package/lib/network/processor/gossipQueues/index.js.map +1 -1
- package/lib/network/processor/index.js +2 -2
- package/lib/network/processor/index.js.map +1 -1
- package/lib/network/reqresp/ReqRespBeaconNode.d.ts +3 -3
- package/lib/network/reqresp/ReqRespBeaconNode.js +9 -8
- package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.d.ts +2 -0
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js +23 -3
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.js +2 -2
- package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRoot.js +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRange.js +1 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +1 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
- package/lib/network/reqresp/handlers/lightClientBootstrap.js +1 -1
- package/lib/network/reqresp/handlers/lightClientBootstrap.js.map +1 -1
- package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js +1 -1
- package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js.map +1 -1
- package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js +1 -1
- package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js.map +1 -1
- package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js +1 -1
- package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/status.js +1 -1
- package/lib/network/reqresp/handlers/status.js.map +1 -1
- package/lib/network/subnets/attnetsService.d.ts +3 -3
- package/lib/network/subnets/attnetsService.js +17 -17
- package/lib/network/subnets/attnetsService.js.map +1 -1
- package/lib/network/subnets/interface.d.ts +3 -3
- package/lib/network/subnets/syncnetsService.d.ts +3 -3
- package/lib/network/subnets/syncnetsService.js +13 -13
- package/lib/network/subnets/syncnetsService.js.map +1 -1
- package/lib/network/subscribeBoundary.d.ts +5 -0
- package/lib/network/subscribeBoundary.js +4 -0
- package/lib/network/subscribeBoundary.js.map +1 -0
- package/lib/node/nodejs.js +0 -6
- package/lib/node/nodejs.js.map +1 -1
- package/lib/sync/unknownBlock.js +1 -0
- package/lib/sync/unknownBlock.js.map +1 -1
- package/lib/util/kzg.d.ts +2 -34
- package/lib/util/kzg.js +2 -123
- package/lib/util/kzg.js.map +1 -1
- package/package.json +15 -15
package/lib/util/kzg.js
CHANGED
|
@@ -1,124 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
import { fileURLToPath } from "node:url";
|
|
4
|
-
import { fromHex, strip0xPrefix, toHex } from "@lodestar/utils";
|
|
5
|
-
// "c-kzg" has hardcoded the mainnet value, do not use params
|
|
6
|
-
export const FIELD_ELEMENTS_PER_BLOB_MAINNET = 4096;
|
|
7
|
-
function ckzgNotLoaded() {
|
|
8
|
-
throw Error("c-kzg library not loaded");
|
|
9
|
-
}
|
|
10
|
-
export let ckzg = {
|
|
11
|
-
freeTrustedSetup: ckzgNotLoaded,
|
|
12
|
-
loadTrustedSetup: ckzgNotLoaded,
|
|
13
|
-
blobToKzgCommitment: ckzgNotLoaded,
|
|
14
|
-
computeBlobKzgProof: ckzgNotLoaded,
|
|
15
|
-
verifyBlobKzgProof: ckzgNotLoaded,
|
|
16
|
-
verifyBlobKzgProofBatch: ckzgNotLoaded,
|
|
17
|
-
};
|
|
18
|
-
// Global variable __dirname no longer available in ES6 modules.
|
|
19
|
-
// Solutions: https://stackoverflow.com/questions/46745014/alternative-for-dirname-in-node-js-when-using-es6-modules
|
|
20
|
-
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
21
|
-
export const TRUSTED_SETUP_BIN_FILEPATH = path.join(__dirname, "../../trusted_setup.bin");
|
|
22
|
-
const TRUSTED_SETUP_JSON_FILEPATH = path.join(__dirname, "../../trusted_setup.json");
|
|
23
|
-
const TRUSTED_SETUP_TXT_FILEPATH = path.join(__dirname, "../../trusted_setup.txt");
|
|
24
|
-
const POINT_COUNT_BYTES = 4;
|
|
25
|
-
const G1POINT_BYTES = 48;
|
|
26
|
-
const G2POINT_BYTES = 96;
|
|
27
|
-
const G1POINT_COUNT = FIELD_ELEMENTS_PER_BLOB_MAINNET;
|
|
28
|
-
const G2POINT_COUNT = 65;
|
|
29
|
-
const TOTAL_SIZE = 2 * POINT_COUNT_BYTES + G1POINT_BYTES * G1POINT_COUNT + G2POINT_BYTES * G2POINT_COUNT;
|
|
30
|
-
export async function initCKZG() {
|
|
31
|
-
// @ts-ignore
|
|
32
|
-
ckzg = (await import("c-kzg")).default;
|
|
33
|
-
}
|
|
34
|
-
export var TrustedFileMode;
|
|
35
|
-
(function (TrustedFileMode) {
|
|
36
|
-
TrustedFileMode["Bin"] = "bin";
|
|
37
|
-
TrustedFileMode["Txt"] = "txt";
|
|
38
|
-
})(TrustedFileMode || (TrustedFileMode = {}));
|
|
39
|
-
/**
|
|
40
|
-
* Load our KZG trusted setup into C-KZG for later use.
|
|
41
|
-
* We persist the trusted setup as serialized bytes to save space over TXT or JSON formats.
|
|
42
|
-
* However the current c-kzg API **requires** to read from a file with a specific .txt format
|
|
43
|
-
*/
|
|
44
|
-
export function loadEthereumTrustedSetup(mode = TrustedFileMode.Txt, filePath) {
|
|
45
|
-
try {
|
|
46
|
-
let setupFilePath;
|
|
47
|
-
if (mode === TrustedFileMode.Bin) {
|
|
48
|
-
const binPath = filePath ?? TRUSTED_SETUP_BIN_FILEPATH;
|
|
49
|
-
const bytes = fs.readFileSync(binPath);
|
|
50
|
-
const json = trustedSetupBinToJson(bytes);
|
|
51
|
-
const txt = trustedSetupJsonToTxt(json);
|
|
52
|
-
fs.writeFileSync(TRUSTED_SETUP_TXT_FILEPATH, txt);
|
|
53
|
-
setupFilePath = TRUSTED_SETUP_TXT_FILEPATH;
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
setupFilePath = filePath ?? TRUSTED_SETUP_TXT_FILEPATH;
|
|
57
|
-
}
|
|
58
|
-
try {
|
|
59
|
-
// in unit tests, calling loadTrustedSetup() twice has error so we have to free and retry
|
|
60
|
-
ckzg.loadTrustedSetup(setupFilePath);
|
|
61
|
-
}
|
|
62
|
-
catch (e) {
|
|
63
|
-
if (e.message !== "Error trusted setup is already loaded") {
|
|
64
|
-
throw e;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
catch (e) {
|
|
69
|
-
e.message = `Error loading trusted setup ${TRUSTED_SETUP_JSON_FILEPATH}: ${e.message}`;
|
|
70
|
-
throw e;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Custom format defined in https://github.com/ethereum/c-kzg-4844/issues/3
|
|
75
|
-
*/
|
|
76
|
-
export function trustedSetupJsonToBin(data) {
|
|
77
|
-
const out = new Uint8Array(TOTAL_SIZE);
|
|
78
|
-
const dv = new DataView(out.buffer, out.byteOffset, out.byteLength);
|
|
79
|
-
dv.setUint32(0, G1POINT_COUNT);
|
|
80
|
-
dv.setUint32(POINT_COUNT_BYTES, G2POINT_BYTES);
|
|
81
|
-
for (let i = 0; i < G1POINT_COUNT; i++) {
|
|
82
|
-
const point = fromHex(data.setup_G1[i]);
|
|
83
|
-
if (point.length !== G1POINT_BYTES)
|
|
84
|
-
throw Error(`g1 point size ${point.length} != ${G1POINT_BYTES}`);
|
|
85
|
-
out.set(point, 2 * POINT_COUNT_BYTES + i * G1POINT_BYTES);
|
|
86
|
-
}
|
|
87
|
-
for (let i = 0; i < G2POINT_COUNT; i++) {
|
|
88
|
-
const point = fromHex(data.setup_G2[i]);
|
|
89
|
-
if (point.length !== G2POINT_BYTES)
|
|
90
|
-
throw Error(`g2 point size ${point.length} != ${G2POINT_BYTES}`);
|
|
91
|
-
out.set(point, 2 * POINT_COUNT_BYTES + G1POINT_COUNT * G1POINT_BYTES + i * G2POINT_BYTES);
|
|
92
|
-
}
|
|
93
|
-
return out;
|
|
94
|
-
}
|
|
95
|
-
export function trustedSetupBinToJson(bytes) {
|
|
96
|
-
const data = {
|
|
97
|
-
// biome-ignore lint/style/useNamingConvention: Need to be consistent with KZG pattern
|
|
98
|
-
setup_G1: [],
|
|
99
|
-
// biome-ignore lint/style/useNamingConvention: Need to be consistent with KZG pattern
|
|
100
|
-
setup_G2: [],
|
|
101
|
-
};
|
|
102
|
-
if (bytes.length < TOTAL_SIZE) {
|
|
103
|
-
throw Error(`trusted_setup size ${bytes.length} < ${TOTAL_SIZE}`);
|
|
104
|
-
}
|
|
105
|
-
for (let i = 0; i < G1POINT_COUNT; i++) {
|
|
106
|
-
const start = 2 * POINT_COUNT_BYTES + i * G1POINT_BYTES;
|
|
107
|
-
data.setup_G1.push(toHex(bytes.slice(start, start + G1POINT_BYTES)));
|
|
108
|
-
}
|
|
109
|
-
for (let i = 0; i < G2POINT_COUNT; i++) {
|
|
110
|
-
const start = 2 * POINT_COUNT_BYTES + G1POINT_COUNT * G1POINT_BYTES + i * G2POINT_BYTES;
|
|
111
|
-
data.setup_G1.push(toHex(bytes.slice(start, start + G2POINT_BYTES)));
|
|
112
|
-
}
|
|
113
|
-
return data;
|
|
114
|
-
}
|
|
115
|
-
export function trustedSetupJsonToTxt(data) {
|
|
116
|
-
return [
|
|
117
|
-
// ↵
|
|
118
|
-
G1POINT_COUNT,
|
|
119
|
-
G2POINT_COUNT,
|
|
120
|
-
...data.setup_G1.map(strip0xPrefix),
|
|
121
|
-
...data.setup_G2.map(strip0xPrefix),
|
|
122
|
-
].join("\n");
|
|
123
|
-
}
|
|
1
|
+
import { DasContextJs } from "@crate-crypto/node-eth-kzg";
|
|
2
|
+
export const kzg = DasContextJs.create({ usePrecomp: true });
|
|
124
3
|
//# sourceMappingURL=kzg.js.map
|
package/lib/util/kzg.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kzg.js","sourceRoot":"","sources":["../../src/util/kzg.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"kzg.js","sourceRoot":"","sources":["../../src/util/kzg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAC;AAExD,MAAM,CAAC,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,EAAC,UAAU,EAAE,IAAI,EAAC,CAAC,CAAC"}
|
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.32.0-dev.
|
|
14
|
+
"version": "1.32.0-dev.d9dc44442e",
|
|
15
15
|
"type": "module",
|
|
16
16
|
"exports": {
|
|
17
17
|
".": {
|
|
@@ -103,6 +103,7 @@
|
|
|
103
103
|
"@chainsafe/pubkey-index-map": "^3.0.0",
|
|
104
104
|
"@chainsafe/ssz": "^1.2.1",
|
|
105
105
|
"@chainsafe/threads": "^1.11.2",
|
|
106
|
+
"@crate-crypto/node-eth-kzg": "^0.7.1",
|
|
106
107
|
"@ethersproject/abi": "^5.7.0",
|
|
107
108
|
"@fastify/bearer-auth": "^10.0.1",
|
|
108
109
|
"@fastify/cors": "^10.0.1",
|
|
@@ -117,20 +118,19 @@
|
|
|
117
118
|
"@libp2p/peer-id": "^5.1.0",
|
|
118
119
|
"@libp2p/prometheus-metrics": "^4.3.15",
|
|
119
120
|
"@libp2p/tcp": "^10.1.8",
|
|
120
|
-
"@lodestar/api": "1.32.0-dev.
|
|
121
|
-
"@lodestar/config": "1.32.0-dev.
|
|
122
|
-
"@lodestar/db": "1.32.0-dev.
|
|
123
|
-
"@lodestar/fork-choice": "1.32.0-dev.
|
|
124
|
-
"@lodestar/light-client": "1.32.0-dev.
|
|
125
|
-
"@lodestar/logger": "1.32.0-dev.
|
|
126
|
-
"@lodestar/params": "1.32.0-dev.
|
|
127
|
-
"@lodestar/reqresp": "1.32.0-dev.
|
|
128
|
-
"@lodestar/state-transition": "1.32.0-dev.
|
|
129
|
-
"@lodestar/types": "1.32.0-dev.
|
|
130
|
-
"@lodestar/utils": "1.32.0-dev.
|
|
131
|
-
"@lodestar/validator": "1.32.0-dev.
|
|
121
|
+
"@lodestar/api": "1.32.0-dev.d9dc44442e",
|
|
122
|
+
"@lodestar/config": "1.32.0-dev.d9dc44442e",
|
|
123
|
+
"@lodestar/db": "1.32.0-dev.d9dc44442e",
|
|
124
|
+
"@lodestar/fork-choice": "1.32.0-dev.d9dc44442e",
|
|
125
|
+
"@lodestar/light-client": "1.32.0-dev.d9dc44442e",
|
|
126
|
+
"@lodestar/logger": "1.32.0-dev.d9dc44442e",
|
|
127
|
+
"@lodestar/params": "1.32.0-dev.d9dc44442e",
|
|
128
|
+
"@lodestar/reqresp": "1.32.0-dev.d9dc44442e",
|
|
129
|
+
"@lodestar/state-transition": "1.32.0-dev.d9dc44442e",
|
|
130
|
+
"@lodestar/types": "1.32.0-dev.d9dc44442e",
|
|
131
|
+
"@lodestar/utils": "1.32.0-dev.d9dc44442e",
|
|
132
|
+
"@lodestar/validator": "1.32.0-dev.d9dc44442e",
|
|
132
133
|
"@multiformats/multiaddr": "^12.1.3",
|
|
133
|
-
"c-kzg": "^2.1.2",
|
|
134
134
|
"datastore-core": "^10.0.2",
|
|
135
135
|
"datastore-level": "^11.0.1",
|
|
136
136
|
"deepmerge": "^4.3.1",
|
|
@@ -165,5 +165,5 @@
|
|
|
165
165
|
"beacon",
|
|
166
166
|
"blockchain"
|
|
167
167
|
],
|
|
168
|
-
"gitHead": "
|
|
168
|
+
"gitHead": "9015b8220337e34251d1e135b6095a0a99169345"
|
|
169
169
|
}
|