This package is part of ChainSafe's Lodestar project
Typescript implementation of the Ethereum Consensus Req/Resp protocol
import {Libp2p} from "libp2p";
import {ssz} from "@lodestar/types";
import {ReqResp, ContextBytesType, Protocol, Encoding} from "@lodestar/reqresp";
import {ForkName} from "@lodestar/params";
import {Logger} from "@lodestar/utils";
async function getReqResp(libp2p: Libp2p, logger: Logger): Promise<void> {
const reqResp = new ReqResp({libp2p, logger, metricsRegister: null});
// Register a PONG handler to respond with caller's Ping request
const pingProtocol: Protocol = {
method: "ping",
version: 1,
encoding: Encoding.SSZ_SNAPPY,
contextBytes: {type: ContextBytesType.Empty},
requestSizes: ssz.phase0.Ping,
responseSizes: () => ssz.phase0.Ping,
handler: async function* (req) {
yield {
data: req.data,
fork: ForkName.phase0,
};
},
};
reqResp.registerProtocol(pingProtocol);
}
You will need to go over the specification.
- Follow the installation guide to install Lodestar.
- Quickly try out the whole stack by starting a local testnet.
Read our contributors document, submit an issue or talk to us on our discord!
Apache-2.0 ChainSafe Systems