总 PR
4
HIGH
2
MEDIUM
1
Stage2
0
Model: deepseek/deepseek-v4-flash Compare Back

官方 Release Notes 总结

本版发布说明为拟议的 spec_version 452 运行时升级,代码已由 CI 提交 2-of-2 部署多签的一半签名,等待 triumvirate sudo 多签批准后生效。升级需使用 `btcli upgrade sign` 签名,并推荐用 srtool 本地构建后通过 `btcli upgrade check` 进行字节级验证,以核对链上 call hash 与部署产物。提案关键信息:commit 为 `da06f03`,call hash 为 `0x558653…72da`,部署多签地址及 wasm sha256 均已列出。原文未明确提及安全修复、资金/共识/账户变更或 breaking change,亦未给出 advisory 或严重性说明。

TL;DR(PR 分析)

本版重点强化了 Root Reborn 篮子认领的安全容错与资金转移逻辑,修复了子网流动性极端场景下的结算失败问题,并补齐了子网所有者奖励的验证保护,涉及 TAO/Alpha 互换的核心路径,具有共识与资金风险;同时调整了预编译执行的安全模型,防止通过 DELEGATECALL 滥用签名派发,属于中等影响的功能安全变更。

交叉验证

两边确认0
仅分析映射4
仅 Release Notes0
仅分析映射:#3126#3127#3130#3131
HIGH 重要更新 (2)
#3126 Runtime 451 hotfix: harden Root Reborn basket claims BREAKING MERGED fix
修复 Root Reborn 篮子申领在子网流动性枯竭或过大时无法结算的问题,并添加子网拥有者奖励的回归覆盖。
判级:改动直接触及篮子申领核心逻辑,涉及资金转移、燃烧、写销,影响所有 root 验证者的索赔行为,属于高影响变动。
关键改动
  • primitives/swap-interface/src/lib.rs: 新增 SwapFailureKind 枚举(InputTooLarge, TerminalLiquidity, Other);在 SwapHandler trait 中新增 max_swap_input 和 classify_failure 方法。
  • pallets/swap/src/pallet/impls.rs: 实现 SwapHandler 新方法,返回最大输入上限(1000×储备)和错误分类逻辑。
  • pallets/subtensor/src/staking/basket_views.rs: 新增 try_realizable_tao_for_alpha 方法,返回 Option:None 表示终端流动性;新增 try_get_validator_basket_nav_tao 方法,跳过无法价值的持仓;将 realizable_tao_for_alpha 改为调用该 fallible 版本。
  • pallets/subtensor/src/staking/basket_flush.rs: 在红利存款路径中处理终端流动性:origin 份额回收,destination 份额保留为 root 现金;使用 swap_basket_alpha_for_tao_chunks 分块兑换;移除 seed 迁移 early return。
  • pallets/subtensor/src/staking/claim_root.rs: 在申领路径中引入 try_realizable_tao_for_alpha,对终端持仓进行写销并触发 BasketAlphaWrittenOff 事件;对协议分红遇到的终端流动性也写销并增加对应 stake;采用分块兑换处理过大份额;dust 转换路径中处理终端持仓。
  • pallets/subtensor/src/macros/errors.rs: 新增 BasketDepositPending 错误。
  • pallets/subtensor/src/macros/events.rs: 新增 BasketAlphaWrittenOff 事件(不改变已有事件索引)。
  • pallets/subtensor/src/tests/: 添加多个测试:子网拥有者 root 分红可申领、仅写销申领者的终端垃圾份额、过大份额可执行的分块申领、终端 origin 回收不会阻塞队列、事件索引测试更新。
  • runtime/src/lib.rs: spec_version 从 450 升至 451。
