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.
Node v20+, NPM v10+
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 Ultralightnodejs
client -DEBUG=* 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.
If you encounter errors related to bcrypto.node
or node-gyp
when running npm i
, you need to add npm i -g @mapbox/node-pre-gyp
prior to running building Ultralight.
For Mac users, you may need to run sudo xcodebuild -license
and accept it, as node-gyp
relies on Xcode commands.
- Change active folder:
cd packages/cli
- Run:
npm run devnet
- Client starts with the current list of bootnodes which will attempt to ping all of bootnodes in the provided default bootnode list (specified in
packages/cli/bootnodes.txt
)
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.
Use npm run dev
in the portalnetwork
library to have Typescript automatically recompile code as changes are made.
The portalnetwork
library is the application layer needed to interact with the Portal Network and depends on discv5
for its networking layer
This is a technical demonstration of a NodeJS application that uses the portalnetwork
module to connect to the Portal Network