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

官方 Release Notes 总结

本次发布将运行时升级至 spec 471,目前正等待第二方多签签名。该版本未提及安全修复、资金/共识/账户相关变更或 breaking change。部署通过 CI 已签署的 2-of-2 多签进行,需要 sudo 多签小组(三人执政)的第二份批准。spec_version 升至 `471`,commit 为 `c004cebf360f4088187ee49d851dfb1a1eaaf710`,WASM 哈希为 `0x04385dd7ddda37d4f70cd59a0e8360227165a4aefead0203c47adea5fc4b4aeb`。官方建议独立使用 srtool 构建并逐字节比对验证。

TL;DR(PR 分析)

本版以防护性加固为主:在 DispatchExtension 中新增 `check_basket_calls` 经济性检查以阻止费用消耗型篮子互换,直接改变交易接纳逻辑,同时修复 dust cleanup 回退后 `StakingHotkeys` 索引脏数据问题;另有纯 CI/CD 构建基础设施优化(Rust 缓存与任务取消)。高影响变更需重点回归交易接纳路径,整体未触及资金、共识或排放核心参数,索引清理属一致性修复而非状态迁移。

交叉验证

两边确认0
仅分析映射3
仅 Release Notes0
仅分析映射:#3195#3197#3198
HIGH 重要更新 (1)
#3198 Prevent Fee-Draining Basket Swaps and Clean Up Stale Staking Hotkeys BREAKING MERGED fix
新增篮子交易经济性检查(防止费用消耗性交易)和 StakingHotkeys 索引清理
判级:在 DispatchExtension 中新增了 check_basket_calls 检查项,直接改变交易接纳逻辑;同时修改了存储索引清理逻辑并调整了关键常量,属于高影响变动
关键改动
  • pallets/subtensor/src/extensions/subtensor.rs: 在 SubtensorTransactionExtension 中新增 check_basket_calls 函数,递归遍历被 Utility/Proxy 包裹的 swap_basket/swap_basket_many 调用,在事务进入交易池前验证经济性;新增 basket_trade_weight 函数正确计算验证权重
  • pallets/subtensor/src/staking/basket_trade.rs: 新增 ensure_basket_trade_economic 函数,要求每一笔篮子交易的中间 leg 至少移动 MIN_BASKET_TRADE_TAO(0.5 TAO);更新 try_swap_basket 中的检查使用相同的 minimum_basket_trade_tao() 函数
  • pallets/subtensor/src/staking/helpers.rs: 在 clear_small_nomination_if_required 中调用 maybe_remove_staking_hotkey,确保清除小额 nomination 后从 StakingHotkeys 索引移除热键
  • pallets/subtensor/src/lib.rs: 新增 MIN_BASKET_TRADE_TAO 常量(500_000_000,即 0.5 TAO);将 MAX_BASKET_SWAP_LEGS 从 128 降至 64
  • runtime/src/lib.rs: spec_version 从 470 升至 471
  • 测试文件 pallets/subtensor/src/tests/swap_basket.rs 和 staking.rs: 新增针对新经济和索引清理行为的测试用例
MEDIUM 更新 (1)
#3197 Fix stale StakingHotkeys entries after dust cleanup MERGED fix
在清理小质押(dust cleanup)失败回退删除剩余alpha后,添加调用`maybe_remove_staking_hotkey`以修复`StakingHotkeys`索引脏数据问题
判级:修复了索引一致性bug,但未触及资金/共识/排放核心逻辑,无新DispatchExtension或存储迁移,属于非关键修复
关键改动
  • pallets/subtensor/src/staking/helpers.rs(第275行):在`decrease_stake_for_hotkey_and_coldkey_on_subnet`之后添加`Self::maybe_remove_staking_hotkey(hotkey, coldkey)`调用
  • pallets/subtensor/src/tests/staking.rs(新增测试函数):`test_clear_small_nomination_removes_staking_hotkey_after_failed_unstake`,验证在swap失败(设置极低流动性)后质押归零且`StakingHotkeys`条目被正确移除
  • sdk/python/bittensor/_generated/*.py(5个文件):各改1行,属于自动生成的绑定文件同步,无逻辑变更
LOW (1)
#3195 ci: restore Rust cache hits, stop superseded work, fix docs preview deploy MERGED ci
优化 Rust 缓存命中率与 CI 运行效率,消除缓存失效和任务冲突问题
判级:纯 CI/CD 与构建基础设施改进,不修改任何链上状态、共识逻辑或经济参数,属于非功能变更