#3127 Harden basket claims, verify owner rewards, and clean up migration gating MERGED runtime
强化篮子认领逻辑,处理终端流动性不足、验证子网所有者奖励不会被烧毁、清理已完成迁移检查
判级:改动触及核心资金逻辑(basket claim/flush 中的 TAO/Alpha 互换),引入 trait breaking change(spec_version 升级),并修改多个关键函数的错误处理与执行路径,具有共识风险。
关键改动
  • primitives/swap-interface: 新增 SwapFailureKind 枚举(InputTooLarge, TerminalLiquidity, Other),SwapHandler trait 新增 max_swap_input 和 classify_failure 方法
  • pallets/swap: 实现 max_swap_input 和 classify_failure(输入过大对应 SwapInputTooLarge,储备不足对应 ReservesTooLow)
  • pallets/subtensor/staking/basket_views.rs: 新增 try_realizable_tao_for_alpha(区分终端流动性返回 None 与未知错误),新增 try_get_validator_basket_nav_tao(跳过终端垃圾仓位计算 NAV)
  • pallets/subtensor/staking/basket_flush.rs: flush_basket_deposits_for_hotkey 返回三元素 (work, last_key, completed);对终端流动性 origin credit 回收而非永久卡住;对非钱币化仓位跳过铸造份额
  • pallets/subtensor/staking/claim_root.rs: 使用 try_realizable_tao_for_alpha 进行估值,对终端流动性仓位写销(写入事件 BasketAlphaWrittenOff 并烧毁对应 Alpha);新增 swap_basket_alpha_for_tao_chunks 和 swap_basket_tao_for_alpha_chunks 分块执行大额交换;追加 root 拦截清单
  • pallets/subtensor/macros/errors.rs: 新增 BasketDepositPending 错误,防止未冲洗的沉积物变更申领基础
  • pallets/subtensor/macros/events.rs: 新增 BasketAlphaWrittenOff 事件(append-only,不改变已有 SCALE 索引)
  • runtime/src/lib.rs: spec_version 从 450 升级至 451(兼容性变更,因 trait 新增方法)
  • 测试文件: 新增 subnet_owner_root_validator_dividend 回归测试、终端垃圾仓位写销测试、分块超大持有测试、终端 origin 回收测试、事件索引追加测试
MEDIUM 更新 (1)
#3130 Align precompile execution with the current call frame BREAKING MERGED fix
在预编译执行器中添加帧地址匹配检查,要求非只读/非密码学预编译必须在当前 EVM 帧地址与 code_address 一致时才能执行,阻止通过 DELEGATECALL/CALLCODE 滥用签名派发预编译。
判级:未触及核心资金/共识/emission 逻辑,也未新增 DispatchExtension 或操作锁定质押的 extrinsic;但修改了 precompile 执行安全模型,可能破坏部分合约兼容性,属于中等影响的功能变更。
关键改动
  • precompiles/src/lib.rs: 新增 accepts_foreign_frame(address) 函数,列举允许外部帧调用的只读/密码学预编译地址
  • precompiles/src/lib.rs: 在 execute() 中先检查 code_address 是否在 known addresses 中,若不是则返回 None;若预编译不允许外部帧且 code_address != context.address,则返回错误 'Cannot be called with DELEGATECALL or CALLCODE'
  • precompiles/src/lib.rs: 增加 7 条单元测试覆盖不同场景(拒绝错误帧、接受匹配帧、允许视图预编译外部帧、SHA256/Ed25519 外部帧、未知地址)
  • ts-tests/suites/zombienet_evm/01-contract-deploy-call.test.ts: 调整 depositAlpha 合约调用测试,从预期成功改为预期抛出 reject(因为该调用可能以 DELEGATECALL 方式执行,现在被拒绝),验证质押未改变。
LOW (1)
#3131 Bump spec_version to 452 BREAKING MERGED runtime
仅将运行时 spec_version 从 451 升级到 452
判级:纯 spec_version 递增,无逻辑变化、无存储迁移、无 trait 签名变更、不影响资金/共识/emission
关键改动
  • runtime/src/lib.rs: 将 `spec_version` 常量值从 451 改为 452,其余所有运行时配置、pallet 逻辑、存储、migration 均无任何变更