Nimbus: an Ethereum Execution Client for Resource-Restricted Devices https://status-im.github.io/nimbus-eth1/
Go to file
Yuriy Glukhov 75f973e654 Fixed test 2018-09-19 18:41:17 +03:00
.vscode vscode: add default build task 2018-08-22 21:43:22 -06:00
doc Update Nimbus - An Ethereum 2.0 Sharding Client_xt.md 2018-05-28 10:44:12 -07:00
examples update example 2018-07-17 19:18:59 +02:00
nimbus More state restoring 2018-09-19 18:41:17 +03:00
tests Fixed test 2018-09-19 18:41:17 +03:00
.appveyor.yml appveyor: fix version check 2018-09-06 11:57:26 -06:00
.gitignore vscode: add default build task 2018-08-22 21:43:22 -06:00
.travis.yml ci: update 2018-09-04 21:01:33 -06:00
GeneralStateTests.md revert better toSeq version to worse for-loop version of extracting keys from table because former now fails to compile 2018-09-18 07:07:04 -07:00
LICENSE-APACHEv2 Update README badges and add dual-license header 2018-04-06 16:52:10 +02:00
LICENSE-MIT Update README badges and add dual-license header 2018-04-06 16:52:10 +02:00
README.md make link text consistent with command 2018-09-10 19:42:45 +03:00
default.nix Updated Nix build environment for working with Nimbus 2018-06-24 17:46:43 +03:00
nim.cfg Add the new experimental forloopmacros flag for Stint fix #109 (#110) 2018-08-20 16:13:32 +02:00
nim.nix Updated Nix build environment for working with Nimbus 2018-06-24 17:46:43 +03:00
nimbus.nimble Don't use HTTP dependencies in Nimble due to nim-lang/nimble#543 2018-09-16 00:08:29 +03:00
nimbus.nix Implement storage backends using RocksDB and SQLite 2018-06-26 13:46:54 +03:00

README.md

Nimbus: an Ethereum 2.0 Sharding Client for Resource-Restricted Devices

Build Status (Travis) Windows build status (Appveyor) License: Apache License: MIT Stability: experimental

Join the Status community chats: Gitter: #status-im/nimbus Riot: #nimbus Riot: #dev-status

Rationale

Nimbus: an Ethereum 2.0 Sharding Client

Building & Testing

Prerequisites

  • A recent version of Nim
    • We use the version in the Status fork
    • Normally, this is the latest released version of Nim but it may also include custom patches
    • Follow the Nim installation instructions or use choosenim to manage your Nim versions
  • A recent version of Facebook's RocksDB
    • Compile from source or use the package manager of your OS

Obtaining the prerequisites through the Nix package manager

Users of the Nix package manager can install all prerequisites simply by running:

nix-shell nimbus.nix

Build

We use Nimble to manage dependencies and run tests.

To build and run test suite:

nimble test

Based on our config, Nimble will write binaries to build/ - you can do this manually also, as in the following examples:

Run example:

mkdir -p build
nim c -o:build/decompile_smart_contract -r examples/decompile_smart_contract.nim

Run Ethereum JSON-based general state tests:

mkdir -p build
nim c -o:build/test_generalstate_json -r --experimental:forLoopMacros tests/test_generalstate_json.nim

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

License

Licensed under both of the following: