InterChain GmbH 团队回顾了 GoZ 挑战赛遇到的技术问题,并展望了下一步要做的事情。导致 GoZ 第一阶段延迟和第二阶段启动失败的 Bug 由 IRISnet 战队率先发现并提交给了 GoZ 主办方。“我们社区的参与对我们来说是一个非常宝贵的存在,你们所有人让「Game of Zones」成为了不仅仅是由一个团队在运作的一个项目。”InterChain GmbH 团队感谢社区里每个人在这个过程中的持续参与,特别是他们的反馈。
原文作者:Tess Rinearson
Game of Zones 有几个目标:向公众科普有关 IBC 的知识;在对抗性和竞争性的环境中对系统进行压力测试;以及揭示 IBC 协议和应用中的任何潜在漏洞。本周早些时候,「Game of Zones」的参与者成功地帮助我们发现了一个问题。确切地说,这在 IBC 中算不上是一个错误,但不管怎样,它仍然是一个问题。我们很高兴能去解决它。
我稍后会更多地分享这一点,但首先,我要先交代一些背景:
周一,被称为「Cosmos Devs」的 iqlusion 团队发布了 Game of Zones 挑战的最新消息。时间表已经进行了调整,以适应上述在第一阶段结束时出现的问题。(有关 Game of Zones 安排协调的更多细节,请参见 iqlusion 的帖子)
相关链接:
GoZ 主办方
https://twitter.com/CosmosDevs
GoZ 信息
Interchain GmbH 团队
The Bug
在 Game of Zones 第一阶段结束时,参与者被要求将他们的软件升级到 Gaia 和 Cosmos SDK的新版本,并重新启动他们的节点。这样做之后,许多参与者报告他们的链停止了,另一些参与者称遇到了「无效端口」错误。
总部位于柏林的 InterChain GmbH 团队于周一上午(中欧夏令时)开始调查,并在当天下午发现了问题并做出了了一个补丁。然后,该团队与社区成员合作,跨多个节点验证修复。那天晚上,iqlusion 团队更新了 Game of Zones 的时间进度表。
相关链接:
根本原因
该错误来自于功能模块在 Gaia 内部初始化的方式。它使用缓存的上下文进行了错误的初始化,这意味着在应用程序初始化期间所做的更改没有正确地持久保存到存储区。
我们能够快速识别这个问题,因为它实际上是一个已知的错误。实际上,它在一周前就已经在 Cosmos SDK 的补丁中修复了!
那么,即使在 Cosmos SDK 中识别并修补了这个错误,这个错误是如何在 Gaia中持续存在的呢?
相关链接:
注:#6136 的修复是#6127 的升级。#6127 中修复该 Bug 的内容来自于 IRISnet 战队,详情:
更深层次的原因
我们能够找到有漏洞的代码,但我们也能够发现更大的问题:随着核心开发团队分散到 Cosmos 生态系统中,Gaia 到底应该由谁来维护还不是很明确。尽管 Gaia 扮演着作为运行 Cosmos Hub 的守护进程的关键角色,但它与 Cosmos SDK 和 Tendermint Core 具有不同的软件生命周期。更具体地说:Gaia 没有那么频繁地更新,并且对其依赖项的更改可能不会立即被运用。在这种情况下,这种不匹配造成了一定的问题。
下一步
在短期内,iqlusion 将负责将 SDK 更新移植到 Gaia。这一安排将确保关键的修正将被应用于 Gaia,并且 Gaia 将被积极地维持前进;不仅在 Game of Zones 期间,而且在更多的地方也是如此。Interchain GmbH 团队也将在这方面提供帮助,他们审查了所有的 Gaia 版本,并为这个非常重要的软件提供了审验。
InterChain GmbH 团队还将在 Game of Zones 期间开始帮助中继器开发、测试和支持。
「Game of Zones」最终比我们任何人预期的都要受欢迎得多!我们社区的参与对我们来说是一个非常宝贵的存在,你们所有人让「Game of Zones」成为了不仅仅是由一个团队在运作的一个项目。
正如我在这篇文章的开头所写的:Game of Zones 是挖掘 IBC 协议和软件漏洞的机会;今天,我们发现生态里组织的覆盖和沟通存在差距。我们正在修补这些东西,就像修补我们的代码一样。这些变化最终将帮助我们以一种稳健和有意的方式继续进行 Game of Zones,最终将帮助我们在 Cosmos 枢纽上以安全和稳定的方式启动 IBC。
InterChain GmbH 团队想要感谢每个人在这个过程中的持续参与,特别是他们的反馈。
我们期待着下一个阶段——不仅是 Game of Zones,还有 Cosmos 生态。感谢您与我们合作,使其尽可能成为✨天一般神圣的存在✨。