JSPM

@lodestar/reqresp

1.36.0-dev.fe5f423da3
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1115
  • Score
    100M100P100Q125180F
  • License Apache-2.0

A Typescript implementation of the Ethereum Consensus Req/Resp protocol

Package Exports

  • @lodestar/reqresp
  • @lodestar/reqresp/utils

Readme

Lodestar Eth Consensus Req/Resp Protocol

Discord ETH Beacon APIs Spec v3.1.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, GENESIS_EPOCH} 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,
        boundary: {fork: ForkName.phase0, epoch: GENESIS_EPOCH},
      };
    },
  };

  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