From 208f4197083bf0f5672f0737ea6922d8be017c57 Mon Sep 17 00:00:00 2001 From: zah Date: Sun, 23 Feb 2020 00:08:33 +0200 Subject: [PATCH] Updated Nimbus Roadmap (markdown) --- Nimbus-Roadmap.md | 164 +++++++--------------------------------------- 1 file changed, 23 insertions(+), 141 deletions(-) diff --git a/Nimbus-Roadmap.md b/Nimbus-Roadmap.md index d58935e..d4598a3 100644 --- a/Nimbus-Roadmap.md +++ b/Nimbus-Roadmap.md @@ -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