Nim implementation of the Ethereum Beacon Chain https://nimbus.guide
Go to file
Jacek Sieka 125231d321
add initial block pool (#139)
* implement in-memory block graph
* store tail block in database
* resolve unknown parents by syncing them from peers
* introduce concept of resolved blocks and attestations - those that
follow minimal protocol rules
* update state head lazily
* log more stuff
* shortHash -> shortLog
* start 9/10 beacon nodes by default, last can be started manually
* see also #134
* fix start.sh epoch length
2019-02-28 15:21:29 -06:00
.vscode vscode: add tasks 2018-12-13 11:14:21 -06:00
beacon_chain add initial block pool (#139) 2019-02-28 15:21:29 -06:00
benchmarks Update BLS to the latest scheme. (#80) 2019-02-05 17:13:29 +01:00
research add initial block pool (#139) 2019-02-28 15:21:29 -06:00
tests add initial block pool (#139) 2019-02-28 15:21:29 -06:00
.appveyor.yml Update ci configs 2019-01-17 14:38:16 +02:00
.gitignore initial commit 2018-07-20 15:46:03 +02:00
.travis.yml Update ci configs 2019-01-17 14:38:16 +02:00
LICENSE-APACHEv2 initial commit 2018-07-20 15:46:03 +02:00
LICENSE-MIT initial commit 2018-07-20 15:46:03 +02:00
README.md simulation: optional multitail support (#128) 2019-02-19 20:22:25 -06:00
beacon_chain.nim Add the types used in the beacon chain 2018-07-20 20:18:56 +02:00
beacon_chain.nimble initial state replay implementation 2019-02-20 22:42:17 -06:00
nim.cfg enable "--threads:on" for tests (#75) 2019-02-05 18:48:34 +01:00

README.md

Ethereum Beacon Chain

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

An alternative implementation of the Ethereum beacon chain in Nim.

Please see Full Beacon chain specs and the Ethereum Foundation reference implementation.

You can check where the beacon chain fits in the Ethereum research ecosystem in the Status Athenaeum.

Test vectors

The Eth 2.0 test vectors and their generators are available in a dedicated repository.

Convention

Ethereum Foundation uses:

  • snake_case for fields and procedure names
  • MACRO_CASE for constants
  • PascalCase for types

Nim NEP-1 recommends:

  • camelCase for fields and procedure names
  • PascalCase for constants
  • PascalCase for types

To facilitate collaboration and comparison, Nim-beacon-chain uses the Ethereum Foundation convention.

Installation

You can install the developement version of the library through nimble with the following command

nimble install https://github.com/status-im/nim-beacon-chain@#master

Building and Testing

To try out the implementation, please first make sure you have a Nim environment configured.

Alternatively, fire up our experimental Vagrant instance with Nim pre-installed and give us yout feedback about the process!

Then:

git clone https://github.com/status-im/nim-beacon-chain
cd nim-beacon-chain
nimble install
nimble test

This should produce some passing tests.

Additionally, you can run our simulation which generates a genesis file from some randomly generated validators. It then fires up 10 beacon nodes (each hosting 9 validators) which talk to each other and try to do state transitions. The simulation can be run by executing:

bash tests/simulation/start.sh

You can also separate the output from each beacon node in its own panel, using multitail:

USE_MULTITAIL="yes" ./tests/simulation/start.sh

You can find out more about it in the development update.

License

Licensed and distributed under either of

or

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