Nimbus: an Ethereum Execution Client for Resource-Restricted Devices https://status-im.github.io/nimbus-eth1/
Go to file
Ștefan Talpalaru b7d5de3bed update Makefile comments 2019-02-24 10:41:05 +02: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 fix SIGNEXTEND opcode 2019-02-23 17:57:53 +02:00
nix [Nix] Some steps towards cross-compilation support 2019-02-20 01:23:05 +02:00
premix add getAncestorHash to hunter tool 2019-02-22 13:11:28 +02:00
tests fix SIGNEXTEND opcode 2019-02-23 17:57:53 +02:00
vendor add submodules for csources and Nimble 2019-02-24 10:41:05 +02:00
.appveyor.yml new build system 2019-01-09 14:25:00 +02:00
.gitignore add submodules 2019-02-24 10:41:05 +02:00
.gitmodules add submodules for csources and Nimble 2019-02-24 10:41:05 +02:00
.travis.yml new build system 2019-01-09 14:25:00 +02:00
GeneralStateTests.md pass additional 32 GST, no addition failed GST 2019-02-23 17:57:53 +02: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
Makefile update Makefile comments 2019-02-24 10:41:05 +02:00
PersistBlockTests.md fixes persistBlockTestGen and update tests 2019-02-07 11:01:43 +01:00
PrecompileTests.md update test logs 2019-01-06 14:27:06 +01:00
README.md Premix-related changes 2019-01-28 12:38:23 +02:00
TracerTests.md update test logs 2019-01-06 14:27:06 +01:00
add_submodule.sh add submodules for csources and Nimble 2019-02-24 10:41:05 +02:00
default.nix [Nix] Some steps towards cross-compilation support 2019-02-20 01:23:05 +02:00
env.sh document env var 2019-01-09 22:26:40 +02:00
nimbus.nimble emergency fix #239 2019-02-23 17:57:53 +02:00

README.md

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

Windows build status (Appveyor) Build Status (Travis) 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. 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. The two repositories are expected to merge in Q1 2019.

Development Updates

To keep up to date with changes and development progress, follow the Nimbus blog.

Building & Testing

Prerequisites

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

POSIX-compatible OS

To build Nimbus (in "build/nimbus"), just execute:

make

Running ./build/nimbus --help will provide you with a list of the available command-line options. To start syncing with mainnet, just execute ./build/nimbus without any parameters.

To execute all tests:

make test

To pull the latest changes in all the Git repositories involved:

make update

To run a command that might use binaries from the Status Nim fork:

./env.sh vim

Our Wiki provides additional helpful information for debugging individual test cases and for pairing Nimbus with a locally running copy of Geth.

Windows

Install Mingw-w64 for your architecture using the "MinGW-W64 Online Installer" (first link under the directory listing). Run it and select your architecture in the setup menu ("i686" on 32-bit, "x86_64" on 64-bit), set the threads to "win32" and the exceptions to "dwarf" on 32-bit and "seh" on 64-bit. Change the installation directory to "C:\mingw-w64" and add it to your system PATH in "My Computer"/"This PC" -> Properties -> Advanced system settings -> Environment Variables -> Path -> Edit -> New -> C:\mingw-w64\mingw64\bin (it's "C:\mingw-w64\mingw32\bin" on 32-bit)

Install Git for Windows and use a "Git Bash" shell to clone and build Nimbus.

If you don't want to compile RocksDB and SQLite separately, you can fetch pre-compiled DLLs with:

mingw32-make fetch-dlls

This will place the right DLLs for your architecture in the "build/" directory.

You can now follow those instructions in the previous section by replacing make with mingw32-make (regardless of your 32-bit or 64-bit architecture).

Development tips

  • you can switch the DB backend with a Nim compiler define: -d:nimbus_db_backend=... where the (case-insensitive) value is one of "rocksdb" (the default), "sqlite", "lmdb"

  • the Premix debugging tools are documented separately

Troubleshooting

Report any errors you encounter, please, if not already documented!

Sometimes, the build will fail even though the latest CI is green - here are a few tips to handle this:

Using the Makefile

  • Turn it off and on again:
make clean update

Using Nimble directly

  • 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 and distributed under either of

or

at your option. These files may not be copied, modified, or distributed except according to those terms.