mirror of
https://github.com/status-im/nimbus-eth1.git
synced 2025-02-10 03:03:44 +00:00
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; for example, Debian and Ubuntu have working RocksDB packages
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:
- 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
Description
Nimbus: an Ethereum Execution Client for Resource-Restricted Devices
https://status-im.github.io/nimbus-eth1/
Languages
Nim
97.8%
Shell
0.7%
Makefile
0.5%
CodeQL
0.4%
Nix
0.2%
Other
0.3%