Updated Nimbus Roadmap (markdown)
parent
3221c19eb4
commit
144f1e405c
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue