nimbus-eth1/README.md

99 lines
4.6 KiB
Markdown
Raw Normal View History

2018-05-27 19:13:55 +00:00
# Nimbus: an Ethereum 2.0 Sharding Client for Resource-Restricted Devices
2018-12-27 14:32:35 +00:00
[![Windows build status (Appveyor)](https://img.shields.io/appveyor/ci/nimbus/nimbus/master.svg?label=Windows "Windows build status (Appveyor)")](https://ci.appveyor.com/project/nimbus/nimbus)
[![Build Status (Travis)](https://img.shields.io/travis/status-im/nimbus/master.svg?label=Linux%20/%20macOS "Linux/macOS build status (Travis)")](https://travis-ci.org/status-im/nimbus)
2018-09-05 03:03:10 +00:00
[![License: Apache](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
[![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)
2018-02-07 16:50:28 +00:00
2018-03-17 08:39:13 +00:00
Join the Status community chats:
2018-08-31 22:23:51 +00:00
[![Gitter: #status-im/nimbus](https://img.shields.io/badge/gitter-status--im%2Fnimbus-orange.svg)](https://gitter.im/status-im/nimbus)
2018-03-17 08:39:13 +00:00
[![Riot: #nimbus](https://img.shields.io/badge/riot-%23nimbus%3Astatus.im-orange.svg)](https://chat.status.im/#/room/#nimbus:status.im)
2018-09-05 03:01:33 +00:00
[![Riot: #dev-status](https://img.shields.io/badge/riot-%23dev--status%3Astatus.im-orange.svg)](https://chat.status.im/#/room/#dev-status:status.im)
2018-03-17 08:39:13 +00:00
2018-05-17 04:51:17 +00:00
## Rationale
2018-11-22 13:00:24 +00:00
[Nimbus: an Ethereum 2.0 Sharding Client](https://our.status.im/nimbus-for-newbies/). The code in this repository is currently focusing on Ethereum 1.0 feature parity, while all 2.0 research and development is happening in parallel in [nim-beacon-chain](https://github.com/status-im/nim-beacon-chain). The two repositories are expected to merge in Q1 2019.
2018-12-27 14:32:35 +00:00
## Development Updates
To keep up to date with changes and development progress, follow the [Nimbus blog](https://our.status.im/tag/nimbus/).
## Building & Testing
### Prerequisites
2018-08-31 22:23:51 +00:00
* A recent version of Nim
* We use the version in the [Status fork](https://github.com/status-im/Nim)
* Follow the Nim installation instructions or use [choosenim](https://github.com/dom96/choosenim) to manage your Nim versions
* A recent version of Facebook's [RocksDB](https://github.com/facebook/rocksdb/)
* Compile [from source](https://github.com/facebook/rocksdb/blob/master/INSTALL.md) or use the package manager of your OS; for example, [Debian](https://packages.debian.org/search?keywords=librocksdb-dev&searchon=names&exact=1&suite=all&section=all), [Ubuntu](https://packages.ubuntu.com/search?keywords=librocksdb-dev&searchon=names&exact=1&suite=all&section=all), and [Fedora](https://apps.fedoraproject.org/packages/rocksdb) have working RocksDB packages
#### Obtaining the prerequisites through the Nix package manager
Users of the [Nix package manager](https://nixos.org/nix/download.html) can install all prerequisites simply by running:
``` bash
nix-shell nimbus.nix
```
2018-09-24 23:10:38 +00:00
### Build & Install
2018-08-31 22:23:51 +00:00
We use [Nimble](https://github.com/nim-lang/nimble) to manage dependencies and run tests.
To build and install Nimbus in your home folder, just execute:
2018-08-31 22:23:51 +00:00
```bash
nimble install
2018-08-31 22:23:51 +00:00
```
2018-07-20 20:02:52 +00:00
After a succesful installation, running `nimbus --help` will provide you with a list of
the available command-line options. To start syncing with mainnet, just execute `nimbus`
without any parameters.
2018-07-20 20:02:52 +00:00
To execute all tests:
2018-08-31 22:23:51 +00:00
```bash
nimble test
2018-08-31 22:23:51 +00:00
```
2018-07-20 20:02:52 +00:00
Our Wiki provides additional helpful information for [debugging individual test cases][1]
and for [pairing Nimbus with a locally running copy of Geth][2].
[1]: https://github.com/status-im/nimbus/wiki/Understanding-and-debugging-Nimbus-EVM-JSON-tests
[2]: https://github.com/status-im/nimbus/wiki/Debugging-state-reconstruction
2018-07-20 20:02:52 +00:00
2018-12-27 14:32:35 +00:00
### Build and Run Nimbus
```bash
nimble nimbus
./build/nimbus
```
Report any errors you encounter, please, if not [already documented](https://github.com/status-im/nimbus)!
2018-08-31 22:23:51 +00:00
#### Troubleshooting
Sometimes, the build will fail even though the latest CI is green - here are a few tips to handle this:
* Wrong Nim version
* We depend on many bleeding-edge features - Nim regressions often happen
* Use the [Status fork](https://github.com/status-im/Nim) of Nim
* Wrong versions of dependencies
* nimble dependency tracking often breaks due to its global registry
* wipe the nimble folder and try again
* C compile or link fails
* Nim compile cache is pretty buggy and sometimes will fail to recompile
* wipe your nimcache folder
2018-07-20 20:02:52 +00:00
## License
2018-12-27 14:32:35 +00:00
Licensed and distributed under either of
* MIT license: [LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT
or
2019-01-02 13:50:44 +00:00
* Apache License, Version 2.0, ([LICENSE-APACHEv2](LICENSE-APACHEv2) or http://www.apache.org/licenses/LICENSE-2.0)
2018-12-27 14:32:35 +00:00
at your option. This file may not be copied, modified, or distributed except according to those terms.