Updated Nimbus Roadmap (markdown)

zah 2020-02-23 00:08:33 +02:00
parent 6e6269dcc5
commit 208f419708
1 changed files with 23 additions and 141 deletions

@ -105,14 +105,14 @@ tasks are specified in the same level of detail.
* [X] CI tests for code stream
* [X] CI tests for VM memory
* [X] CI tests for VM opcodes
* [ ] CI tests for GeneralStateTests JSON tests
* [ ] CI tests for other libraries
* [ ] Validate that the entire history of Ethereum can be executed by Nimbus
* [X] CI tests for GeneralStateTests JSON tests
* [X] CI tests for other libraries
* [X] Validate that the entire history of Ethereum can be executed by Nimbus
- Check that we fit in a certain memory/compute budget?
### 10. Node discovery (v4 COMPLETED)
### 10. Node discovery (COMPLETED)
- https://github.com/ethereum/devp2p/blob/master/rlpx.md#node-discovery
@ -152,18 +152,18 @@ tasks are specified in the same level of detail.
Related tasks:
[ ] Implement the `nat` options of the other Ethereum clients.
[X] Implement the `nat` options of the other Ethereum clients.
The user can choose from `any`, `none`, `upnp`, `extip` (Geth aslo has `pmp`)
### 12. Authenticated handshake (PARTIALLY COMPLETED)
### 12. Authenticated handshake (COMPLETED)
https://github.com/ethereum/devp2p/blob/master/rlpx.md#encrypted-handshake
Sub-tasks:
* [ ] Authenticate previously known nodes with an old session key
* [X] Authenticate previously known nodes with an old session key
* [X] Authenticate newly discovered nodes
* [ ] Support RLPx sub-protocol negotiation in the authentication message (capabilities)
* [X] Support RLPx sub-protocol negotiation in the authentication message (capabilities)
* [X] Derive shared secrets from handshake
Depends on:
@ -171,7 +171,7 @@ tasks are specified in the same level of detail.
* [Implement ECIES](#implement-ecies)
### 13. RLPx sub-protocols (PARTIALLY COMPLETED)
### 13. RLPx sub-protocols (COMPLETED)
The Ethereum wire protocols are transport-agnostic. Our framework should
allow running them over the TCP connections established after node discovery
@ -209,7 +209,7 @@ tasks are specified in the same level of detail.
Sub-tasks:
* [ ] Add support for partial tries
* [ ] Support for obtaining and verifying Merkle proofs
* [X] Support for obtaining and verifying Merkle proofs
Reference implementations:
- https://github.com/ethereum/research/blob/master/trie_research/new_bintrie.py
@ -280,7 +280,7 @@ tasks are specified in the same level of detail.
[ ] Blockchain init from a genesis config for private networks
### 17. Known contract abstraction / DApp framework
### 17. Known contract abstraction / DApp framework (COMPLETED)
Make it easier to interact with known contracts such as Casper,
the Sharding VMC, etc. Each such contract has a well-known address
@ -289,10 +289,10 @@ tasks are specified in the same level of detail.
Libraries such as web3.js and web.py offer similar functionality.
Sub-tasks:
* [ ] Nim-types-to-ABI-types translation and contract FFI DSL.
* [ ] Transaction creation logic
* [ ] Event monitoring logic
* [ ] Provide high-level information about the contract for the UI layer (NatSpec, etc)
* [X] Nim-types-to-ABI-types translation and contract FFI DSL.
* [X] Transaction creation logic
* [X] Event monitoring logic
* [X] Provide high-level information about the contract for the UI layer (NatSpec, etc)
Depends on:
* [Bloom filters](#ethereum-bloom-filter)
@ -337,52 +337,7 @@ tasks are specified in the same level of detail.
* [LES Implementation](#light-clients)
* [Partial tries](#the-new-binary-trie)
### 20. Casper daemon
- https://arxiv.org/pdf/1710.09437.pdf
- https://github.com/ethereum/research/wiki/Casper-Version-1-Implementation-Guide
- https://github.com/ethereum/casper
- https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ
Sub-tasks:
* [ ] Implement the new Fork-choice rule
* [ ] Monitor epochs, send prepares and commits when appropriate.
* [ ] Avoid triggering the slashing conditions by maintaing a local database of past actions.
* [ ] Provide an UI for adding deposits, tracking revenue and withdrawing funds.
Depends on:
* [Known contract abstraction](#known-contract-abstraction-dapp-framework)
### 21. Sharding daemon
- https://github.com/ethereum/wiki/wiki/Sharding-introduction-and-R&D
Prysmatic Labs GO Implementation Roadmap:
- https://github.com/prysmaticlabs/geth-sharding/blob/master/sharding/README.md
- https://medium.com/@rauljordan/ethereum-sharding-update-prysmatic-labs-implementation-roadmap-c625cd013aeb
Older PY-EVM Implementation Roadmap:
- https://github.com/ethereum/py-evm/issues/190
Sub-tasks:
* [ ] Shard monitoring/switching
* [ ] Block/Collation creation
* [ ] New account creation logic
* [ ] New VM opcodes
* [ ] Provide an UI for adding deposits, tracking revenue and withdrawing funds.
Depends on:
* [ ] Binary Trie, Overlayed/Tracked DB back-end.
(used to keep track of modifications created by a transaction and to model the transaction Witness data)
* [ ] Stateless Clients
* [ ] Parametric chain implementation
* [ ] [Known contract abstraction](#known-contract-abstraction-dapp-framework)
### 22. Etehreum name service resolver
### 20. Etehreum name service resolver
- https://docs.ens.domains/en/latest/
@ -393,29 +348,7 @@ tasks are specified in the same level of detail.
* [ ] Functional Blockchain repica / VM
* [ ] [Known contract abstraction](#known-contract-abstraction-dapp-framework)
### 23. Swarm
- http://swarm-guide.readthedocs.io/en/latest/introduction.html
Sub-tasks:
* [ ] Kademlia search
* [ ] File chunks upload / download manager
* [ ] Hierarchical hash verification
* [ ] Virtual file system based on manifests
* [ ] PSS (messaging over swarm)
* [ ] NAT Traversal brokerage over PSS (e.g. for WebRTC)
* [ ] Light mode of operation, relay nodes
* [ ] SWAP, SWEAR, SWINDLE, chequebooks
Depends on:
* Reusable Kademlia routing library
* [ENS resolver](#ethereum-name-service-resolver)
* [RLPx Sub-protocols](#rlpx-sub-protocols)
* DApp framework
### 24. Whisper
### 22. Whisper (COMPLETED)
While Swarm seems a better fit for Status's needs, we may also implement
the Whisper protocol, which is currently at version 6:
@ -437,68 +370,17 @@ tasks are specified in the same level of detail.
* [RLPx Sub-protocols](#rlpx-sub-protocols)
* [Bloom filters](#ethereum-bloom-filter)
### 25. eWASM VM
### 23. Command-line interface, Configuration, Local directory structure, Build Targets, Web Interface
Sub-tasks:
* [ ] Integrate Hera
* [ ] Extract all extern methods in a module shared between the VMs
Depends on:
* Parametric chain
### 26. Integrate libsnark
Developers can take advantage of the homomorphic encryption and the
zero-knowledge proofs available in libsnark to implement currencies
and other smart contracts with stronger privacy (similar to zcash).
Ethereum supports this by offering the operations from libsnark as
precompiled contracts.
- https://blog.ethereum.org/2016/12/05/zksnarks-in-a-nutshell/
Depends on:
* [ ] Precompiled contracts
### 27. Support IPFS
No concrete plans yet.
### 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
* [ ] Define a common scheme for specifying parameters (as command-line switches, as env vars, in configuration files, etc)
* [X] Provide options for launching the various daemons and modes of Nimbus
* [X] 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 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
* [ ] Define various UIs for Nimbus (Web UI, GUI, etc)
* [ ] Android build / CI test suite
* [ ] iOS build / CI test suite
* [ ] Auto-update
### 29. Hardware-wallet support
### 30. Nim smart contract development
Define a Nim DSL for creating smart contracts.
Sub-tasks:
* [ ] Support creating library contracts
* [ ] Compile Nim to Solidity ASM or Vyper LLL
* [ ] Compile Nim to eWASM (either through the C back-end or through LLVM)
* [ ] Enhance security through static code analysis / formal methods
### 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
fuzzer about Nim.
* [X] Android build / CI test suite
* [X] iOS build / CI test suite
### 24. Hardware-wallet support