首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Nimbus 开发更新

关注我,你的眼睛有福了~

摘要:我们之前承诺在12月发布概念证明(PoC),现在已基本达成目标。只要再稍加努力,即使目前处于早期实验阶段,你也可以通过运行一个 Nimbus 模拟器,来让 beacon 客户端和它自己的克隆程序进行通信。详情请参阅下面的说明。

状态转换

过去一个月中取得的最大进展,可能是状态转换功能达到了规范文档中细致的要求。

[nim-beacon-chain](https://github.com/status-im/nim-beacon-chain)代码库中包含了相关的信息。归根结底,我们的状态转换功能已经基本完成。我们还在等待分叉选择,为此我们将会选择对于概念证明来说相对简单的事项——比如最长的链。

[testutil.nim](https://github.com/status-im/nim-beacon-chain/blob/master/tests/testutil.nim) 文件中有一个描述很详细的测试效用函数,状态转换的代码也有很好的[文档化说明](https://github.com/status-im/nim-beacon-chain/blob/master/beacon_chain/state_transition.nim),可以进一步在[ test_state_transition.nim](https://github.com/status-im/nim-beacon-chain/blob/master/tests/test_state_transition.nim) 中开展测试和实验。

我们也正在开展测试......

Eth2测试

我们正在进行的工作是为以太坊2.0建立并运行一个新的跨客户端测试的代码库。所有的测试集都位于 [status-im/eth2-testgen](https://github.com/status-im/eth2-testgen) 中,但是仍然在 [Eth2.0测试代码仓](https://github.com/ethereum/eth2.0-tests/pull/5)中等待被审核/合并。其中一个测试的问题是测试活动也[需要标准](https://github.com/ethereum/eth2.0-tests/issues/9) ,所以这仍然在讨论当中。

这些测试集并不是只针对 Nimbus,而是必须要覆盖所有的客户端。[Nimbus-beacon-chain](https://github.com/status-im/nim-beacon-chain) 中的 Nimbus 实现仍然没有使用它们,但是一旦它们被合并,这个项目在经过概念证明测试之后就会完善和成熟。现在,我们使用模拟环境来测试。

模拟环境

我们在 [nimo -beacon-chain](https://github.com/status.im/nim-beacon-chain) 代码库中创建了一个模拟器脚本,它将生成一个新的创世块状态和99个验证者,并将它们存储在名为validator-xx.json的文件中,其中 XX 是验证者的编号。这些文件将包含如下类型的数据:

{

"privKey":"00000000000000000000000000000000607b42bcae82becbe947fb13e18522b3f9bf50efab3209fa9b7a95b869906872", "randao": {

"seed":"E7C91FC8140FE2B27161AC4DEBAAF7DF2210D4F2AB6F3FC90BFD1960EABC1B73"

}

}

之后这些文件将用于生成startup.json文件,其中包含每个验证者的注册信息,包括他们的 RANDAO 约定值,撤销凭证,所有权的证明以及信标链所需的其他所有内容。创始块的 JSON 文件state_snapshot.json将由这个文件生成,从之前生成的注册信息来构建验证者注册表,将模拟器开始运行的时间设置为创世块时间,以及生成分片委员会:

{

"shard": 40,

"committee": [28,8],

"total_validator_count": 99

}

上图表示第28个验证者和第8个验证者(总共99个)负责处理第40个分片。

一些假的 RANDAO 打乱顺序以及分片跨联也会生成,但在(以太坊2.0)[第0阶段](https://our.status.im/two-point-oh-explaining-validators/)默认为零。

每组9个验证者将附着到它们自己的节点,导致一组有 10 个信标节点在 50000 到 50009 端口上运行。每个节点也将生成自己的 enode 地址,你可以在tests/simulation/data-x中找到该地址,其中 X 是节点的编号。9 名验证者将被孤立(all% 10 == 0),这只是为了看到当轮到他们验证时会发生什么,他们将无处获取数据(因为没有附着任何信标节点)。

如果要自己尝试,请参阅下一节。

运行PoC

为了运行 PoC,只需确保你有一个可工作的 [Nim 环境](https://bitfalls.com/2018/10/09/introduction-into-the-nim-language/) ,然后运行如下命令:

cd nim-beacon-chain

nimble install

nimble test

或者,参考 [Vagrant虚拟机工具的配置和运行](https://our.status.im/setting-up-a-local-vagrant-environment-for-nim-development/) 这篇文章来进行测试 - 我们很乐意收到你的使用反馈(如果有的话)。如果发现问题请提交到[这个代码库](https://github.com/status-im/nim-vagrant)!

如果这些测试全部通过,很快我们将在另一篇文章中解释它们的神奇之处。

此外,你还可以运行前面提到的模拟器,该模拟器生成 100 个验证者,将它们的数据存储到文件中进行测试,并运行一个由能互相通信的 Nimbus 节点所组成的模拟网络。

bash tests / simulation / start.sh

这项工作仍在进行中,但几天内会有比较顺利的进展。

下一步是什么?

让模拟器工作起来更加稳定

建立一个通用的构建系统,可以为所有人提供相同的服务。对于 Nimbus 来说尤为重要,因为我们会做比较庞大的架构设计

调整 nim-beacon-chain 以适应为 eth2.0 所准备的测试,并与其他团队密切协作,牵头编写这些测试代码 (请通过这个链接在加入讨论中来:https://gitter.im/eth2-0-tests/Lobby和https://github.com/ethereum/eth2.0-tests/issues -这将会对我们很有帮助!)

以太坊 1.0

我们将以太坊 1.0 Nimbus 客户端([status-im / nimbus](https://github.com/status-im/nimbus))同步到块高度 49018,此时由于区块状态无效而失败。这意味着我们的 EVM 成功执行了 49017 区块中的交易,这是一个不小的成就。这也意味着我们在不断受到挑战,要在 Nim 中研发新的调试和状态检查工具,这是一件非常有趣的事情。2019年上半年将支持智能合约的部署,支持相关功能的执行以及 RPC 的调用。

我们还在为以太坊 1.0 Nimbus 开发可选的构建流程。经过大量的测试后,会在另一篇文章中进行更详细的介绍。在此期间,你可以[像往常一样运行](https://our.status.im/nimbus-for-newbies/)它。另外,我们正在开发和试验 [Vagrant](https://our.status.im/setting-up-a-local-vagrant-environment-for-nim-development/),一个通用性的构建环境,非常希望能得到你的反馈,包括交互是否复杂/资源是否完备/是否实用等方面。如果有问题请提交至这个[代码库](https://github.com/status-im/nim-vagrant)!

请试用一下这些工具,并让我们知道你发现了哪些 bug。如果你能对所介绍的这些有新的视角和看法,我们将非常激动。因此,考虑到这一点,我们将很快开始发布代码解释的文章和教程,让你能具体了解 Nimbus 是如何工作的,而不仅仅只是了解一些概念。

关于Status

Status 是开源的以太坊网络操作系统和 DApp 门户,致力于将以太坊和去中心化网络装入人们的口袋。隐私聊天、DApp 浏览、安全交易是Status三大主要功能。Status 生态包括 Status 应用程序、Status 孵化项目、DApp 模块化编程工具 Embark、以太坊轻节点项目 Nimbus、硬件钱包项目 Hardwallet 以及扩展小程序 Extension 等等。Status 的目标是大规模使用以太坊网络,让去中心化网络世界更贴近人们的日常生活。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190106G14B4000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券