Upgrade priority: Low (upgrade at your convenience)
This release includes a breaking change to the database schema - Once you have upgraded to v0.8.28
, you will not be able to revert to v0.8.27
without re-syncing your database.
This release contains changes for new session keys. There have been changes to the Parachain Id key (which is slashable) to account for parachains, as well as a new 6th key, approval keys, which are non-slashable. Validators will need to rotate their keys to generate a new set in order to validate on parachains.
If they do not rotate keys, old keys will still work for Polkadot/Kusama block production / finalization, but validators will not be able to validate on parachains and will miss out on a substantial amount of rewards.
Validators will need to rotate their keys after the runtime upgrade for the corresponding network has been enacted, and their node needs to be synced past the block which this enactment has occurred.
- The corresponding v2028 runtime upgrade for Kusama is tentatively planned for Feb 8th.
- The corresponding v28 runtime upgrade for Polkadot is tentatively planned for between Feb 15 - Feb 19.
- The corresponding v48 runtime upgrade for Westend has already been enacted.
Native runtimes:
- Polkadot: 28
- Kusama: 2028
- Westend: 48
This release was tested against the following versions of rustc
. Other versions may work.
- rustc 1.49.0 (e1884a8e3 2020-12-29)
- rustc 1.51.0-nightly (a62a76047 2021-01-13)
WASM runtimes built with srtool using rustc 1.49.0-nightly (fd542592f 2020-10-26)
.
Proposal hashes:
polkadot_runtime-v28.compact.wasm - 0x8e2a831f00c994558f75a7a4ef1d71d173a87365079280952ec2a4b56a36275b
kusama_runtime-v2028.compact.wasm - 0x1f1a0bf14374230c20cb5e9333b0fa807ec969aceb3c5f0d5488f1f94b9b7358
Changes
- Switch to Wasmtime for parachain execution (#2265)
- repair Dockerfile /data path (#2231)
- CI: add rococo build and conteinerization (#2217)
Client
- Add explicit limits to notifications sizes and adjust yamux buffer size (paritytech/substrate#7925)
- Storage chains part 1 (paritytech/substrate#7868)
- ✅
trivial
Define ss58 prefix inside the runtime (paritytech/substrate#7810) - Grandpa warp sync request-response protocol (paritytech/substrate#7711)
- Rework priority groups, take 2 (paritytech/substrate#7700)
- Allow transaction for offchain indexing (paritytech/substrate#7290)
Runtime
- ✅
trivial
Cancel Proxy Type (#2334) - ✅
trivial
runtime: add Babe::next_epoch runtime api method (#2200) - ✅
trivial
Allow council to slash treasury tip (#2147) - ✅
trivial
Use Extensible Multiaddress in all Polkadot Runtimes (#2126) - ⏳
pending non-critical audit
Allow validators to block and kick their nominator set. (paritytech/substrate#7930) - ✅
trivial
Decouple Stkaing and Election - Part1: Support traits (paritytech/substrate#7908) - ✅
trivial
contracts: Fix possible overflow in storage size calculation (paritytech/substrate#7885) - ✅
trivial
contracts: Cap the surcharge reward by the amount of rent that way payed by a contract (paritytech/substrate#7870) - ✅
trivial
Fix clear prefix check to avoid erasing child trie roots. (paritytech/substrate#7848) - ✅
trivial
contracts: Collect rent for the first block during deployment (paritytech/substrate#7847) - ✅
trivial
babe: expose next epoch data (paritytech/substrate#7829) - ✅
trivial
fix : remove_{ }
syntax from benchmark macro (paritytech/substrate#7822) - ✅
trivial
contracts: Add configurable per-storage item cost (paritytech/substrate#7819) - ✅
trivial
Define ss58 prefix inside the runtime (paritytech/substrate#7810) - ✅
trivial
Don't allow Self Proxies (paritytech/substrate#7803) - ✅
trivial
add acurrent_epoch
to BabeApi (paritytech/substrate#7789) - ✅
trivial
Allow council to slash treasury tip (paritytech/substrate#7753) - ✅
audited
Make it possible to calculate the storage root as often as you want (paritytech/substrate#7714) - ✅
audited
Participating in Council Governance is Free for First Time Voters and Successful Closing (paritytech/substrate#7661) - ✅
audited
Issue 7143 | Refactor Treasury Pallet into Bounties, Tips, and Proposals (paritytech/substrate#7536) - ✅
audited
Introduces account existence providers reference counting (paritytech/substrate#7363) - ✅
audited
Fix elections-phragmen and proxy issue (paritytech/substrate#7040) - ✅
trivial
Addpallet
attribute macro to declare pallets (paritytech/substrate#6877)
Extrinsics changes details
Polkadot
Note: The calls removed from Treasury
have been split into their own Bounties
and Tips
module - see paritytech/substrate#7536 for more information.
[Spec] version: 27 -> 28
[Metadata] version: 12
[Modules] num: 28 -> 30
[+] modules: Bounties, Tips
[System] idx: 0 (calls: 10 -> 9, storage: 16)
[-] calls: suicide
[+] storage: upgradedToDualRefCount
[-] storage: extrinsicsRoot
[Babe] idx: 2 (calls: 2, storage: 12 -> 13)
[+] storage: nextAuthorities
[Staking] idx: 7 (calls: 24 -> 25, storage: 35)
[+] calls: kick
[ElectionsPhragmen] idx: 17 (calls: 6, storage: 5)
[+] calls: cleanDefunctVoters
[-] calls: reportDefunctVoter
[submitCandidacy] idx: 3 -> 2 (args: 1)
(Compact<u32>)
[renounceCandidacy] idx: 4 -> 3 (args: 1)
(Renouncing)
[removeMember] idx: 5 -> 4 (args: 2)
(LookupSource, bool)
[members] type: Vec<(AccountId,BalanceOf)> -> Vec<SeatHolder>
[runnersUp] type: Vec<(AccountId,BalanceOf)> -> Vec<SeatHolder>
[voting] value: (BalanceOf,Vec<AccountId>) -> Voter
[candidates] type: Vec<AccountId> -> Vec<(AccountId,BalanceOf)>
[Treasury] idx: 19 (calls: 17 -> 3, storage: 9 -> 3)
[-] calls: reportAwesome, retractTip, tipNew, tip, closeTip
proposeBounty, approveBounty, proposeCurator, unassignCurator, acceptCurator
awardBounty, claimBounty, closeBounty, extendBountyExpiry
[-] storage: tips, reasons, bountyCount, bounties, bountyDescriptions
bountyApprovals
Kusama
Note: The calls removed from Treasury
have been split into their own Bounties
and Tips
module - see paritytech/substrate#7536 for more information.
[Spec] version: 2027 -> 2028
[Metadata] version: 12
[Modules] num: 30 -> 32
[+] modules: Bounties, Tips
[System] idx: 0 (calls: 10 -> 9, storage: 16)
[-] calls: suicide
[+] storage: upgradedToDualRefCount
[-] storage: extrinsicsRoot
[Babe] idx: 1 (calls: 2, storage: 12 -> 13)
[+] storage: nextAuthorities
[Staking] idx: 6 (calls: 24 -> 25, storage: 35)
[+] calls: kick
[ElectionsPhragmen] idx: 16 (calls: 6, storage: 5)
[+] calls: cleanDefunctVoters
[-] calls: reportDefunctVoter
[submitCandidacy] idx: 3 -> 2 (args: 1)
(Compact<u32>)
[renounceCandidacy] idx: 4 -> 3 (args: 1)
(Renouncing)
[removeMember] idx: 5 -> 4 (args: 2)
(LookupSource, bool)
[members] type: Vec<(AccountId,BalanceOf)> -> Vec<SeatHolder>
[runnersUp] type: Vec<(AccountId,BalanceOf)> -> Vec<SeatHolder>
[voting] value: (BalanceOf,Vec<AccountId>) -> Voter
[candidates] type: Vec<AccountId> -> Vec<(AccountId,BalanceOf)>
[TechnicalMembership] idx: 17 (calls: 7, storage: 2)
[Treasury] idx: 18 (calls: 17 -> 3, storage: 9 -> 3)
[-] calls: reportAwesome, retractTip, tipNew, tip, closeTip
proposeBounty, approveBounty, proposeCurator, unassignCurator, acceptCurator
awardBounty, claimBounty, closeBounty, extendBountyExpiry
[-] storage: tips, reasons, bountyCount, bounties, bountyDescriptions
bountyApprovals