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