Release v440
Runtime 440 (proposed)
Published
2026-07-27 13:49:31
Generated
2026-07-27 14:03:58
总 PR
2
HIGH
1
MEDIUM
1
Stage2
0
官方 Release Notes 总结
此版发布主要提议将 subtensor 运行时升级至 spec_version 440,目前正等待最终签名。该升级通过 2-of-2 部署多签执行,CI 已提交其一半签名。发布内容未提及安全修复、资金/共识/账户相关变更或 breaking change。推荐社区成员使用 srtool 本地构建并与发布工件进行字节级比对,以独立验证升级代码。
TL;DR(PR 分析)
本版重点引入排放门控机制,通过 Hill 函数重塑子网排放份额分配并升级 runtime 版本,属于直接触及资金/排放的核心经济模型变更;同时修复了 claim_root 权重声明,涉及共识层面计算逻辑但未影响资金。
HIGH 重要更新 (1)
引入 emission gate(排放门控)机制,通过 Hill 函数重塑子网排放份额分配:新增存储项 q(分位数阈值,默认 0.61)、h(Hill 指数,默认 3)和 theta(动态 bar 阈值),在经典 EMA 价格份额基础上叠加门控,每次区块排放时对份额做 gating + 重归一化。同时将 runtime spec_version 从 439 升至 440,并新增两个 sudo 外部调用用于设置 q 和 h。
判级:这是对子网排放份额分配核心逻辑的实质性修改——Hill 门控函数直接改变每个子网获得的排放量,属于触及资金/排放的核心变更,且 spec_version 已升级
关键改动
- runtime/src/lib.rs: spec_version 从 439 升至 440(is_breaking = true)
- pallets/subtensor/src/lib.rs: 新增 3 个存储项 — EmissionBarQuantile(q, 默认 0.61)、EmissionGateExponent(h, 默认 3)、EmissionGateBar(theta, 默认零表示未计算/门控禁用)
- pallets/subtensor/src/coinbase/subnet_emissions.rs: get_shares() 尾部追加 maybe_update_emission_gate_bar() 和 apply_emission_gate();新增常量 EMISSION_BAR_UPDATE_INTERVAL = 360 区块;新增 maybe_update_emission_gate_bar():按份额降序排序累加至跨过 q 处设 theta,仅每 360 区块或 theta 为零时重新计算;新增 apply_emission_gate():gate(s)=1/(1+(theta/s)^h),使用 safe_pow 计算幂次,gating 后重归一化,全零下溢时恢复原始份额
- pallets/admin-utils/src/lib.rs: 新增 sudo_set_emission_bar_quantile(call_index 100):设置 q 并 kill bar 强制立即重算;sudo_set_emission_gate_exponent(call_index 101):设置 h(约束 1≤h≤8)
- pallets/subtensor/src/utils/misc.rs: 新增 set_emission_bar_quantile() 和 set_emission_gate_exponent() 工具函数
- pallets/admin-utils/src/benchmarking.rs + weights.rs: 两个新 extrinsic 的 benchmark 和 weight 表
- pallets/subtensor/src/tests/coinbase.rs: 修改现有 coinbase 测试断言,反映门控后 2 子网 1:2 价格分拆从 1/3:2/3 变为 1/10:9/10
- pallets/subtensor/src/tests/subnet_emissions.rs: 新增 5 个 emission gate 测试(空集无 panic、单子网全份额、集中效应验证、下溢恢复、bar 更新节奏)
- sdk/python/ 各项: codegen 再生、错误描述更新、CLI 修复等配套变更
- website/docs/ 和 .github/workflows/: 发布说明页面和文档预览 CI 增强
MEDIUM 更新 (1)
修复 claim_root 的权重声明和热键扇出限制
判级:改动影响 extrinsic 权重声明和执行逻辑,涉及共识层面的 weight 计算和新行为约束,但未触及资金/emission/存储迁移,不属于高重要性变更。
关键改动
- pallets/subtensor/src/lib.rs: 新增常量 MAX_ROOT_CLAIM_HOTKEYS = 256
- pallets/subtensor/src/macros/dispatches.rs: claim_root extrinsic 的权重声明改为基准权重 × MAX_ROOT_CLAIM_HOTKEYS × MAX_SUBNET_CLAIMS
- pallets/subtensor/src/macros/dispatches.rs: claim_root 函数体新增 decode_len 检查热键数量,若 >256 返回 TooManyRootClaimHotkeys 错误
- pallets/subtensor/src/macros/dispatches.rs: 实际权重增加一次读取(DbWeight::reads(1))
- pallets/subtensor/src/macros/errors.rs: 新增错误类型 TooManyRootClaimHotkeys
- pallets/subtensor/src/tests/claim_root.rs: 新增测试验证声明权重 >= 实际权重且不超过 max extrinsic,以及拒绝超出限制的 fanout
- runtime/tests/claim_root_weight.rs: 新增集成测试,确保 claim_root 加上所有交易扩展后的总权重不超过 normal extrinsic 限制