技术更新2019/8/27日

Aparna Narayanan
Zilliqa — Official Blog
4 min readSep 9, 2019

大家好,

之前我们向大家介绍了旨在增强主网和智能合约功能的升级计划,在这篇博文中,我们希望与大家分享更多团队致力于在 9 月 15 日之前实现的改进内容。

核心技术更新

在之前的核心技术更新之后不久,团队将主网升级到 Zilliqa 4.8.0 新版本。这版更新重点是事务处理 — — 更具体地说,是智能合约。正如前一周提到的,这个版本包含了一些新的缓和功能,以帮助在智能合约处理重载节点时保持网络处于良好状态。

这些特性中最重要的是 gas 极限的指数回退,这在之前的技术更新中已经详细介绍过。每次由于目录服务 (DS) 微块上的不一致导致视图发生更改时,DS 节点将事务 gas 限制减半。这使委员会能够逐渐达到一种状态,使足够多的节点能够处理相同数量的事务,从而确保下一轮共识的成功。

这个版本还包含另一个重要功能,这就是将处理过的事务临时备份到每个分片的本地存储中。这是由分片 leader 在有限数量的事务纪元内完成的,以确保在最坏的情况下 — — 比如,如果分片节点不知何故无法在事务纪元结束时将这些事务发送回查找节点 — — 我们有这些事务的副本可用。除了这个功能,我们还在配置中要求分片leader 将这些相同的事务上传到我们基于云的 AWS S3 存储中,以确保在所有情况下都具有完整的数据可用性。

此外,4.8.0 版本中还有其他一些改进,在此前的更新中我们并未尽述。首先,我们将存储智能合约状态提前了一些,不是在第一次调用合约时才存储,而是在创建合约时已经存储。这样,当创建的合约存储在链中之后,任何用户都可以立即开始检查事务的状态。此外,现在在查找节点中创建事务时就已经强制执行 nonce 和 gas 上限检查,这样更有效地过滤掉无效事务,避免将其发送到分片。

有了这些新部署的功能,核心技术团队将把他们的注意力转向准备主要的 Scilla 升级。当然,我们也将利用这个机会推动管道中已经存在的更多改进和修复,所以在接下来的几周里,请继续关注我们的进一步更新,我们会介绍更多进展。

Scilla 更新

在 Scilla 方面,我们一直在积极测试 Scilla 进程间通信 (IPC) 协议,该协议计划在下个月通过网络升级发布。由于 IPC 协议对于在 Zilliqa 基础设施上运行的任何智能合约都至关重要,所以我们设计了尽可能全面的测试:

  • 为此,我们首先从 IPC 协议的每个通信组件在一台本地机器上运行的基本单元测试开始
  • 在此基础上,我们设计了测试向量,专门捕捉边角案例(corner case),并使用一组样本合约测试 IPC 协议,其中包括众筹合约、可替换代币合约、不可替换代币合约、拍卖合约、简单的去中心化交易所 (dex) 合约等
  • 在本地测试之后,我们转向网络级测试,在那里我们创建了一个私有的测试网,并在上面运行所有前面提到的测试。

正如预期的那样,测试揭示了一些需要修复的 bug。对于测试的最后一个阶段,我们目前正试图在一个新的私有测试网上重播 Ziliqa 主网上曾经发生的每一个事务,目的是比较主网上每个帐户和测试网上帐户的最终状态。这两个状态应该匹配。

考虑到 Scilla IPC 还需要更改每个节点存储帐户状态的方式,我们还必须测试用于将数据从旧格式迁移到新格式的代码。测试正在进行中。

总而言之,我们正在为 9 月份的最新网络升级做好充分的准备。

最后,在繁忙的测试中,我们还运行了一个性能测试,以了解网络升级后会发生什么。正如在上一篇两周的文章中所讨论的,在当前的网络中,我们观察到合约的性能随着其状态大小增长而线性下降。我们的性能和剖面实验表明,使用 IPC 不会出现线性退化。如下图所示:

分类帐更新

分类帐团队已经开始了对分类帐应用程序的第二轮检查,以支持主网 ZIL。到目前为止,我们已及时处理收到的所有反馈,并由分类帐团队进行验证。在第二轮检查完全完成后,我们将发布更新,请继续关注我们!

如您想要了解 Zilliqa 的更多信息或与我们讨论项目技术,请随时通过以下官方渠道与我们联系:

--

--