Skip to content
  1. Feb 28, 2024
    • Liam Aharon's avatar
      Runtime Upgrade ref docs and Single Block Migration example pallet (#1554) · 12ce4f7d
      Liam Aharon authored
      Closes https://github.com/paritytech/polkadot-sdk-docs/issues/55
      
      - Changes 'current storage version' terminology to less ambiguous
      'in-code storage version' (suggestion by @ggwpez
      
      )
      - Adds a new example pallet `pallet-example-single-block-migrations`
      - Adds a new reference doc to replace
      https://docs.substrate.io/maintain/runtime-upgrades/ (temporarily living
      in the pallet while we wait for developer hub PR to merge)
      - Adds documentation for the `storage_alias` macro
      - Improves `trait Hooks` docs 
      - Improves `trait GetStorageVersion` docs
      - Update the suggested patterns for using `VersionedMigration`, so that
      version unchecked migrations are never exported
      - Prevents accidental usage of version unchecked migrations in runtimes
      
      https://github.com/paritytech/substrate/pull/14421#discussion_r1255467895
      - Unversioned migration code is kept inside `mod version_unchecked`,
      versioned code is kept in `pub mod versioned`
      - It is necessary to use modules to limit visibility because the inner
      migration must be `pub`. See
      https://github.com/rust-lang/rust/issues/30905 and
      
      https://internals.rust-lang.org/t/lang-team-minutes-private-in-public-rules/4504/40
      for more.
      
      ### todo
      
      - [x] move to reference docs to proper place within sdk-docs (now that
      https://github.com/paritytech/polkadot-sdk/pull/2102 is merged)
      - [x] prdoc
      
      ---------
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      Co-authored-by: default avatarJuan <[email protected]>
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      Co-authored-by: command-bot <>
      Co-authored-by: default avatargupnik <[email protected]>
      12ce4f7d
  2. Jan 31, 2024
    • Branislav Kontur's avatar
      [frame] `#[pallet::composite_enum]` improved variant count handling + removed... · bb8ddc46
      Branislav Kontur authored
      [frame] `#[pallet::composite_enum]` improved variant count handling + removed `pallet_balances`'s `MaxHolds` config (#2657)
      
      I started this investigation/issue based on @liamaharon
      
       question
      [here](https://github.com/paritytech/polkadot-sdk/pull/1801#discussion_r1410452499).
      
      ## Problem
      
      The `pallet_balances` integrity test should correctly detect that the
      runtime has correct distinct `HoldReasons` variant count. I assume the
      same situation exists for RuntimeFreezeReason.
      
      It is not a critical problem, if we set `MaxHolds` with a sufficiently
      large value, everything should be ok. However, in this case, the
      integrity_test check becomes less useful.
      
      **Situation for "any" runtime:**
      - `HoldReason` enums from different pallets:
      ```rust
              /// from pallet_nis
              #[pallet::composite_enum]
      	pub enum HoldReason {
      		NftReceipt,
      	}
      
              /// from pallet_preimage
              #[pallet::composite_enum]
      	pub enum HoldReason {
      		Preimage,
      	}
      
              // from pallet_state-trie-migration
              #[pallet::composite_enum]
      	pub enum HoldReason {
      		SlashForContinueMigrate,
      		SlashForMigrateCustomTop,
      		SlashForMigrateCustomChild,
      	}
      ```
      
      - generated `RuntimeHoldReason` enum looks like:
      ```rust
      pub enum RuntimeHoldReason {
      
          #[codec(index = 32u8)]
          Preimage(pallet_preimage::HoldReason),
      
          #[codec(index = 38u8)]
          Nis(pallet_nis::HoldReason),
      
          #[codec(index = 42u8)]
          StateTrieMigration(pallet_state_trie_migration::HoldReason),
      }
      ```
      
      - composite enum `RuntimeHoldReason` variant count is detected as `3`
      - we set `type MaxHolds = ConstU32<3>`
      - `pallet_balances::integrity_test` is ok with `3`(at least 3)
      
      However, the real problem can occur in a live runtime where some
      functionality might stop working. This is due to a total of 5 distinct
      hold reasons (for pallets with multi-instance support, it is even more),
      and not all of them can be used because of an incorrect `MaxHolds`,
      which is deemed acceptable according to the `integrity_test`:
        ```
        // pseudo-code - if we try to call all of these:
      
      T::Currency::hold(&pallet_nis::HoldReason::NftReceipt.into(),
      &nft_owner, deposit)?;
      T::Currency::hold(&pallet_preimage::HoldReason::Preimage.into(),
      &nft_owner, deposit)?;
      
      T::Currency::hold(&pallet_state_trie_migration::HoldReason::SlashForContinueMigrate.into(),
      &nft_owner, deposit)?;
      
        // With `type MaxHolds = ConstU32<3>` these two will fail
      
      T::Currency::hold(&pallet_state_trie_migration::HoldReason::SlashForMigrateCustomTop.into(),
      &nft_owner, deposit)?;
      
      T::Currency::hold(&pallet_state_trie_migration::HoldReason::SlashForMigrateCustomChild.into(),
      &nft_owner, deposit)?;
        ```  
      
      
      ## Solutions
      
      A macro `#[pallet::*]` expansion is extended of `VariantCount`
      implementation for the `#[pallet::composite_enum]` enum type. This
      expansion generates the `VariantCount` implementation for pallets'
      `HoldReason`, `FreezeReason`, `LockId`, and `SlashReason`. Enum variants
      must be plain enum values without fields to ensure a deterministic
      count.
      
      The composite runtime enum, `RuntimeHoldReason` and
      `RuntimeFreezeReason`, now sets `VariantCount::VARIANT_COUNT` as the sum
      of pallets' enum `VariantCount::VARIANT_COUNT`:
      ```rust
      #[frame_support::pallet(dev_mode)]
      mod module_single_instance {
      
      	#[pallet::composite_enum]
      	pub enum HoldReason {
      		ModuleSingleInstanceReason1,
      		ModuleSingleInstanceReason2,
      	}
      ...
      }
      
      #[frame_support::pallet(dev_mode)]
      mod module_multi_instance {
      
      	#[pallet::composite_enum]
      	pub enum HoldReason<I: 'static = ()> {
      		ModuleMultiInstanceReason1,
      		ModuleMultiInstanceReason2,
      		ModuleMultiInstanceReason3,
      	}
      ...
      }
      
      
      impl self::sp_api_hidden_includes_construct_runtime::hidden_include::traits::VariantCount
          for RuntimeHoldReason
      {
          const VARIANT_COUNT: u32 = 0
              + module_single_instance::HoldReason::VARIANT_COUNT
              + module_multi_instance::HoldReason::<module_multi_instance::Instance1>::VARIANT_COUNT
              + module_multi_instance::HoldReason::<module_multi_instance::Instance2>::VARIANT_COUNT
              + module_multi_instance::HoldReason::<module_multi_instance::Instance3>::VARIANT_COUNT;
      }
      ```
      
      In addition, `MaxHolds` is removed (as suggested
      [here](https://github.com/paritytech/polkadot-sdk/pull/2657#discussion_r1443324573))
      from `pallet_balances`, and its `Holds` are now bounded to
      `RuntimeHoldReason::VARIANT_COUNT`. Therefore, there is no need to let
      the runtime specify `MaxHolds`.
      
      
      ## For reviewers
      
      Relevant changes can be found here:
      - `substrate/frame/support/procedural/src/lib.rs` 
      -  `substrate/frame/support/procedural/src/pallet/parse/composite.rs`
      -  `substrate/frame/support/procedural/src/pallet/expand/composite.rs`
      -
      `substrate/frame/support/procedural/src/construct_runtime/expand/composite_helper.rs`
      -
      `substrate/frame/support/procedural/src/construct_runtime/expand/hold_reason.rs`
      -
      `substrate/frame/support/procedural/src/construct_runtime/expand/freeze_reason.rs`
      - `substrate/frame/support/src/traits/misc.rs`
      
      And the rest of the files is just about removed `MaxHolds` from
      `pallet_balances`
      
      ## Next steps
      
      Do the same for `MaxFreezes`
      https://github.com/paritytech/polkadot-sdk/issues/2997.
      
      ---------
      
      Co-authored-by: command-bot <>
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      Co-authored-by: default avatarDónal Murray <[email protected]>
      Co-authored-by: default avatargupnik <[email protected]>
      bb8ddc46
  3. Jan 22, 2024
  4. Nov 28, 2023
  5. Oct 24, 2023
    • Kian Paimani's avatar
      Ensure correct variant count in `Runtime[Hold/Freeze]Reason` (#1900) · 35eb133b
      Kian Paimani authored
      
      
      closes https://github.com/paritytech/polkadot-sdk/issues/1882
      
      ## Breaking Changes
      
      This PR introduces a new item to `pallet_balances::Config`:
      
      ```diff
      trait Config {
      ++    type RuntimeFreezeReasons;
      }
      ```
      
      This value is only used to check it against `type MaxFreeze`. A similar
      check has been added for `MaxHolds` against `RuntimeHoldReasons`, which
      is already given to `pallet_balances`.
      
      In all contexts, you should pass the real `RuntimeFreezeReasons`
      generated by `construct_runtime` to `type RuntimeFreezeReasons`. Passing
      `()` would also work, but it would imply that the runtime uses no
      freezes at all.
      
      ---------
      
      Signed-off-by: default avatarOliver Tale-Yazdi <[email protected]>
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      35eb133b
  6. Sep 06, 2023
  7. Aug 16, 2023
  8. Aug 14, 2023
  9. Jul 14, 2023
    • juangirini's avatar
      Replace Index for Nonce (#7374) · b95cc76d
      juangirini authored
      * replace Index for Nonce
      
      * remove extra Nonce
      
      * update lockfile for {"substrate"}
      
      ---------
      
      Co-authored-by: parity-processbot <>
      b95cc76d
  10. Jul 13, 2023
    • gupnik's avatar
      Moves `Block` to `frame_system` instead of `construct_runtime` and removes... · 28024144
      gupnik authored
      
      Moves `Block` to `frame_system` instead of `construct_runtime` and removes `Header` and `BlockNumber` (#7431)
      
      * Companion for substrate
      
      * Minor update
      
      * Formatting
      
      * Fixes for cumulus
      
      * Fixes tests in polkadot-runtime-parachains
      
      * Minor update
      
      * Removes unused import
      
      * Fixes tests in polkadot-runtime-common
      
      * Minor fix
      
      * Update roadmap/implementers-guide/src/runtime/configuration.md
      
      Co-authored-by: default avatarordian <[email protected]>
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * update lockfile for {"substrate"}
      
      ---------
      
      Co-authored-by: default avatarordian <[email protected]>
      Co-authored-by: command-bot <>
      28024144
  11. Jul 12, 2023
  12. May 24, 2023
    • Bastian Köcher's avatar
      Companion: Substrate#13869 (#7119) · 28de4f13
      Bastian Köcher authored
      * Companion: Substrate#13869
      
      https://github.com/paritytech/substrate/pull/13869
      
      * update lockfile for {"substrate"}
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      ---------
      
      Co-authored-by: parity-processbot <>
      28de4f13
  13. May 17, 2023
  14. May 08, 2023
    • Chris Sosnin's avatar
      paras: dismiss `pvf_checking_enabled` configuration (#7138) · 9c08536d
      Chris Sosnin authored
      * paras: unconditionally precheck pvfs
      
      * Update integration tests
      
      * paras_registrar tests
      
      * runtime benchmark tests
      
      * fix bench
      
      * bypass prechecking in test node
      
      * adjust bench
      
      * ".git/.scripts/commands/bench/bench.sh" runtime polkadot runtime_parachains::paras
      
      * ".git/.scripts/commands/bench/bench.sh" runtime kusama runtime_parachains::paras
      
      * ".git/.scripts/commands/bench/bench.sh" runtime rococo runtime_parachains::paras
      
      * ".git/.scripts/commands/bench/bench.sh" runtime westend runtime_parachains::paras
      
      * use test helper
      
      * fix new test
      
      ---------
      
      Co-authored-by: command-bot <>
      9c08536d
  15. Apr 08, 2023
  16. Mar 20, 2023
  17. Mar 17, 2023
    • Davide Galassi's avatar
      [Companion #13615] Keystore overhaul (#6892) · 46c36e5a
      Davide Galassi authored
      * Remove not required async calls
      
      * Fixed missing renaming
      
      * make_keystore can be sync
      
      * More fixes
      
      * Trivial nitpicks
      
      * Cherry pick test fix from master
      
      * Fixes after master merge
      
      * update lockfile for {"substrate"}
      
      ---------
      
      Co-authored-by: parity-processbot <>
      46c36e5a
  18. Mar 13, 2023
    • Vivek Pandya's avatar
      Remove use of Store trait (#6835) · 87db25ce
      Vivek Pandya authored
      * Remove use of Store trait from runtime directory
      
      * Remove Store trait usage from xcm directory
      
      * Run cargo fmt
      
      * update lockfile for {"substrate"}
      
      ---------
      
      Co-authored-by: parity-processbot <>
      87db25ce
  19. Jan 11, 2023
  20. Dec 19, 2022
  21. Dec 06, 2022
  22. Dec 05, 2022
    • Gavin Wood's avatar
      OpenGov improvements for Kusama (#6372) · 053b24eb
      Gavin Wood authored
      * Tweaks to optimise gov2
      
      * Use new inactive funds
      
      * Introduce migrations
      
      * Fixes
      
      * Fixes
      
      * Fixes
      
      * Some constant updates for Fellowship
      
      * Further tweaks
      
      * Lower floor for whitelisted
      053b24eb
  23. Sep 20, 2022
  24. Sep 12, 2022
    • Sergej Sakac's avatar
      Companion for #11981 (#5915) · 8ea6076f
      Sergej Sakac authored
      
      
      * Companion for #11981
      
      * more renaming
      
      * fmt
      
      * fixes
      
      * add generic type
      
      * Companion for #11831
      
      * fix
      
      * revert changes
      
      * Delete rename-outer-enum.diff
      
      * revert
      
      * Update run_benches_for_runtime.sh
      
      * rename type Call & type Event
      
      * passing tests
      
      * fmt
      
      * small fixes
      
      * commit
      
      * fix
      
      * fmt
      
      * commit
      
      * error fixes
      
      * fix
      
      * small fix in test
      
      * Update lib.rs
      
      * Update lib.rs
      
      * Update lib.rs
      
      * Update lib.rs
      
      * Update lib.rs
      
      * Update lib.rs
      
      * Update lib.rs
      
      * remove RuntimeCall from pallet_grandpa
      
      * last fix
      
      * commit
      
      * rename
      
      * merge fix
      
      * update lockfile for {"substrate"}
      
      * cargo +nightly fmt
      
      * fix
      
      Co-authored-by: parity-processbot <>
      Co-authored-by: default avatarShawn Tabrizi <[email protected]>
      8ea6076f
  25. Aug 31, 2022
    • Shawn Tabrizi's avatar
      Companion for Weight v1.5 (#5943) · 28e94d97
      Shawn Tabrizi authored
      * fix to latest substrate pr
      
      * update weights
      
      * cargo build -p polkadot-runtime-parachains
      
      * fix xcm-builder
      
      * fix import
      
      * fix a bunch
      
      * fix a bunch of weight stuff
      
      * kusama compile
      
      * unused
      
      * builds
      
      * maybe fix
      
      * cargo test -p polkadot-runtime-parachains
      
      * xcm simulator example
      
      * fix tests
      
      * xcm sim fuzz
      
      * fix runtime tests
      
      * remove unused
      
      * fix integration tests
      
      * scalar div
      
      * update lockfile for {"substrate"}
      
      Co-authored-by: parity-processbot <>
      28e94d97
  26. May 30, 2022
  27. May 17, 2022
  28. May 13, 2022
  29. May 11, 2022
  30. Apr 07, 2022
  31. Apr 04, 2022
  32. Mar 17, 2022
  33. Mar 09, 2022
    • asynchronous rob's avatar
      Finish migration to v2 primitives (#5037) · 49f7e5cc
      asynchronous rob authored
      * remove v0 primitives from polkadot-primitives
      
      * first pass: remove v0
      
      * fix fallout in erasure-coding
      
      * remove v1 primitives, consolidate to v2
      
      * the great import update
      
      * update runtime_api_impl_v1 to v2 as well
      
      * guide: add `Version` request for runtime API
      
      * add version query to runtime API
      
      * reintroduce OldV1SessionInfo in a limited way
      49f7e5cc
  34. Feb 12, 2022
    • Shawn Tabrizi's avatar
      Allow two Parachains to swap (#4772) · d5f51273
      Shawn Tabrizi authored
      
      
      * add support for parachain to parachain swap
      
      * enable swaps on kusama
      
      * sanity test in paras_registrar
      
      * express more errors
      
      * finish up tests
      
      * fmt
      
      * make fields pub
      
      * refactor integration tests to use real accounts
      
      * Update Crowdloan Account to FundIndex (#4824)
      
      * update fund account to use index
      
      * fix integration tests
      
      * Update runtime/common/src/crowdloan.rs
      
      * finish parachain swap test
      
      * format
      
      * fix warning
      
      * fix spacing
      
      * fix formatting
      
      * write migrations
      
      * add migration
      
      * fixes
      
      * more fixes to migration
      
      * Update runtime/common/src/crowdloan/mod.rs
      
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      
      * Update runtime/common/src/paras_registrar.rs
      
      * Update migration.rs
      
      * extract swap function
      
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      d5f51273
  35. Jan 20, 2022
  36. Dec 14, 2021
  37. Dec 13, 2021
  38. Dec 10, 2021
    • Bernhard Schuster's avatar
      remove Default from CandidateDescriptor (#4484) · 0f1a9fb1
      Bernhard Schuster authored
      
      
      * remove Default from CandidateHash
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarAndronik Ordian <[email protected]>
      
      * chore: fmt
      
      * remove backed candidate default
      
      * Partial migration away from CandidateReceipt::default
      
      * Remove more CandidateReceipt defaults
      
      * fmt
      
      * Mostly remove CommittedCandidateReceipt default usage
      
      * Remove CommittedCandidateReceipt
      
      * Remove more Defaults from polakdot primitives v1 + fmt
      
      * Remove more Default from polkadot primites v1
      
      * WIP trying to get overseer example + tests to compile
      
      * feat: add primitives test helpers
      
      * reduce deps of helper
      
      * update primitive helpers
      
      * make candidate validation compile
      
      * fixup cargo lock
      
      * make av-store compile
      
      * fixup disputes coordinator tests
      
      * test: fixup backing
      
      * test: fixup approval voting
      
      * fixup bitfield signing
      
      * test: fixup runtime-api
      
      * test: fixup availability dist
      
      * foxi[ pverseer test]
      
      * remove some Defaults, remove bounds from `dummy`
      
      All `fn dummy` in primitives need to be removed anyways.
      This aids in the transition.
      
      * it's a test helper, so always use std
      
      * test: fixup parachains runtime tests
      
      Excluding benches.
      
      * fix keyring
      
      * fix paras runtime properly, no more default
      
      * Remove fn dummy() usage from approval voting
      
      * Move TestCandidateBuilder out of av store to test helpers
      
      * Make candidate validation tests pass
      
      * Make most dispute coirdinator tests pass
      
      * Make provisioner tests work
      
      * Make availability recovery tests work with test helpers
      
      * Update polkadot-collator-protocol tests
      
      * Update statement distribution tests
      
      * Update polkadot overseer examples and tests
      
      * Derive default for validation code so we don't break unrelated things
      
      * Make para runtime test pass (no bench)
      
      * Some more work
      
      * chore: cargo fmt
      
      * cargo fix
      
      * avoid some Default::default
      
      * fixup dispute coordinator test
      
      * remove unused crate deps
      
      * remove Default::default wherever possible, replace by dummy_* for the most part
      
      * chore: cargo fmt
      
      * Remove some warnings
      
      * Remove CommittedCandidateReceipt dummy
      
      * Remove CandidateReceipt dummy
      
      * Remove CandidateDescriptor dummy
      
      * Remove commented out code
      
      * Fix para runtime tests
      
      * chore: nightly
      
      * Some updates to the builder
      
      * Dynamically adjust mock head data size
      
      * Make dispute cooridinator tests work
      
      * Fix test candidate_backing_reorders_votes work
      
      * +nightly-2021-10-29 fmt
      
      * Spelling and remove a default use in builder
      
      * Various clean up
      
      * More small updates
      
      * fmt
      
      * More small updates
      
      * Doc comments for test helpers
      
      * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=kusama-dev --steps=50 --repeat=20 --pallet=runtime_parachains::paras_inherent --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/kusama/src/weights/runtime_parachains_paras_inherent.rs
      
      * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=polkadot-dev --steps=50 --repeat=20 --pallet=runtime_parachains::paras_inherent --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/polkadot/src/weights/runtime_parachains_paras_inherent.rs
      
      * Update lib.rs
      
      * review comments
      
      * fix warnings
      
      * fix test by using correct candidate receipt relay parent
      
      Co-authored-by: default avatarAndronik Ordian <[email protected]>
      Co-authored-by: default avataremostov <[email protected]>
      Co-authored-by: default avatarParity Bot <[email protected]>
      Co-authored-by: default avatarGavin Wood <[email protected]>
      0f1a9fb1
  39. Dec 09, 2021