@lodestar/beacon-node 1.32.0-dev.335a428aa9 → 1.32.0-dev.4a12abd772
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/validator/index.js +43 -29
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/chain/archiveStore/historicalState/metrics.js +8 -0
- package/lib/chain/archiveStore/historicalState/metrics.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 +0 -2
- package/lib/chain/options.js.map +1 -1
- 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 +4 -4
- 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/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/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
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { BeaconConfig } from "@lodestar/config";
|
|
2
|
-
import { ForkName } from "@lodestar/params";
|
|
3
2
|
import { Logger } from "@lodestar/utils";
|
|
4
3
|
import { IClock } from "../../util/clock.js";
|
|
5
4
|
import { NetworkCoreMetrics } from "../core/metrics.js";
|
|
5
|
+
import { SubscribeBoundary } from "../core/types.js";
|
|
6
6
|
import { MetadataController } from "../metadata.js";
|
|
7
7
|
import { RequestedSubnet } from "../peers/utils/index.js";
|
|
8
8
|
import { CommitteeSubscription, GossipSubscriber, SubnetsService, SubnetsServiceOpts } from "./interface.js";
|
|
@@ -37,9 +37,9 @@ export declare class SyncnetsService implements SubnetsService {
|
|
|
37
37
|
*/
|
|
38
38
|
addCommitteeSubscriptions(subscriptions: CommitteeSubscription[]): void;
|
|
39
39
|
/** Call ONLY ONCE: Two epoch before the fork, re-subscribe all existing random subscriptions to the new fork */
|
|
40
|
-
|
|
40
|
+
subscribeSubnetsAfterBoundary(boundary: SubscribeBoundary): void;
|
|
41
41
|
/** Call ONLY ONCE: Two epochs after the fork, un-subscribe all subnets from the old fork */
|
|
42
|
-
|
|
42
|
+
unsubscribeSubnetsBeforeBoundary(boundary: SubscribeBoundary): void;
|
|
43
43
|
/**
|
|
44
44
|
* Run per epoch, clean-up operations that are not urgent
|
|
45
45
|
*/
|
|
@@ -2,7 +2,7 @@ import { SYNC_COMMITTEE_SUBNET_COUNT } from "@lodestar/params";
|
|
|
2
2
|
import { computeStartSlotAtEpoch } from "@lodestar/state-transition";
|
|
3
3
|
import { ssz } from "@lodestar/types";
|
|
4
4
|
import { ClockEvent } from "../../util/clock.js";
|
|
5
|
-
import {
|
|
5
|
+
import { getActiveSubscribeBoundaries } from "../forks.js";
|
|
6
6
|
import { GossipType } from "../gossip/index.js";
|
|
7
7
|
import { SubnetMap } from "../peers/utils/index.js";
|
|
8
8
|
const gossipType = GossipType.sync_committee;
|
|
@@ -70,18 +70,18 @@ export class SyncnetsService {
|
|
|
70
70
|
this.updateMetadata();
|
|
71
71
|
}
|
|
72
72
|
/** Call ONLY ONCE: Two epoch before the fork, re-subscribe all existing random subscriptions to the new fork */
|
|
73
|
-
|
|
74
|
-
this.logger.info("Subscribing to random attnets
|
|
73
|
+
subscribeSubnetsAfterBoundary(boundary) {
|
|
74
|
+
this.logger.info("Subscribing to random attnets after boundary", boundary);
|
|
75
75
|
for (const subnet of this.subscriptionsCommittee.getAll()) {
|
|
76
|
-
this.gossip.subscribeTopic({ type: gossipType, fork:
|
|
76
|
+
this.gossip.subscribeTopic({ type: gossipType, boundary: { fork: boundary.fork }, subnet });
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
79
|
/** Call ONLY ONCE: Two epochs after the fork, un-subscribe all subnets from the old fork */
|
|
80
|
-
|
|
81
|
-
this.logger.info("Unsubscribing to random attnets
|
|
80
|
+
unsubscribeSubnetsBeforeBoundary(boundary) {
|
|
81
|
+
this.logger.info("Unsubscribing to random attnets before boundary", boundary);
|
|
82
82
|
for (let subnet = 0; subnet < SYNC_COMMITTEE_SUBNET_COUNT; subnet++) {
|
|
83
83
|
if (!this.opts?.subscribeAllSubnets) {
|
|
84
|
-
this.gossip.unsubscribeTopic({ type: gossipType, fork:
|
|
84
|
+
this.gossip.unsubscribeTopic({ type: gossipType, boundary: { fork: boundary.fork }, subnet });
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
}
|
|
@@ -98,11 +98,11 @@ export class SyncnetsService {
|
|
|
98
98
|
}
|
|
99
99
|
/** Tigger a gossip subcription only if not already subscribed */
|
|
100
100
|
subscribeToSubnets(subnets) {
|
|
101
|
-
const
|
|
101
|
+
const boundaries = getActiveSubscribeBoundaries(this.config, this.clock.currentEpoch);
|
|
102
102
|
for (const subnet of subnets) {
|
|
103
103
|
if (!this.subscriptionsCommittee.has(subnet)) {
|
|
104
|
-
for (const
|
|
105
|
-
this.gossip.subscribeTopic({ type: gossipType,
|
|
104
|
+
for (const boundary of boundaries) {
|
|
105
|
+
this.gossip.subscribeTopic({ type: gossipType, boundary, subnet });
|
|
106
106
|
}
|
|
107
107
|
this.metrics?.syncnetsService.subscribeSubnets.inc({ subnet });
|
|
108
108
|
}
|
|
@@ -110,12 +110,12 @@ export class SyncnetsService {
|
|
|
110
110
|
}
|
|
111
111
|
/** Trigger a gossip un-subscrition only if no-one is still subscribed */
|
|
112
112
|
unsubscribeSubnets(subnets) {
|
|
113
|
-
const
|
|
113
|
+
const boundaries = getActiveSubscribeBoundaries(this.config, this.clock.currentEpoch);
|
|
114
114
|
for (const subnet of subnets) {
|
|
115
115
|
// No need to check if active in subscriptionsCommittee since we only have a single SubnetMap
|
|
116
116
|
if (!this.opts?.subscribeAllSubnets) {
|
|
117
|
-
for (const
|
|
118
|
-
this.gossip.unsubscribeTopic({ type: gossipType,
|
|
117
|
+
for (const boundary of boundaries) {
|
|
118
|
+
this.gossip.unsubscribeTopic({ type: gossipType, boundary, subnet });
|
|
119
119
|
}
|
|
120
120
|
this.metrics?.syncnetsService.unsubscribeSubnets.inc({ subnet });
|
|
121
121
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncnetsService.js","sourceRoot":"","sources":["../../../src/network/subnets/syncnetsService.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"syncnetsService.js","sourceRoot":"","sources":["../../../src/network/subnets/syncnetsService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { BeaconConfig } from "@lodestar/config";
|
|
2
|
+
import { Epoch } from "@lodestar/types";
|
|
3
|
+
import { SubscribeBoundary } from "./core/types.js";
|
|
4
|
+
export declare function getSubscribeBoundary(config: BeaconConfig, epoch: Epoch): SubscribeBoundary;
|
|
5
|
+
//# sourceMappingURL=subscribeBoundary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscribeBoundary.js","sourceRoot":"","sources":["../../src/network/subscribeBoundary.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,oBAAoB,CAAC,MAAoB,EAAE,KAAY;IACrE,OAAO,EAAC,IAAI,EAAE,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,IAAI,EAAC,CAAC;AACvD,CAAC"}
|
package/lib/node/nodejs.js
CHANGED
|
@@ -12,7 +12,6 @@ import { Network, getReqRespHandlers } from "../network/index.js";
|
|
|
12
12
|
import { BackfillSync } from "../sync/backfill/index.js";
|
|
13
13
|
import { BeaconSync } from "../sync/index.js";
|
|
14
14
|
import { Clock } from "../util/clock.js";
|
|
15
|
-
import { TrustedFileMode, initCKZG, loadEthereumTrustedSetup } from "../util/kzg.js";
|
|
16
15
|
import { runNodeNotifier } from "./notifier.js";
|
|
17
16
|
export * from "./options.js";
|
|
18
17
|
export var BeaconNodeStatus;
|
|
@@ -76,11 +75,6 @@ export class BeaconNode {
|
|
|
76
75
|
// Since it is perfectly fine to have listeners > 10
|
|
77
76
|
setMaxListeners(Infinity, controller.signal);
|
|
78
77
|
const signal = controller.signal;
|
|
79
|
-
// If deneb is configured, load the trusted setup
|
|
80
|
-
if (config.DENEB_FORK_EPOCH < Infinity) {
|
|
81
|
-
await initCKZG();
|
|
82
|
-
loadEthereumTrustedSetup(TrustedFileMode.Txt, opts.chain.trustedSetup);
|
|
83
|
-
}
|
|
84
78
|
let metrics = null;
|
|
85
79
|
if (opts.metrics.enabled ||
|
|
86
80
|
// monitoring relies on metrics data
|
package/lib/node/nodejs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodejs.js","sourceRoot":"","sources":["../../src/node/nodejs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,aAAa,CAAC;AAG5C,OAAO,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAOzD,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAGtC,OAAO,EAAC,mBAAmB,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAC,WAAW,EAAgB,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAmB,sBAAsB,EAAC,MAAM,8BAA8B,CAAC;AAEtF,OAAO,EAAC,gCAAgC,EAAC,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAC,0BAA0B,EAAE,yBAAyB,EAAC,MAAM,uBAAuB,CAAC;AAC5F,OAAO,EAA6B,aAAa,EAAE,oBAAoB,EAAC,MAAM,qBAAqB,CAAC;AACpG,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAC,OAAO,EAAE,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAC,UAAU,EAAc,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAC,KAAK,EAAC,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAC,eAAe,
|
|
1
|
+
{"version":3,"file":"nodejs.js","sourceRoot":"","sources":["../../src/node/nodejs.ts"],"names":[],"mappings":"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"}
|
package/lib/util/kzg.d.ts
CHANGED
|
@@ -1,35 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
export declare
|
|
3
|
-
freeTrustedSetup(): void;
|
|
4
|
-
loadTrustedSetup(filePath: string): void;
|
|
5
|
-
blobToKzgCommitment(blob: Uint8Array): Uint8Array;
|
|
6
|
-
computeBlobKzgProof(blob: Uint8Array, commitment: Uint8Array): Uint8Array;
|
|
7
|
-
verifyBlobKzgProof(blob: Uint8Array, commitment: Uint8Array, proof: Uint8Array): boolean;
|
|
8
|
-
verifyBlobKzgProofBatch(blobs: Uint8Array[], expectedKzgCommitments: Uint8Array[], kzgProofs: Uint8Array[]): boolean;
|
|
9
|
-
};
|
|
10
|
-
export declare const TRUSTED_SETUP_BIN_FILEPATH: string;
|
|
11
|
-
export declare function initCKZG(): Promise<void>;
|
|
12
|
-
export declare enum TrustedFileMode {
|
|
13
|
-
Bin = "bin",
|
|
14
|
-
Txt = "txt"
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Load our KZG trusted setup into C-KZG for later use.
|
|
18
|
-
* We persist the trusted setup as serialized bytes to save space over TXT or JSON formats.
|
|
19
|
-
* However the current c-kzg API **requires** to read from a file with a specific .txt format
|
|
20
|
-
*/
|
|
21
|
-
export declare function loadEthereumTrustedSetup(mode?: TrustedFileMode, filePath?: string): void;
|
|
22
|
-
export interface TrustedSetupJSON {
|
|
23
|
-
setup_G1: string[];
|
|
24
|
-
setup_G2: string[];
|
|
25
|
-
}
|
|
26
|
-
type TrustedSetupBin = Uint8Array;
|
|
27
|
-
type TrustedSetupTXT = string;
|
|
28
|
-
/**
|
|
29
|
-
* Custom format defined in https://github.com/ethereum/c-kzg-4844/issues/3
|
|
30
|
-
*/
|
|
31
|
-
export declare function trustedSetupJsonToBin(data: TrustedSetupJSON): TrustedSetupBin;
|
|
32
|
-
export declare function trustedSetupBinToJson(bytes: TrustedSetupBin): TrustedSetupJSON;
|
|
33
|
-
export declare function trustedSetupJsonToTxt(data: TrustedSetupJSON): TrustedSetupTXT;
|
|
34
|
-
export {};
|
|
1
|
+
import { DasContextJs } from "@crate-crypto/node-eth-kzg";
|
|
2
|
+
export declare const kzg: DasContextJs;
|
|
35
3
|
//# sourceMappingURL=kzg.d.ts.map
|
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.4a12abd772",
|
|
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.4a12abd772",
|
|
122
|
+
"@lodestar/config": "1.32.0-dev.4a12abd772",
|
|
123
|
+
"@lodestar/db": "1.32.0-dev.4a12abd772",
|
|
124
|
+
"@lodestar/fork-choice": "1.32.0-dev.4a12abd772",
|
|
125
|
+
"@lodestar/light-client": "1.32.0-dev.4a12abd772",
|
|
126
|
+
"@lodestar/logger": "1.32.0-dev.4a12abd772",
|
|
127
|
+
"@lodestar/params": "1.32.0-dev.4a12abd772",
|
|
128
|
+
"@lodestar/reqresp": "1.32.0-dev.4a12abd772",
|
|
129
|
+
"@lodestar/state-transition": "1.32.0-dev.4a12abd772",
|
|
130
|
+
"@lodestar/types": "1.32.0-dev.4a12abd772",
|
|
131
|
+
"@lodestar/utils": "1.32.0-dev.4a12abd772",
|
|
132
|
+
"@lodestar/validator": "1.32.0-dev.4a12abd772",
|
|
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": "33122289eb5e9b33450a89e9216090c513f94f82"
|
|
169
169
|
}
|