Updated Nimbus Roadmap (markdown)

zah 2018-06-01 14:50:15 +03:00
parent 3221c19eb4
commit 144f1e405c
1 changed files with 54 additions and 28 deletions

@ -7,6 +7,14 @@ tasks are specified in the same level of detail.
## Development tasks:
### Already completed components:
* RLP
* ETHASH
Remaining tasks:
[ ] GPU Mining
[ ] Mining with Stratum server support
### 1. Select an AES and SHA256 implementation. (COMPLETED)
@ -81,14 +89,20 @@ tasks are specified in the same level of detail.
Reference information:
- https://github.com/ethereum/wiki/wiki/JSON-RPC
Optional components:
[ ] WS-RCP Server
[ ] IPC Server
[ ] Password protection
### Test suite
### 7. Test suite
Sub-tasks:
- CI tests for all libraries
- Validate that the entire history of Ethereum can be executed by Nimbus
- Check that we fit in a certain memory/compute budget?
### 7. Node discovery (v4 COMPLETED)
### 8. Node discovery (v4 COMPLETED)
- https://github.com/ethereum/devp2p/blob/master/rlpx.md#node-discovery
@ -120,14 +134,19 @@ tasks are specified in the same level of detail.
[kad]: https://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf
### 8. UPnP support
### 9. UPnP support
The standard Ethereum protocols use TCP to communicate between peers.
Hosts with private IP addresses must set up port redirection on their
routers. UPnP can be used to automate this.
Related tasks:
### 9. Authenticated handshake (PARTIALLY COMPLETED)
[ ] Implement the `nat` options of the other Ethereum clients.
The user can choose from `any`, `none`, `upnp`, `extip` (Geth aslo has `pmp`)
### 10. Authenticated handshake (PARTIALLY COMPLETED)
https://github.com/ethereum/devp2p/blob/master/rlpx.md#encrypted-handshake
@ -142,7 +161,7 @@ tasks are specified in the same level of detail.
* [Implement ECIES](#implement-ecies)
### 10. RLPx sub-protocols
### 11. RLPx sub-protocols (PARTIALLY COMPLETED)
The Ethereum wire protocols are transport-agnostic. Our framework should
allow running them over the TCP connections established after node discovery
@ -160,12 +179,12 @@ tasks are specified in the same level of detail.
Sub-tasks:
* [ ] SubProtocol registry
* [ ] Active protocol map (shared objects)
* [ ] Message dispatcher
* [ ] Subprotocol definition DSL
* [X] SubProtocol registry
* [X] Active protocol map (shared objects)
* [X] Message dispatcher
* [X] Subprotocol definition DSL
* [ ] Protocol negotiation
* [X] Protocol negotiation
* [ ] Per-subprotocol send queue
* [ ] Chunking
@ -174,7 +193,7 @@ tasks are specified in the same level of detail.
* [ ] Pre-sending PoW priority increase
### 11. The new binary trie
### 12. The new binary trie
Replaces the old hexary trie in the new blockchain shards.
@ -187,7 +206,7 @@ tasks are specified in the same level of detail.
- https://github.com/ethereum/py-trie/blob/master/trie/binary.py
### 12. New parametric Blockchain definition
### 13. New parametric Blockchain definition
There should be sufficient parametrization to allow:
@ -225,10 +244,10 @@ tasks are specified in the same level of detail.
* [Partial tries](#the-new-binary-trie)
Extra tasks:
* VM execution tracing
* VM execution tracing/stepping
### 13. Blockchain Sync Algorithms
### 14. Blockchain Sync Algorithms
Fast sync uses the standard Ethereum sub-protocol.
@ -247,8 +266,11 @@ tasks are specified in the same level of detail.
* Functional blockchain storage
* The stateless sync depends on [LES](#light-clients) and the [Binary Trie](#the-new-binary-trie)
Related tasks:
[ ] Blockchain init from a genesis config for private networks
### 14. Known contract abstraction / DApp framework
### 15. Known contract abstraction / DApp framework
Make it easier to interact with known contracts such as Casper,
the Sharding VMC, etc. Each such contract has a well-known address
@ -267,7 +289,7 @@ tasks are specified in the same level of detail.
* [RLPx Sub-protocols](#rlpx-sub-protocols)
### 15. Light Clients
### 16. Light Clients
The light client operates without storing the full chain locally.
Most operations depends on Asynchronous APIs that will downloads
@ -290,7 +312,7 @@ tasks are specified in the same level of detail.
* DApp framework
### 16. Stateless Clients
### 17. Stateless Clients
- https://ethresear.ch/t/the-stateless-client-concept/172
- https://github.com/ethereum/sharding/blob/develop/docs/doc.md#stateless-clients
@ -306,7 +328,7 @@ tasks are specified in the same level of detail.
* [Partial tries](#the-new-binary-trie)
### 17. Casper daemon
### 18. Casper daemon
- https://arxiv.org/pdf/1710.09437.pdf
- https://github.com/ethereum/research/wiki/Casper-Version-1-Implementation-Guide
@ -323,7 +345,7 @@ tasks are specified in the same level of detail.
* [Known contract abstraction](#known-contract-abstraction-dapp-framework)
### 18. Sharding daemon
### 19. Sharding daemon
- https://github.com/ethereum/wiki/wiki/Sharding-introduction-and-R&D
@ -350,7 +372,7 @@ tasks are specified in the same level of detail.
* [ ] [Known contract abstraction](#known-contract-abstraction-dapp-framework)
### 19. Etehreum name service resolver
### 20. Etehreum name service resolver
- https://docs.ens.domains/en/latest/
@ -362,7 +384,7 @@ tasks are specified in the same level of detail.
* [ ] [Known contract abstraction](#known-contract-abstraction-dapp-framework)
### 20. Swarm
### 21. Swarm
- http://swarm-guide.readthedocs.io/en/latest/introduction.html
@ -383,7 +405,7 @@ tasks are specified in the same level of detail.
* DApp framework
### 21. Whisper
### 22. Whisper
While Swarm seems a better fit for Status's needs, we may also implement
the Whisper protocol, which is currently at version 6:
@ -406,7 +428,7 @@ tasks are specified in the same level of detail.
* [Bloom filters](#ethereum-bloom-filter)
### 22. eWASM VM
### 23. eWASM VM
Sub-tasks:
* [ ] Integrate Hera
@ -416,7 +438,7 @@ tasks are specified in the same level of detail.
* Parametric chain
### 23. Integrate libsnark
### 24. Integrate libsnark
Developers can take advantage of the homomorphic encryption and the
zero-knowledge proofs available in libsnark to implement currencies
@ -430,18 +452,19 @@ tasks are specified in the same level of detail.
* [ ] Precompiled contracts
### 24. Support IPFS
### 25. Support IPFS
No concrete plans yet.
### 25. Command-line interface, Configuration, Local directory structure, Build Targets, Web Interface
### 26. Command-line interface, Configuration, Local directory structure, Build Targets, Web Interface
Sub-tasks:
* [ ] Provide options for launching the various daemons and modes of Nimbus
* [ ] Define a common scheme for specifying parameters (as command-line switches, as env vars, in configuration files, etc)
* [ ] Provide abstractions over local file system usage (e.g. XDG, AppData, Android and iOS specific APIs)
* [ ] Provide compile-time defines for turning off features of Nimbus (i.e. allow the lite clients to omit most of the code)
* [ ] Blockchain export/inspection APIs and CLIs
* [ ] Test example applications using Nimbus as a library
* [ ] Define various UIs for Nimbus (Web UI, GUI, etc)
* [ ] Android build / CI test suite
@ -449,7 +472,10 @@ tasks are specified in the same level of detail.
* [ ] Auto-update
### 26. Nim smart contract development
### 27. Hardware-wallet support
### 28. Nim smart contract development
Define a Nim DSL for creating smart contracts.
@ -460,7 +486,7 @@ tasks are specified in the same level of detail.
* [ ] Enhance security through static code analysis / formal methods
### 27. Fuzzing framework
### 29. Fuzzing framework
Test the implementation of all building block libraries such as RLP,
the Tries, the VM, etc through a fuzzer such as afl-fuzz. Teach the