文档 / Bittensor 概念 / 协议变更
Protocol change tracker
Every Bittensor runtime change with the date its pull request opened, merged, reached testnet and went live on mainnet.
最后审阅于 2026-10-15
This page tracks every change to the Bittensor chain runtime in subtensor, from pull request to production. For each change it shows when the pull request opened, when it merged, which runtime spec it shipped in, and when testnet and mainnet (Finney) first ran that spec. The data refreshes from the chains and GitHub every four hours.
Status at a glance
- Mainnet (Finney): spec 488, live since 2026-11-05 (block 9442681)
- Testnet: spec 479, live since 2026-10-14 (block 8222154)
- Merged chain-code changes: 49, of which 49 are live on mainnet. Median 1 day from pull request to mainnet, longest 11.
Data refreshed 2026-11-09 04:11 UTC. It updates every four hours. Not reachable on the last refresh, so shown from earlier data: testnet runtime history.
Days to mainnet
The last 20 runtime releases that reached mainnet.
Runtime upgrades
Every spec either chain has run since spec 437, newest first. Never on testnet: mainnet ran a spec that testnet skipped. Testnet only: a newer spec replaced it before it reached mainnet. In testing: testnet runs a spec newer than mainnet's. Mainnet first: mainnet upgraded before testnet.
| 488 | 2026-11-05 | — | never on testnet |
| 486 | 2026-10-26 | — | never on testnet |
| 484 | 2026-10-23 | — | never on testnet |
| 483 | 2026-10-22 | — | never on testnet |
| 482 | 2026-10-21 | — | never on testnet |
| 481 | 2026-10-19 | — | never on testnet |
| 479 | 2026-10-15 | 2026-10-14 | 1 |
| 478 | 2026-10-13 | 2026-10-13 | 0 |
| 477 | 2026-10-12 | 2026-10-08 | 4 |
| 476 | — | 2026-10-08 | testnet only |
| 475 | 2026-10-07 | 2026-10-07 | 0 |
| 473 | 2026-10-05 | 2026-10-05 | 0 |
| 472 | 2026-10-02 | 2026-10-02 | 0 |
| 471 | — | 2026-09-24 | testnet only |
| 470 | 2026-09-24 | 2026-09-23 | 1 |
| 469 | 2026-09-22 | 2026-09-22 | 0 |
| 468 | 2026-09-21 | 2026-09-21 | 0 |
| 467 | 2026-09-18 | 2026-09-18 | 0 |
| 466 | 2026-09-18 | 2026-09-18 | 0 |
| 465 | — | 2026-09-17 | testnet only |
| 464 | 2026-09-17 | 2026-09-17 | 0 |
| 463 | — | 2026-09-16 | testnet only |
| 461 | — | 2026-09-16 | testnet only |
| 460 | — | 2026-09-15 | testnet only |
| 459 | 2026-09-15 | 2026-09-15 | 0 |
| 458 | 2026-09-14 | 2026-09-14 | 0 |
| 457 | 2026-09-14 | — | never on testnet |
| 456 | 2026-09-14 | — | never on testnet |
| 455 | 2026-09-07 | 2026-09-08 | mainnet first |
| 454 | 2026-09-04 | 2026-09-04 | 0 |
| 453 | 2026-09-03 | 2026-09-03 | 0 |
| 452 | 2026-08-29 | 2026-08-29 | 0 |
| 451 | — | 2026-08-28 | testnet only |
| 450 | 2026-08-27 | 2026-08-27 | 0 |
| 449 | — | 2026-08-25 | testnet only |
| 448 | 2026-08-21 | 2026-08-21 | 0 |
| 447 | 2026-08-14 | 2026-08-14 | 0 |
| 446 | 2026-08-14 | 2026-08-14 | 0 |
| 445 | 2026-08-12 | 2026-08-12 | 0 |
| 443 | 2026-08-04 | 2026-08-04 | 0 |
| 442 | 2026-08-04 | 2026-08-04 | 0 |
| 441 | 2026-08-03 | 2026-08-03 | 0 |
| 440 | 2026-07-27 | 2026-07-27 | 0 |
| 439 | 2026-07-27 | 2026-07-24 | 3 |
| 438 | 2026-07-23 | 2026-07-23 | 0 |
| 437 | 2026-07-22 | 2026-07-22 | 0 |
Merged changes
Newest merge first. Release is the runtime spec the change shipped in. A dash under testnet or mainnet means that chain has not yet run a runtime containing it.
| #3304 | Release 488 | 488 | 2026-11-05 | 2026-11-05 | — | 2026-11-05 | 0 |
| #3294 | Release 487 — Gamma + Quantum-Resistant Wallets | 488 | 2026-10-27 | 2026-11-05 | — | 2026-11-05 | 9 |
| #3254 | etao: per-subnet emission weights with a baseline-anchored effective TAO weight (release: Etao, spec 480) · explainer | 481 | 2026-10-14 | 2026-10-15 | — | 2026-10-19 | 5 |
| #3237 | Release 478 | 478 | 2026-10-12 | 2026-10-13 | 2026-10-13 | 2026-10-13 | 1 |
| #3221 | Bump runtime spec to 477 and Python release versions | 477 | 2026-10-08 | 2026-10-08 | 2026-10-08 | 2026-10-12 | 4 |
| #3218 | fix logs | 477 | 2026-10-08 | 2026-10-08 | 2026-10-08 | 2026-10-12 | 4 |
| #3219 | Fix oversized testnet root claim weight reservation | 477 | 2026-10-08 | 2026-10-08 | 2026-10-08 | 2026-10-12 | 4 |
| #3217 | Allow subnet owners to configure PoW difficulty | 476 | 2026-10-08 | 2026-10-08 | 2026-10-08 | 2026-10-12 | 4 |
| #3214 | Make basket minimum trade amount sudo-adjustable | 475 | 2026-10-06 | 2026-10-07 | 2026-10-07 | 2026-10-07 | 1 |
| #3206 | feat: add Null consensus, precise emissions and PoW registration · explainer | 475 | 2026-09-30 | 2026-10-06 | 2026-10-07 | 2026-10-07 | 7 |
| #3208 | release-473 | 473 | 2026-10-02 | 2026-10-03 | 2026-10-05 | 2026-10-05 | 3 |
| #3198 | Prevent Fee-Draining Basket Swaps and Clean Up Stale Staking Hotkeys | 471 | 2026-09-23 | 2026-09-24 | 2026-09-24 | 2026-10-02 | 9 |
| #3196 | Add swap_basket_many extrinsic | 470 | 2026-09-22 | 2026-09-23 | 2026-09-23 | 2026-09-24 | 2 |
| #3192 | spec 469: v468 bug fixes + failed-call fee refunds | 469 | 2026-09-22 | 2026-09-22 | 2026-09-22 | 2026-09-22 | 0 |
| #3184 | spec 468: enable basket trading + skip dust rows on root claims · explainer | 468 | 2026-09-20 | 2026-09-21 | 2026-09-21 | 2026-09-21 | 1 |
| #3183 | spec 467: halve transaction fees (native + EVM) | 467 | 2026-09-18 | 2026-09-18 | 2026-09-18 | 2026-09-18 | 0 |
| #3182 | Spec 466: fee cap only — restore 4s block budget | 466 | 2026-09-18 | 2026-09-18 | 2026-09-18 | 2026-09-18 | 0 |
| #3181 | Spec 466: cap staking scan fees at four hotkeys | 466 | 2026-09-18 | 2026-09-18 | 2026-09-18 | 2026-09-18 | 0 |
| #3179 | spec 465: safer-only hotfix pack | 466 | 2026-09-17 | 2026-09-17 | 2026-09-18 | 2026-09-18 | 1 |
| #3178 | Unify runtime on spec 464 (baskets + 463 security + torsion) | 464 | 2026-09-17 | 2026-09-17 | 2026-09-17 | 2026-09-17 | 0 |
| #3169 | Hotfix 2 (spec 462): nonce persistence, fee-exempt call pricing, staking bookkeeping | 464 | 2026-09-16 | 2026-09-16 | 2026-09-17 | 2026-09-17 | 1 |
| #3155 | feat: swap_basket — validator basket trading (consolidated) · explainer | 464 | 2026-09-11 | 2026-09-16 | 2026-09-17 | 2026-09-17 | 6 |
| #3164 | share-pool: start a pool epoch on open so pre-upgrade leftover rows are retired | 464 | 2026-09-15 | 2026-09-15 | 2026-09-17 | 2026-09-17 | 2 |
| #3162 | share-pool: keep denominator consistent with stored shares; reconcile root pot | 459 | 2026-09-15 | 2026-09-15 | 2026-09-15 | 2026-09-15 | 0 |
| #3160 | release 458 | 459 | 2026-09-14 | 2026-09-14 | 2026-09-15 | 2026-09-15 | 1 |
| #3158 | release-v446 | 459 | 2026-09-14 | 2026-09-14 | 2026-09-15 | 2026-09-15 | 1 |
| #3146 | release-455 | 459 | 2026-09-07 | 2026-09-07 | 2026-09-15 | 2026-09-15 | 8 |
| #3143 | release-454 | 454 | 2026-09-04 | 2026-09-04 | 2026-09-04 | 2026-09-04 | 0 |
| #3138 | release-453 | 453 | 2026-09-03 | 2026-09-03 | 2026-09-03 | 2026-09-03 | 0 |
| #3131 | Bump spec_version to 452 | 452 | 2026-08-29 | 2026-08-29 | 2026-08-29 | 2026-08-29 | 0 |
| #3130 | Align precompile execution with the current call frame | 452 | 2026-08-29 | 2026-08-29 | 2026-08-29 | 2026-08-29 | 0 |
| #3126 | Runtime 451 hotfix: harden Root Reborn basket claims | 452 | 2026-08-28 | 2026-08-28 | 2026-08-29 | 2026-08-29 | 1 |
| #3117 | Release 450: canonical on-chain beta pricing, display units, and curated beta | 450 | 2026-08-26 | 2026-08-27 | 2026-08-27 | 2026-08-27 | 1 |
| #3109 | Release 449: enable root weight setting with a 1/16 concentration cap | 450 | 2026-08-21 | 2026-08-25 | 2026-08-27 | 2026-08-27 | 6 |
| #3089 | Release spec 448: live root-claim fee quotes and SDK 11.2.0.dev0 | 448 | 2026-08-18 | 2026-08-21 | 2026-08-21 | 2026-08-21 | 3 |
| #3083 | Conviction Normalization: single-hotkey 18% takeover gate (spec 447) · explainer | 447 | 2026-08-14 | 2026-08-14 | 2026-08-14 | 2026-08-14 | 0 |
| #3077 | Release 446 | 446 | 2026-08-12 | 2026-08-13 | 2026-08-14 | 2026-08-14 | 2 |
| #3071 | Restore miner-burn emission scaling | 445 | 2026-08-11 | 2026-08-12 | 2026-08-12 | 2026-08-12 | 1 |
| #3076 | reduce bloat | 445 | 2026-08-12 | 2026-08-12 | 2026-08-12 | 2026-08-12 | 0 |
| #3058 | Release v444: remove miner-burn scaling from subnet emission shares | 445 | 2026-08-06 | 2026-08-10 | 2026-08-12 | 2026-08-12 | 6 |
| #3042 | chore(subtensor): gate stake_into_basket pending state-growth review | 443 | 2026-08-04 | 2026-08-04 | 2026-08-04 | 2026-08-04 | 0 |
| #3035 | hotfix: stop ineligible root stake diverting into ALPHA dividends | 442 | 2026-08-04 | 2026-08-04 | 2026-08-04 | 2026-08-04 | 0 |
| #2968 | release-root-reborn · explainer | 441 | 2026-07-23 | 2026-08-03 | 2026-08-03 | 2026-08-03 | 11 |
| #2990 | release-v440: emission gate · explainer | 440 | 2026-07-27 | 2026-07-27 | 2026-07-27 | 2026-07-27 | 0 |
| #2985 | Fix claim root weight accounting | 440 | 2026-07-25 | 2026-07-27 | 2026-07-27 | 2026-07-27 | 2 |
| #2984 | Release v439 | 439 | 2026-07-24 | 2026-07-24 | 2026-07-24 | 2026-07-27 | 3 |
| #2970 | V438 Release | 438 | 2026-07-23 | 2026-07-23 | 2026-07-23 | 2026-07-23 | 0 |
| #2960 | Runtime 437: collateral, key lineage, and bonded swap hardening · explainer | 437 | 2026-07-22 | 2026-07-22 | 2026-07-22 | 2026-07-22 | 0 |
| #2953 | The v435 upgrade: miner registration collateral · explainer | 437 | 2026-07-21 | 2026-07-21 | 2026-07-22 | 2026-07-22 | 1 |
Open proposals
Open, non-draft pull requests against subtensor main that change chain code. None of them is on testnet or mainnet, and some will never merge.
| #3308 | Release 489 | 2026-11-05 | 4 |
| #3297 | Fix runtime security issues in edge-case state transitions | 2026-10-29 | 11 |
| #3287 | fix: clear subnet identity on dissolve and register | 2026-10-26 | 14 |
| #3286 | feat(etao): labor-backed root floor on unified validator pile | 2026-10-26 | 14 |
| #3285 | feat(childkeys): bypass cooldown for unavailable child validators | 2026-10-26 | 14 |
| #3284 | fix(coinbase): stop recycling SubnetAlphaOut for a childkey burn that is still distributed | 2026-10-25 | 15 |
| #3239 | Keep coldkeys locked after sudo swap reset | 2026-10-13 | 27 |
| #3231 | Run a due Null epoch first so earlier subnets cannot starve it | 2026-10-11 | 29 |
| #3225 | test(runtime): add ±20% fee regression snapshots and EVM transaction coverage | 2026-10-09 | 31 |
| #3223 | fix warnings | 2026-10-09 | 31 |
| #3220 | Introduce experimental hashed accounts with mnemonic-derived key rotation · explainer | 2026-10-08 | 32 |
| #3212 | test(runtime): move fee baseline pins to rstest cases with insta snapshots | 2026-10-05 | 35 |
| #3211 | Add superellipse pools, reserve-funded lending and price-impact controls | 2026-10-05 | 35 |
| #3210 | Migrate dynamic subnet pools to fixed translated superellipses | 2026-10-02 | 38 |
| #3207 | Preserve stake and dividends during alpha migration | 2026-10-02 | 38 |
| #3190 | Refund the StakingHotkeys walk on unstake-side failure and prune ghost hotkeys | 2026-09-21 | 49 |
| #3137 | Extend linked orders expiration to 180 days | 2026-09-03 | 67 |
| #3135 | Add pallet-derivatives: longs and shorts on subnet alpha (spec 455) · explainer | 2026-09-02 | 68 |
| #3110 | Canonical rails: buy staked subnet alpha from MetaMask with USDC | 2026-08-21 | 80 |
| #3101 | Add continuous stake reporting throughout subnet dissolution lifecycle | 2026-08-20 | 81 |
| #3038 | fix: sum emission across mechanisms instead of weighting it | 2026-08-04 | 97 |
| #3029 | 1τ/1α pool seed + depth-graduated emission price cap | 2026-08-03 | 98 |
| #3023 | Subnet owner right of first refusal over eviction | 2026-07-31 | 101 |
| #3009 | Release v441 - Add childkey cooldown in subnet tempos | 2026-07-28 | 104 |
| #2997 | Refund Unused Extrinsic Weight (fee) | 2026-07-27 | 105 |
Shipped is not always switched on
Some features ship in a runtime upgrade with a switch that is off. They do nothing until a root (sudo) call turns them on, so the mainnet date is the date the code arrived, not the date users could use it. Each feature's explainer page says when its switch is on.