Merge pull request #84 from status-im/develop

update master
This commit is contained in:
zah 2020-08-18 16:41:07 +03:00 committed by GitHub
commit f6d65bcade
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 80 additions and 54 deletions

View File

@ -5,7 +5,11 @@ This repo holds the code for two sites:
* [nimbus.team](https://nimbus.team) - From `master`, built in [CI](https://ci.status.im/job/misc/job/nimbus.team/), served from `gh-pages`
* [dev.nimbus.team](https://dev.nimbus.team) - From `develop`, built in [CI](https://ci.status.im/job/misc/job/dev.nimbus.team/), serverd from dev host
There is an `edit` button on each page, which will take you directly to the document you need to edit on the `develop` branch. We can then allow a large group of people to push directly to `develop` and show their changes on the staging site when asking for review, which should smooth out and speed up the process considerably for everyone. `master` is obviously protected, and will only have changes merged in from `develop` once accepted.
There is an `edit` button on each page, which will take you directly to the document you need to edit on the `develop` branch.
The recommended flow is to create a PR against `develop`. We can then allow a large group of people to push directly to `develop` and show their changes on the staging site when asking for review, which should smooth out and speed up the process considerably for everyone. `master` is obviously protected, and will only have changes merged in from `develop` once accepted.
N.B. make sure you've set up [signed commits](https://docs.github.com/en/github/authenticating-to-github/signing-commits) before submitting a PR (this repository requires all commits to be signed).
## Adding a New Page
@ -21,7 +25,8 @@ Make sure you have [Node.js](https://nodejs.org/) installed first.
1. Open Terminal and navigate to the project root directory,
2. Run `yarn install`
3. Run `yarn devel`
4. Open http://localhost:8000 in a browser
3. Run `yarn build`
4. Run `yarn devel`
5. Open http://localhost:8000 in a browser
This prevents the need for any global installs, and will allow you to have live reloading for any changes you are making.
This prevents the need for any global installs, and allows you to live reload any changes you make.

View File

@ -27,7 +27,7 @@ hexo.extend.helper.register('page_nav', function() {
}
var keys = Object.keys(list);
var index = keys.indexOf(path);
var index = keys.indexOf("/docs/" + path);
var result = '';
if (index > 0) {

View File

@ -53,12 +53,6 @@
statusName: "Cylindrical Darling Mastiff"
githubLink: "https://github.com/sinkingsugar"
- name: "Tina Lee"
image: "/img/tina.png"
statusLink: "https://join.status.im/user/tinaaaaalee.stateofus.eth"
statusName: "Incomparable Carefree Paca"
githubLink: "https://github.com/tina1998612"
- name: "Viktor Kirilov"
image: "/img/viktor.jpg"
statusLink: "https://join.status.im/user/0x0427fdc3290d711c35c747c282e90737ac05970917ef6cf65cd4b568b7d843103a57f676371bf734ccb82c310d5e1bea33ee236261d3f990d814b29c2ffe342ca7"
@ -70,3 +64,9 @@
statusLink: "https://join.status.im/user/0x041bee40a44bdd2b0a5cc00a45e3626414194b05ea911c7169b9bcdfa0f8453566212ef982e4b5f9379796e28d9c8befbed26ec6ae2293ab7fcd90656db3d20e51"
statusName: "Windy Glass Crayfish"
gitHubLink: "https://github.com/dryajov"
- name: "Sacha Saint-Leger"
image: "/img/sacha.jpg"
statusLink: "https://join.status.im/u/0x044d9b09ce9b5948105f0e55da8744ce86c7337e187fece22cfb9a77e7210cbb7f83cb28cce97a522399104ba61cfc2746c72ca4eab45d7bbda5201ec01d567c0b"
statusName: "Glittering Tubby Blackbird"
gitHubLink: "https://github.com/sachayves"

View File

@ -3,11 +3,13 @@ id: building
title: Getting Started with Nimbus
---
This document will explain how to install, test, and run Nimbus on your local machine. To learn about what Nimbus is, see the [intro post](https://our.status.im/nimbus-for-newbies/).
This document explains how to install, test, and run Nimbus on your local machine. To learn about what Nimbus is, see our original [intro post](https://our.status.im/nimbus-for-newbies/). To dig deeper, see the Nimbus [Ethereum 1.0](https://github.com/status-im/nimbus) and [Ethereum 2.0](https://github.com/status-im/nim-beacon-chain) repositories.
### Building and Running Nimbus
### Building and running Nimbus
To run Nimbus in Ethereum 1.0 mode:
To run Nimbus in [Ethereum 1.0 mode](https://github.com/status-im/nimbus), first [install the prerequisites](https://github.com/status-im/nimbus#prerequisites).
Then:
```bash
git clone https://github.com/status-im/nimbus
@ -24,22 +26,18 @@ make nimbus
Nimbus will now run and attempt to synchronize with the Ethereum 1.0 blockchain. It can currently reach block 1.5 million.
### Building and Running the Ethereum 2.0 local beacon chain simulation
### Building and running the Ethereum 2.0 local beacon chain simulation
The beacon chain simulation runs several beacon nodes on the local machine, attaches several local validators to each, and builds a beacon chain between them. This is a precursor to our [testnet](https://our.status.im/the-nimbus-mvp-testnet-is-here/).
The beacon chain simulation runs several beacon nodes on the local machine, attaches several local validators to each, and builds a beacon chain between them.
Prerequisites: Golang 1.12+, because we need it to build the Go libp2p daemon for node communication. You also need `git-lfs` installed to run tests - on Windows that's a command documented below, on other operating systems it can be installed using your system's package manager (e.g. `sudo apt-get install git-lfs`).
**Prerequisites:** At the moment, Nimbus has to be built from source, and has the following external dependencies -- developer tools (C compiler, Make, Bash, Git), [PCRE](https://www.pcre.org/); follow the instructions outlined [here](https://github.com/status-im/nim-beacon-chain#prerequisites-for-everyone) to install them.
Enter the Ethereum 2.0 realm of Nimbus:
Once you've installed the prerequisites, you're ready to enter the Ethereum 2.0 realm of Nimbus:
```bash
git clone https://github.com/status-im/nim-beacon-chain
cd nim-beacon-chain
# >>> WINDOWS ONLY <<<
make fetch-dlls # WINDOWS ONLY
# >>> WINDOWS ONLY <<<
make
make test
```
@ -53,42 +51,59 @@ make eth2_network_simulation
If you'd like to clean the previous run's data:
```bash
make clean_eth2_network_simulation_files eth2_network_simulation
make clean_eth2_network_simulation_all
```
If you'd like to see the nodes running on separated sub-terminals inside one big window, install [Multitail](https://www.vanheusden.com/multitail/), then:
```bash
USE_MULTITAIL="yes" make eth2_network_simulation
```
You'll get something like this (click for full size):
[![](https://i.imgur.com/Pc99VDO.png)](https://i.imgur.com/Pc99VDO.png)
To change the number of validators and nodes:
```bash
VALIDATORS=512 NODES=50 make eth2_network_simulation
# Clear data files from your last run and start the simulation with a new genesis block:
make VALIDATORS=192 NODES=6 USER_NODES=1 eth2_network_simulation
```
Find out more about the simulation [here](https://our.status.im/nimbus-development-update-03/).
If youd like to see the nodes running on separated sub-terminals inside one big window, install [Multitail](https://www.vanheusden.com/multitail/index.php) (if you're on a Mac, follow the instructions [here](https://brewinstall.org/Install-multitail-on-Mac-with-Brew/)), then:
### Building and Running the Ethereum 2.0 local state transition simulation
The state transition simulation measures how fast it can process the tasks in the beacon chain's state transition.
```
USE_MULTITAIL="yes" make eth2_network_simulation
```
Youll get something like this (click for full size):
[![](https://i.imgur.com/Pc99VDO.png)](https://i.imgur.com/Pc99VDO.png)
You can find out more about the beacon node simulation [here](https://our.status.im/nimbus-development-update-03/#beaconsimulation).
### Building and running the Ethereum 2.0 local state transition simulation
This simulation is primarily designed for researchers, but we'll cover it briefly here in case you're curious :)
The [state transition](https://github.com/ethereum/annotated-spec/blob/master/phase0/beacon-chain.md#beacon-chain-state-transition-function) simulation quickly runs the beacon chain state transition function in isolation and outputs JSON snapshots of the state (directly to the `nim-beacon-chain` directory). It runs without networking and blocks are processed without slot time delays.
```bash
cd research
nim c -d:release -r state_sim --help
# build the state simulator, then display its help ("-d:release" speeds it
# up substantially, allowing the simulation of longer runs in reasonable time)
make NIMFLAGS="-d:release" state_sim
build/state_sim --help
```
Use the output of the help command to pass desired values to the sim - change number of validators, nodes, etc. to get different results.
Use the output of the `help` command to pass desired values to the simulator - experiment with changing the number of slots, validators, , etc. to get different results.
### Nimbus Ethereum 2.0 Testnet
The most important options are:
We have a publicly available testnet running between Nimbus nodes. Read all about it and learn how you can join it [here](/docs/t0.html). There is also a cutting edge [testnet 1](/docs/t1.html) that's basically a testing ground for testnet 0.
- `slots` : the number of slots to run the simulation for (default 192)
- `validators`: the number of validators (default 6400)
- `attesterRatio`: the expected fraction of attesters that actually do their work for every slot (default 0.73)
- `json_interval`: how often JSON snapshots of the state are outputted (default every 32 slots -- or once per epoch)
---
For example, to run the state simulator for 384 slots, with 20,000 validators, and an average of 66% of attesters doing their work every slot, while outputting snapshots of the state twice per epoch, run:
Congrats! You're now running Nimbus for both the Ethereum 1.0 platform, and the coming [Ethereum 2.0](https://our.status.im/tag/two-point-oh).
```
build/state_sim --slots=384 --validators=20000 --attesterRatio=0.66 --json_interval=16
```
### Medalla Ethereum 2.0 Testnet
There is a publicly available [Ethereum 2.0](https://our.status.im/tag/two-point-oh) multi-client testnet running until at least October. Read all about it [here](https://blog.ethereum.org/2020/08/03/eth2-quick-update-no-14/), and learn how you can join it in [the Nimbus beacon chain book](https://status-im.github.io/nim-beacon-chain/medalla.html) 💛

View File

@ -3,14 +3,14 @@ title: An Ethereum 2.0 Sharding Client
## 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 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.
Nimbus aims to be a [sharding](https://eth.wiki/sharding/Sharding-FAQs) 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.
For a more comprehensive introduction, please read our Nimbus for Newbies post or proceed directly to [getting started](/docs/building.html) if you're already sold.
For a more comprehensive introduction, please read our [Nimbus for Newbies](https://our.status.im/nimbus-for-newbies/) post or proceed directly to [getting started](/docs/building.html) if you're already sold.
## Requirements
[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.
[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 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:
@ -23,17 +23,15 @@ The core contributors and Nim community have been very supportive and enthusiast
## Development on Embedded Systems
We believe that the largest successful deployment of Ethereum will reside on embedded systems: IoT devices and mobile personal devices, such as smartphones. Although Nimbus will support archival nodes, its first implementation will be as a light client, with focus on Proof of Stake and sharding.
We believe that the largest successful deployment of Ethereum will reside on embedded systems: IoT devices and mobile personal devices, such as smartphones. Although Nimbus will support full and archival nodes, its main implementation will be as a light client, with focus on Proof of Stake and sharding.
Existing implementations of Ethereum have focused on desktop computers and servers. These implementations have played a major role in the initial success of Ethereum, and they are suitable for full and archival nodes. However, their deployment onto embedded systems has been an afterthought.
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).
Existing implementations of Ethereum have focused on desktop computers and servers. These implementations have played a major role in the initial success of Ethereum, and they are suitable for full and archival nodes. However, their deployment on embedded systems has been an afterthought.
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. [MIPS](https://en.wikipedia.org/wiki/MIPS_architecture)-based architectures, such as the [Onion Omega2](https://onion.io/omega2/)
1. Open-source processors, such as [RISC-V](https://en.wikipedia.org/wiki/RISC-V)
1. Open-source processors, such as [RISC-V](https://riscv.org)
When the 2020 scalability goal is fully realised, this constraint will help ensure that Ethereum runs performantly on resource-restricted hardware that is at least 6 years old.

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -64,6 +64,11 @@ html {
background-position: center;
}
.header-icon:hover {
background-color: rgba(43, 59, 71, 0.124066);
color: rgba(255, 255, 255, 1);
}
.header-link--gh .header-icon {
background-image: url(../img/icon_gh.svg);
background-size: 80%;

View File

@ -19,6 +19,7 @@ body {
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
background-color: $colorNimbus;
overflow-x: hidden;
}
.home-wrap {

View File

@ -227,10 +227,12 @@ $color-link-hover: lighten($color-link, 10%);
.article-content {
line-height: $line-height;
color: $color-default;
max-width: 90% !important;
@media print {
font-size: 12pt;
}
p, ol, ul, dl, table, blockquote, iframe, .highlight {
max-width: 80% !important;
margin: 1em 0;
}
h1 {
@ -295,7 +297,7 @@ $color-link-hover: lighten($color-link, 10%);
}
}
img, video {
max-width: 100%;
max-width: 90%;
}
blockquote {
padding: 0 20px;