https://github.com/ethereumjs/ultralight
Ethereum Portal Network TypeScript implementation
https://github.com/ethereumjs/ultralight
ethereum typescript
Last synced: 3 months ago
JSON representation
Ethereum Portal Network TypeScript implementation
- Host: GitHub
- URL: https://github.com/ethereumjs/ultralight
- Owner: ethereumjs
- Created: 2021-12-02T20:38:14.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2025-04-09T18:10:41.000Z (3 months ago)
- Last Synced: 2025-04-11T02:11:48.577Z (3 months ago)
- Topics: ethereum, typescript
- Language: TypeScript
- Homepage: https://github.com/ethereum/portal-network-specs
- Size: 31.8 MB
- Stars: 111
- Watchers: 14
- Forks: 28
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Ultralight - A Portal Network implementation in Typescript
This monorepo comprises an implementation of the [Portal Network spec](https://github.com/ethereum/portal-network-specs) 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 v20+, NPM v10+
## Quick Start
Clone this repo and run `npm i` from the root directory. This project leverages [`npm workspaces`](https://docs.npmjs.com/cli/v7/using-npm/workspaces) so requires NPM v7 or above.
- From the `packages/cli` subfolder, start the Ultralight `nodejs` client - `DEBUG=* npm run dev` and you should see some logs like below indicating the node is starting up:
```sh
de2f8:ultralight Started JSON RPC Server address=http://localhost:8545
```This will start a single instance of the Ultralight client running locally.
### Error related to `node-gyp` or `bcrypto.node`
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.
## Connecting to the devnet (developer testnet)
1. Change active folder: `cd packages/cli`
2. Run: `npm run devnet`
3. 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`)### Additional Documentation
See the [`cli`](./packages/cli/README.md) documentation for more specific usage of the NodeJS Ultralight client.
See the [interop instructions](./INTEROP.md) for running Ultralight in conjunction with the [Fluffy](https://github.com/status-im/nimbus-eth1/tree/master/fluffy) and [Trin](https://github.com/ethereum/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
### [`portalnetwork`](./packages/portalnetwork)
The `portalnetwork` library is the application layer needed to interact with the Portal Network and depends on `discv5` for its networking layer
### [`NodeJS Client`](./packages/cli)
This is a technical demonstration of a NodeJS application that uses the `portalnetwork` module to connect to the Portal Network