Updated Nimbus Roadmap (markdown)

zah 2018-06-01 14:55:12 +03:00
parent 709c1496a6
commit 729b933224
1 changed files with 37 additions and 38 deletions

@ -7,18 +7,17 @@ tasks are specified in the same level of detail.
## Development tasks: ## Development tasks:
### Already completed components: ### 1. RLP (COMPLETED)
* RLP
* ETHASH ### 2. ETHASH (COMPLETED)
Remaining tasks: Remaining tasks:
* [ ] GPU Mining
[ ] GPU Mining * [ ] Mining with Stratum server support
[ ] Mining with Stratum server support
### 1. Select an AES and SHA256 implementation. (COMPLETED) ### 3. Select an AES and SHA256 implementation. (COMPLETED)
The AES library should support both AES256 in CTR mode (as per [the RLPx spec][1]) The AES library should support both AES256 in CTR mode (as per [the RLPx spec][1])
and GCM mode (used in [Whisper v6][2]) and GCM mode (used in [Whisper v6][2])
@ -29,7 +28,7 @@ tasks are specified in the same level of detail.
[2]: https://gist.github.com/gluk256/cbdf8d1f05c72c2273cc42bce905388a [2]: https://gist.github.com/gluk256/cbdf8d1f05c72c2273cc42bce905388a
### 2. Implement ECIES (COMPLETED) ### 4. Implement ECIES (COMPLETED)
Required for the [encyprted handshake][3]. Based on libsecp256k1. Required for the [encyprted handshake][3]. Based on libsecp256k1.
Reference implementation: Reference implementation:
@ -41,13 +40,13 @@ tasks are specified in the same level of detail.
[3]: https://github.com/ethereum/devp2p/blob/master/rlpx.md#encrypted-handshake [3]: https://github.com/ethereum/devp2p/blob/master/rlpx.md#encrypted-handshake
### 3. Select Scrypt library (optional) ### 5. Select Scrypt library (optional)
Both cpp-ethereum and Parity also use Scrypt in their local keystore code. Both cpp-ethereum and Parity also use Scrypt in their local keystore code.
It doesn't seem mandatory for the implementation. It doesn't seem mandatory for the implementation.
### 4. Ethereum Bloom Filter (COMPLETED) ### 6. Ethereum Bloom Filter (COMPLETED)
Bloom filters are used for efficient monitoring of the transaction Bloom filters are used for efficient monitoring of the transaction
logs/events, stored in the receipt trie of the blockchain, for topic logs/events, stored in the receipt trie of the blockchain, for topic
@ -60,7 +59,7 @@ tasks are specified in the same level of detail.
- https://github.com/zielmicha/nim-bloom - https://github.com/zielmicha/nim-bloom
### 5. Ethereum key file (PARTIALLY COMPLETED) ### 7. Ethereum key file (PARTIALLY COMPLETED)
The key file stores the keys associated with one or more accounts in The key file stores the keys associated with one or more accounts in
password-protected encrypted form. password-protected encrypted form.
@ -82,7 +81,7 @@ tasks are specified in the same level of detail.
* [Select an AES implementation](#select-an-aes-implementation) * [Select an AES implementation](#select-an-aes-implementation)
### 6. JSON-RPC Server ### 8. JSON-RPC Server
Development already started. This will be an ongoing effort and the Development already started. This will be an ongoing effort and the
list of supported calls should increase as other parts of the system list of supported calls should increase as other parts of the system
@ -97,14 +96,14 @@ tasks are specified in the same level of detail.
[ ] Password protection [ ] Password protection
### 7. Test suite ### 9. 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?
### 8. Node discovery (v4 COMPLETED) ### 10. 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
@ -136,7 +135,7 @@ 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
### 9. UPnP support ### 11. 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
@ -148,7 +147,7 @@ tasks are specified in the same level of detail.
The user can choose from `any`, `none`, `upnp`, `extip` (Geth aslo has `pmp`) The user can choose from `any`, `none`, `upnp`, `extip` (Geth aslo has `pmp`)
### 10. Authenticated handshake (PARTIALLY COMPLETED) ### 12. 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
@ -163,7 +162,7 @@ tasks are specified in the same level of detail.
* [Implement ECIES](#implement-ecies) * [Implement ECIES](#implement-ecies)
### 11. RLPx sub-protocols (PARTIALLY COMPLETED) ### 13. 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
@ -195,7 +194,7 @@ tasks are specified in the same level of detail.
* [ ] Pre-sending PoW priority increase * [ ] Pre-sending PoW priority increase
### 12. The new binary trie ### 14. The new binary trie
Replaces the old hexary trie in the new blockchain shards. Replaces the old hexary trie in the new blockchain shards.
@ -208,7 +207,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
### 13. New parametric Blockchain definition ### 15. New parametric Blockchain definition
There should be sufficient parametrization to allow: There should be sufficient parametrization to allow:
@ -249,7 +248,7 @@ tasks are specified in the same level of detail.
* VM execution tracing/stepping * VM execution tracing/stepping
### 14. Blockchain Sync Algorithms ### 16. Blockchain Sync Algorithms
Fast sync uses the standard Ethereum sub-protocol. Fast sync uses the standard Ethereum sub-protocol.
@ -272,7 +271,7 @@ tasks are specified in the same level of detail.
[ ] Blockchain init from a genesis config for private networks [ ] Blockchain init from a genesis config for private networks
### 15. Known contract abstraction / DApp framework ### 17. 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
@ -291,7 +290,7 @@ tasks are specified in the same level of detail.
* [RLPx Sub-protocols](#rlpx-sub-protocols) * [RLPx Sub-protocols](#rlpx-sub-protocols)
### 16. Light Clients ### 18. 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
@ -314,7 +313,7 @@ tasks are specified in the same level of detail.
* DApp framework * DApp framework
### 17. Stateless Clients ### 19. 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
@ -330,7 +329,7 @@ tasks are specified in the same level of detail.
* [Partial tries](#the-new-binary-trie) * [Partial tries](#the-new-binary-trie)
### 18. Casper daemon ### 20. 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
@ -347,7 +346,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. Sharding daemon ### 21. Sharding daemon
- https://github.com/ethereum/wiki/wiki/Sharding-introduction-and-R&D - https://github.com/ethereum/wiki/wiki/Sharding-introduction-and-R&D
@ -374,7 +373,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. Etehreum name service resolver ### 22. Etehreum name service resolver
- https://docs.ens.domains/en/latest/ - https://docs.ens.domains/en/latest/
@ -386,7 +385,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)
### 21. Swarm ### 23. Swarm
- http://swarm-guide.readthedocs.io/en/latest/introduction.html - http://swarm-guide.readthedocs.io/en/latest/introduction.html
@ -407,7 +406,7 @@ tasks are specified in the same level of detail.
* DApp framework * DApp framework
### 22. Whisper ### 24. 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:
@ -430,7 +429,7 @@ tasks are specified in the same level of detail.
* [Bloom filters](#ethereum-bloom-filter) * [Bloom filters](#ethereum-bloom-filter)
### 23. eWASM VM ### 25. eWASM VM
Sub-tasks: Sub-tasks:
* [ ] Integrate Hera * [ ] Integrate Hera
@ -440,7 +439,7 @@ tasks are specified in the same level of detail.
* Parametric chain * Parametric chain
### 24. Integrate libsnark ### 26. 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
@ -454,12 +453,12 @@ tasks are specified in the same level of detail.
* [ ] Precompiled contracts * [ ] Precompiled contracts
### 25. Support IPFS ### 27. Support IPFS
No concrete plans yet. No concrete plans yet.
### 26. Command-line interface, Configuration, Local directory structure, Build Targets, Web Interface ### 28. 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
@ -474,10 +473,10 @@ tasks are specified in the same level of detail.
* [ ] Auto-update * [ ] Auto-update
### 27. Hardware-wallet support ### 29. Hardware-wallet support
### 28. Nim smart contract development ### 30. Nim smart contract development
Define a Nim DSL for creating smart contracts. Define a Nim DSL for creating smart contracts.
@ -488,7 +487,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
### 29. Fuzzing framework ### 31. 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