Update README.md
This commit is contained in:
parent
ee5d1c1467
commit
8af2e03677
31
README.md
31
README.md
|
@ -5,11 +5,19 @@
|
||||||
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
|
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
|
||||||
![Stability: experimental](https://img.shields.io/badge/stability-experimental-orange.svg)
|
![Stability: experimental](https://img.shields.io/badge/stability-experimental-orange.svg)
|
||||||
|
|
||||||
|
[![Discord: Nimbus](https://img.shields.io/badge/discord-nimbus-orange.svg)](https://discord.gg/XRxWahP)
|
||||||
|
[![Gitter: #status-im/nimbus](https://img.shields.io/badge/gitter-status--im%2Fnimbus-orange.svg)](https://gitter.im/status-im/nimbus)
|
||||||
|
[![Status: #nimbus-general](https://img.shields.io/badge/status-nimbus--general-orange.svg)](https://get.status.im/chat/public/nimbus-general)
|
||||||
|
|
||||||
Nimbus beacon chain is a research implementation of the beacon chain component of the upcoming Ethereum Serenity upgrade, aka eth2. See the main [Nimbus](https://github.com/status-im/nimbus/) project for the bigger picture.
|
Nimbus beacon chain is a research implementation of the beacon chain component of the upcoming Ethereum Serenity upgrade, aka eth2. See the main [Nimbus](https://github.com/status-im/nimbus/) project for the bigger picture.
|
||||||
|
|
||||||
|
|
||||||
## Interop (for other Eth2 clients)
|
## Interop (for other Eth2 clients)
|
||||||
|
|
||||||
A branch with interop specific instructions, ncli and scripts to run multiple clients is available in the [interop branch](https://github.com/status-im/nim-beacon-chain/tree/interop) in the [multinet folder](https://github.com/status-im/nim-beacon-chain/tree/interop/multinet).
|
Nimbus is currently going through interoperability testing with several other beacon chain implementations - several tools are available to make this testing easier:
|
||||||
|
|
||||||
|
* [multinet](https://github.com/status-im/nim-beacon-chain/tree/master/multinet) - a set of scripts to build and run several Eth2 clients locally
|
||||||
|
* [ncli](https://github.com/status-im/nim-beacon-chain/tree/master/multinet) - command line tools for working with SSZ files and state transitions
|
||||||
|
|
||||||
⚠️ Important: To save bandwith `export GIT_LFS_SKIP_SMUDGE=1` before cloning the repo.
|
⚠️ Important: To save bandwith `export GIT_LFS_SKIP_SMUDGE=1` before cloning the repo.
|
||||||
This prevents LFS during unusual clones (i.e. when you add `--recurse-submodules` without being instructed to do so).
|
This prevents LFS during unusual clones (i.e. when you add `--recurse-submodules` without being instructed to do so).
|
||||||
|
@ -26,13 +34,13 @@ You can check where the beacon chain fits in the Ethereum research ecosystem in
|
||||||
|
|
||||||
### Prerequisites
|
### Prerequisites
|
||||||
|
|
||||||
(On Windows, a precompiled DLL collection download is available through the `fetch-dlls` Makefile target: ([Windows instructions](#windows)).)
|
|
||||||
|
|
||||||
* [RocksDB](https://github.com/facebook/rocksdb/)
|
* [RocksDB](https://github.com/facebook/rocksdb/)
|
||||||
* PCRE
|
* PCRE
|
||||||
* Go 1.12 (for compiling libp2p daemon - being phased out)
|
* Go 1.12 (for compiling libp2p daemon - being phased out)
|
||||||
* GNU Make, Bash and the usual POSIX utilities. Git 2.9.4 or newer.
|
* GNU Make, Bash and the usual POSIX utilities. Git 2.9.4 or newer.
|
||||||
|
|
||||||
|
On Windows, a precompiled DLL collection download is available through the `fetch-dlls` Makefile target: ([Windows instructions](#windows)).
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# MacOS with Homebrew
|
# MacOS with Homebrew
|
||||||
brew install rocksdb pcre
|
brew install rocksdb pcre
|
||||||
|
@ -47,7 +55,7 @@ sudo apt-get install librocksdb-dev libpcre3-dev
|
||||||
pakku -S rocksdb pcre-static
|
pakku -S rocksdb pcre-static
|
||||||
```
|
```
|
||||||
|
|
||||||
`rocksdb` can also be installed folloing [their instructions](https://github.com/facebook/rocksdb/blob/master/INSTALL.md).
|
`rocksdb` can also be installed by following [their instructions](https://github.com/facebook/rocksdb/blob/master/INSTALL.md).
|
||||||
|
|
||||||
### Build & Develop
|
### Build & Develop
|
||||||
|
|
||||||
|
@ -58,11 +66,10 @@ make # The first `make` invocation will update all Git submodules and prompt you
|
||||||
# It's only required once per Git clone. You'll run `make update` after each `git pull`, in the future,
|
# It's only required once per Git clone. You'll run `make update` after each `git pull`, in the future,
|
||||||
# to keep those submodules up to date.
|
# to keep those submodules up to date.
|
||||||
|
|
||||||
make test # run the test suite
|
# Run tests
|
||||||
```
|
make test
|
||||||
|
|
||||||
To pull the latest changes in all the Git repositories involved:
|
# Update to latest version
|
||||||
```bash
|
|
||||||
git pull
|
git pull
|
||||||
make update
|
make update
|
||||||
```
|
```
|
||||||
|
@ -105,11 +112,15 @@ You can now follow those instructions in the previous section by replacing `make
|
||||||
mingw32-make test # run the test suite
|
mingw32-make test # run the test suite
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
#### Raspberry PI
|
||||||
|
|
||||||
|
Raspberry PI support is experimental - see [Nimbus](https://github.com/status-im/nimbus/#raspberry-pi) instructions for how to prepare the Raspberry for building `nim-beacon-chain`.
|
||||||
|
|
||||||
## Beacon node simulation
|
## Beacon node simulation
|
||||||
|
|
||||||
The beacon node simulation will create a full peer-to-peer network of beacon nodes and validators, and run the beacon chain in real time. To change network parameters such as shard and validator counts, see [start.sh](tests/simulation/start.sh).
|
The beacon node simulation will create a full peer-to-peer network of beacon nodes and validators, and run the beacon chain in real time. To change network parameters such as shard and validator counts, see [start.sh](tests/simulation/start.sh).
|
||||||
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Clear data files from your last run and start the simulation with a new genesis block:
|
# Clear data files from your last run and start the simulation with a new genesis block:
|
||||||
make VALIDATORS=192 NODES=6 MISSING_NODES=1 eth2_network_simulation
|
make VALIDATORS=192 NODES=6 MISSING_NODES=1 eth2_network_simulation
|
||||||
|
@ -145,7 +156,7 @@ Specific steps:
|
||||||
```bash
|
```bash
|
||||||
# This will generate the Prometheus config and the Grafana dashboard on the fly,
|
# This will generate the Prometheus config and the Grafana dashboard on the fly,
|
||||||
# based on the number of nodes (which you can control by passing something like NODES=6 to `make`).
|
# based on the number of nodes (which you can control by passing something like NODES=6 to `make`).
|
||||||
make eth2_network_simulation
|
make VALIDATORS=192 NODES=6 MISSING_NODES=0 eth2_network_simulation
|
||||||
|
|
||||||
# In another terminal tab, after the sim started:
|
# In another terminal tab, after the sim started:
|
||||||
cd tests/simulation/prometheus
|
cd tests/simulation/prometheus
|
||||||
|
|
Loading…
Reference in New Issue