Release v448
Runtime 448 (proposed)
Published
2026-08-21 17:18:41
Generated
2026-08-21 18:01:43
总 PR
14
HIGH
2
MEDIUM
5
Stage2
0
官方 Release Notes 总结
这一版宣布了运行时升级提案,将 spec_version 提升至 448,目前正在等待制衡小组(triumvirate)的第二重签名。原文未提及任何安全修复(advisory)或严重性说明,也未涉及资金、共识或账户相关变更。本次升级未包含 breaking change。部署代码已标记为 `v448`,并提供了独立的 srtool 构建验证方法。
TL;DR(PR 分析)
本版核心包括 spec_version 448 发布,集成了 root-claim 费用报价、受限质押移动(move_stake_limit)和 TotalAlphaStaked 聚合等多项资金相关功能;同时修复了 SDK 中多个影响用户资金的意图提交安全漏洞。共识与 emission 逻辑未受影响。
交叉验证
两边确认0
仅分析映射14
仅 Release Notes0
HIGH 重要更新 (2)
发布 spec_version 448,包含 root-claim 认领费用报价、SDK 预检、受限抵押移动(move_stake_limit)、限价单链接输出修剪、按子网记账 TotalAlphaStaked 和 StakingHotkeys 预编译、安全执行改进、原子认领并全额解押、严格时间锁解码等多项功能。
判级:spec_version 升级(447→448)且包含多项直接影响资金(root-claim、move_stake_limit、TotalAlphaStaked)的核心运行时逻辑变更,根据规则必须评为 HIGH。
关键改动
- runtime/:spec_version 从 447 升至 448,新增或启用 root-claim 认领、move_stake_limit、TotalAlphaStaked 存储、StakingHotkeys 预编译等 pallet 功能
- pallets/subtensor:新增或修改 root-claim 认领 extrinsic 和费用报价逻辑,支持 fill-or-kill/partial-fill 的 move_stake_limit 抵押移动
- pallets/alpha-assets:新增 TotalAlphaStaked 存储项,跟踪每个子网的 Alpha 总抵押量
- pallets/swap:实现限价单链接输出修剪(linked limit orders and output pruning)
- pallets/shield 或相关 pallet:改进原子认领+全额解押(atomic claim-and-full-unstake),包含新认领的根收益
- pallets/commitments 或相关 pallet:严格时间锁负载解码(strict timelock payload decoding)
- precompiles/:新增 StakingHotkeys 预编译合约
- SDK(Python):同步 v448 元数据,版本 11.2.0.dev0,新增代码生成门控、滑点测试、root-claim、shield 执行测试等
- docs/ 和 chainspecs/:更新参考文档、网站文档及生成文件
SDK 意图提交前安全预检机制增强:统一预检路径、引入硬停止检查、根认领 256 单元准入检查、屏蔽提交 carrier 费用覆盖检查、认领后解押原子性保护
判级:修复六个 SDK 安全漏洞,涉及屏蔽提交绕过硬停止、根认领费用燃烧、认领后解押原子性等直接用户资金安全问题,且改动覆盖整个 SDK 预检核心路径
关键改动
- sdk/python/bittensor/intents/base.py:新增 IntentPreflight 数据类,Intent 基类增加 preflight() 方法
- sdk/python/bittensor/executor.py:Executor 新增 preflight()/_preflight(),plan() 和 submit_shielded() 统一走预检路径,shield 强制校验 carrier 费用覆盖
- sdk/python/bittensor/intents/_root_claim_fee.py:新增 RootClaimAdmission/RootClaimReserve/RootClaimWork 结构,实现 fail-closed 的 256 单元检查
- sdk/python/bittensor/intents/registration.py:引入 _RootClaimIntent 基类,统一根认领预检,移除旧缓存函数
- sdk/python/bittensor/intents/staking.py:新增 _OptionalRootClaimIntent,claim-then-unstake 时检查 RootStakeUnlockInterval,root 移除使用 u64::MAX 包含收益
- sdk/python/bittensor/intents/batch.py:子意图预检结果合并,保留索引标签
- sdk/python/bittensor/intents/multisig.py:多重签名适配预检路径
- sdk/python/bittensor/client.py 和 sync.py:暴露 preflight() 和 estimate_shielded_carrier_fee()
- sdk/python/bittensor/cli/context.py:改用新的预检和费用估算函数
- sdk/bittensor-core/src/timelock/mod.rs:UserData 解码增加尾随字节检查
- pallets/subtensor/src/migrations/migrate_total_alpha_staked.rs:修复当总数为零时移除存储条目
- 各种文档更新和新增单元测试
MEDIUM 更新 (5)
新增 `move_stake_limit` extrinsic,为跨子网质押移动提供基于限价单的滑点保护
判级:新增的功能性 extrinsic,不触及共识/emission 核心逻辑,不修改现有存储或接口,为非破坏性增值变更;但 spec_version 升级表明它将进入主网,且涉及跨层(runtime、chain-extension、预编译、fee)变更,需中度关注。
关键改动
- pallets/subtensor/src/staking/move_stake.rs:新增 `do_move_stake_limit` 函数,调用底层 `transition_stake_internal` 传入 `Some(limit_price)` 和 `Some(allow_partial)`
- pallets/subtensor/src/macros/dispatches.rs:新增 call_index 149 的 `move_stake_limit` extrinsic,绑定 weight 和文档
- pallets/subtensor/src/benchmarks/benchmarks.rs:新增 `move_stake_limit` benchmark,覆盖跨子网场景
- chain-extensions/src/lib.rs:新增 `dispatch_move_stake_limit_v1` 及其两个 FunctionId(`MoveStakeLimitV1` 和 `CallerMoveStakeLimitV1`)的 dispatch 入口
- chain-extensions/src/types.rs:新增 FunctionId 枚举成员 37/38
- precompiles/src/staking.rs:预编译合约新增 `moveStakeLimit` 方法及测试
- ink-contract/lib.rs:ink! 合约新增对应方法
- runtime/src/lib.rs:spec_version 从 447 提升至 448
- runtime/src/proxy_filters/call_groups.rs & mod.rs:将 `move_stake_limit` 加入质押代理调用组
- pallets/transaction-fee/src/lib.rs:fee 处理器新增针对 `move_stake_limit` 的分支,识别 origin_hotkey/netuid
- sdk/(Python/Rust)和 ts-tests:添加调用封装、预编译 ABI、索引器测试和端到端测试
- pallets/subtensor/src/tests/staking.rs 及 ts-tests/suites/…:新增单元测试和 e2e 测试,涵盖 fill-or-kill 和 partial-fill 行为
在 pallet-subtensor 中新增 `TotalAlphaStaked` 存储项,为每个子网维护所有 hotkey 质押 Alpha 的 O(1) 聚合总量,并同步所有质押变更路径、添加回填迁移及对应测试。
判级:新增非破坏性的只读聚合存储和迁移,不触及资金/共识/emission 核心逻辑,但涉及链上状态变更和 runtime 升级,影响范围中等
关键改动
- lib.rs: 新增 `TotalAlphaStaked` 存储映射 `netuid -> AlphaBalance`
- stake_utils.rs: 在 `set_shared_value` 中同步聚合值,精确反映增减
- remove_stake.rs: 在清理 hotkey 质押时同步减去对应的 Alpha 值
- subnets/dissolution.rs: 子网解散时清除 `TotalAlphaStaked` 条目
- macros/genesis.rs: 创世初始化时为默认子网设置初始聚合值
- macros/hooks.rs: 在 on_idle 迁移链中加入新迁移 `migrate_total_alpha_staked`
- migrations/migrate_total_alpha_staked.rs: 新增一次性回填迁移,遍历现有 `TotalHotkeyAlpha` 求和并写入
- tests/total_alpha_staked.rs: 新增 4 个测试覆盖创世、质押增减、跨子网调动、零值操作的不变性
- 其他测试文件: 在 coinbase、recycle_alpha、move_stake、destroy_alpha_tests、networks 等已有测试中添加不变性断言
- sdk/python/bittensor/_generated/storage.py: 更新 Python SDK 元数据以暴露新存储项
- spec_version bump 至 448(隐含在 migration 注册和版本号中,diff 中未显式显示但描述提及)
在限价订单 pallet 中新增 v2 链接订单功能,支持订单按比例引用另一个已成交订单的输出
判级:新增功能模块,不影响共识/emission/TAO 代币发行核心逻辑,不涉及质押或奖励计算,但引入新存储和执行路径,需充分测试
关键改动
- pallets/limit-orders/src/v2.rs:新增 OrderAmount(Fixed/LinkedPercentage)、OrderV2、LinkedOutput、OrderView 及 LinkedAsset 类型
- pallets/limit-orders/src/lib.rs:VersionedOrder 新增 V2 变体;is_order_valid 返回 (amount, Option<provider>);新增 resolve_amount/consume_linked_output/record_linked_output/prune_linked_output 方法;execute_order 和 execute_batched_orders 中集成链接记录的消费与记录
- runtime/src/lib.rs:spec_version 447→448;配置 LinkedOutputTtl=7 天;impl pallet_limit_orders::Config 新增 LinkedOutputTtl
- pallets/limit-orders/Cargo.toml/Tests:新增 linked.rs 专项测试(1562 行)、更新 ledger_vector.rs 添加 v2 设备签名向量、mock.rs 添加辅助函数
将 `claim_root` 的预声明 weight 从 256 降低到 129(默认子网容量 128 + root 1),使费用报价更符合实际工作量
判级:这是一个 weight 常量的优化调整,不涉及新增 extrinsic、共识逻辑、存储迁移或资金安全。影响用户费用体验,属于中等重要性的参数修改。
关键改动
- `pallets/subtensor/src/lib.rs`:常量 `MAX_ROOT_CLAIM_WORK` 从 256 改为 129,并添加注释说明其等于默认子网限制(128)+ root 仓位
- `pallets/subtensor/src/macros/dispatches.rs`:更新 `claim_root` extrinsic 的 weight 注解注释,反映新的软信封大小
- `pallets/subtensor/src/tests/claim_root.rs`:新增测试断言,验证 `MAX_ROOT_CLAIM_WORK == DefaultSubnetLimit + 1`
- `runtime/src/lib.rs`:递增 `spec_version` 从 447 到 448(runtime 版本号升级)
- `docs/tx/claim-root.mdx`:同步更新文档中的 weight 注释
在解除质押和转移质押后自动清理过时的 StakingHotkeys 存储记录,并添加链上迁移以清除历史遗留的过时条目
判级:改动优化了存储维护逻辑,但未触及资金、共识、排放核心,无 DispatchExtension 新增,未改变 runtime 构建或 spec_version;迁移以 on_idle 执行不破坏共识
关键改动
- pallets/subtensor/src/staking/stake_utils.rs: 新增 `maybe_remove_staking_hotkey` 函数,在完全解除质押(decrease_stake)和跨子网转账(transfer_stake)后检查并删除无质押且无篮子认领标记的 StakingHotkeys 关联
- pallets/subtensor/src/migrations/migrate_cleanup_staking_hotkeys.rs: 新增迁移模块,通过 on_idle 分步扫描全量 StakingHotkeys 存储,对每个热键/冷键对判断是否仍存在任意子网的质押或篮子认领指标,若无则从对应冷键的向量中移除,向量清空则删除整行
- pallets/subtensor/src/macros/hooks.rs: 在 on_idle 钩子中编排迁移执行顺序(先存储膨胀清理,后执行该清理),并确保在区块重量限制内分批推进
- pallets/subtensor/src/migrations/mod.rs: 注册新迁移模块
- pallets/subtensor/src/benchmarks/benchmarks.rs: 更新多个现有基准测试(解除质押、转移质押、交换等)以覆盖清理路径,并验证清理后 StakingHotkeys 的状态
- pallets/subtensor/src/tests/staking.rs: 新增单元测试验证 `maybe_remove_staking_hotkey` 在单/多子网、有篮子认领时保留关联、和完全删除的逻辑
- pallets/subtensor/src/tests/migration.rs: 新增集成测试覆盖迁移的完整执行流程(包含存量数据验证)
- clones/js-tests/tests/test-staking-hotkeys-cleanup-migration.ts: 新增 TypeScript 集成测试(205 行)
LOW (7)
修复测试网 GRANDPA warp 检查点配置:更正权威集和 set ID 以匹配实际历史签名集
判级:仅修正测试网节点配置,不涉及 runtime、共识、资金或 emission,不影响主网,且改动范围极小。
关键改动
- node/src/service/grandpa_warp_sync.rs: 将测试网检查点权威集从5人扩充为6人,新增公钥 d97a6426...
- node/src/service/grandpa_warp_sync.rs: 将第二个检查点的 set_id 从 2 更正为 3
- node/src/service/grandpa_warp_sync.rs: 新增单元测试,验证存储的 GRANDPA justification 在 set_id=3 时通过、set_id=2 时失败
- node/src/service/grandpa_warp_sync.rs: 更新已有测试断言以匹配新配置
修复Bittensor网站搜索接口在Vercel部署时返回500的问题,将搜索索引构建提前到编译时。
判级:该PR仅修复网站搜索接口在Vercel部署时的500错误,不涉及任何链上运行时、存储迁移或共识变更,属于纯前端/网站修复。
在 StakingPrecompileV2 中新增 getStakingHotkeys 视图函数,用于分页查询冷键的质押热键列表
判级:纯新增只读视图函数,不修改任何链上存储或共识逻辑,不引入资金风险,属于低影响改动
关键改动
- precompiles/src/staking.rs:新增 get_staking_hotkeys 函数,实现分页逻辑(offset/limit),限制 page size 最大 64,零参数和非零上限校验,并添加三个单元测试覆盖正常分页、空状态、非法参数和最大页大小
- precompiles/src/lib.rs:在 selector 注册列表中添加 'getStakingHotkeys(bytes32,uint64,uint16)'
- precompiles/src/solidity/stakingV2.abi:添加新函数的 ABI 定义
- precompiles/src/solidity/stakingV2.sol:在 Solidity 接口中添加函数声明及注释文档
- .agents/skills/evm-maintainer/references/exceptions.md & state-exposure.md:更新文档以反映新增的视图
- sdk/python/bittensor/evm/abi/stakingV2.json:同步更新 Python SDK 的 ABI 副本(生成文件)
- docs/guides/evm/precompiles/staking-v2.mdx:更新文档说明
在根目录新增AGENTS.md,为AI agent提供CI预检指导
判级:纯文档更新,添加仓库级CI预检指南,无任何链上逻辑或状态变更
新增文档描述链共识机制及计划中的NPoS过渡路线图。
判级:纯文档更新,记录链共识机制(Aura/GRANDPA)和计划中的NPoS过渡,无代码或链上状态变更。
为btcli添加全热键批量解锁质押功能,支持跨子网去重和原子化提交
判级:本PR是CLI客户端的stake退出工作流增强,不修改链上代码(pallet/runtime),属于客户端工具的批处理功能改进,不影响链上状态或共识
同步Python SDK中bittensor-core依赖版本从0.1.3升至0.1.4。
判级:仅升级Python SDK的bittensor-core依赖版本至0.1.4,不涉及运行时、存储、共识或链上逻辑变更,无迁移或spec_version bump,属于外部工具链的元数据同步。