An Ethereum Beacon Node implementation for learning opportunities for to-be-implementers. Ray would be a good starting point If you are interested to implement Beacon Node.
Photo by Marc-Olivier Jodoin on Unsplash
This project Ray
provides developers with an opportunity to learn how to implement Beacon Node via running the node or reading the source codes. We're focusing to networking, so some components needed to implement a BeaconNode (e.g. BeaconChain) are borrowed from lighthouse, which is an Ethereum consensus client in Rust.
Ray is never production ready but should be enough to learn from.
NOTE: Ray is under active development.
We aim for a simple implementation, by narrowing down the functions.
- Available on only macOS
- Runs for Prater testnet
- Görli testnet has been merged with the Prater proof-of-stake beacon chain.
- https://github.com/eth-clients/goerli
- Node discovery
- RPC
- Sync the Beacon Chain
You need a recent Rust toolchain to get started. If you don't have one already, check out Install Rust. Once you do that, you can just use cargo
as specified below.
$ git clone https://github.com/ackintosh/ray.git
$ cd ray
$ RUST_LOG=ray=info cargo run
Here are the specifications / documentations that Consensus Layer Implementers should refer to.
Whiteboard Series with NEAR | Ep: 44 Adrian Manning from Sigma Prime
We'll explore how the nodes communicate and for what reason. This will include Discovery v5, libp2p, Gossipsub, and the Eth2 RPC.
Authored and maintained by ackintosh.
GitHub @ackintosh / Twitter @NAKANO_Akihito