Midnight 详述 Ledger 9.1.0.1 中的安全修复

在主网上激活的该版本解决了涉及交易手续费、区块限制和钱包余额的问题,同时为在 Midnight 上构建的开发者引入了更严格的验证。

By SongMarketCap

Updated:

Midnight News - Midnight 详述 Ledger 9.1.0.1 中的安全修复

Midnight 已发布 Ledger 9.1.0.1 的源代码和发行说明,该版本在 11 月 6 日的网络升级期间于主网上激活。此次发布列出了 13 项修复,包括对交易手续费计算、区块限制以及钱包显示代币方式的更改。

据发行说明,节点运营者于 11 月 3 日收到该软件。源代码和各项修复的说明于 11 月 7 日发布。此次更新还会拒绝此前 Ledger 9 构建版本所接受的某些交易。

交易手续费与区块限制的变更

账本是 Midnight 软件中用于判定交易是否有效及其成本的部分。Midnight 在 Preprod 测试网络上未经过通常的提前期就迁移到了 Ledger 9。该项目解释称,当安全修复需要时,会采用更受控的发布流程。

其中一项问题影响了节点处理共享数据结构中重复条目的方式。根据发行说明,小额交易可能在检查其费用之前迫使节点执行指数级增加的工作量。更新后的账本会在计算费用之前拒绝重复条目,并以与数据大小成比例的时间处理数据。

另外两项修复针对区块限制。此前一笔交易可以声明其实际上并未执行的删除,从而降低交易其他部分的费用并绕过写入净字节数的限制。另一项计算问题导致声明的计算时间只要至少为 2⁶³ 皮秒便会被计为零。现在这两类交易都会被判定为无效并被拒绝。

DUST、钱包与 Cardano Bridge

Midnight 的交易费用使用 DUST 支付,DUST 是由 NIGHT 持有量生成的资源。发行说明描述了这样一个问题:在注册期间记入的超额费用资源可能被智能合约截留,同时注册者仍会收到全额。现在,将费用资源作为公共输入或输出进行转移的合约调用会被拒绝。

另一项修复涉及钱包如何重放链上事件。一个有效的输出可能包含与其密码学承诺不匹配的加密记录。这可能导致钱包显示无法花费的代币,或覆盖其已持有代币的位置。发行说明称,链上状态不受影响。

此次更新还更彻底地从内存中清除源自钱包种子的敏感数据。部分修复对应审计发现,发行说明还指向了 9 条 GitHub 安全公告,其页面截至 11 月 8 日上午尚未公开。

一项单独的修复适用于用于将代币从 Cardano 转移到 Midnight 的协议桥。零值申领此前可以在不支付费用的情况下通过验证。申领现在必须达到所需的最低限度,或覆盖全部剩余余额。该桥已包含在 Ledger 9 代码中,但在主网上仍处于禁用状态,需经单独的治理行动启用。

[NEWSBREAK]

开发者包与未解决问题

此次发布包含 @midnight-ntwrk/ledger-v9 1.0.1、onchain-runtime-v4 4.0.1 和 Proof Server 9.0.1。证明服务器会生成交易中使用的零知识证明。Midnight 的主网升级文档另行将 Proof Server 9.0.0 列为兼容组件之一。

Ledger 9.1.0.1 会拒绝包含重复委员会签名或重复费用注册的交易。合约最多包含 256 个操作,每次部署按其完整状态计费,声明的 gas 必须保持在区块限制内。

若干 Rust 成本计算函数现在返回错误而非值。直接计算费用的开发者必须在其集成中考虑这一变化。

来自 9.1.0.0 版本的两个已知问题仍未解决。其中一个可能在费用恰好用一次 DUST 支出支付时导致合约调用被拒绝。Midnight 的文档给出的临时解决方案是使用两次或更多次 DUST 支出,相关修复计划在后续版本中推出。