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:
### Already completed components:
* RLP
* ETHASH
Remaining tasks:
[ ] GPU Mining
[ ] Mining with Stratum server support
### 1. RLP (COMPLETED)
### 1. Select an AES and SHA256 implementation. (COMPLETED)
### 2. ETHASH (COMPLETED)
Remaining tasks:
* [ ] GPU Mining
* [ ] Mining with Stratum server support
### 3. Select an AES and SHA256 implementation. (COMPLETED)
The AES library should support both AES256 in CTR mode (as per [the RLPx spec][1])
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. Implement ECIES (COMPLETED)
### 4. Implement ECIES (COMPLETED)
Required for the [encyprted handshake][3]. Based on libsecp256k1.
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. Select Scrypt library (optional)
### 5. Select Scrypt library (optional)
Both cpp-ethereum and Parity also use Scrypt in their local keystore code.
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
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
### 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
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)
### 6. JSON-RPC Server
### 8. JSON-RPC Server
Development already started. This will be an ongoing effort and the
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
### 7. Test suite
### 9. 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?
### 8. Node discovery (v4 COMPLETED)
### 10. Node discovery (v4 COMPLETED)
- 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
### 9. UPnP support
### 11. UPnP support
The standard Ethereum protocols use TCP to communicate between peers.
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`)
### 10. Authenticated handshake (PARTIALLY COMPLETED)
### 12. Authenticated handshake (PARTIALLY COMPLETED)
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)
### 11. RLPx sub-protocols (PARTIALLY COMPLETED)
### 13. 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
@ -195,7 +194,7 @@ tasks are specified in the same level of detail.
* [ ] 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.
@ -208,7 +207,7 @@ tasks are specified in the same level of detail.
- 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:
@ -249,7 +248,7 @@ tasks are specified in the same level of detail.
* VM execution tracing/stepping
### 14. Blockchain Sync Algorithms
### 16. Blockchain Sync Algorithms
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
### 15. Known contract abstraction / DApp framework
### 17. 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
@ -291,7 +290,7 @@ tasks are specified in the same level of detail.
* [RLPx Sub-protocols](#rlpx-sub-protocols)
### 16. Light Clients
### 18. Light Clients
The light client operates without storing the full chain locally.
Most operations depends on Asynchronous APIs that will downloads
@ -314,7 +313,7 @@ tasks are specified in the same level of detail.
* DApp framework
### 17. Stateless Clients
### 19. Stateless Clients
- https://ethresear.ch/t/the-stateless-client-concept/172
- 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)
### 18. Casper daemon
### 20. Casper daemon
- https://arxiv.org/pdf/1710.09437.pdf
- 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)
### 19. Sharding daemon
### 21. Sharding daemon
- 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)
### 20. Etehreum name service resolver
### 22. Etehreum name service resolver
- 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)
### 21. Swarm
### 23. Swarm
- http://swarm-guide.readthedocs.io/en/latest/introduction.html
@ -407,7 +406,7 @@ tasks are specified in the same level of detail.
* DApp framework
### 22. Whisper
### 24. Whisper
While Swarm seems a better fit for Status's needs, we may also implement
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)
### 23. eWASM VM
### 25. eWASM VM
Sub-tasks:
* [ ] Integrate Hera
@ -440,7 +439,7 @@ tasks are specified in the same level of detail.
* Parametric chain
### 24. Integrate libsnark
### 26. Integrate libsnark
Developers can take advantage of the homomorphic encryption and the
zero-knowledge proofs available in libsnark to implement currencies
@ -454,12 +453,12 @@ tasks are specified in the same level of detail.
* [ ] Precompiled contracts
### 25. Support IPFS
### 27. Support IPFS
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:
* [ ] 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
### 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.
@ -488,7 +487,7 @@ tasks are specified in the same level of detail.
* [ ] 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,
the Tries, the VM, etc through a fuzzer such as afl-fuzz. Teach the