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: ## Development tasks:
### Already completed components:
* RLP
* ETHASH
Remaining tasks:
[ ] GPU Mining
[ ] Mining with Stratum server support
### 1. Select an AES and SHA256 implementation. (COMPLETED) ### 1. Select an AES and SHA256 implementation. (COMPLETED)
@ -81,14 +89,20 @@ tasks are specified in the same level of detail.
Reference information: Reference information:
- https://github.com/ethereum/wiki/wiki/JSON-RPC - https://github.com/ethereum/wiki/wiki/JSON-RPC
Optional components:
[ ] WS-RCP Server
[ ] IPC Server
[ ] Password protection
### Test suite
### 7. Test suite
Sub-tasks: Sub-tasks:
- CI tests for all libraries - CI tests for all libraries
- Validate that the entire history of Ethereum can be executed by Nimbus - Validate that the entire history of Ethereum can be executed by Nimbus
- Check that we fit in a certain memory/compute budget? - 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 - 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 [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. The standard Ethereum protocols use TCP to communicate between peers.
Hosts with private IP addresses must set up port redirection on their Hosts with private IP addresses must set up port redirection on their
routers. UPnP can be used to automate this. 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 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) * [Implement ECIES](#implement-ecies)
### 10. RLPx sub-protocols ### 11. RLPx sub-protocols (PARTIALLY COMPLETED)
The Ethereum wire protocols are transport-agnostic. Our framework should The Ethereum wire protocols are transport-agnostic. Our framework should
allow running them over the TCP connections established after node discovery 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: Sub-tasks:
* [ ] SubProtocol registry * [X] SubProtocol registry
* [ ] Active protocol map (shared objects) * [X] Active protocol map (shared objects)
* [ ] Message dispatcher * [X] Message dispatcher
* [ ] Subprotocol definition DSL * [X] Subprotocol definition DSL
* [ ] Protocol negotiation * [X] Protocol negotiation
* [ ] Per-subprotocol send queue * [ ] Per-subprotocol send queue
* [ ] Chunking * [ ] Chunking
@ -174,7 +193,7 @@ tasks are specified in the same level of detail.
* [ ] Pre-sending PoW priority increase * [ ] 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. 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 - 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: 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) * [Partial tries](#the-new-binary-trie)
Extra tasks: 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. Fast sync uses the standard Ethereum sub-protocol.
@ -247,8 +266,11 @@ tasks are specified in the same level of detail.
* Functional blockchain storage * Functional blockchain storage
* The stateless sync depends on [LES](#light-clients) and the [Binary Trie](#the-new-binary-trie) * 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, Make it easier to interact with known contracts such as Casper,
the Sharding VMC, etc. Each such contract has a well-known address 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) * [RLPx Sub-protocols](#rlpx-sub-protocols)
### 15. Light Clients ### 16. Light Clients
The light client operates without storing the full chain locally. The light client operates without storing the full chain locally.
Most operations depends on Asynchronous APIs that will downloads Most operations depends on Asynchronous APIs that will downloads
@ -290,7 +312,7 @@ tasks are specified in the same level of detail.
* DApp framework * DApp framework
### 16. Stateless Clients ### 17. Stateless Clients
- https://ethresear.ch/t/the-stateless-client-concept/172 - https://ethresear.ch/t/the-stateless-client-concept/172
- https://github.com/ethereum/sharding/blob/develop/docs/doc.md#stateless-clients - 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) * [Partial tries](#the-new-binary-trie)
### 17. Casper daemon ### 18. Casper daemon
- https://arxiv.org/pdf/1710.09437.pdf - https://arxiv.org/pdf/1710.09437.pdf
- https://github.com/ethereum/research/wiki/Casper-Version-1-Implementation-Guide - 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) * [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 - 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) * [ ] [Known contract abstraction](#known-contract-abstraction-dapp-framework)
### 19. Etehreum name service resolver ### 20. Etehreum name service resolver
- https://docs.ens.domains/en/latest/ - 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) * [ ] [Known contract abstraction](#known-contract-abstraction-dapp-framework)
### 20. Swarm ### 21. Swarm
- http://swarm-guide.readthedocs.io/en/latest/introduction.html - http://swarm-guide.readthedocs.io/en/latest/introduction.html
@ -383,7 +405,7 @@ tasks are specified in the same level of detail.
* DApp framework * DApp framework
### 21. Whisper ### 22. Whisper
While Swarm seems a better fit for Status's needs, we may also implement While Swarm seems a better fit for Status's needs, we may also implement
the Whisper protocol, which is currently at version 6: 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) * [Bloom filters](#ethereum-bloom-filter)
### 22. eWASM VM ### 23. eWASM VM
Sub-tasks: Sub-tasks:
* [ ] Integrate Hera * [ ] Integrate Hera
@ -416,7 +438,7 @@ tasks are specified in the same level of detail.
* Parametric chain * Parametric chain
### 23. Integrate libsnark ### 24. Integrate libsnark
Developers can take advantage of the homomorphic encryption and the Developers can take advantage of the homomorphic encryption and the
zero-knowledge proofs available in libsnark to implement currencies zero-knowledge proofs available in libsnark to implement currencies
@ -430,18 +452,19 @@ tasks are specified in the same level of detail.
* [ ] Precompiled contracts * [ ] Precompiled contracts
### 24. Support IPFS ### 25. Support IPFS
No concrete plans yet. 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: Sub-tasks:
* [ ] Provide options for launching the various daemons and modes of Nimbus * [ ] 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) * [ ] 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 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) * [ ] 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 * [ ] Test example applications using Nimbus as a library
* [ ] Define various UIs for Nimbus (Web UI, GUI, etc) * [ ] Define various UIs for Nimbus (Web UI, GUI, etc)
* [ ] Android build / CI test suite * [ ] Android build / CI test suite
@ -449,7 +472,10 @@ tasks are specified in the same level of detail.
* [ ] Auto-update * [ ] Auto-update
### 26. Nim smart contract development ### 27. Hardware-wallet support
### 28. Nim smart contract development
Define a Nim DSL for creating smart contracts. 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 * [ ] 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, 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 the Tries, the VM, etc through a fuzzer such as afl-fuzz. Teach the