diff --git a/README.md b/README.md index b2b12932a..9c4519887 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,55 @@ -# Lighthouse +# Lighthouse: an Ethereum 2.0-only client [![Build Status](https://travis-ci.org/sigp/lighthouse.svg?branch=master)](https://travis-ci.org/sigp/lighthouse) -A **work-in-progress** implementation of the Ethereum beacon_chain in Rust. +A **work-in-progress** implementation of the Ethereum 2.0 Beacon Chain in Rust. It is an implementation of the [Full PoS Casper chain v2](https://notes.ethereum.org/SCIg8AH5SA-O4C1G1LYZHQ?view) spec and is also largely based upon the [ethereum/beacon_chain](https://github.com/ethereum/beacon_chain) repo. -Thanks to Parity for their excellent crates (e.g., RLP, ethereum_types). +**NOTE: the cryptography libraries used in this implementation are very +experimental and all cryptography should be assumed to be insecure.** + +## 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) ## Usage -Presently this is proof-of-concept without p2p or any functionality you'd -expect from Parity or Geth. You can run the tests like this: ``` @@ -30,9 +65,3 @@ project. Best place for discussion is probably the [ethereum/sharding gitter](https://gitter.im/ethereum/sharding). - -## TODO: - -- [X] Implement state transitions up-to-par with the Python reference implementation. -- [ ] Ensure bls library is secure. -- [ ] Implement aggregate pub keys for BLS.