Update homepage + docs (#92)

* update team

* image fix (#85)

* update team

* move image to right location

* update nimbus book link

* update homepage

* update design page

* Move design ahead of getting started; hide guides (for now)

* major documentation update

* fix sidebar

* remove archived library from list
This commit is contained in:
Sacha Saint-Leger 2020-11-05 09:56:36 +01:00 committed by GitHub
parent ec5c0c7575
commit d7095b1730
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 200 additions and 79 deletions

View File

@ -1,15 +1,14 @@
docs:
Nimbus:
introduction: /docs/index.html
building: /docs/building.html
# milestones: milestones.html
design: /docs/design.html
# team: team.html
faq: /docs/faq.html
eth1: /docs/eth1.html
eth2: /docs/eth2.html
libraries: /docs/libraries.html
contributor_guide: /docs/contributor_guide.html
Guides:
Ethereum 1: /docs/eth1.html
Testnet 0: /docs/t0.html
Testnet 1: /docs/t1.html
Custom Testnet: /docs/custom-nimbus-testnet.html
# Guides:
# Ethereum 1: /docs/eth1.html
# Testnet 0: /docs/t0.html
# Testnet 1: /docs/t1.html
# Custom Testnet: /docs/custom-nimbus-testnet.html

View File

@ -3,17 +3,17 @@ id: building
title: Getting Started with Nimbus
---
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.
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-eth1) and [Ethereum 2.0](https://github.com/status-im/nimbus-eth2) repositories.
### Building and running Nimbus
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).
To run Nimbus in [Ethereum 1.0 mode](https://github.com/status-im/nimbus-eth1), first [install the prerequisites](https://github.com/status-im/nimbus-eth1#prerequisites).
Then:
```bash
git clone https://github.com/status-im/nimbus
cd nimbus
git clone https://github.com/status-im/nimbus-eth1
cd nimbus-eth1
make update
# >>> WINDOWS ONLY <<<
@ -106,4 +106,4 @@ build/state_sim --slots=384 --validators=20000 --attesterRatio=0.66 --json_inter
### 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) 💛
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/nimbus-eth2/medalla.html) 💛

View File

@ -3,9 +3,9 @@ id: contributor_guide
title: Contributor Guide
---
# How to help with funding
## How to help with funding
We have a donation box set up at address: 0x70E47C843E0F6ab0991A3189c28F2957eb6d3842
We have a donation box set up at address `0x70E47C843E0F6ab0991A3189c28F2957eb6d3842`, as well as a [Gitcoin Grant page](https://gitcoin.co/grants/137/nimbus-2/).
We use funds from donations to:
@ -15,31 +15,31 @@ We use funds from donations to:
If you'd like to donate a conditional amount, i.e. one that depends on a certain milestone or deadline, please [get in touch](mailto:jacek@status.im).
# How To Get Involved with Nimbus' development
## How To Get Involved with Nimbus' development
- look around [the repo](https://github.com/status-im/nimbus), especially the [open issues](https://github.com/status-im/nimbus/issues)
- check out some [open bounties](https://openbounty.status.im/app#/)
- check out some [more open bounties](https://gitcoin.co/explorer?keywords=nimbus&order_by=-web3_created)
- learn about the source code by [dissecting](https://github.com/status-im/nimbus/tree/master/tests) and [debugging](https://github.com/status-im/nimbus/wiki/Understanding-and-debugging-Nimbus-EVM-JSON-tests) the tests
- look around [the repo](https://github.com/status-im/nimbus-eth2), especially the [open issues](https://github.com/status-im/nimbus-eth2/issues)
- check out some [open bounties](https://gitcoin.co/explorer?keywords=nimbus&order_by=-web3_created)
- learn about the source code by [dissecting](https://github.com/status-im/nimbus-eth2/tree/master/tests)
To configure your setup for development:
```bash
git clone https://github.com/status-im/nimbus
cd nimbus
make update deps
./env.sh bash # configures your environment with dependencies like a locally installed Nim, etc.
git clone https://github.com/status-im/nimbus-eth2
cd nimbus-eth2
make update
```
[Build](/docs/building.html) and start hacking!
[Build](/docs/eth2.html) and start hacking!
## Thought Experiments
If you have research ideas you'd like to throw at us, exotic hardware you'd like to test on, or anything else revolutionary cooking up in your mind that you think might be bite too big for Geth or Parity to chew, let us know. We'll gladly experiment!
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Still hoping to just have my <a href="https://twitter.com/ethstatus?ref_src=twsrc%5Etfw">@ethstatus</a> desktop wallet be my bn, and have my mobile device be my <a href="https://twitter.com/ethnimbus?ref_src=twsrc%5Etfw">@ethnimbus</a> vc 🤷🏽‍♀️😅. And then a nice little Rocketpool Staas run by <a href="https://twitter.com/search?q=%24SNT&amp;src=ctag&amp;ref_src=twsrc%5Etfw">$SNT</a>... And anonymous staking in &quot;dark pools&quot; build on application layer, fees paid to client/network nodes. 👌🏽😻.</p>&mdash; chloethedev.eth ⟠ δούλος 🏳️‍⚧️ (@Chloethedev) <a href="https://twitter.com/Chloethedev/status/1320710462032515072?ref_src=twsrc%5Etfw">October 26, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
If you have research ideas you'd like to throw at us, exotic hardware you'd like to test on, or anything else revolutionary cooking up in your mind let us know. We'll gladly experiment!
## Testing
You can join a testnet by following instructions [here](https://our.status.im/the-nimbus-mvp-testnet-is-here/).
You can join a testnet by following instructions [here](https://status-im.github.io/nimbus-eth2/).
## Guidelines
@ -48,5 +48,4 @@ Whatever you might expect to see in other projects applies here:
- be nice to others
- when evaluating PRs, focus exclusively on the quality of the code
- if submitting code, make sure it's tested. All code MUST come with tests. To speed up the review, ping a [team member](/docs/team).
- if submitting typo fixes or documentation changes, speed up the review process by pinging a team member. [arnetheduck](https://github.com/arnetheduck) will usually review those very quickly.
- if submitting a tutorial for inclusion on the [official blog](https://our.status.im/tag/nimbus), also feel free to ping [arnetheduck](https://github.com/arnetheduck).
- if submitting typo fixes or documentation changes, speed up the review process by pinging a team member. [arnetheduck](https://github.com/arnetheduck) or [sachayves](https://github.com/sachayves) will usually review those very quickly. The same applies if submitting a tutorial for inclusion on the [official blog](https://our.status.im/tag/nimbus).

View File

@ -1,45 +1,33 @@
---
id: design
title: Extensible, Configurable, and Modular Design
title: Embeddable, Lightweight, and Self-Contained
---
The application architecture should have modular abstractions for the following:
## Design goals
1. Networking layer
1. Sub-protocols
1. Consensus
1. Privacy
1. Database
1. Virtual Machine
One of our most important design goals is an application architecture that makes it **simple to embed Nimbus into other software.**
In addition, the implementation must pass the [common tests for all Ethereum implementations](https://github.com/ethereum/tests).
Another is to **minimize reliance on third-party software.**
A third is for the application binary to be as **lightweight as possible in terms of resources used.**
## Integration with Status
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">I can&#39;t wait to run Nimbus straight from Status Desktop <a href="https://twitter.com/hashtag/hyped?src=hash&amp;ref_src=twsrc%5Etfw">#hyped</a></p>&mdash; JARRAÐ HOPΞ (@jarradhope) <a href="https://twitter.com/jarradhope/status/1293473249347555334?ref_src=twsrc%5Etfw">August 12, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
As part of our first design goal, our primary objective here is for Nimbus to be tightly integrated into the [Status messaging app](https://status.im/).
The dream is for you to be able to run an eth2 validator on Status desktop.
## Commitment to Ethereum Improvement Proposals (EIP)
Nimbus is committed to open standards and to maintaining consensus with other Ethereum-compliant implementations. The development of Nimbus and the changes in its protocols will follow [the EIP process](https://github.com/ethereum/EIPs/).
We are committed to open standards and to maintaining consensus with other Ethereum-compliant implementations. As such, the development of Nimbus and the changes in its protocols follow [the EIP process](https://github.com/ethereum/EIPs/).
## User Experience
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.
## Licensing: MIT, Apache v2.0
We propose that Nimbus be licensed under Apache 2.0 and MIT. A permissive licensing structure with patent protection would
Most of our work is licensed under Apache 2.0 and MIT. A permissive licensing structure with patent protection would
1. Ensure the compatibility with GPL 2.0 and LGPL 2.0
1. Extend the reach of the Ethereum platform
1. 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
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.
Within the community at large, we will promote Ethereum as the leader of scalable public blockchains.
## Bounty-Based Development
To entice the community to accelerate the development, we will attach bounties to and **[publish](https://openbounty.status.im/app#/)** the tasks that can be self-contained and defined clearly. We'll also have bounties [on Gitcoin](https://gitcoin.co/explorer?keywords=nimbus&order_by=-web3_created).

View File

@ -1,34 +1,27 @@
---
id: eth1
title: Ethereum 1 Nimbus
title: Connecting to the eth1 chain
---
## Installing prerequisites
While our core focus right now is Ethereum 2.0, We are continuing to make progress on an Ethereum 1.0 client (take note, this software is very much experimental).
If you are on Windows, instead of using the commands below you can also use our [pre-configured Vagrant box](https://github.com/status-im/nim-vagrant) if you prefer to run things in a Linux environment.
To run Nimbus in [Ethereum 1.0 mode](https://github.com/status-im/nimbus-eth1), first [install the prerequisites](https://github.com/status-im/nimbus-eth1#prerequisites).
We use Makefiles to quickly and easily build our binaries. Before you begin, please make sure you have [RocksDB installed](https://github.com/status-im/nimbus#rocksdb). On Windows, you can skip this step and instead rely on the "WINDOWS ONLY" part of the process below:
Then run the following commands:
```bash
git clone https://github.com/status-im/nimbus
cd nimbus
make update # Downloads and builds submodules, dependencies, and even Nim itself
git clone https://github.com/status-im/nimbus-eth1
cd nimbus-eth1
make update
# >>> WINDOWS ONLY <<<
make fetch-dlls # WINDOWS ONLY
# >>> WINDOWS ONLY <<<
./env.sh bash # Optional, but useful. Sets the current shell's environment to use the version of Nim language the `make update deps` command just built
```
### Building and Running Nimbus
To run Nimbus in Ethereum 1.0 mode:
```bash
make nimbus
make test
./build/nimbus
```
Nimbus will now run and attempt to synchronize with the Ethereum 1.0 blockchain. It can currently reach block 1.5 million.
> **Note:** We currently do not guarantee that Nimbus will work on Windows.
Nimbus will now run and attempt to synchronize with the Ethereum 1.0 blockchain.

95
source/docs/eth2.md Normal file
View File

@ -0,0 +1,95 @@
---
id: eth2
title: Connecting to the eth2 chain
---
Depending on your objective, there are various ways to run Nimbus in [Ethereum 2.0 mode](https://github.com/status-im/nimbus-eth2).
## Become an eth2 validator
We're writing a book that explains all the ways in which you can use Nimbus to either monitor the eth2 chain or become a fully-fledged validator.
It's hosted here: https://status-im.github.io/nimbus-eth2/
## Build and run 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.
**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.
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
make
make test
```
To run the simulation:
```bash
make eth2_network_simulation
```
If you'd like to clean the previous run's data:
```bash
make clean_eth2_network_simulation_all
```
To change the number of validators and nodes:
```bash
# 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
```
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:
```
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).
## Build and run 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
# 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 simulator - experiment with changing the number of slots, validators, , etc. to get different results.
The most important options are:
- `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:
```
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 currently running. 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/nimbus-eth2/medalla.html) 💛

View File

@ -3,9 +3,13 @@ title: An Ethereum 2.0 Sharding Client
## Overview
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.
Nimbus is a project founded by the [Status.im](https://status.im/) network, focused on providing the best Ethereum experience for resource-restricted devices.
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.
Because the largest deployment of Ethereum will potentially be on embedded systems, Nimbus is designed to perform well on IoT and personal mobile devices, including older smartphones with resource-restricted hardware.
Nimbus' embeddable, lightweight, and self-contained design makes it production ready for Web 3.0 and ensures 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](https://our.status.im/nimbus-for-newbies/) post.
## Requirements

39
source/docs/libraries.md Normal file
View File

@ -0,0 +1,39 @@
---
id: libraries
title: Explore our libraries
---
In addition to our [eth1](https://github.com/status-im/nimbus-eth1) and [eth2](https://github.com/status-im/nimbus-eth2) clients we have developed several high-quality libraries (the product of our ethereum work in Nim) These include:
- Nim libp2p: https://github.com/status-im/nim-libp2p
- Nim BLS Curve: https://github.com/status-im/nim-blscurve
- Nim Waku - Waku is a fork of the original Whisper protocol that enables better usability for resource restricted devices: https://github.com/status-im/nim-waku
- Nim QUIC - QUIC is being adopted as the underlying protocol for HTTP/3 and has the potential to give us censorship resistance due to its resistance to deep packet inspection: https://github.com/status-im/nim-quic
- Cryptographic functions: https://github.com/cheatfate/nimcrypto
- Nim Chronicles - detailed logging for Nim: https://github.com/status-im/nim-chronicles
- Nim Chronos - async Nim: https://github.com/status-im/nim-chronos
- Nim Web3 - https://github.com/status-im/nim-web3
- Ethereum Smart Contracts in Nim: https://github.com/status-im/nim-eth-contracts
- Nim JSON-RPC - a library for routing JSON 2.0 format remote procedure calls over different transports: https://github.com/status-im/nim-json-rpc
- Nim Stint - a stack based arbitrary precision library: https://github.com/status-im/nim-stint
- Nim Libbacktrace: https://github.com/status-im/nim-libbacktrace
- Nim EthHash - proof of work algorithm from Ethereum 1.0 reimplemented in Nim: https://github.com/status-im/nim-ethash
- Nim Eth - Ethereum-related utilities written in Nim: https://github.com/status-im/nim-eth
- Documentation Generator - language agnostic (but Nim-preconfigured) generator for beautiful detailed documentation suites for sets of libraries: https://github.com/status-im/nimbus-docs-suite
We hope you take the time to check them out :)

View File

@ -21,11 +21,15 @@ sidebar:
docs:
Nimbus: Nimbus
introduction: What Is Nimbus?
eth1: eth1 client
eth2: eth2 client
libraries: Software Libraries
milestones: Milestones
design: Design
faq : FAQ
libs: Software Libraries
building: Getting Started
the_book: The Book
resources: Resources
team: Team
options: Beyond the Basics

View File

@ -4,8 +4,8 @@
<h1>Nimbus</h1>
<p>Researching and implementing lighter Ethereum 2.0 clients </p>
<div class="intro-buttons">
<a class="button button--main" href="https://gitter.im/status-im/nimbus">JOIN OUR GITTER</a>
<a class="button button--main" href="/docs/">DOCUMENTATION</a>
<a class="button button--main" href="https://discord.gg/qnjVyhatUa">JOIN OUR DISCORD</a>
<a class="button button--main" href="https://status-im.github.io/nimbus-eth2/">BECOME AN ETH2 VALIDATOR</a>
</div>
</div>
</div>