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