Changelog for Substrate 3.0.0/0.9.0 - Apollo 14
Most notably, this is the first release of the new FRAME (2.0) with its new macro-syntax and some changes in types, and pallet versioning. This release also incorporates the faster and improved version 2.0 of the parity-scale-codec and upgraded dependencies all-around. While the FinalityTracker
pallet has been dropped, this release marks the first public appearance of a few new pallets, too: Bounties, Lottery, Tips (extracted from the Treasury
-pallet, see #7536) and Merkle-Mountain-Ranges (MMR).
On the client side, the most notable changes are around the keystore, making it async and switching to a different signing model allowing for remote-signing to be implemented. Various changes to improve networking and light-client support, like adding the Grandpa warp sync request-response protocol (#7711) are also included.
Contracts: Please note that the contracts pallet is not part of this release. The pallet is not yet ready and will be released separately in the coming weeks. The currently released contracts pallet is not compatible with the new FRAME, thus if you need the contracts pallet, we recommend you wait with the upgrade until it has been released, too.
Upgrade instructions
Not too much has changed on the top and API level for developing Substrate betweeen 2.0 and 3.0. The easiest and quickest path for upgrading is to just take the latest node-template and try applying your changes to it:
- take a diff between 2.0 and your changes
- store that diff
- remove everything, copy over the 3.0 node-template
- try re-applying your diff, manually, a hunk at a time.
If that doesn't work for you, we are working on an in-depth-guide for all major changes that took place and how you need to adapt your code for it. You can find the upgrade guide under docs/
in the repo, if you have further questions or problems, please feel free to ask in the github discussion board.
Runtime
- Fix elections-phragmen and proxy issue (#7040)
- Allow validators to block and kick their nominator set. (#7930)
- Decouple Staking and Election - Part1: Support traits (#7908)
- Introduces account existence providers reference counting (#7363)
- Use checked math when calculating storage size (#7885)
- Fix clear prefix check to avoid erasing child trie roots. (#7848)
- babe: expose next epoch data (#7829)
- fix : remove
_{ }
syntax from benchmark macro (#7822) - Define ss58 prefix inside the runtime (#7810)
- Allow council to slash treasury tip (#7753)
- Don't allow self proxies (#7803)
- add a
current_epoch
to BabeApi (#7789) - Add
pallet
attribute macro to declare pallets (#6877) - Make it possible to calculate the storage root as often as you want (#7714)
- Issue 7143 | Refactor Treasury Pallet into Bounties, Tips, and Proposals (#7536)
- Participating in Council Governance is Free for First Time Voters and Successful Closing (#7661)
- Streamline frame_system weight parametrization (#6629)
- Features needed for reserve-backed stablecoins (#7152)
sudo_as
should return a result (#7620)- More Extensible Multiaddress Format (#7380)
- Fix
on_runtime_upgrade
weight recording (#7480) - Implement batch_all and update Utility pallet for weight refunds (#7188)
- Fix wrong outgoing calculation in election (#7384)
- Implements pallet versioning (#7208)
- Runtime worker threads (#7089)
- Allow
schedule_after(0, ...)
to work (#7284) - Fix offchain election to respect the weight (#7215)
- Fix weight for inner call with new origin (#7196)
- Move proxies migration (#7205)
- Introduce
cancel_proposal
to rid us of those pesky proposals (#7111)
Client
- Remove backwards-compatibility networking hack (#8068)
- Extend SS58 network identifiers (#8039)
- Update dependencies ahead of next release (#8015)
- Storage chains: serve transactions over IPFS/bitswap (#7963)
- Add a send_request function to NetworkService (#8008)
- Rename system_networkState to system_unstable_networkState (#8001)
- Allow transaction for offchain indexing (#7290)
- Grandpa warp sync request-response protocol (#7711)
- Add explicit limits to notifications sizes and adjust yamux buffer size (#7925)
- Rework priority groups, take 2 (#7700)
- Define ss58 prefix inside the runtime (#7810)
- Expand remote keystore interface to allow for hybrid mode (#7628)
- Allow capping the amount of work performed when deleting a child trie (#7671)
- RPC to allow setting the log filter (#7474)
- Remove sc_network::NetworkService::register_notifications_protocol and partially refactor Grandpa tests (#7646)
- minor fix and improvements on localkeystore (#7626)
- contracts: Add
salt
argument to contract instantiation (#7482) - contracts: Rework contracts_call RPC (#7468)
- Make sure to use the optimized method instead of reading the storage. (#7445)
- WASM Local-blob override (#7317)
- client/network: Allow configuring Kademlia's disjoint query paths (#7356)
- client/network: Remove option to disable yamux flow control (#7358)
- Make
queryStorage
andstoragePairs
unsafe RPC functions (#7342) - No longer actively open legacy substreams (#7076)
- Make
run_node_until_exit
take a future (#7318) - Add an system_syncState RPC method (#7315)
- Async keystore + Authority-Discovery async/await (#7000)
- Fixes logging of target names with dashes (#7281)
- Refactor CurrencyToVote (#6896)
- client/network: Stop sending noise legacy handshake (#7211)
API
- pallet macro: easier syntax for
#[pallet::pallet]
withstruct Pallet<T>(_)
(#8091) - WasmExecutor takes a cache directory (#8057)
- Remove PalletInfo impl for () (#8090)
- Migrate assets pallet to new macros (#7984)
- contracts: Make ChainExtension trait generic over the runtime (#8003)
- Decouple the session validators from im-online (#7127)
- Update parity-scale-codec to 2.0 (#7994)
- Merkle Mountain Range pallet improvements (#7891)
- Cleaner GRANDPA RPC API for proving finality (#7339)
- Migrate frame-system to pallet attribute macro (#7898)
- Introduces account existence providers reference counting (#7363)
- contracts: Lazy storage removal (#7740)
- contracts: Allow runtime authors to define a chain extension (#7548)
- Define ss58 prefix inside the runtime (#7810)
- Add
pallet
attribute macro to declare pallets (#6877) - Add keccak-512 to host functions. (#7531)
- Merkle Mountain Range pallet (#7312)
- Allow capping the amount of work performed when deleting a child trie (#7671)
- add an upgrade_keys method for pallet-session (#7688)
- Streamline frame_system weight parametrization (#6629)
- Rename pallet trait
Trait
toConfig
(#7599) - contracts: Add
salt
argument to contract instantiation (#7482) - pallet-evm: move to Frontier (Part IV) (#7573)
- refactor subtrait/elevated trait as not needed (#7497)
- Allow BabeConsensusDataProvider fork existing chain (#7078)
- decouple transaction payment and currency (#6912)
- contracts: Refactor the runtime API in order to simplify node integration (#7409)
- client/authority-discovery: Remove sentry node logic (#7368)
- client/network: Make NetworkService::set_priority_group async (#7352)
- *: Bump async-std to v1.6.5 (#7306)
- babe: make secondary slot randomness available on-chain (#7053)
- allow where clause in decl_error (#7324)
- reschedule (#6860)
- SystemOrigin trait (#7226)
- permit setting treasury pallet initial funding through genesis (#7214)
Runtime Migrations
- Migrate pallet-balances to pallet attribute macro (#7936)
- Migrate pallet-timestamp to pallet attribute macro (#8078)
- Migrate assets pallet to new macros (#7984)
- Fix elections-phragmen and proxy issue (#7040)
- Allow validators to block and kick their nominator set. (#7930)
- Migrate frame-system to pallet attribute macro (#7898)
- Implements pallet versioning (#7208)
- Move proxies migration (#7205)