Midnight 发布 Ledger 9.1.0.0 以备下一次网络硬分叉
该版本更新了用于生成和验证零知识证明的库,并引入了交易成本参数的变更。部分合约开发者需要重新生成验证密钥。
By SongMarketCap
Updated:
Midnight 已发布 Ledger 9.1.0.0,这是面向网络下一次硬分叉的账本软件首个正式版本。此次更新新增对 ECDSA 签名的支持,并对证明生成、交易处理和安全校验进行了改动。
团队同时发布了 Proof Server 9.0.0,这是一项链下服务,用于生成 Midnight 交易所需的零知识证明。账本的发行说明未给出硬分叉的具体日期。
更新的证明库与 ECDSA 支持
该账本软件定义了交易的结构以及更新网络状态的规则。Ledger 9.1.0.0 在一系列候选版本之后发布,在通过质量保证审核后由 9.1.0.0-rc.7 晋升为正式版。
其主要变更是迁移至 midnight-zk-stdlib v2 和 midnight-circuits v7,这些库用于生成和验证零知识证明。零知识证明可在不泄露底层私有数据的情况下完成信息验证。使用早期 zk-stdlib v1 创建的证明和验证密钥在新版本下仍可验证。
Ledger 9 还支持 ECDSA 签名,这是一种被 Bitcoin 和 Ethereum 等网络采用的密码学签名标准。此外,Proof Server 支持 zkir v3,这是一种用于密码电路的中间表示的更新版本。
该版本引入了一种名为 UnlockToTreasury 的系统交易,可将资金从锁定池转入金库。它还标志着 Ledger 9 的 Rust 包首次在 crates.io 上发布,其中包括新的 midnight-ledger-v9 包。
Midnight 更新交易成本参数
Ledger 9 引入了由账本参数管理的明确价格下限。它还将此前的单一计算成本因子替换为用于交易验证、保证应用与可失败应用的分别因子。
Midnight 的交易费用以 DUST 支付,DUST 是一种由已注册的 NIGHT 代币随时间生成的网络资源。该版本更改了 DUST 注册的计入方式,改为使用区块时间而非交易中申报的时间。
多个修复针对钱包状态处理与跨链桥费用处理中的潜在故障。该版本还延续了此前通过 Ledger 8.1.2 和 8.1.3 向主网发布的安全补丁,包括对合约调用所用数据实行更严格的解码与校验。
[NEWSBREAK]
验证密钥与开发者已知问题
更新后的证明库更改了特定类型电路的验证密钥。根据发行说明,受影响的合约包括使用带有 hash_to_curve 的 zkir v2 电路,或对 Jubjub 标量进行编码的 zkir v3 电路。它们的验证密钥需要重新生成;v0 与 v1 的密钥不受影响。
用于构造或序列化账本参数的工具必须纳入新的价格下限与成本因子。手动构造签名封套的代码也必须迁移到共享的构造方法。
发行说明列出了两个已知缺陷。在承诺树非空的链上,一次合约调用若花费一枚受保护币并将找零写回,可能因超出其 gas 预算而被拒绝。另一问题会导致恰好用一笔 DUST 支付的合约调用未通过超时驳回检查;说明建议使用两笔或以上 DUST 支付以规避该问题。
Ledger 9 的软件包以 npm 作用域 @midnightntwrk 发布。此前的 @midnight-ntwrk 作用域目前仍将继续接收发布。