Release v3.4.2-415
v3.4.2-415
Published
2026-06-03 16:53:56
Generated
2026-06-10 15:05:10
总 PR
3
HIGH
3
MEDIUM
0
Stage2
0
TL;DR(PR 分析)
本次版本核心修复了子网注销时TAO退还的会计核算错误(资金安全),并通过运行时API统一暴露代理类型过滤规则。同时合并了链购alpha注销回收逻辑的紧急修复,涉及存储迁移与共识调整。
HIGH 重要更新 (3)
通过引入 define_proxy_filters! 过程宏作为单一真源,新增 ProxyFilterRuntimeApi 的两个方法(get_proxy_types、get_proxy_filter),以暴露代理类型过滤规则供链下客户端查询。
判级:核心基础设施改进,将代理过滤规则统一为单一真源,消除手工重复维护风险,提升代码可维护性和正确性,同时为链下客户端提供标准化权限查询接口。
关键改动
- support/macros/src/proxy_filter.rs:新增 540 行,实现 define_proxy_filters! 过程宏,包含 DSL 解析(pallets 声明、过滤规则)和代码生成(生成 proxy_type_filter 函数、get_all_proxy_filters 函数),支持 AllowAll、DenyAll、Allow、Deny、AllowConditional、AllowNested 等过滤模式及通配符、条件、嵌套调用等高级规则。
- support/macros/src/lib.rs:注册 define_proxy_filters 过程宏,调用 ProxyFilterInput::generate()。
- support/macros/Cargo.toml:为 syn 增加 printing、proc-macro 特性以支持宏生成。
- common/src/lib.rs:新增 CallInfo、CallCondition、FilterMode、ProxyFilterInfo、ProxyTypeInfo 数据结构及 ProxyType::is_deprecated() 方法,修改 ProxyType 的 Default 实现为 Any。
- runtime/src/lib.rs:用 define_proxy_filters! 宏替换原有的手写 match 块(-210 行),新增 call_info_by_name、call_info_by_name_conditional、pallet_wildcard、get_all_proxy_type_infos 辅助函数,实现 ProxyFilterRuntimeApi 的 get_proxy_types 和 get_proxy_filter 方法,将 spec_version 从 413 升至 414。
- pallets/subtensor/runtime-api/src/lib.rs:在 existing runtime api 定义块中添加 ProxyFilterRuntimeApi trait,声明 get_proxy_types 和 get_proxy_filter 方法。
- runtime/tests/pallet_proxy.rs:新增 449 行测试,覆盖过滤行为校验、API 输出结构验证(18 种 ProxyType、deprecated 为 DenyAll、Any 为 AllowAll、条件限制值正确等)、交叉检查(InstanceFilter::filter() 与 API 声明一致)、deprecated 一致性。
修复子网注销时TAO退还的会计处理:根据子网注册时间区分使用SubnetProtocolAlpha或SubnetAlphaIn+SubnetProtocolAlpha结算
判级:修复子网注销时资金会计错误,直接影响TAO分配(资金安全);引入存储迁移和共识变更,需严格审查
关键改动
- pallets/subtensor/src/lib.rs: 新增存储项TaoInRefundDeploymentBlock(StorageValue<u64>)及默认值0,记录部署区块编号
- pallets/subtensor/src/migrations/migrate_tao_in_refund_deployment_block.rs: 新增迁移函数,在运行时升级时捕获当前区块号写入TaoInRefundDeploymentBlock
- pallets/subtensor/src/macros/hooks.rs: 在on_runtime_upgrade钩子中串联新迁移步骤
- pallets/subtensor/src/migrations/mod.rs: 注册新迁移模块
- pallets/subtensor/src/staking/remove_stake.rs: 修改子网注销结算逻辑,根据子网注册时间(reg_at vs TaoInRefundDeploymentBlock)决定是否包含SubnetAlphaIn
- runtime/src/lib.rs: 提升spec_version从414到415
- pallets/subtensor/src/tests/migration.rs: 新增迁移测试,验证部署块记录正确且幂等
- pallets/subtensor/src/tests/networks.rs: 新增3个测试(pre-deploy合规、post-deploy含alpha_in、chain-bought alpha回收),重写原有测试以适应新逻辑
合并hotfix:修复链购alpha注销回收逻辑,添加代理过滤器运行时API并升级spec_version。
判级:该PR合并了两个已合并的hotfix,其中一个修复alpha回收逻辑(影响资金),另一个添加代理过滤器运行时API(新功能),并升级spec_version,属于已生效的重要变更。