3.5 KiB
3.5 KiB
Nimbus: an Ethereum 2.0 Sharding Client for Resource-Restricted Devices
Join the Status community chats:
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 VM tests:
mkdir -p build
nim c -o:build/test_vm_json -r --experimental:forLoopMacros tests/test_vm_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:
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license: LICENSE-MIT or http://opensource.org/licenses/MIT