Skip to content
  1. Nov 01, 2023
    • Oliver Tale-Yazdi's avatar
      [FRAME] Short-circuit fungible self transfer (#2118) · c66ae375
      Oliver Tale-Yazdi authored
      
      
      Changes:
      - Change the fungible(s) logic to treat a self-transfer as No-OP (as
      long as all pre-checks pass).
      
      Note that the self-transfer case will not emit an event since no state
      was changed.
      
      ---------
      
      Signed-off-by: default avatarOliver Tale-Yazdi <[email protected]>
      c66ae375
    • Julian Eager's avatar
      Build workers for testing on demand (#2018) · 4f05f9a6
      Julian Eager authored
      4f05f9a6
    • Daniel Moos's avatar
      fix substrate-node-template generation (#2050) · 49c0f33b
      Daniel Moos authored
      
      
      # Description
      
      This PR updates the node-template-release generation binary as well as
      the `node-template-release.sh` file so that we can automatically push
      updates to the [substrate-node-template
      repository](https://github.com/substrate-developer-hub/substrate-node-template).
      I assume this part was not updated after the substrate project has been
      moved into the polkadot-sdk mono repo.
      
      # Adjustments
      - extend the `node-template-release.sh` to support the substrate
      child-folder
      - update the `SUBSTRATE_GIT_URL`
      - fix the Cargo.toml filter (so that it does not include any
      non-relevant .toml files)
      - set the workspace-edition to 2021
      
      # Note
      In order to auto-generate the artifacts [this
      line](https://github.com/paritytech/polkadot-sdk/blob/master/.gitlab/pipeline/build.yml#L320C15-L320C15)
      needs to be included in the build.yml script again. Since I do not have
      access to the (probably) internal gitlab environment I hope that someone
      with actual access can introduce that change.
      I also do not know how the auto-publish feature works so that would be
      another thing to add later on.
      
      ---------
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      49c0f33b
    • jserrat's avatar
      9987bbb1
    • Kevin Krone's avatar
      Improve FRAME storage docs (#1714) · b6965af4
      Kevin Krone authored
      This is a port (and hopefully a small improvement) of @Kianenigma
      
      's PR
      from the old Substrate repo:
      https://github.com/paritytech/substrate/pull/13987. Following #1689 I
      moved the documentation of all macros relevant to this PR from
      `frame_support_procedural` to `pallet_macros` while including a hint for
      RA users.
      
      Question: Again with respect to #1689: Is there a good reason why we
      should *not* enhance paths with links to our current rustdocs? For
      example, instead of
      ```rust
      /// **Rust-Analyzer users**: See the documentation of the Rust item in
      /// `frame_support::pallet_macros::storage`.
      ```
      we could write
      ```rust
      /// **Rust-Analyzer users**: See the documentation of the Rust item in
      /// [`frame_support::pallet_macros::storage`](https://paritytech.github.io/polkadot-sdk/master/frame_support/pallet_macros/attr.storage.html).
      ```
      This results in a clickable link like this:
      <img width="674" alt="image"
      src="https://github.com/paritytech/polkadot-sdk/assets/10713977/c129e622-3942-4eeb-8acf-93ee4efdc99d">
      I don't really expect the links to become outdated any time soon, but I
      think this would be a great UX improvement over just having paths.
      
      TODOs:
      - [ ] Add documentation for `constant_name` macro
      - [x] Add proper documentation for different `QueryKinds`, i.e.
      `OptionQuery`, `ValueQuery`, `ResultQuery`. One example for each. Custom
      `OnEmpty` should be moved to `QueryKinds` trait doc page.
      - [ ] Rework `type_value` docs
      
      ---------
      
      Co-authored-by: default avatarkianenigma <[email protected]>
      b6965af4
    • Javyer's avatar
      review-bot: prevent request review of core-devs (#2121) · b2bb8cbc
      Javyer authored
      This will remove `core-devs` from being required reviewers of PRs,
      b2bb8cbc
    • Serban Iorga's avatar
    • Alexander Samusev's avatar
      [ci] Revert CI_IMAGE variable (#2120) · 8507f45c
      Alexander Samusev authored
      CI image has been updated in the shared snippet, reverting the variable
      back.
      8507f45c
    • jserrat's avatar
      remove gum dependency on jaeger (#2106) · 2726d5af
      jserrat authored
      
      
      Co-authored-by: default avatarMarcin S <[email protected]>
      2726d5af
    • Ankan's avatar
      [NPoS] Paging reward payouts in order to scale rewardable nominators (#1189) · 00b85c51
      Ankan authored
      
      
      helps https://github.com/paritytech/polkadot-sdk/issues/439.
      closes https://github.com/paritytech/polkadot-sdk/issues/473.
      
      PR link in the older substrate repository:
      https://github.com/paritytech/substrate/pull/13498.
      
      # Context
      Rewards payout is processed today in a single block and limited to
      `MaxNominatorRewardedPerValidator`. This number is currently 512 on both
      Kusama and Polkadot.
      
      This PR tries to scale the nominators payout to an unlimited count in a
      multi-block fashion. Exposures are stored in pages, with each page
      capped to a certain number (`MaxExposurePageSize`). Starting out, this
      number would be the same as `MaxNominatorRewardedPerValidator`, but
      eventually, this number can be lowered through new runtime upgrades to
      limit the rewardeable nominators per dispatched call instruction.
      
      The changes in the PR are backward compatible.
      
      ## How payouts would work like after this change
      Staking exposes two calls, 1) the existing `payout_stakers` and 2)
      `payout_stakers_by_page`.
      
      ### payout_stakers
      This remains backward compatible with no signature change. If for a
      given era a validator has multiple pages, they can call `payout_stakers`
      multiple times. The pages are executed in an ascending sequence and the
      runtime takes care of preventing double claims.
      
      ### payout_stakers_by_page
      Very similar to `payout_stakers` but also accepts an extra param
      `page_index`. An account can choose to payout rewards only for an
      explicitly passed `page_index`.
      
      **Lets look at an example scenario**
      Given an active validator on Kusama had 1100 nominators,
      `MaxExposurePageSize` set to 512 for Era e. In order to pay out rewards
      to all nominators, the caller would need to call `payout_stakers` 3
      times.
      
      - `payout_stakers(origin, stash, e)` => will pay the first 512
      nominators.
      - `payout_stakers(origin, stash, e)` => will pay the second set of 512
      nominators.
      - `payout_stakers(origin, stash, e)` => will pay the last set of 76
      nominators.
      ...
      - `payout_stakers(origin, stash, e)` => calling it the 4th time would
      return an error `InvalidPage`.
      
      The above calls can also be replaced by `payout_stakers_by_page` and
      passing a `page_index` explicitly.
      
      ## Commission note
      Validator commission is paid out in chunks across all the pages where
      each commission chunk is proportional to the total stake of the current
      page. This implies higher the total stake of a page, higher will be the
      commission. If all the pages of a validator's single era are paid out,
      the sum of commission paid to the validator across all pages should be
      equal to what the commission would have been if we had a non-paged
      exposure.
      
      ### Migration Note
      Strictly speaking, we did not need to bump our storage version since
      there is no migration of storage in this PR. But it is still useful to
      mark a storage upgrade for the following reasons:
      
      - New storage items are introduced in this PR while some older storage
      items are deprecated.
      - For the next `HistoryDepth` eras, the exposure would be incrementally
      migrated to its corresponding paged storage item.
      - Runtimes using staking pallet would strictly need to wait at least
      `HistoryDepth` eras with current upgraded version (14) for the migration
      to complete. At some era `E` such that `E >
      era_at_which_V14_gets_into_effect + HistoryDepth`, we will upgrade to
      version X which will remove the deprecated storage items.
      In other words, it is a strict requirement that E<sub>x</sub> -
      E<sub>14</sub> > `HistoryDepth`, where
      E<sub>x</sub> = Era at which deprecated storages are removed from
      runtime,
      E<sub>14</sub> = Era at which runtime is upgraded to version 14.
      - For Polkadot and Kusama, there is a [tracker
      ticket](https://github.com/paritytech/polkadot-sdk/issues/433) to clean
      up the deprecated storage items.
      
      ### Storage Changes
      
      #### Added
      - ErasStakersOverview
      - ClaimedRewards
      - ErasStakersPaged
      
      #### Deprecated
      The following can be cleaned up after 84 eras which is tracked
      [here](https://github.com/paritytech/polkadot-sdk/issues/433).
      
      - ErasStakers.
      - ErasStakersClipped.
      - StakingLedger.claimed_rewards, renamed to
      StakingLedger.legacy_claimed_rewards.
      
      ### Config Changes
      - Renamed MaxNominatorRewardedPerValidator to MaxExposurePageSize.
      
      ### TODO
      - [x] Tracker ticket for cleaning up the old code after 84 eras.
      - [x] Add companion.
      - [x] Redo benchmarks before merge.
      - [x] Add Changelog for pallet_staking.
      - [x] Pallet should be configurable to enable/disable paged rewards.
      - [x] Commission payouts are distributed across pages.
      - [x] Review documentation thoroughly.
      - [x] Rename `MaxNominatorRewardedPerValidator` ->
      `MaxExposurePageSize`.
      - [x] NMap for `ErasStakersPaged`.
      - [x] Deprecate ErasStakers.
      - [x] Integrity tests.
      
      ### Followup issues
      [Runtime api for deprecated ErasStakers storage
      item](https://github.com/paritytech/polkadot-sdk/issues/426)
      
      ---------
      
      Co-authored-by: default avatarJavier Viola <[email protected]>
      Co-authored-by: default avatarRoss Bulat <[email protected]>
      Co-authored-by: command-bot <>
      00b85c51
    • Alexander Samusev's avatar
      [ci] Update rust nightly in ci image (#2115) · f50054cf
      Alexander Samusev authored
      Run CI using new image with nightly 2023-11-01
      
      cc https://github.com/paritytech/polkadot-sdk/issues/2113
      cc https://github.com/paritytech/ci_cd/issues/896
      f50054cf
    • Dmitry Markin's avatar
      Move syncing code from `sc-network-common` to `sc-network-sync` (#1912) · 1cd6acdf
      Dmitry Markin authored
      This PR moves syncing-related code from `sc-network-common` to
      `sc-network-sync`.
      
      Unfortunately, some parts are tightly integrated with networking, so
      they were left in `sc-network-common` for now:
      
      1. `SyncMode` in `common/src/sync.rs` (used in `NetworkConfiguration`).
      2. `BlockAnnouncesHandshake`, `BlockRequest`, `BlockResponse`, etc. in
      `common/src/sync/message.rs` (used in `src/protocol.rs` and
      `src/protocol/message.rs`).
      
      More substantial refactoring is needed to decouple syncing and
      networking completely, including getting rid of the hardcoded sync
      protocol.
      
      ## Release notes
      
      Move syncing-related code from `sc-network-common` to `sc-network-sync`.
      Delete `ChainSync` trait as it's never used (the only implementation is
      accessed directly from `SyncingEngine` and exposes a lot of public
      methods that are not part of the trait). Some new trait(s) for syncing
      will likely be introduced as part of Sync 2.0 refactoring to represent
      syncing strategies.
      1cd6acdf
    • Javyer's avatar
      upgraded review-bot to 2.2.0 (#2097) · 9ca26732
      Javyer authored
      This version includes paritytech/review-bot#97 which can assign
      reviewers.
      
      It will be the final step required to replace PRCR.
      
      It also moves the secrets to the environment master.
      9ca26732
    • dependabot[bot]'s avatar
      Bump chevdor/srtool-actions from 0.8.0 to 0.9.0 (#2089) · 37f3269c
      dependabot[bot] authored
      
      
      Bumps
      [chevdor/srtool-actions](https://github.com/chevdor/srtool-actions) from
      0.8.0 to 0.9.0.
      <details>
      <summary>Release notes</summary>
      <p><em>Sourced from <a
      href="https://github.com/chevdor/srtool-actions/releases">chevdor/srtool-actions's
      releases</a>.</em></p>
      <blockquote>
      <h2>v0.9.0</h2>
      <h2>What's Changed</h2>
      <ul>
      <li>Add debugging info by <a
      href="https://github.com/chevdor"><code>@​chevdor</code></a> in <a
      href="https://redirect.github.com/chevdor/srtool-actions/pull/25">chevdor/srtool-actions#25</a></li>
      </ul>
      <p><strong>Full Changelog</strong>: <a
      href="https://github.com/chevdor/srtool-actions/compare/v0.8.0...v0.9.0">https://github.com/chevdor/srtool-actions/compare/v0.8.0...v0.9.0</a></p>
      </blockquote>
      </details>
      <details>
      <summary>Commits</summary>
      <ul>
      <li><a
      href="https://github.com/chevdor/srtool-actions/commit/d7c66d9766f633abab95127ee910dd96892f8e3b"><code>d7c66d9</code></a>
      Add debugging info and fixes for the monorepo (<a
      href="https://redirect.github.com/chevdor/srtool-actions/issues/25">#25</a>)</li>
      <li>See full diff in <a
      href="https://github.com/chevdor/srtool-actions/compare/v0.8.0...v0.9.0">compare
      view</a></li>
      </ul>
      </details>
      <br />
      
      
      [![Dependabot compatibility
      score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=chevdor/srtool-actions&package-manager=github_actions&previous-version=0.8.0&new-version=0.9.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
      
      Dependabot will resolve any conflicts with this PR as long as you don't
      alter it yourself. You can also trigger a rebase manually by commenting
      `@dependabot rebase`.
      
      [//]: # (dependabot-automerge-start)
      [//]: # (dependabot-automerge-end)
      
      ---
      
      <details>
      <summary>Dependabot commands and options</summary>
      <br />
      
      You can trigger Dependabot actions by commenting on this PR:
      - `@dependabot rebase` will rebase this PR
      - `@dependabot recreate` will recreate this PR, overwriting any edits
      that have been made to it
      - `@dependabot merge` will merge this PR after your CI passes on it
      - `@dependabot squash and merge` will squash and merge this PR after
      your CI passes on it
      - `@dependabot cancel merge` will cancel a previously requested merge
      and block automerging
      - `@dependabot reopen` will reopen this PR if it is closed
      - `@dependabot close` will close this PR and stop Dependabot recreating
      it. You can achieve the same result by closing it manually
      - `@dependabot show <dependency name> ignore conditions` will show all
      of the ignore conditions of the specified dependency
      - `@dependabot ignore this major version` will close this PR and stop
      Dependabot creating any more for this major version (unless you reopen
      the PR or upgrade to it yourself)
      - `@dependabot ignore this minor version` will close this PR and stop
      Dependabot creating any more for this minor version (unless you reopen
      the PR or upgrade to it yourself)
      - `@dependabot ignore this dependency` will close this PR and stop
      Dependabot creating any more for this dependency (unless you reopen the
      PR or upgrade to it yourself)
      
      
      </details>
      
      Signed-off-by: default avatardependabot[bot] <[email protected]>
      Co-authored-by: default avatardependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
      37f3269c
    • Davide Galassi's avatar
      Bump ec-utils version (#2104) · b53a93a6
      Davide Galassi authored
      b53a93a6
  2. Oct 31, 2023
  3. Oct 30, 2023
    • Bastian Köcher's avatar
      parachain-system: Send same event & digest as a standalone chain (#2064) · 2d9426f1
      Bastian Köcher authored
      This ensures that upgrading a parachain code sends the same event &
      digest as when using `set_code` on a standalone chain.
      
      Close: https://github.com/paritytech/polkadot-sdk/issues/2049
      2d9426f1
    • yjh's avatar
    • Michal Kucharczyk's avatar
      Switch from `tiny-bip39` to `bip39` crate (#2084) · a69da4a8
      Michal Kucharczyk authored
      Switch from: 
      https://crates.io/crates/tiny-bip39
      to:
      https://crates.io/crates/bip39
      
      Required for: https://github.com/paritytech/polkadot-sdk/pull/2044
      a69da4a8
    • Adrian Catangiu's avatar
      Refactor transaction storage pallet to use fungible traits (#1800) · 30f3ad2e
      Adrian Catangiu authored
      
      
      Partial https://github.com/paritytech/polkadot-sdk/issues/226
      
      `frame/transaction-storage`: replace `Currency` with `fungible::*`
      traits
      
      ---------
      
      Signed-off-by: default avatarAdrian Catangiu <[email protected]>
      Co-authored-by: default avatargeorgepisaltu <[email protected]>
      30f3ad2e
    • Liam Aharon's avatar
      contracts migration: remove unnecessary panics (#2079) · ad5163ba
      Liam Aharon authored
      Runtime migration CI is currently failing
      (https://gitlab.parity.io/parity/mirrors/polkadot-sdk/builds/4122083)
      for the contracts testnet due to unnecessary panicing in a `pre_upgrade`
      hook.
      
      Soon idempotency will be enforced
      https://github.com/paritytech/try-runtime-cli/issues/42, in the mean
      time we need to manually fix these issues as they arise.
      
      ---
      
      also removes backticks from the string in `echo`, which caused a
      'command not found' error in ci output
      ad5163ba
    • Liam Aharon's avatar
      Stop `Balances` pallet erroneously double incrementing and decrementing consumers (#1976) · 0aeab381
      Liam Aharon authored
      Closes https://github.com/paritytech/polkadot-sdk/issues/1970
      
      Follow up issue to tackle, once the erroneous double
      incrementing/decrementing has stopped:
      https://github.com/paritytech/polkadot-sdk/issues/2037
      0aeab381
    • Liam Aharon's avatar
      Improve `try-state` developer experience & fix bug (#2019) · d715caa6
      Liam Aharon authored
      Making some devex improvements as I audit our chains adherence to
      try-state invariants, in preparation for automated try-state checks and
      alerting.
      
      Note to reviewer: while you're here, if you have time would be great to
      get your eyes on https://github.com/paritytech/polkadot-sdk/pull/1297
      also since it touches a similar file and I'd like to avoid merge
      conflicts :P
      
      ## Devex Improvements
      
      - Changes the log level of logs informing the user that try-state checks
      are being run for a pallet from debug to info
      - Improves how errors are communicated
      - Errors are logged when they are encountered, rather than after
      everything has been executed
      - Exact pallet the error originated from is included with the error log
        - Clearly see all errors and how many there are, rather than only one
        - Closes #136 
      
      ### Example of new logs
      
      <img width="1185" alt="Screenshot 2023-10-25 at 15 44 44"
      src="https://github.com/paritytech/polkadot-sdk/assets/16665596/b75588a2-1c64-45df-bbc8-bcb8bf8b0fe0">
      
      ### Same but with old logs (run with RUST_LOG=debug)
      
      Notice only informed of one of the errors, and it's unclear which pallet
      it originated
      
      <img width="1185" alt="Screenshot 2023-10-25 at 15 39 01"
      src="https://github.com/paritytech/polkadot-sdk/assets/16665596/e3429cb1-489e-430a-9716-77c052e5dae6">
       
      
      ## Bug fix
      
      When dry-running migrations and `checks.try_state()` is `true`, only run
      `try_state` checks after migrations have been executed. Otherwise,
      `try_state` checks that expect state to be in at a HIGHER storage
      version than is on-chain could incorrectly fail.
      
      ---------
      
      Co-authored-by: command-bot <>
      d715caa6
  4. Oct 29, 2023
    • Davide Galassi's avatar
      Improve Client CLI help readability (#2073) · 70350347
      Davide Galassi authored
      Currently the CLI `-h/--help` commad output is almost unreadable as (for
      some commands) it:
      - doesn't provide a short brief of what the command does.
      - doesn't separate the options description in smaller paragraphs.
      - doesn't use a smart wrap strategy for lines longer than the number of
      columns in the terminal.
      
      Follow some pics taken with a 100 cols wide term
      
      ## Short help (./node -h)
      
      ### Before
      
      
      ![20231028-174531-grim](https://github.com/paritytech/polkadot-sdk/assets/8143589/11b62c3c-dcd5-43f4-ac58-f1b299e3f4b9)
      
      ### After
      
      
      ![20231028-175041-grim](https://github.com/paritytech/polkadot-sdk/assets/8143589/dc08f6fd-b287-40fb-8b33-71a185922104)
      
      
      ## Long help (./node --help)
      
      ### Before
      
      
      ![20231028-175257-grim](https://github.com/paritytech/polkadot-sdk/assets/8143589/9ebdc0ae-54ee-4760-b873-a7e813523cb6)
      
      ### After
      
      
      ![20231028-175155-grim](https://github.com/paritytech/polkadot-sdk/assets/8143589/69cbe5cb-eb2f-46a5-8ebf-76c0cf8c4bad)
      
      ---------
      
      Co-authored-by: command-bot <>
      70350347
    • Vadim Smirnov's avatar
      fix(frame-benchmarking-cli): Pass heap_pages param to WasmExecutor (#2075) · 8ce16ee6
      Vadim Smirnov authored
      In https://github.com/paritytech/substrate/pull/13740 the use of the
      `heap-pages` param inside the `frame-benchmarking-cli` has been removed.
      This results in running out of memory and this PR fixes the heap
      allocation strategy for benchmarks wasm executor.
      8ce16ee6
  5. Oct 27, 2023
    • Liam Aharon's avatar
      Automatically build and attach production and dev runtimes to GH releases (#2054) · a7061712
      Liam Aharon authored
      
      
      Closes https://github.com/paritytech/release-engineering/issues/6
      
      Adds a new Github Workflow which on a new release being created, builds
      and attaches all runtimes managed in this repository in two flavours:
      - `dev-debug-build`: Built with the `try-runtime` feature and has
      logging enabled
      - `on-chain-release`: Built with the regular old `on-chain-release`
      feature
      
      The new Github Workflow could be extended in the future by the
      @paritytech/release-engineering team to fully automate the release
      process if they choose to, similar to how it is fully automated in the
      Fellowship repo
      (https://github.com/polkadot-fellows/runtimes/blob/main/.github/workflows/release.yml).
      
      The `on-chain-release` did not exist for parachains, so I added it. 
      
      ---
      
      Tested on my fork: 
      - https://github.com/liamaharon/polkadot-sdk/actions/runs/6663773523
      - https://github.com/liamaharon/polkadot-sdk/releases/tag/test-6
      
      ---------
      
      Co-authored-by: default avatarChevdor <[email protected]>
      Co-authored-by: default avatarDónal Murray <[email protected]>
      a7061712
    • Sam Johnson's avatar
      upgrade to docify 0.2.6 (#2069) · f46f5a90
      Sam Johnson authored
      Updates `docify` to 0.2.6, which fixes a bug that was preventing nesting
      `#[docify::export]` within sub-items of items that already have
      `#[docify::export]` attached to them from working properly.
      
      Release notes here:
      https://github.com/sam0x17/docify/releases/tag/v0.2.6
      
      cc @ggwpez @Kianenigma
      f46f5a90
    • Bastian Köcher's avatar
      level-monitor: Fix issue with warp syncing (#2053) · bea8baed
      Bastian Köcher authored
      When warp syncing a node we import a header of the parachain around the
      tip of the chain. This header is currently not imported as finalized
      block (should be fixed at some point as well), the parent headers are
      not yet present (still being synced) and thus, we run into a panic. Even
      if there is a case where a leaf could not be found in the database, this
      probably means that the db is broken and it will fail somewhere elese.
      bea8baed
    • PG Herveou's avatar
      9643a3ad
    • Alexandru Gheorghe's avatar
      make polkadot die graciously (#2056) · 3069b0af
      Alexandru Gheorghe authored
      
      
      While investigating some db migrations that make the node startup fail,
      I noticed that the node wasn't exiting and that the log file were
      growing exponentially, until my whole system was freezing and that makes
      it really hard to actually find why it was failing in the first place.
      
      E.g:
      ```
       ls -lh /tmp/zombie-01a04c2a2c0265d85f6440cf01c0f44a_-51319-uyggzuD4wEpV/bob.log
       32,6G oct 27 11:16 /tmp/zombie-01a04c2a2c0265d85f6440cf01c0f44a_-51319-uyggzuD4wEpV/bob.log
      ```
      
      This was happening because the following errors were being printed
      continously without the subsystem main loop exiting:
      
      From dispute-coordinator:
      ```
      WARN tokio-runtime-worker parachain::dispute-coordinator: error=Subsystem(Generated(Context("Signal channel is terminated and empty.")))
      ```
      
      From availability recovery:
      ```
      Erasure task channel closed. Node shutting down ?
      ```
      
      Signed-off-by: default avatarAlexandru Gheorghe <[email protected]>
      3069b0af
    • juangirini's avatar
      feat: FRAME umbrella crate. (#1337) · 43415ef5
      juangirini authored
      
      
      ### Original PR https://github.com/paritytech/substrate/pull/14137
      
      This PR brings in the first version of the "_`frame` umbrella crate_".
      This crate is intended to serve two purposes:
      
      1. documentation
      2. easier development with frame. Ideally, we want most users to be able
      to build a frame-based pallet and runtime using just `frame` (plus
      `scale-codec` and `scale-info`).
      
      The crate is not finalized and is not yet intended for external use.
      Therefore, the version is set to `0.0.1-dev`, this PR is `silent`, and
      the entire crate is hidden behind the `experimental` flag. The main
      intention in merging it early on is to be able to iterate on it in the
      rest of
      [`developer-hub`](https://github.com/paritytech/polkadot-sdk-docs/)
      efforts.
      
      The public API of the `frame` crate is at the moment as follows: 
      
      ```
      pub mod frame
      pub use frame::log
      pub use frame::pallet
      pub mod frame::arithmetic
      pub use frame::arithmetic::<<sp_arithmetic::*>>
      pub use frame::arithmetic::<<sp_arithmetic::traits::*>>
      pub mod frame::deps
      pub use frame::deps::codec
      pub use frame::deps::frame_executive
      pub use frame::deps::frame_support
      pub use frame::deps::frame_system
      pub use frame::deps::scale_info
      pub use frame::deps::sp_api
      pub use frame::deps::sp_arithmetic
      pub use frame::deps::sp_block_builder
      pub use frame::deps::sp_consensus_aura
      pub use frame::deps::sp_consensus_grandpa
      pub use frame::deps::sp_core
      pub use frame::deps::sp_inherents
      pub use frame::deps::sp_io
      pub use frame::deps::sp_offchain
      pub use frame::deps::sp_runtime
      pub use frame::deps::sp_std
      pub use frame::deps::sp_version
      pub mod frame::derive
      pub use frame::derive::CloneNoBound
      pub use frame::derive::Debug
      pub use frame::derive::Debug
      pub use frame::derive::DebugNoBound
      pub use frame::derive::Decode
      pub use frame::derive::Decode
      pub use frame::derive::DefaultNoBound
      pub use frame::derive::Encode
      pub use frame::derive::Encode
      pub use frame::derive::EqNoBound
      pub use frame::derive::PartialEqNoBound
      pub use frame::derive::RuntimeDebug
      pub use frame::derive::RuntimeDebugNoBound
      pub use frame::derive::TypeInfo
      pub use frame::derive::TypeInfo
      pub mod frame::prelude
      pub use frame::prelude::<<frame_support::pallet_prelude::*>>
      pub use frame::prelude::<<frame_system::pallet_prelude::*>>
      pub use frame::prelude::<<sp_std::prelude::*>>
      pub use frame::prelude::CloneNoBound
      pub use frame::prelude::Debug
      pub use frame::prelude::Debug
      pub use frame::prelude::DebugNoBound
      pub use frame::prelude::Decode
      pub use frame::prelude::Decode
      pub use frame::prelude::DefaultNoBound
      pub use frame::prelude::Encode
      pub use frame::prelude::Encode
      pub use frame::prelude::EqNoBound
      pub use frame::prelude::PartialEqNoBound
      pub use frame::prelude::RuntimeDebug
      pub use frame::prelude::RuntimeDebugNoBound
      pub use frame::prelude::TypeInfo
      pub use frame::prelude::TypeInfo
      pub use frame::prelude::frame_system
      pub mod frame::primitives
      pub use frame::primitives::BlakeTwo256
      pub use frame::primitives::H160
      pub use frame::primitives::H256
      pub use frame::primitives::H512
      pub use frame::primitives::Hash
      pub use frame::primitives::Keccak256
      pub use frame::primitives::U256
      pub use frame::primitives::U512
      pub mod frame::runtime
      pub mod frame::runtime::apis
      pub use frame::runtime::apis::<<frame_system_rpc_runtime_api::*>>
      pub use frame::runtime::apis::<<sp_api::*>>
      pub use frame::runtime::apis::<<sp_block_builder::*>>
      pub use frame::runtime::apis::<<sp_consensus_aura::*>>
      pub use frame::runtime::apis::<<sp_consensus_grandpa::*>>
      pub use frame::runtime::apis::<<sp_offchain::*>>
      pub use frame::runtime::apis::<<sp_session::runtime_api::*>>
      pub use frame::runtime::apis::<<sp_transaction_pool::runtime_api::*>>
      pub use frame::runtime::apis::ApplyExtrinsicResult
      pub use frame::runtime::apis::CheckInherentsResult
      pub use frame::runtime::apis::InherentData
      pub use frame::runtime::apis::OpaqueMetadata
      pub use frame::runtime::apis::impl_runtime_apis
      pub use frame::runtime::apis::sp_api
      pub mod frame::runtime::prelude
      pub use frame::runtime::prelude::<<frame_executive::*>>
      pub use frame::runtime::prelude::ConstBool
      pub use frame::runtime::prelude::ConstI128
      pub use frame::runtime::prelude::ConstI16
      pub use frame::runtime::prelude::ConstI32
      pub use frame::runtime::prelude::ConstI64
      pub use frame::runtime::prelude::ConstI8
      pub use frame::runtime::prelude::ConstU128
      pub use frame::runtime::prelude::ConstU16
      pub use frame::runtime::prelude::ConstU32
      pub use frame::runtime::prelude::ConstU64
      pub use frame::runtime::prelude::ConstU8
      pub use frame::runtime::prelude::NativeVersion
      pub use frame::runtime::prelude::RuntimeVersion
      pub use frame::runtime::prelude::construct_runtime
      pub use frame::runtime::prelude::create_runtime_str
      pub use frame::runtime::prelude::derive_impl
      pub use frame::runtime::prelude::frame_support
      pub use frame::runtime::prelude::ord_parameter_types
      pub use frame::runtime::prelude::parameter_types
      pub use frame::runtime::prelude::runtime_version
      pub mod frame::runtime::testing_prelude
      pub use frame::runtime::testing_prelude::BuildStorage
      pub use frame::runtime::testing_prelude::Storage
      pub mod frame::runtime::types_common
      pub type frame::runtime::types_common::AccountId = <<frame::runtime::types_common::Signature as sp_runtime::traits::Verify>::Signer as sp_runtime::traits::IdentifyAccount>::AccountId
      pub type frame::runtime::types_common::BlockNumber = u32
      pub type frame::runtime::types_common::BlockOf<T, Extra> = sp_runtime::generic::block::Block<sp_runtime::generic::header::Header<frame::runtime::types_common::BlockNumber, sp_runtime::traits::BlakeTwo256>, sp_runtime::generic::unchecked_extrinsic::UncheckedExtrinsic<sp_runtime::multiaddress::MultiAddress<frame::runtime::types_common::AccountId, ()>, <T as frame_system::pallet::Config>::RuntimeCall, frame::runtime::types_common::Signature, Extra>>
      pub type frame::runtime::types_common::OpaqueBlock = sp_runtime::generic::block::Block<sp_runtime::generic::header::Header<frame::runtime::types_common::BlockNumber, sp_runtime::traits::BlakeTwo256>, sp_runtime::OpaqueExtrinsic>
      pub type frame::runtime::types_common::Signature = sp_runtime::MultiSignature
      pub type frame::runtime::types_common::SystemSignedExtensionsOf<T> = (frame_system::extensions::check_non_zero_sender::CheckNonZeroSender<T>, frame_system::extensions::check_spec_version::CheckSpecVersion<T>, frame_system::extensions::check_tx_version::CheckTxVersion<T>, frame_system::extensions::check_genesis::CheckGenesis<T>, frame_system::extensions::check_mortality::CheckMortality<T>, frame_system::extensions::check_nonce::CheckNonce<T>, frame_system::extensions::check_weight::CheckWeight<T>)
      pub mod frame::testing_prelude
      pub use frame::testing_prelude::<<frame_executive::*>>
      pub use frame::testing_prelude::<<frame_system::mocking::*>>
      pub use frame::testing_prelude::BuildStorage
      pub use frame::testing_prelude::ConstBool
      pub use frame::testing_prelude::ConstI128
      pub use frame::testing_prelude::ConstI16
      pub use frame::testing_prelude::ConstI32
      pub use frame::testing_prelude::ConstI64
      pub use frame::testing_prelude::ConstI8
      pub use frame::testing_prelude::ConstU128
      pub use frame::testing_prelude::ConstU16
      pub use frame::testing_prelude::ConstU32
      pub use frame::testing_prelude::ConstU64
      pub use frame::testing_prelude::ConstU8
      pub use frame::testing_prelude::NativeVersion
      pub use frame::testing_prelude::RuntimeVersion
      pub use frame::testing_prelude::Storage
      pub use frame::testing_prelude::TestState
      pub use frame::testing_prelude::assert_err
      pub use frame::testing_prelude::assert_err_ignore_postinfo
      pub use frame::testing_prelude::assert_error_encoded_size
      pub use frame::testing_prelude::assert_noop
      pub use frame::testing_prelude::assert_ok
      pub use frame::testing_prelude::assert_storage_noop
      pub use frame::testing_prelude::construct_runtime
      pub use frame::testing_prelude::create_runtime_str
      pub use frame::testing_prelude::derive_impl
      pub use frame::testing_prelude::frame_support
      pub use frame::testing_prelude::frame_system
      pub use frame::testing_prelude::if_std
      pub use frame::testing_prelude::ord_parameter_types
      pub use frame::testing_prelude::parameter_types
      pub use frame::testing_prelude::runtime_version
      pub use frame::testing_prelude::storage_alias
      pub mod frame::traits
      pub use frame::traits::<<frame_support::traits::*>>
      pub use frame::traits::<<sp_runtime::traits::*>>
      ```
      
      ---
      
      The road to full stabilization is
      
      - [ ] https://github.com/paritytech/polkadot-sdk/issues/127
      - [ ] have a more intentional version bump, as opposed to the current bi
      weekly force-major-bump
      - [ ] revise the internal API of `frame`, especially what goes into the
      `prelude`s.
      - [ ] migrate all internal pallets and runtime to use `frame`
      
      ---------
      
      Co-authored-by: default avatarkianenigma <[email protected]>
      Co-authored-by: default avatarKian Paimani <[email protected]>
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      Co-authored-by: default avatarFrancisco Aguirre <[email protected]>
      43415ef5