import { fromHexString, toHexString } from "@chainsafe/ssz"; import bls from "@chainsafe/bls/switchable"; import { createBeaconConfig } from "@lodestar/config"; import { mainnetConfig } from "./constants.js"; import { networksChainConfig } from "@lodestar/config/networks"; import fetch from "node-fetch"; export function concatUint8Array(data: Uint8Array[]) { const l = data.reduce((l, d) => l + d.length, 0); let result = new Uint8Array(l); let offset = 0; data.forEach((d) => { result.set(d, offset); offset += d.length; }); return result; } export function getDefaultClientConfig() { const chainConfig = createBeaconConfig( networksChainConfig.mainnet, fromHexString(mainnetConfig.genesis_validator_root) ); return { genesis: { committee: mainnetConfig.committee_pk, slot: parseInt(mainnetConfig.slot), time: parseInt(mainnetConfig.genesis_time), }, chainConfig, n: 1, }; } export async function handleGETRequest( url: string, retry: number = 3 ): Promise { if (retry < 0) { throw Error(`GET request failed: ${url}`); } try { const ret = await fetch(url); return await ret.json(); } catch (e) { console.error(`failed GET request (${url}): ${e.message}`); return handleGETRequest(url, retry - 1); } }