Nimbus 新手教程

StatusIM  2018-10-14  SNT/SNT(Status) 栏目  

  [Nimbus](https://nimbus.status.im/) 是下一代以太坊的全新客户端。你也可以这么认为,这是一个新的[节点](https://bitfalls.com/2017/11/26/whats-bitcoin-node-mining-vs-validation/)。如果你不熟悉以太坊协议, 但想了解 Nimbus 到底是什么, 此时此地,就是最佳途径.

  ________________________________________

  我们将讨论分片, 伸缩性, 以及在另一篇文章(或几篇)[公告](https://blog.status.im/introducing-nimbus-3360367bb311?gi=9a87bb2a4960)提到的内容-这里的目的是通过告诉你现在 Nimbus 开发的程度来让你熟悉 Nimbus.

  我们希望你了解这个工具是什么, 为什么它发展到今天, 如何使用它以及如何为它做出贡献, 这样你也可以帮助我们建立新的以太坊。

  现在的 Nimbus 是什么?

  "我的目的是什么?"- Butter-Passing Robot

  现在-截至 2018年10月-它是执行并通过一组单元测试的一套工具,。在外行的术语中, 单元测试是执行时没有错误运行的计算机代码。通过 Nimbus 执行时, 此代码的执行结果不应产生任何错误。如果所有[这些测试](https://ethereum-tests.readthedocs.io/en/latest/)通过, Nimbus 可以被视为以太坊客户端。

  这是一个漂亮的通过测试的屏幕截图。

  此时, 当你运行 Nimbus 时, 它保持在线,它不能用于链接到你的钱包或发送交易。它不会在轻节点模式或全节点模式下同步区块链, 也不会启动任何类型的 UI。

  那有什么意义呢?

  Nimbus 的目标

  目前, 该团队正在开发一套工具和库, 以满足以太坊 2.0 的要求: 支持分片、可伸缩的方法等。鉴于以太坊 2.0 必须保持兼容 1.0, 2.0 的功能将包括所有 1.0 的功能。这意味着, Nimbus 将作为完整的以太坊节点 [Geth](https://bitfalls.com/2018/02/12/explaining-ethereum-tools-geth-mist/) 和 Parity 的替代品, 但也将包括可以使其作为轻节点运行的功能-不需要下载完整的区块链数据-甚至是[无状态节点](https://ethresear.ch/t/the-stateless-client-concept/172)-不需要下载状态的节点也能得到验证

  .

  一旦 Nimbus 状态完成当前客户端 parity 的功能, 团队将继续实施新功能。鉴于我们前面提到的测试更易于在全节点模式下与客户端一起通过测试, 因此, Nimbus 首先将作为一个全节点开发, 然后根据需要的功能进行升级, 以使其作为轻节点运行。

  模块化

  为了实现其在低端和嵌入式设备上运行的目标, Nimbus 必须可定制。最终的目标是让它支持即插即用并成为以 API 的形式与 Nimbus 内核交互的模块化系统。

  具体而言, Nimbus 具有不同形式的构建。你将能够使用带有某些标记 (选项)的源代码声明构建什么样的和如何构建你的 Nimbus 副本-你安装在诺基亚 3310 或智能烤箱的副本与在强大的台式计算机上的副本是不一样的,为了暗中分散网络,安装到插入隐藏的公共 USB 插座的微型 USB 的副本也是不一样的。

  而且,你可以做到这一切。

  Nimbus, 你是冠军

  我们将为安装 Nimbus 的不同的操作系开发接口 (如 JSON RPC, 或嵌入式 Java) -我们专注于开放的硬件, 但我们也不打算抛弃任何平台。例如, Nimbus 将提供一个[ EVM-C ](https://github.com/ethereum/evmc)接口, 因此所有使用它的客户端都可以选择是否要使用 Aleth、Geth 或 Nimbus。

  另一个模块化部分是后端 (SQLite 或 RocksDB)、日志记录 (控制台、文件、json、数据库) 和网络协议, 即与特定的 Eth 协议无关, 使用纯 http/s 绕过过滤层 (如公共 WiFi 或审查).

  和 Geth 在竞争吗?

  是也不是。从第一天开始, 为了网络健康和稳定, 比如在某个版本中出现 bug,任何时候都可以使用多个客户端实现代替。这一直是以太坊的使命。举个例子, Bitcoin Core 的 bug 会伤害整个比特币区块链, 因为 [95%的用户](https://coin.dance/nodes)使用 Bitcoin Core.

  这在以太坊中是不可接受的, 因此我们努力尽可能多地部署客户端实现的多样化。现在, 以太坊有 Parity 与 Geth 竞争,[分布相对均匀](https://www.ethernodes.org/network/1) , 与其他实现之间的客户端相互散布。我们的目标是让某种形式的 Nimbus 占有上图总量的四分之一。

  请注意, 我们不希望损害 Geth 或 Parity的份额。我们希望扩大进入到生态系统中的新设备, 并扩大以太坊的覆盖范围, 而不是替换当前节点。例如, 一旦准备就绪, Status 将使用 Nimbus.

  构建

  说得够多了, 我们构建吧。

  在开始之前, 我们假设:

  你已经阅读了 [Nim 的介绍 ](https://bitfalls.com/2018/10/09/introduction-into-the-nim-language/), 并且 Nim 可用

  你在一个命令行友好的系统, 如 OS X 或 Linux。如果你在 Windows 上, 我们强烈建议你使用一个预先配置好的虚拟机 (如[改进后的 Homestead](https://www.sitepoint.com/quick-tip-get-homestead-vagrant-vm-running/)) 来运行。它被调整为 web 开发, 但同样适用于其他所有没有 UI 的开发。

  安装

  要运行 Nimbus, 我们需要 RocksDB 数据库和最新版本的 Nim。在 OS X 上, 执行:

  brew install rocksdb

  curl https://nim-lang.org/choosenim/init.sh -sSf | sh

  在 Linux 上, 应该这样执行:

  sudo apt-get install librocksdb-dev rocksdb # or your own Linux distribution's equivalent

  curl https://nim-lang.org/choosenim/init.sh -sSf | sh

  运行 nim --version应打印如下内容:

  $ nim --version

  Nim Compiler Version 0.19.0 [MacOSX: amd64]

  Compiled at 2018-09-26

  Copyright (c) 2006-2018 by Andreas Rumpf

  git hash: f6c5c636bb1a1f4e1301ae0ba5a8afecef439132

  active boot switches: -d:release

  接下来, 我们将把 Nimbus 下载到我们希望放置 Nim 项目的文件夹中。

  git clone https://github.com/status-im/nimbus

  cd nimbus

  Nim 有自己的压缩软件,Nimble。这意味着命令 nimble install 可以同时下载所有的 Nimbus 依赖项。您可能会收到提示问题,如 : Prompt: eth_common@1.0.0 already exists. Overwrite? [y/N] 如果你之前使用过 Nim-回答yes.

  请注意, Nimble 将所有项目包安装到一个公用文件夹中, 使它们共享依赖项。这意味着你的依赖项在运行 nimble install 中将不可见 。它们将在` nimble/pkgs 下的 home 文件夹中。我们会在将来的文章 中讨论为什么会发生这种情况以及如何绕过它, 并强制每个项目的本地依赖项.

  安装完成后, nimbus 命令将变为可用。在我们运行它之前, 让我们用 nimbus --help 检查可用的命令。如果一切正常, 让我们用 nimble test 来运行 Nimbus 测试。这将执行 Nimble 的"test"任务, 运行我们在前面部分中提到的单元测试, 确保 Nimbus 客户端与我们安装的其他客户端兼容.

  nimble test

  如果一切顺利, 屏幕应该高亮显示绿色[OK].

  你可以通过执行 nimbus 运行 Nimbus。它会在线查找一些节点, 并与它们保持连接。它甚至会尝试, 并开始与区块链同步, 但当它遇到一个无法处理的块时,会得到一个错误和失败-这是我们现在开发到的程度.

  ________________________________________

  恭喜-你现在正在运行某种程度上的 Nimbus。在未来的文章中, 我们将剖析一些测试, 看看 Nimbus 的贡献, 专研 Nim 语言等等。

版权信息
作者:StatusIM
来源:StatusIM

相关阅读

关于我们

联系我们

作者进驻

手机版

Copyright © 2013 比特巴 www.btb8.com
始建于2013年,提供比特币 区块链及数字货币新闻、技术教程、测评、项目周报、人物等资讯
本页面提供的是SNT教程资讯,Status(SNT)是一个开源的聊天平台以及是一个支持以太坊去中心化应用dApp的移动浏览器。