跳至正文
预览模式 — 包含未审核文章,请勿对外分享。 在生产环境查看 →
The Kagari
Developer

Movement 修复 Aptos Core VM 中的枚举序列化错误

2026年9月3日 · 1 分钟阅读

Movement 已合并 Aptos Core 中的一项关键错误修复,解决了 Move VM 值编解码器中枚举 (RuntimeVariants) 值的非对称性。该问题允许序列化悄悄接受反序列化稍后会拒绝的超出范围的 variant 标签,导致危险的序列化/反序列化不匹配。

问题

RuntimeVariants 值携带一个 u16 variant 标签。当值针对不描述其标签的布局进行序列化时(例如,在枚举升级引入 variant 之前缓存的布局),生成的字节会在反序列化期间被拒绝。这种非对称性可能导致状态卡死(资源可以写入但无法读回)或导致区块级故障。

具体的间隙是零字段范围外标签:带有非空有效负载的标签已被现有字段计数检查捕获,但零字段标签通过并无声地序列化为有效的 variant,与有效的 unit variant 无区别。

修复方案

seanyoung 编写的 PR #411 更新了序列化以拒绝范围外的 variant 标签,确保编解码器的两部分相互一致。测试包括单元测试,验证零字段范围外标签(3、4、100、u16::MAX)无法序列化,而真正的 unit variant 仍能正常往返。端到端测试确认修复可以正确处理枚举升级和 variant 变更,即使在同一个区块中执行。

这项修复增强了 Movement 网络核心 VM 的韧性,消除了微妙但可能具有灾难性的序列化漏洞。

来源 github.com
分享
The Kagari

Kagari 是一个专注于下一代区块链的多语言媒体平台。通过整理官方新闻、开发者资源和黑客松动态,致力于成为帮助构建者和用户更轻松地跟踪生态发展的信息层。

© 2026 The Kagari. 版权所有。