Updated Nimbus Roadmap (markdown)
parent
6e6269dcc5
commit
208f419708
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue