Skip to content

ethereumjs/ultralight

Repository files navigation

Ultralight - A Portal Network implementation in Typescript

This monorepo comprises an implementation of the Portal Network spec and is under active development. It aspires to allow dapps, wallet providers, and any Javascript based Ethereum application to leverage the Portal Network for access to the Ethereum chain history and state.

Prerequisites

Node v18+, NPM v7+

Quick Start

Clone this repo and run npm i from the root directory. This project leverages npm workspaces so requires NPM v7 or above.

  • From the packages/cli subfolder, start the Ultralight nodejs client - npm run dev and you should see some logs like below indicating the node is starting up:
de2f8:ultralight Started JSON RPC Server address=http://localhost:8545

This will start a single instance of the Ultralight client running locally.

Connecting to the testnet

Follow the above quickstart guide and run npm run dev-testnet to start the client with the current list of bootnodes. The client will attempt to ping all of bootnodes in the provided default bootnode list.

Additional Documentation

See the cli documentation for more specific usage of the NodeJS Ultralight client.

See the interop instructions for running Ultralight in conjunction with the Fluffy and Trin portal clients.

Development Notes

Use npm run dev in the portalnetwork library to have Typescript automatically recompile code as changes are made.

Monorepo Structure

The portalnetwork library is the application layer needed to interact with the Portal Network and depends on discv5 for its networking layer

This a simple nodejs server that accepts incoming websocket connections from clients running the portalnetwork module and routes their messages on to other Portal Network clients

Browser Client unmaintained

This is a currently unmaintained technical demonstration of a web application that uses the portalnetwork module to connect to the Portal Network

This is a technical demonstration of a NodeJS application that uses the portalnetwork module to connect to the Portal Network