# 一文了解 23 年 10 月 18 日 Aptos 主网停机事件

By [AptosGlobal](https://paragraph.com/@0xaptosworld) · 2023-11-08

---

**概述**

2023 年 10 月 18 日，Aptos 网络在太平洋时间下午 4:15 左右出现交易延迟问题。交易负载非本次事件原因，没有已提交交易丢失，也没有发生分叉。非确定性代码导致了该问题，目前已经部署修复程序。该问题于太平洋夏令时间晚上 9:30 左右得到解决。

**发生了什么？（以下所有时间以太平洋夏令时间计算）**

2023 年 8 月 22 日，Aptos 核心代码库提交了以性能为中心的代码更改，2023 年 10 月 16 日，FeeStatement 活动上线 - 详细说明了交易的费用/退款。最初的代码更改引入了仅由 FeeStatement 揭示的非确定性,具体来说，验证者一致认为，交易的 Gas 预算不足以执行交易，并且由于 8 月份代码更改中引入的非确定性，他们无法就截至目前使用的 Gas 量达成一致。

**如何解决的?**

团队确定了问题并撤销了8月份的代码更改，从而解决了问题，验证者们使用正确的快速部署软件。

**下一步是什么？**

这是自主网启动以来 Aptos 网络第一次在链上出现明显的延迟，团队非常重视。在任何测试场景（包括测试网）中都没有达到这种非确定性场景，自此之后，生态系统开发人员应该致力于对非典型测试用例进行更严格的测试。当我们或任何其他生态系统团队在未来提出对协议的更改时，应该推进测试用例，在测试用例中，测试可以处理不需要的输入和用户行为。

**详细的事件描述**

Aptos 链按照市场需求的节奏部署新技术，并与云基础设施保持一致。2023 年有 7 个主要版本和 40 多个 AIP，预计 2023 年的最后一个版本将在未来几个月内发布，所有代码更改都经过严格的流程，至少有 2 名代码审查人员接受代码更改，所有代码在提交之前都必须通过一系列测试——单元测试、回归测试、集成测试、兼容性测试、性能测试、安全测试以及多区域云环境中的模拟真实世界测试。安全测试包括模糊测试、对抗性测试和故障测试，此外，还有夜间测试，还可以测试更广泛的集群场景，广泛覆盖不同的交易类型，包括从主网重放交易。所有版本都经过相同的发布管道 - 首先是开发网，然后是测试网，主要功能的预览网，然后是主网。虽然如此广泛的测试基础设施需要更长的时间来部署代码并且成本高昂，但我们的经验表明，它显着减少了进入主网的错误数量。

2023 年 8 月 22 日发生的一项更改提高了包含虚拟机执行输出的数据结构的性能，结合 FeeStatement 事件（细分交易的费用/退款），从确定性映射到非确定性映射的变化使得基于 I/O 的 Gas 费用的总和在某些情况下变得不确定，其中 Gas 费用是不确定的。 交易成本超出了他们的GAS预算(这种情况仅发生在极少数情况下，即达到交易 Gas 限制，并且由于不完整的执行与非确定性数据结构相结合) 可能会导致 FeeStatement 事件中的非确定性 I/O Gas 成本。 在任何测试场景（包括测试网）中都没有达到这种非确定性场景，并且它的第一次出现导致了主网上的这一事件。

**2023 年 10 月 18 日时间详细时间线**

4:15 PM PDT - 自动警报通知开发人员和节点运行者交易暂停，开发者会创建一个VC作战室，并立即开始寻找问题的根源。

5:15 PM PDT——开发人员从几个验证器日志中确定了同一交易的4个不同执行结果(非确定性)的问题。开发人员还通过在多台机器上禁用并行执行，并观察到使用相同软件的同一台机器上可能出现不同的执行结果，从而排除了并行执行作为不确定性来源的可能性。开发人员开始调查最近可能导致此问题的代码更改，几个平行的研究开始发现不确定性的来源。

7:30 PM PDT—在确定了非确定性交易执行的实际事件输出差异之后，问题在代码中追溯到FeeStatement事件和代码更改。同时，一个开发人员开始使用代码更改来运行交易模拟，该代码更改将恢复映射更改—重复执行以确保出现一致的结果。此外，对代码提交的还原也完成了，并且开始为验证节点操作符构建docker。

8:45 PM PDT -交易模拟确认修复是正确的，新版本已经准备好了，可以从docker和源代码中获得，验证节点操作员可以快速升级他们的软件。

9:18 PM PDT ——当网络就交易执行达成共识时，阻塞交易成功处理，所有待处理交易也完成。排队等待执行的交易不会丢失，没有提交的交易丢失，网络恢复正常。

---

*Originally published on [AptosGlobal](https://paragraph.com/@0xaptosworld/23-10-18-aptos)*
