Skip to content

Latest commit

 

History

History
64 lines (46 loc) · 2.28 KB

README.md

File metadata and controls

64 lines (46 loc) · 2.28 KB

Lodestar Eth Consensus Req/Resp Protocol

Discord ETH Beacon APIs Spec v2.5.0 ES Version Node Version

This package is part of ChainSafe's Lodestar project

Typescript implementation of the Ethereum Consensus Req/Resp protocol

Usage

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);
}

Prerequisites

What you need

You will need to go over the specification.

Getting started

Contributors

Read our contributors document, submit an issue or talk to us on our discord!

License

Apache-2.0 ChainSafe Systems