Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/zen-eth/shisui

Ethereum Portal Network Client written in Go
https://github.com/zen-eth/shisui

eth ethereum go golang lightclient portal-network

Last synced: 29 days ago
JSON representation

Ethereum Portal Network Client written in Go

Awesome Lists containing this project

README

        

# Shisui
[![CI](https://github.com/optimism-java/shisui2/actions/workflows/ci.yml/badge.svg)](https://github.com/optimism-java/shisui2/actions/workflows/ci.yml)
[![Discord](https://img.shields.io/badge/discord-join%20chat-blue.svg)](https://discord.gg/HBAgaHCBuY)

Shisui is an [Ethereum portal client](https://github.com/ethereum/portal-network-specs) written in Go language based
on [go-ethereum](https://github.com/ethereum/go-ethereum).
The name is inspired by Uchiha Shisui from the anime Naruto, who is renowned as "Shisui of the Body Flicker".

> **Note:** Shisui is still **under heavy development** and is not yet ready for production use.

## Building the source

For prerequisites and detailed build instructions please read
the [Installation Instructions](https://geth.ethereum.org/docs/getting-started/installing-geth).

Building `shisui` requires both a Go (version 1.22 or later) and a C compiler. You can install
them using your favourite package manager. Once the dependencies are installed, run

```shell
make shisui
```

Also, you can build the docker image by running

```shell
make shisui-image
```

## Running `shisui`

After building `shisui`, you can start the client by running

```shell
# supported options are list below
./build/bin/shisui
```

Alternatively, you can run the docker image by running

```shell
docker run -d -p 8545:8545 -p 9009:9009/udp -e SHISUI_NAT=stun ghcr.io/optimism-java/shisui:latest

# if you know your exiIp, replace by -e SHISUI_NAT=extip:${your ip}
```

You can use the script below to check if the node has started correctly.

```shell
curl -X POST http://127.0.0.1:8545 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "discv5_nodeInfo",
"params": [],
"id": 0
}'
```

### supported options

* `--rpc.addr` HTTP-RPC server listening addr
* `--rpc.port` HTTP-RPC server listening port(default: `8545`)
* `--data.dir` data dir of where the data file located(default: `./`)
* `--data.capacity` the capacity of the data stored, the unit is MB(default: `10GB`)
* `--nat` p2p address(default `none`)
* `none`, find local address
* `any` uses the first auto-detected mechanism
* `extip:77.12.33.4` will assume the local machine is reachable on the given IP
* `upnp` uses the Universal Plug and Play protocol
* `pmp` uses NAT-PMP with an auto-detected gateway address
* `pmp:192.168.0.1` uses NAT-PMP with the given gateway address
* `stun` uses stun server to find extip
* `--udp.addr` protocol UDP server listening port(default: `9009`)
* `--loglevel` loglevel of portal network, `1` to `5`, from `error` to `trace`(default: `1`)
* `--private.key` private key of p2p node, hex format without `0x` prifix
* `--bootnodes` bootnode of p2p network with ENR format, use `none` to config empty bootnodes
* `--networks` portal sub networks: history, beacon, state

all the options above can be set with envs.

the env is prefixed with `SHISUI` and change the `.` to `_`.

eg `--rpc.add` can be replaced with env `SHISUI_RPC_ADDR`

### Hardware Requirements

Minimum:

* CPU with 2+ cores
* 4GB RAM
* 1TB free storage space to sync the Mainnet
* 8 MBit/sec download Internet service

Recommended:

* Fast CPU with 4+ cores
* 16GB+ RAM
* High-performance SSD with at least 1TB of free space
* 25+ MBit/sec download Internet service