@lodestar/beacon-node
Version:
A Typescript implementation of the beacon chain
79 lines • 4.02 kB
TypeScript
import { PeerScoreStatsDump } from "@chainsafe/libp2p-gossipsub/dist/src/score/peer-score.js";
import { PublishOpts } from "@chainsafe/libp2p-gossipsub/types";
import { ModuleThread, Worker } from "@chainsafe/threads";
import { PrivateKey } from "@libp2p/interface";
import { routes } from "@lodestar/api";
import { BeaconConfig } from "@lodestar/config";
import type { LoggerNode } from "@lodestar/logger/node";
import { ResponseIncoming, ResponseOutgoing } from "@lodestar/reqresp";
import { phase0 } from "@lodestar/types";
import { Metrics } from "../../metrics/index.js";
import { AsyncIterableBridgeHandler } from "../../util/asyncIterableToEvents.js";
import { PeerIdStr } from "../../util/peerId.js";
import { NetworkEventBus } from "../events.js";
import { NetworkOptions } from "../options.js";
import { PeerAction, PeerScoreStats } from "../peers/index.js";
import { GetReqRespHandlerFn, IncomingRequestArgs, OutgoingRequestArgs } from "../reqresp/types.js";
import { CommitteeSubscription } from "../subnets/interface.js";
import { INetworkCore, MultiaddrStr, NetworkWorkerApi } from "./types.js";
export type WorkerNetworkCoreOpts = NetworkOptions & {
metricsEnabled: boolean;
peerStoreDir?: string;
activeValidatorCount: number;
genesisTime: number;
initialStatus: phase0.Status;
};
export type WorkerNetworkCoreInitModules = {
opts: WorkerNetworkCoreOpts;
config: BeaconConfig;
logger: LoggerNode;
privateKey: PrivateKey;
events: NetworkEventBus;
metrics: Metrics | null;
getReqRespHandler: GetReqRespHandlerFn;
};
type WorkerNetworkCoreModules = WorkerNetworkCoreInitModules & {
networkThreadApi: ModuleThread<NetworkWorkerApi>;
worker: Worker;
};
/**
* NetworkCore implementation using a Worker thread
*/
export declare class WorkerNetworkCore implements INetworkCore {
private readonly modules;
private readonly reqRespBridgeReqCaller;
protected readonly reqRespBridgeRespHandler: AsyncIterableBridgeHandler<IncomingRequestArgs, ResponseOutgoing>;
private readonly reqRespBridgeEventBus;
constructor(modules: WorkerNetworkCoreModules);
static init(modules: WorkerNetworkCoreInitModules): Promise<WorkerNetworkCore>;
close(): Promise<void>;
test(): Promise<void>;
scrapeMetrics(): Promise<string>;
updateStatus(status: phase0.Status): Promise<void>;
reStatusPeers(peers: PeerIdStr[]): Promise<void>;
reportPeer(peer: PeerIdStr, action: PeerAction, actionName: string): Promise<void>;
prepareBeaconCommitteeSubnets(subscriptions: CommitteeSubscription[]): Promise<void>;
prepareSyncCommitteeSubnets(subscriptions: CommitteeSubscription[]): Promise<void>;
subscribeGossipCoreTopics(): Promise<void>;
unsubscribeGossipCoreTopics(): Promise<void>;
getConnectedPeerCount(): Promise<number>;
getConnectedPeers(): Promise<PeerIdStr[]>;
getNetworkIdentity(): Promise<routes.node.NetworkIdentity>;
sendReqRespRequest(data: OutgoingRequestArgs): AsyncIterable<ResponseIncoming>;
publishGossip(topic: string, data: Uint8Array, opts?: PublishOpts): Promise<number>;
connectToPeer(peer: PeerIdStr, multiaddr: MultiaddrStr[]): Promise<void>;
disconnectPeer(peer: PeerIdStr): Promise<void>;
dumpPeers(): Promise<routes.lodestar.LodestarNodePeer[]>;
dumpPeer(peerIdStr: string): Promise<routes.lodestar.LodestarNodePeer | undefined>;
dumpPeerScoreStats(): Promise<PeerScoreStats>;
dumpGossipPeerScoreStats(): Promise<PeerScoreStatsDump>;
dumpDiscv5KadValues(): Promise<string[]>;
dumpMeshPeers(): Promise<Record<string, string[]>>;
writeNetworkThreadProfile(durationMs: number, dirpath: string): Promise<string>;
writeDiscv5Profile(durationMs: number, dirpath: string): Promise<string>;
writeNetworkHeapSnapshot(prefix: string, dirpath: string): Promise<string>;
writeDiscv5HeapSnapshot(prefix: string, dirpath: string): Promise<string>;
private getApi;
}
export {};
//# sourceMappingURL=networkCoreWorkerHandler.d.ts.map