2018-08-02 09:31:37 +00:00
|
|
|
# Lighthouse: a (future) Ethereum 2.0 client
|
2018-07-06 07:54:07 +00:00
|
|
|
|
2018-07-18 23:51:28 +00:00
|
|
|
[![Build Status](https://travis-ci.org/sigp/lighthouse.svg?branch=master)](https://travis-ci.org/sigp/lighthouse)
|
2018-07-12 05:01:28 +00:00
|
|
|
|
2018-08-02 09:29:33 +00:00
|
|
|
A **work-in-progress** implementation of the Ethereum 2.0 Beacon Chain in Rust.
|
2018-07-06 07:54:07 +00:00
|
|
|
|
2018-07-06 07:55:44 +00:00
|
|
|
It is an implementation of the [Full PoS Casper chain
|
|
|
|
v2](https://notes.ethereum.org/SCIg8AH5SA-O4C1G1LYZHQ?view) spec and is also
|
2018-07-06 07:54:07 +00:00
|
|
|
largely based upon the
|
|
|
|
[ethereum/beacon_chain](https://github.com/ethereum/beacon_chain) repo.
|
|
|
|
|
2018-08-02 09:29:33 +00:00
|
|
|
**NOTE: the cryptography libraries used in this implementation are very
|
2018-08-02 09:31:37 +00:00
|
|
|
experimental and as such all cryptography should be assumed to be insecure.**
|
2018-08-02 09:29:33 +00:00
|
|
|
|
|
|
|
## Motivation
|
|
|
|
|
|
|
|
The objective of this project is to build a purely Ethereum 2.0 client from
|
|
|
|
the ground up.
|
|
|
|
|
|
|
|
As such, the early days of Lighthouse will be very much a research effort -- it
|
|
|
|
will be evolving on the bleeding-edge of specification without requiring to
|
|
|
|
maintain prod-grade stability or backwards-compatibility for the existing PoW
|
|
|
|
chain.
|
|
|
|
|
|
|
|
Whilst the Beacon Chain relies upon the PoW chain for block hashes, Lighthouse
|
|
|
|
will need to run alongside an existing client (e.g., Geth, Parity Ethereum),
|
|
|
|
only being able to stand by itself once the PoW chain has been deprecated.
|
|
|
|
|
|
|
|
Lighthouse aims to assist in advancing the progress of the following Ethereum
|
|
|
|
technologies:
|
|
|
|
|
|
|
|
- Proof-of-Stake
|
|
|
|
- Sharding
|
|
|
|
- EVM alternatives (e.g., WASM)
|
|
|
|
- Scalable, topic-based P2P networks (e.g., libp2p-gossipsub)
|
|
|
|
- Scalable signature schemes (e.g, BLS aggregates)
|
|
|
|
|
|
|
|
## Progress
|
|
|
|
|
|
|
|
As of 02/08/2018, there is a basic libp2p implementation alongside a series of
|
|
|
|
state objects and state transition functions. There are no syncing capabilities.
|
|
|
|
|
|
|
|
### Roadmap
|
|
|
|
|
|
|
|
- [ ] Upgrade to the v2.1 spec.
|
|
|
|
- [ ] Implement local storage (e.g., RocksDB, LevelDB).
|
|
|
|
- [ ] Implement a syncing procedure.
|
|
|
|
- [ ] Align to whichever P2P spec is chosen for the Beacon Chain by the EF.
|
|
|
|
- [ ] Provide validation services (participate in consensus)
|
2018-07-18 00:28:23 +00:00
|
|
|
|
2018-07-06 07:54:07 +00:00
|
|
|
## Usage
|
|
|
|
|
2018-07-17 08:13:22 +00:00
|
|
|
You can run the tests like this:
|
2018-07-06 07:54:07 +00:00
|
|
|
|
|
|
|
```
|
2018-07-12 06:44:21 +00:00
|
|
|
$ git clone <url>
|
2018-07-06 07:54:07 +00:00
|
|
|
$ cd rust_beacon_chain
|
|
|
|
$ cargo test
|
|
|
|
```
|
|
|
|
|
|
|
|
## Contact
|
|
|
|
|
2018-08-02 09:31:37 +00:00
|
|
|
This repo is presently authored by Paul Hauner as a
|
|
|
|
[Sigma Prime](https://github.com/sigp) project.
|
2018-07-06 07:54:07 +00:00
|
|
|
|
2018-08-02 09:31:37 +00:00
|
|
|
The best place for discussion is probably the [ethereum/sharding
|
2018-07-06 07:54:07 +00:00
|
|
|
gitter](https://gitter.im/ethereum/sharding).
|