Update README.md

This commit is contained in:
Jacek Sieka 2019-10-25 13:44:32 +02:00
parent ee5d1c1467
commit 8af2e03677
No known key found for this signature in database
GPG Key ID: A1B09461ABB656B8
1 changed files with 21 additions and 10 deletions

View File

@ -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