Ashi Mishra
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # Polkadot Release Analysis v1.14.0 :warning: ***The following report is not an exhaustive list of changes included in the release, but a set of changes that we felt deserved to be highlighted due to their impact on the Polkadot ecosystem builders.*** ***Please do not stop reading the [release notes v1.14.0](https://github.com/paritytech/polkadot-sdk/releases/tag/polkadot-v1.14.0). This report is complementary to the changelogs, not a replacement.*** ***Highlights are categorized into High Impact, Medium Impact, and Low Impact for ease of navigation.*** ***Also there is a section related to all note worthy changes related to tooling integration.*** # Summary In the following report, we are featuring some of the changes included in the [polkadot node release v1.14.0](https://github.com/paritytech/polkadot-sdk/releases/tag/polkadot-v1.14.0). Runtime changes that are part of this release will be included in the corresponding [runtime release](https://github.com/polkadot-fellows/runtimes/releases) done by the fellowship. Next to every PR name you can find the code base related to these changes. The notation is as follows: - [S]: Changes related to Substrate - [P]: Changes related to Polkadot - [C]: Changes related to Cumulus - [S/P/C]: Changes related to a combination of the noted code bases. ## :hammer_and_wrench: Tooling Updates * Sidecar - [v19.0.2](https://github.com/paritytech/substrate-api-sidecar/releases/tag/v19.0.2) * TxWrapper - [v7.5.1](https://github.com/paritytech/txwrapper-core/releases/tag/v7.5.1) * PolkadotJS - [v12.2.1](https://github.com/polkadot-js/api/releases/tag/v12.2.1) * Asset Transfer Api - [v0.3.1](https://github.com/paritytech/asset-transfer-api/releases/tag/v0.3.1) * [Refactor: parachain template](https://github.com/paritytech/polkadot-sdk/pull/4684): In this release, parachain template has been updated with the latest Polkadot-SDK changes such as construct runtime V2. --- # ⚠️ Medium Impact ### [C,P] [XCM] Runtime api for LocationToAccount conversions PR: https://github.com/paritytech/polkadot-sdk/pull/4857 **Why is this important?** This PR adds a new runtime API `xcm-runtime-apis` to convert XCM `Location` to the local `AccountId` on-chain for easier verification. **How does this impact Polkadot builders?** This PR also merges `xcm-fee-payment-runtime-api` module into this new api. If you are using `xcm-fee-payment-runtime-api`, this would be a breaking change for you. To avoid this breaking change, please make following changes: 1. Make the similar change in the other part of `Cargo.toml`. ```diff= - xcm-fee-payment-runtime-api = { workspace = true } + xcm-runtime-apis = { workspace = true } ``` 2. Replace `xcm_fee_payment_runtime_api` with `xcm_runtime_apis`. ```diff= - use xcm_fee_payment_runtime_api::*; + use xcm_runtime_apis::*; ``` Related Issue: [#4298](https://github.com/paritytech/polkadot-sdk/issues/4298) ### [S] [FRAME] Remove storage migration type PR: https://github.com/paritytech/polkadot-sdk/pull/3828 **Why is this important?** As a part of this PR, a new migration type `RemoveStorage` has been introduced, which will remove a storage item from a pallet during migration. This migration type can be used to clean the data from the removed storage items, that are not used anymore. **How does this impact Polkadot builders?** At the moment, there is already a migration type `RemovePallet`, to clean the storage but this will remove all storage items associated with a specific pallet. However, `RemoveStorage` will remove only a specific storage item. During runtime upgrade, this will clean the storage from the specified storage. If `try-runtime` feature is enabled, the `pre_upgrade` and `post_upgrade` will verify the storage before and after the upgrade. Here is an example: ```rust= construct_runtime! { pub enum Runtime { System: frame_system = 0, TemplatePallet: pallet_template = 1, } }; parameter_types! { pub const TemplatePallet: &'static str = "TemplatePallet"; pub const StorageSomething: &'static str = "Something"; pub const StorageSomethingCount: &'static str = "SomethingCount"; } pub type Migrations = ( RemoveStorage<TemplatePallet, StorageSomething, RocksDbWeight>, RemoveStorage<TemplatePallet, StorageSomethingCount, RocksDbWeight>, ); pub type Executive = frame_executive::Executive< Runtime, Block, frame_system::ChainContext<Runtime>, Runtime, Migrations >; ``` Related Issue: [#3820](https://github.com/paritytech/polkadot-sdk/pull/3820) ### [S] Use real rust type for pallet alias in runtime macro PR: https://github.com/paritytech/polkadot-sdk/pull/4769 **Why is this important?** As a part of [#1378](https://github.com/paritytech/polkadot-sdk/pull/1378), `Construct Runtime v2` was introduced, which provides outer-macro approach for defining `construct_runtime`. But the pallet assignment type was not a valid Rust syntax. This PR fixes this issue and allows to use of a real rust type for pallet aliases. **How does this impact Polkadot builders?** This PR doesn't contain any breaking changes because it will continue supporting the current syntax. However, if you want to use real rust type for pallet alias in runtime macro, please make following changes in your runtime: ```diff - pub type System = frame_system; + pub type System = frame_system::Pallet<Runtime>; ``` Related Issues: [#4723](https://github.com/paritytech/polkadot-sdk/issues/4723), [#4622](https://github.com/paritytech/polkadot-sdk/issues/4622) ### [S] Implement pallet-assets-freezer PR: https://github.com/paritytech/polkadot-sdk/pull/3951 **Why is this important?** As a part of this PR, a new pallet [pallet_assets_freezer](https://paritytech.github.io/polkadot-sdk/master/pallet_assets_freezer/index.html) has been introduced, which: * is an extension of [pallet-assets](https://paritytech.github.io/polkadot-sdk/master/pallet_assets/index.html) * implements both fungibles::freeze::Inspect and fungibles::freeze::Mutate * handles freezing fungibles from [pallet-assets](https://paritytech.github.io/polkadot-sdk/master/pallet_assets/index.html) **How does this impact Polkadot builders?** At the moment, [pallet_balances](https://paritytech.github.io/polkadot-sdk/master/pallet_balances/index.html) has the functionality to lock/freeze on a specified amount of an account's free balance until a block number due to some use cases like staking, voting, etc. However, there are some other use cases like multi-governance where locks are needed to be implemented on pallet-assets. This pallet provides the functionality to freeze balance and fetch the frozen balance for an account on a given asset. To implement this pallet: ```rust= // Allow Freezes for the `Assets` pallet pub type AssetsFreezerInstance = pallet_assets_freezer::Instance1; impl pallet_assets_freezer::Config<AssetsFreezerInstance> for Runtime { type RuntimeFreezeReason = RuntimeFreezeReason; type RuntimeEvent = RuntimeEvent; } impl pallet_assets::Config<Instance1> for Runtime { //Other config type Freezer = AssetsFreezer; } ``` Related Issue: [#3342](https://github.com/paritytech/polkadot-sdk/issues/3342) --- # ℹ️ Low Impact ### [S] Remove deprecated Treasury pallet calls PR: https://github.com/paritytech/polkadot-sdk/pull/3820 **Why is this important?** As a part of this PR, all deprecated methods(`propose_spend`, `reject_proposal`, and `approve_proposal`) of [Treasury Pallet](https://docs.rs/pallet-treasury/latest/pallet_treasury/) have been removed. These methods were marked as deprecated as a part of [#14538](https://github.com/paritytech/substrate/pull/14538). This PR also includes: * Removal of associated config parameter types: `ProposalBond`, `ProposalBondMaximum`, `ProposalBondMinimum`. * Removal of relevant deprecated code in `pallet-tips`, `pallet-bounties` and `pallet-child-bounties`. * Removal of related weight functions and test cases. **How does this impact Polkadot builders?** The functionality of these deprecated methods has been replaced by `spend_local`(for native token) and `spend`(for using any other asset) dispatchables. This PR also contains a breaking change since a few config parameter types have been removed. If you are using [Treasury Pallet](https://docs.rs/pallet-treasury/latest/pallet_treasury/) for managing pot of funds and spending proposals, you need to remove the following parameters from your runtime. ```diff impl pallet_treasury::Config for Runtime { \\ Other config - type ProposalBond = ProposalBond; - type ProposalBondMinimum = ProposalBondMinimum; - type ProposalBondMaximum = (); } ``` Related PR: [#15438](https://github.com/paritytech/substrate/pull/14538) Related Issue: [#3800](https://github.com/paritytech/polkadot-sdk/issues/3800) ### [S] Treasury Pallet: Remove unused config parameters PR: https://github.com/paritytech/polkadot-sdk/pull/4831 **Why is this important?** This release includes one more important change related to [Treasury Pallet](https://docs.rs/pallet-treasury/latest/pallet_treasury/). As a part of this PR, two unused config parameters `ApproveOrigin` and `OnSlash` have been removed. This PR also adds `OnSlash` to the [Bounties](https://paritytech.github.io/polkadot-sdk/master/pallet_bounties/index.html) and [Tips](https://paritytech.github.io/polkadot-sdk/master/pallet_tips/index.html) pallet for handling imbalanced decreases. **How does this impact Polkadot builders?** This PR includes breaking changes. If you have included Treasury, Bounties, or Tips pallets in your runtime, you will need to make the following changes in your runtime: ```diff impl pallet_treasury::Config for Runtime { \\ Other config... - type ApproveOrigin = EitherOfDiverse<EnsureRoot<AccountId>, pallet_collective::EnsureProportionAtLeast<AccountId, CouncilCollective, 3, 5>,>; - type OnSlash = (); } impl pallet_bounties::Config for Runtime { \\ Other config... + type OnSlash = Treasury; } impl pallet_tips::Config for Runtime { \\ Other config... + type OnSlash = Treasury; } ``` Related Issue: [#3800](https://github.com/paritytech/polkadot-sdk/issues/3800) ### [S] Add `set_partial_params` dispatchable function PR: https://github.com/paritytech/polkadot-sdk/pull/3843 **Why is this important?** Substrate's [Core-Fellowship pallet](https://paritytech.github.io/polkadot-sdk/master/pallet_core_fellowship/index.html) contains logic specific to the salary, registers activity, and promotion. It is coupled with [Salary pallet](https://paritytech.github.io/polkadot-sdk/master/pallet_salary/index.html). This pallet has storage item `Params`, which stores information about active/passive salary and about member's promotion and demotion periods. As a part of this PR, a new dispatchable function `set_partial_params` has been added to the [Core-Fellowship pallet](https://paritytech.github.io/polkadot-sdk/master/pallet_core_fellowship/index.html), which will help update `Params` only with those fields, which need to be updated. **How does this impact Polkadot builders?** Currently, the [Core-Fellowship pallet](https://paritytech.github.io/polkadot-sdk/master/pallet_core_fellowship/index.html) has a dispatchable `set_params`, which requires all parameters of `Params`, whether they need to be updated or not. This duplicates the fields that don't need to be updated. After this PR, builders will have the option to selectively set these parameters. Related Issue: [#3617](https://github.com/paritytech/polkadot-sdk/issues/3617) ### [S] Pallet Assets: optional auto-increment for the asset ID PR: https://github.com/paritytech/polkadot-sdk/pull/4757 **Why is this important?** A new optional auto-increment setup for the IDs of new assets has been added in [Pallet-Assets](https://paritytech.github.io/polkadot-sdk/master/pallet_assets/index.html). With this change, builders will have the option to use auto-incremented asset IDs. **How does this impact Polkadot builders?** This feature is completely optional until we set `NextAssetId`. It won't impact existing asset storage items. If `NextAssetId` is set in pallet-assets, then the asset ID provided during new asset creation, must be equal to current value in`NextAssetId`. ### [S] Chain-Spec-Builder: Add support for Code Substitutes PR: https://github.com/paritytech/polkadot-sdk/pull/4685 **Why is this important?** As a part of this PR, a new `AddCodeSubstitute` subcommand has been added to the chain spec builder command. With this feature, builders will be able to use new runtime from a given block onwards. This feature is helpful if a chain halts due to any runtime bug and stops producing blocks. **How does this impact Polkadot builders?** After enabling `codeSubstitutes`, builders can run following command to provide a runtime WASM that they want to use from a given block onwards. ``` chain-spec-builder add-code-substitute chain_spec.json my_runtime.compact.compressed.wasm 1234 ``` Note: It is important for parachains to update the validation function on the relay chain accordingly, otherwise `codeSubstitute` subcommand will be rejected. Related PR: [#4600](https://github.com/paritytech/polkadot-sdk/pull/4600) ### [S] Pallet ranked collective: max member count per rank PR: https://github.com/paritytech/polkadot-sdk/pull/4807 **Why is this important?** Substrate's [Ranked-Collective pallet](https://paritytech.github.io/polkadot-sdk/master/pallet_ranked_collective/index.html) is a pallet for managing memberships for collectives, which could be used in use-cases like Governance, Salary, Promotion/Demotion, etc. Each member has its rank. At the moment, there is no limitation on either the number of members at a rank or the number of ranks in the system. As a part of this PR, a new config type `MaxMemberCount` has been added to this pallet to control a number of members for a given rank. **How does this impact Polkadot builders?** Builders will have the option to either assign the value for `MaxMemberCount` or keep it as `()` for no limit. If you are using a [Ranked-Collective pallet](https://paritytech.github.io/polkadot-sdk/master/pallet_ranked_collective/index.html) in your runtime, this would be a breaking change. To avoid breaking change, please add the following code in your runtime: ```rust= impl pallet_ranked_collective::Config for Runtime { // Other config... type MaxMemberCount = (); } ``` ---

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully