ZIL关于最近重大升级的说明

各位用户:

最后一个主要的网络升级V8.0是功能丰富。它减少了出块时间,修改了共识协议,为 Scilla 引入了远程状态读取,调整了新矿工的优先级,并包括其他几个核心优化和错误修复。然而,自从那次升级之后,网络有时变得不稳定。这需要核心团队多次介入以引入补丁,从而导致不必要的网络停机。

我们理解升级给代币持有者、交易所、钱包提供商、矿工和其他相关方带来的挫折和不便。这篇文章的目的是分享有关该主题的详细信息、我们为大家带来透明度的一般开发和测试过程以及我们计划采取的步骤,以在我们前进的过程中减少此类事件的发生。

如您所知,Zilliqa 的底层技术是最前沿的,我们不断创新并向协议添加新功能。我们引入这些新功能的方法遵循编写单元测试和运行正确性和压力测试的既定行业标准。一旦更改和单元测试完全准备好,我们会在私有小规模网络上运行这些新更改一段时间,然后在主网规模上进行大规模集成,然后将更改部署在公开的公共测试网上供所有人互动。如果在任何网络上的测试过程中发现错误,则修复错误,我们从第一步开始,编写单元测试来捕获错误,在专用网络上部署修复程序等等。

然而,这些工程和开发领域的许多尖端创新提出了一个关键挑战。在这些更改在生产主网系统上生效之前,不可能确定引入的更改没有错误。虽然我们不鼓励在生产中测试任何东西,但有时很明显,真正的测试总是在生产中。

我们还想强调一些问题超出了我们的代码库和控制范围,因为可能存在对外部系统、库和基础设施的依赖。最近内存问题就是一个很好的例子。在许多情况下,如果没有可行的解决方案,我们被迫向上游推送修复程序到众所周知的开源包,或者有一个变通方法。

保证给定的软件没有错误几乎是不可能的,但我们当然会尽力确保这一点。尽管存在这些挑战,我们仍致力于不断创新并向链添加新功能,同时将中断和错误降至最低。

为此,考虑到最近的停机时间,我们还将我们的测试过程更进一步,通过使用形式验证工具对系统进行建模,并在可能的情况下对生成的模型进行形式验证。尽管形式验证工具需要大量的工时,但它们在验证关键任务软件系统的正确性、可靠性和可靠性方面非常有帮助。目标是结合单元测试和形式验证,它们在检测代码库关键部分的任何设计或实现问题时相互补充。为了进一步缓解这些问题,我们计划减少包含新功能的网络升级的频率,这将为网络提供更多时间来在野外测试功能。

在单独但有些相关的说明中,在对最新错误进行故障排除时,我们碰巧注意到部署在主网上的几个智能合约,其中实施的逻辑使合约状态随着新交易的增长而增长。作为修复,我们将微调当前设置的一些参数,允许在开发和测试过程中忽略底层设计模式。更好的静态和动态分析工具也将有助于在这方面警告开发人员。

请注意,此类合约目前可能工作正常,但迟早可能会达到区块 gas 限制,从而导致这些合约无法使用和无法调用。我们鼓励开发人员注意这种和其他类似的设计模式。例如,如果合约使用一个列表,并且该列表随着每笔交易而增长,这可能会在未来为合约带来问题。此外,合约应尽可能避免循环,因为在非常大的列表或地图上的循环会在某些时候达到区块 gas 限制。同样,建议采用拉取模型,而不是推模型,即不是合约计算并将奖励分配给多个用户(推送模型),合约的设计应该是每个用户都可以自己索取自己的奖励(拉模型)。

感谢您的理解和支持。我们将继续推动自己使 Zilliqa 成为一个更好、更强大的平台,供所有人使用。

真挚地,

Zilliqa 团队

发布者:remix,转转请注明出处:https://www.china-zil.com/news/zil%e5%85%b3%e4%ba%8e%e6%9c%80%e8%bf%91%e9%87%8d%e5%a4%a7%e5%8d%87%e7%ba%a7%e7%9a%84%e8%af%b4%e6%98%8e/

0 0 投票数
文章评分
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请发表评论。x
()
x