Release v475
Runtime 475 (proposed)
Published
2026-10-07 20:40:07
Generated
2026-10-07 21:01:55
总 PR
3
HIGH
1
MEDIUM
1
Stage2
0
官方 Release Notes 总结
- 官方宣布了向 spec 475 的运行时升级提案,CI 已提交其一半的部署多签,等待 sudo 多签(triumvirate)的第二次批准。
- 提供了使用 `btcli upgrade sign` 签名及独立验证的步骤,建议通过 srtool 本地构建进行字节对比。
- 升级细节包括 `spec_version` 为 `475`、commit `d1718c99c34cf96abbf2bf09c0e9e48b945c76f5` 等参数,未提及安全修复、资金/共识/账户变更或 breaking change。
TL;DR(PR 分析)
本版新增 Null 共识模式作为 Yuma 之外的第二种 epoch 共识算法,引入 PoW 注册机制并改变排放分配路径,跳过核心共识与 bonds 逻辑形成 breaking change。同时将篮子交易最小额改为可根配置参数,不涉及资金变动或直接锁定质押。无直接触及资金与共识安全的变更,主要重构共识可选性与注册路径。
HIGH 重要更新 (1)
#3206
feat: add Null consensus, precise emissions and PoW registration
BREAKING
emission
MERGED
feature
新增 Null 共识模式、PoW 注册机制和精确排放分配,引入 EpochConsensus::Null 作为 Yuma 之外的第二种 epoch 共识算法
判级:新增 EpochConsensus::Null 存储与切换逻辑、新增 pow_register extrinsic 直接写入存储、排放分配路径新增 Null 分支(跳过 consensus/bonds 核心共识机制)、spec_version bump + 新 storage maps(breaking change)、权重费用计算改为 mode-aware(影响所有权重操作)
关键改动
- pallets/subtensor/src/lib.rs: 新增 EpochConsensus 枚举(Yuma=0, Null=1)、SubnetEpochConsensus/LastYumaStepBlock/NullPruningTarget/SavedYumaMaxAllowedValidators/LastPowRegistrationBlock 等存储项;MAX_CRV3_COMMIT_SIZE_BYTES 从 5000 提升至 32KB;新增 NULL_COMMIT_QUEUE_BYTES/COUNT 常量
- pallets/subtensor/src/subnets/mechanism.rs: 新增 NULL_UID_BUDGET=2500、epoch_uid_budget()、do_set_epoch_consensus()(切换共识并自动设置 1 个 validator permit 等)、epoch_with_mechanism_budgets()(拆分矿工/分红/根预算后再分机制);ensure_max_uids_over_all_mechanisms 改用 epoch-specific budget
- pallets/subtensor/src/epoch/run_epoch.rs: 新增 apportion_units() 精确分配函数(U256 累积比例)、epoch_mechanism_with_budgets()、bond_cutoff_block();Null 路径跳过 consensus/bonds/validator_trust 计算;空权重时等分给所有注册 UID
- pallets/subtensor/src/subnets/registration.rs: 新增 pow_register extrinsic(call_index 152),含 create_registration_seal/check_pow_registration/do_pow_register;POW_MAX_WORK_AGE_BLOCKS=5;burn/difficulty 共享价格衰减机制;effective_pow_difficulty 强制边界
- pallets/subtensor/src/subnets/weights.rs: 新增 ensure_null_weight_permit、enqueue_null_timelock(64KB/64 条优先级队列)、null_commit_priority;所有 set/commit/reveal 方法加入 Null 模式感知;Null 下权重不做 max-upscale,max_weight_limited 用和检验而非单一权重上限
- pallets/subtensor/src/staking/stake_utils.rs: 新增 get_null_stake_weights_for_network(缓存的有限范围继承权益计算)、credit_epoch_owner_emission(利用 try_credit_sole_member 快速路径)
- pallets/subtensor/src/subnets/uids.rs: 新增 trim_null_uids_batch(每次最多删除 64 UID)、clear_null_pruning_commits(预压缩取消权重承诺)、remap_null_pruning_rows(保留 permit holder 行和冻结债券);trim_to_max_allowed_uids 为 Null 分支
- pallets/subtensor/src/macros/dispatches.rs: 新增 pow_register dispatch;所有 set/commit/reveal 权重改为调用 mode-aware 的 weight 计算方法(timelock_weight_for_mode)
- pallets/subtensor/src/extensions/subtensor.rs: DispatchExtension 中新增 pow_register 的 check/weight/validate;check 路径在 dispatch 前检查 PoW seal
- pallets/admin-utils/src/lib.rs: 新增 sudo_set_epoch_consensus(call_index 111)、sudo_trim_null_uids_batch(call_index 112);sudo_set_network_pow_registration_allowed 从 stub 改为功能实现;set_network_registration_allowed 改为 owner 可调用(非 root);MaxAllowedValidators 在 Null 下强制为 1
- pallets/subtensor/src/macros/events.rs: 新增 EpochConsensusSet 和 NullUidsPruningProgress 事件
- primitives/share-pool/src/lib.rs: 新增 try_credit_sole_member 快速路径(仅写 shared_value,不修改份额/分母)
- runtime/src/lib.rs: spec_version 从 473 提升至 474
- runtime/src/proxy_filters/mod.rs: pow_register 加入 Registration/NonFungible/NonCritical proxy 类型
- precompiles/src/subnet.rs + solidity ABI: 新增 consensusMode/minAllowedUids/setEpochConsensus/trimNullUidsBatch 等 Solidity 选角器
- pallets/subtensor/src/tests/null_consensus.rs: 新增 1146 行 Null 共识测试,覆盖权益匹配/赢家选择/平局/空权重/预算守恒/全行 timelock 等
MEDIUM 更新 (1)
新增可根调整的 BasketMinTradeTao 存储值与 sudo_set_basket_min_trade_tao 外部调用,使篮子交易最小额可从硬编码常量为可链上配置
判级:新增可配置的参数与 root-only external extrinsic,但未触及 emission/共识/直接锁定质押等核心逻辑,未新增 DispatchExtension,且默认值完全向后兼容
关键改动
- pallets/subtensor/src/lib.rs:新增 BasketMinTradeTao 存储值(u64)及 DefaultBasketMinTradeTao 默认值函数(返回 MIN_BASKET_TRADE_TAO=500_000_000 rao);修改 MIN_BASKET_TRADE_TAO 注释从 'Small' → 'Default minimum'
- pallets/subtensor/src/staking/basket_trade.rs:minimum_basket_trade_tao() 改从 newtype!BasketMinTradeTao 读取而非硬编码常量;validation 和 execution 权重各增加 1 次存储读取;update 权重说明与多腿计算中的 reads 计数
- pallets/admin-utils/src/lib.rs:新增 Event::BasketMinTradeTaoSet 事件;新增 call_index 113 的 sudo_set_basket_min_trade_tao 外部调用(root 权限),写入 BasketMinTradeTao 并发出事件
- pallets/admin-utils/src/weights.rs:新增 WeightInfo::sudo_set_basket_min_trade_tao,默认复用 sudo_set_basket_liquidity_cap 的权重包络
- pallets/admin-utils/src/benchmarking.rs:新增 sudo_set_basket_min_trade_tao 基准测试用例
- pallets/admin-utils/src/tests/mod.rs:新增 test_sudo_set_basket_min_trade_tao 测试:根授权检查、存储写入、事件发射、零值/u64::MAX 边界、默认值保留
- pallets/subtensor/src/tests/swap_basket.rs:新增 configurable_minimum_applies_to_validation_and_execution 测试:验证可配置最小值在单腿/批量交易中都生效,零值仍保留全局质押下限
- pallets/subtensor/src/benchmarks/benchmarks.rs:在篮子交易基准中显式写入 BasketMinTradeTao 以确保读取覆盖
- runtime/src/lib.rs:spec_version 474→475
- runtime/src/proxy_filters/call_groups.rs:将 sudo_set_basket_min_trade_tao 加入 AdminUtils 代理调用组
- sdk/python/bittensor/_generated/:更新 calls.py(新增 sudo_set_basket_min_trade_tao 方法)和 storage.py(新增 BasketMinTradeTao 条目)
- docs/ 下多个 .mdx 文件:次要空格/格式调整(合约色)
- website/public/catalog/ 下 errors.json / intents.json / reads.json:自动生成物更新
LOW (1)
修复 bittensor-core 在 aarch64 Linux 上的 OpenCL 构建失败,并新增 arm64 CI 检查
判级:仅修复 bittensor-core SDK 在 aarch64 Linux 上的类型签名问题,不涉及链上状态、共识、资金或 runtime 变更,CI 新增 arm64 检查但非功能改动