mirror of
https://github.com/status-im/nimbus-eth1.git
synced 2025-01-11 21:04:11 +00:00
Update Nimbus - An Ethereum 2.0 Sharding Client_xt.md
This commit is contained in:
parent
8d3f38bdbd
commit
4bdbcb9d80
@ -1,4 +1,4 @@
|
|||||||
**Nimbus - an Ethereum 2.0 Sharding Client**
|
**Nimbus - An Ethereum 2.0 Sharding Client**
|
||||||
- [Overview](#overview)
|
- [Overview](#overview)
|
||||||
- [Goals](#goals)
|
- [Goals](#goals)
|
||||||
- [Requirements](#requirements)
|
- [Requirements](#requirements)
|
||||||
@ -7,7 +7,7 @@
|
|||||||
- [Extensible, Configurable, and Modular Design](#extensible--configurable--and-modular-design)
|
- [Extensible, Configurable, and Modular Design](#extensible--configurable--and-modular-design)
|
||||||
- [Commitment to Ethereum Improvement Proposals (EIP)](#commitment-to-ethereum-improvement-proposals-eip)
|
- [Commitment to Ethereum Improvement Proposals (EIP)](#commitment-to-ethereum-improvement-proposals-eip)
|
||||||
- [User Experience](#user-experience)
|
- [User Experience](#user-experience)
|
||||||
- [Dual Licensing of MIT and Apache v2.0](#dual-licensing-of-mit-and-apache-v20)
|
- [Licensing: MIT, Apache v2.0, or Both](#licensing--mit--apache-v20--or-both)
|
||||||
- [Biweekly Development Reports, Technical Writing, and Promotion](#biweekly-development-reports--technical-writing--and-promotion)
|
- [Biweekly Development Reports, Technical Writing, and Promotion](#biweekly-development-reports--technical-writing--and-promotion)
|
||||||
- [Bounty-Based Development](#bounty-based-development)
|
- [Bounty-Based Development](#bounty-based-development)
|
||||||
- [Milestones](#milestones)
|
- [Milestones](#milestones)
|
||||||
@ -44,13 +44,14 @@
|
|||||||
- [Ongoing Improvements in Sharding](#ongoing-improvements-in-sharding)
|
- [Ongoing Improvements in Sharding](#ongoing-improvements-in-sharding)
|
||||||
- [August - December 2019](#august---december-2019)
|
- [August - December 2019](#august---december-2019)
|
||||||
- [Goals:](#goals)
|
- [Goals:](#goals)
|
||||||
|
- [Etymology](#etymology)
|
||||||
- [Ideas Considered for Implementation](#ideas-considered-for-implementation)
|
- [Ideas Considered for Implementation](#ideas-considered-for-implementation)
|
||||||
- [Resources](#resources)
|
- [Resources](#resources)
|
||||||
|
|
||||||
|
|
||||||
# Overview
|
# Overview
|
||||||
|
|
||||||
Nimbus aims to be a [sharding](https://github.com/ethereum/wiki/wiki/Sharding-FAQ) client implementation for the Ethereum Blockchain Application Platform. Because the largest deployment of Ethereum will be on embedded systems, Nimbus will be designed to perform well on IoT and personal mobile devices, including older smartphones with resource-restricted hardware. The extensible, configurable, and modular design of Nimbus will make it production ready for Web 3.0 and will ensure that it can be supported and maintained across all goals of Ethereum 2.0.
|
Nimbus aims to be a [sharding](https://github.com/ethereum/wiki/wiki/Sharding-FAQ) client implementation for the Ethereum Blockchain Application Platform. Because the largest deployment of Ethereum will potentially be on embedded systems, Nimbus will be designed to perform well on IoT and personal mobile devices, including older smartphones with resource-restricted hardware. The extensible, configurable, and modular design of Nimbus will make it production ready for Web 3.0 and will ensure that it can be supported and maintained across all goals of Ethereum 2.0.
|
||||||
|
|
||||||
# Goals
|
# Goals
|
||||||
|
|
||||||
@ -82,7 +83,7 @@ Nimbus aims to be a [sharding](https://github.com/ethereum/wiki/wiki/Sharding-FA
|
|||||||
|
|
||||||
## Nim
|
## Nim
|
||||||
|
|
||||||
[Nim](https://nim-lang.org/) is an efficient, general-purpose systems programming language with a Python-like syntax that compiles to C. Nim will allow us to implement Ethereum rapidly and to take advantage of the mature C-language tooling: in compilation of machine code, and in the analysis of static code.is an efficient, general-purpose systems programming language with a Python-like syntax that compiles to C. Nim will allow us to implement Ethereum rapidly and to take advantage of the mature C-language tooling: in compilation of machine code, and in the analysis of static code.
|
[Nim](https://nim-lang.org/) is an efficient, general-purpose systems programming language with a Python-like syntax that compiles to C. Nim will allow us to implement Ethereum rapidly and to take advantage of the mature C-language tooling: in compilation of machine code, and in the analysis of static code.
|
||||||
|
|
||||||
With Ethereum research currently modeled in Python, the end result of implementing in Nim should be code that
|
With Ethereum research currently modeled in Python, the end result of implementing in Nim should be code that
|
||||||
|
|
||||||
@ -100,8 +101,6 @@ Existing implementations of Ethereum have focused on desktop computers and serve
|
|||||||
|
|
||||||
In addition, throughout the development of Status, we have found that the dominant Ethereum implementations, Geth and Parity, are unsuitable for our target platform unless they are profiled and optimised (in progress).
|
In addition, throughout the development of Status, we have found that the dominant Ethereum implementations, Geth and Parity, are unsuitable for our target platform unless they are profiled and optimised (in progress).
|
||||||
|
|
||||||
Although Nimbus will support archival nodes, its first implementation will be as a light client, with focus on Proof of Stake and sharding.
|
|
||||||
|
|
||||||
During the deployment of Status among 40,000 alpha testers, we found that a significant portion (23.6%) of users were still running old mobile devices. In addition, recently discovered [Spectre vulnerabilities](https://en.wikipedia.org/wiki/Spectre_(security_vulnerability)) have led to an increase in the demand for open processors. For these reasons, we propose a self-imposed constraint and a requirement that Status perform well on the following:
|
During the deployment of Status among 40,000 alpha testers, we found that a significant portion (23.6%) of users were still running old mobile devices. In addition, recently discovered [Spectre vulnerabilities](https://en.wikipedia.org/wiki/Spectre_(security_vulnerability)) have led to an increase in the demand for open processors. For these reasons, we propose a self-imposed constraint and a requirement that Status perform well on the following:
|
||||||
|
|
||||||
1. 2014 [SoC](https://en.wikipedia.org/wiki/System_on_a_chip) architectures, such as the [Cortex-A53](https://developer.arm.com/products/processors/cortex-a/cortex-a53) (Samsung Note 4 & [Raspberry Pi 3](https://www.raspberrypi.org/products/raspberry-pi-3-model-b/)) and the Apple A8 (iPhone 6)
|
1. 2014 [SoC](https://en.wikipedia.org/wiki/System_on_a_chip) architectures, such as the [Cortex-A53](https://developer.arm.com/products/processors/cortex-a/cortex-a53) (Samsung Note 4 & [Raspberry Pi 3](https://www.raspberrypi.org/products/raspberry-pi-3-model-b/)) and the Apple A8 (iPhone 6)
|
||||||
@ -138,11 +137,7 @@ Nimbus is committed to open standards and to maintaining consensus with other Et
|
|||||||
|
|
||||||
Access to shards and mainchain state should be fast and responsive, the application binary should be lightweight in terms of the resources used, and the client should be dependable and robust against crashes.
|
Access to shards and mainchain state should be fast and responsive, the application binary should be lightweight in terms of the resources used, and the client should be dependable and robust against crashes.
|
||||||
|
|
||||||
## Dual Licensing of MIT and Apache v2.0
|
## Licensing: MIT, Apache v2.0, or Both
|
||||||
|
|
||||||
One unsolved hurdle faced by Status is the [LGPLv3](https://opensource.org/licenses/LGPL-3.0) license, whose requirement for runtime linking is incompatible with major mobile app distribution channels, such as the App Store of Apple Inc.
|
|
||||||
|
|
||||||
Numerous requests for a static-linking exception have gone unanswered. This has blocked the deployment of any legally sound, full Ethereum client on popular channels for distribution of mobile devices. LGPL also prevents the adoption of Ethereum on closed hardware platforms, such as XBox. Still, we remain optimistic this issue will be rectified.
|
|
||||||
|
|
||||||
We propose that Nimbus be licensed under Apache 2.0 and MIT. A permissive licensing structure with patent protection would
|
We propose that Nimbus be licensed under Apache 2.0 and MIT. A permissive licensing structure with patent protection would
|
||||||
|
|
||||||
@ -150,6 +145,10 @@ We propose that Nimbus be licensed under Apache 2.0 and MIT. A permissive licens
|
|||||||
2. Extend the reach of the Ethereum platform
|
2. Extend the reach of the Ethereum platform
|
||||||
3. Foster the highest degree of adoption by governments and enterprise
|
3. Foster the highest degree of adoption by governments and enterprise
|
||||||
|
|
||||||
|
One unsolved hurdle faced by Status is the [LGPLv3](https://opensource.org/licenses/LGPL-3.0) license, whose requirement for runtime linking is incompatible with major mobile app distribution channels, such as the App Store of Apple Inc.
|
||||||
|
|
||||||
|
Numerous requests for a static-linking exception have gone unanswered. This has blocked the deployment of any legally sound, full Ethereum client on popular channels for distribution of mobile devices. LGPL also prevents the adoption of Ethereum on closed hardware platforms, such as XBox. Still, we remain optimistic this issue will be rectified.
|
||||||
|
|
||||||
## Biweekly Development Reports, Technical Writing, and Promotion
|
## Biweekly Development Reports, Technical Writing, and Promotion
|
||||||
|
|
||||||
In addition to the implementation, Nimbus will have a biweekly process for reporting development-related updates. A technical writer will document implementation efforts and translate ongoing research discussions into articles easily understood by the community.
|
In addition to the implementation, Nimbus will have a biweekly process for reporting development-related updates. A technical writer will document implementation efforts and translate ongoing research discussions into articles easily understood by the community.
|
||||||
@ -162,7 +161,7 @@ To entice the community to accelerate the development, we will attach bounties t
|
|||||||
|
|
||||||
# Milestones
|
# Milestones
|
||||||
|
|
||||||
Timelines are approximate and subject to research, implementation considerations, and revisions made while the team produces a detailed implementation timeline.
|
Timelines are approximate and affected by research, implementation considerations, and revisions made while the team produces a detailed implementation timeline.
|
||||||
|
|
||||||
|
|
||||||
## Formation of the Team, and Detailed Project Implementation Timeline
|
## Formation of the Team, and Detailed Project Implementation Timeline
|
||||||
@ -208,11 +207,13 @@ The code will consist of independently reusable libraries that have the same per
|
|||||||
|
|
||||||
3. Connecting to the Ethereum network
|
3. Connecting to the Ethereum network
|
||||||
|
|
||||||
4. [RLPx](https://github.com/ethereum/devp2p/blob/master/rlpx.md#introduction) sub-protocols
|
4. Ethereum Patricia Trees
|
||||||
|
|
||||||
5. Ethereum [Ethash](https://github.com/ethereum/wiki/wiki/Ethash) function
|
5. [RLPx](https://github.com/ethereum/devp2p/blob/master/rlpx.md#introduction) sub-protocols
|
||||||
|
|
||||||
6. Implementation of EVM
|
6. Ethereum [Ethash](https://github.com/ethereum/wiki/wiki/Ethash) function
|
||||||
|
|
||||||
|
7. Implementation of EVM
|
||||||
|
|
||||||
### Goals:
|
### Goals:
|
||||||
|
|
||||||
@ -335,6 +336,14 @@ Implement support for the following:
|
|||||||
|
|
||||||
3. Provide an ongoing research into the applicability and performance characteristics of all super-quadratic sharding designs in a mobile environment.
|
3. Provide an ongoing research into the applicability and performance characteristics of all super-quadratic sharding designs in a mobile environment.
|
||||||
|
|
||||||
|
# Etymology
|
||||||
|
|
||||||
|
A reference to:
|
||||||
|
* A different kind of "dark cloud" computing
|
||||||
|
* Spiritual symbolism of sanctity and holiness
|
||||||
|
* Nim, the language it will be written in
|
||||||
|
* A Bus in computing architecture
|
||||||
|
|
||||||
# Ideas Considered for Implementation
|
# Ideas Considered for Implementation
|
||||||
|
|
||||||
1. Create [devp2p](https://github.com/ethereum/wiki/wiki/%C3%90%CE%9EVp2p-Wire-Protocol) and an abstraction to allow for
|
1. Create [devp2p](https://github.com/ethereum/wiki/wiki/%C3%90%CE%9EVp2p-Wire-Protocol) and an abstraction to allow for
|
||||||
|
Loading…
x
Reference in New Issue
Block a user