Release v468
Runtime 468 (proposed)
Published
2026-09-21 18:18:55
Generated
2026-09-21 19:01:48
总 PR
3
HIGH
1
MEDIUM
1
Stage2
0
官方 Release Notes 总结
本次发版将运行时升级至 spec 468,目前正等待三方委员会(triumvirate)的第二重签名,以完成 finney 链上的多签部署。**此次升级包含一项安全修复**,关联安全公告,但原文未给出具体严重性评级。**资金、共识与账户逻辑未提及涉及变更**。无 Breaking Change 声明。**spec_version 从上一版升级至 468**。
TL;DR(PR 分析)
本版核心变更包括:启用篮子交易功能,并在根认领流程中跳过粉尘行,同时修复了子网解散导致的TotalStake双重扣除bug及边界精度问题,涉及资金会计与核心经济逻辑调整,未触及共识与安全底层。
HIGH 重要更新 (1)
spec 468:启用篮子交易(basket trading);在根认领(claim_root)中跳过粉尘行(dust rows);修复子网解散导致的TotalStake双重扣除bug
判级:涉及根认领核心经济逻辑变更(粉尘行跳过)、TotalStake金融数据修复(26.5 TAO)、新功能启用(basket trading上线)、spec_version升级和迁移,属于高影响改动
关键改动
- runtime/src/lib.rs: spec_version 467→468,RPC API版本4→5,Migrations元组新增两个迁移(enable_basket_trading + resync_total_stake_v2)
- pallets/subtensor/src/migrations/migrate_enable_basket_trading.rs: 新增一次性迁移,将BasketTradingEnabled置为true并写入HasMigrationRun标记;已开启的链(devnet/testnet)仅写标记;sudo_set_basket_trading_enabled(false)仍然是持久的紧急关闭开关
- pallets/subtensor/src/migrations/migrate_resync_total_stake.rs: 新增v2版本迁移(独立标记migrate_resync_total_stake_v2),修复finney上subnet 108解散导致的26.5 TAO漂移;重构为通用resync_wrapper支持多版本
- pallets/subtensor/src/staking/claim_root.rs: 根认领核心逻辑重大重构——新增粉尘行跳过机制(plan_basket_claim/plan_basket_claim_rows/basket_row_is_claim_dust);新增anchored_basket_holding_value使用fast EMA锚定价格判断粉尘;basket_deployment_split不再因零值行报错而是静默过滤;deploy_tao_into_basket返回valued_before供调用方使用;do_root_claim_tracked在失败时也返回已完成的工作量(用于精确扣费)
- pallets/subtensor/src/lib.rs: 新增4个存储项(BasketClaimRowDustCapTao/BasketClaimRowDustBps/BasketClaimSliceDustTao/BasketClaimForfeitCapTao)及其默认值常量;默认行粉尘上限1 TAO,相对比例10 bps,切片粉尘0.0001 TAO,没收上限0.01 TAO
- pallets/subtensor/src/macros/events.rs: 新增事件BasketClaimDustSkipped(报告跳过了多少粉尘行及其估计价值)
- pallets/subtensor/src/macros/dispatches.rs: claim_root/claim_root_with_hotkey extrinsic改用do_root_claim_tracked,失败时收取已完成工作量而非声明的envelope;增加admission检查的权重收费
- pallets/subtensor/src/staking/stake_utils.rs: convert_basket_holding_to_root中修复TotalStake双重扣减——子网解散时TotalStake已在do_dissolve_network中减去,convert中的swap不应再扣第二次
- pallets/subtensor/src/rpc_info/basket_info.rs: 新增BasketClaimPreview结构和get_basket_claim_preview/get_root_basket_claim_previews RPC(在只读事务中模拟认领流程,包括flush和consolidate)
- pallets/admin-utils/src/lib.rs: 新增sudo_set_basket_claim_dust extrinsic(call_index 110),一次性设置四个粉尘阈值参数
- runtime/src/proxy_filters/call_groups.rs: 将sudo_set_basket_claim_dust加入代理白名单
- pallets/subtensor/src/tests/claim_root_dust.rs: 新增1136行的粉尘跳过测试套件
- pallets/subtensor/src/tests/migration.rs: 新增迁移测试
- clones/js-tests/tests/test-balancer-operation.ts: 更新测试适配新逻辑
- docs: 更新claim-root/claim-root-with-hotkey/root-reborn/basket-trading等文档,描述粉尘跳过行为
MEDIUM 更新 (1)
修复已溶解子网篮子转换中TotalStake校正的边界精度问题:快照出售前值并恢复精确值,而非恢复名义出售收益
判级:修复了TotalStake会计的边界精度问题,虽不涉及共识/资金/emission核心逻辑,但属于链状态校正的核心pallet逻辑变更,且主网曾因类似问题发生过漂移(如描述中提到的Finney block 9111229),因此重要性为中等。
关键改动
- pallets/subtensor/src/staking/claim_root.rs:在出售前快照TotalStake值(仅当子网已溶解),出售后恢复该精确快照值,而非使用saturating_add(tao)
- pallets/subtensor/src/tests/claim_root.rs:移除维持TotalStake为正的额外活跃子网,使溶解操作将TotalStake降至零,新增assert_eq!(TotalStake::<Test>::get(), TaoBalance::ZERO)断言以验证边界条件
- 测试用例test_root_basket_dissolve_converts_to_root_slot不再依赖第二语言活跃子网维持TotalStake为正,而是直接测试TotalStake归零的极端情况
LOW (1)
修复 typescript-e2e 测试中 ink 合约 gas limit 过小导致 OutOfGas 的问题,改为运行时预演动态计算 gas 配额。
判级:仅修改 ts-tests 测试工具中的 gas limit 计算逻辑,通过 ContractsApi.call 预演动态计算 gas_required,不涉及任何链上运行时、pallet 或共识逻辑变更,属于测试代码修复。