Updated Nimbus Roadmap (markdown)
parent
709c1496a6
commit
729b933224
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue