Skip to content
Snippets Groups Projects
  1. Oct 15, 2024
    • Michal Kucharczyk's avatar
      fork-aware transaction pool added (#4639) · 26c11fc5
      Michal Kucharczyk authored
      ### Fork-Aware Transaction Pool Implementation
      
      This PR introduces a fork-aware transaction pool (fatxpool) enhancing
      transaction management by maintaining the valid state of txpool for
      different forks.
      
      ### High-level overview
      The high level overview was added to
      [`sc_transaction_pool::fork_aware_txpool`](https://github.com/paritytech/polkadot-sdk/blob/3ad0a1b7/substrate/client/transaction-pool/src/fork_aware_txpool/mod.rs#L21)
      module. Use:
      ```
      cargo  doc --document-private-items -p sc-transaction-pool --open
      ```
      to build the doc. It should give a good overview and nice entry point
      into the new pool's mechanics.
      
      <details>
        <summary>Quick overview (documentation excerpt)</summary>
      
      #### View
      For every fork, a view is created. The view is a persisted state of the
      transaction pool computed and updated at the tip of the fork. The view
      is built around the existing `ValidatedPool` structure.
      
      A view is created on every new best block notification. To create a
      view, one of the existing views is chosen and cloned.
      
      When the chain progresses, the view is kept in the cache
      (`retracted_views`) to allow building blocks upon intermediary blocks in
      the fork.
      
      The views are deleted on finalization: views lower than the finalized
      block are removed.
      
      The views are updated with the transactions from the mempool—all
      transactions are sent to the newly created views.
      A maintain process is also executed for the newly created
      views—basically resubmitting and pruning transactions from the
      appropriate tree route.
      
      ##### View store
      View store is the helper structure that acts as a container for all the
      views. It provides some convenient methods.
      
      ##### Submitting transactions
      Every transaction is submitted to every view at the tips of the forks.
      Retracted views are not updated.
      Every transaction also goes into the mempool.
      
      ##### Internal mempool
      Shortly, the main purpose of an internal mempool is to prevent a
      transaction from being lost. That could happen when a transaction is
      invalid on one fork and could be valid on another. It also allows the
      txpool to accept transactions when no blocks have been reported yet.
      
      The mempool removes its transactions when they get finalized.
      Transactions are also periodically verified on every finalized event and
      removed from the mempool if no longer valid.
      
      #### Events
      Transaction events from multiple views are merged and filtered to avoid
      duplicated events.
      `Ready` / `Future` / `Inblock` events are originated in the Views and
      are de-duplicated and forwarded to external listeners.
      `Finalized` events are originated in fork-aware-txpool logic.
      `Invalid` events requires special care and can be originated in both
      view and fork-aware-txpool logic.
      
      #### Light maintain
      Sometime transaction pool does not have enough time to prepare fully
      maintained view with all retracted transactions being revalidated. To
      avoid providing empty ready transaction set to block builder (what would
      result in empty block) the light maintain was implemented. It simply
      removes the imported transactions from ready iterator.
      
      #### Revalidation
      Revalidation is performed for every view. The revalidation process is
      started after a trigger is executed. The revalidation work is terminated
      just after a new best block / finalized event is notified to the
      transaction pool.
      The revalidation result is applied to the newly created view which is
      built upon the revalidated view.
      
      Additionally, parts of the mempool are also revalidated to make sure
      that no transactions are stuck in the mempool.
      
      
      #### Logs
      The most important log allowing to understand the state of the txpool
      is:
      ```
                    maintain: txs:(0, 92) views:[2;[(327, 76, 0), (326, 68, 0)]] event:Finalized { hash: 0x8...f, tree_route: [] }  took:3.463522ms
                                   ^   ^         ^     ^   ^  ^      ^   ^  ^        ^                                                   ^
      unwatched txs in mempool ────┘   │         │     │   │  │      │   │  │        │                                                   │
         watched txs in mempool ───────┘         │     │   │  │      │   │  │        │                                                   │
                           views  ───────────────┘     │   │  │      │   │  │        │                                                   │
                            1st view block # ──────────┘   │  │      │   │  │        │                                                   │
                                 number of ready tx ───────┘  │      │   │  │        │                                                   │
                                      numer of future tx ─────┘      │   │  │        │                                                   │
                                              2nd view block # ──────┘   │  │        │                                                   │
                                            number of ready tx ──────────┘  │        │                                                   │
                                                 number of future tx ───────┘        │                                                   │
                                                                       event ────────┘                                                   │
                                                                             duration  ──────────────────────────────────────────────────┘
      ```
      It is logged after the maintenance is done.
      
      The `debug` level enables per-transaction logging, allowing to keep
      track of all transaction-related actions that happened in txpool.
      </details>
      
      
      ### Integration notes
      
      For teams having a custom node, the new txpool needs to be instantiated,
      typically in `service.rs` file, here is an example:
      
      https://github.com/paritytech/polkadot-sdk/blob/9c547ff3
      
      /cumulus/polkadot-omni-node/lib/src/common/spec.rs#L152-L161
      
      To enable new transaction pool the following cli arg shall be specified:
      `--pool-type=fork-aware`. If it works, there shall be information
      printed in the log:
      ```
      2024-09-20 21:28:17.528  INFO main txpool: [Parachain]  creating ForkAware txpool.
      ````
      
      For debugging the following debugs shall be enabled:
      ```
            "-lbasic-authorship=debug",
            "-ltxpool=debug",
      ```
      *note:* trace for txpool enables per-transaction logging.
      
      ### Future work
      The current implementation seems to be stable, however further
      improvements are required.
      Here is the umbrella issue for future work:
      - https://github.com/paritytech/polkadot-sdk/issues/5472
      
      
      Partially fixes: #1202
      
      ---------
      
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      Co-authored-by: default avatarSebastian Kunert <skunert49@gmail.com>
      Co-authored-by: default avatarIulian Barbu <14218860+iulianbarbu@users.noreply.github.com>
    • Javier Viola's avatar
      Bump zombienet version `v1.3.115` (#6065) · 183b55aa
      Javier Viola authored
      
      Includes:
      - Fixes for `ci`
      - Support to pass a json as arg for `js-script`
      
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
    • Francisco Aguirre's avatar
      Add assets in pool with native to query_acceptable_payment_assets's return (#5599) · d2ba5677
      Francisco Aguirre authored
      
      `XcmPaymentApi::query_acceptable_payment_assets` is an API that returns
      the assets that can be used to pay fees on the runtime where it's
      called.
      For relays and most system chains this was configured only as the native
      asset: ROC and WND.
      However, the asset hubs have the asset conversion pallet, which allows
      fees to be paid in any asset in a pool with the native one.
      This PR adds the list of assets in a pool with the native one to the
      return value of this API for the asset hubs.
      
      ---------
      
      Co-authored-by: default avatarBranislav Kontur <bkontur@gmail.com>
    • Ayevbeosa Iyamu's avatar
      pallet-xcm: added useful error logs (#2408) (#4982) · b20be7c1
      Ayevbeosa Iyamu authored
      
      Added error logs in pallet-xcm to help in debugging, fixes #2408 
      
      ## TODO
      
      - [x] change `log::error` to `tracing::error` format for `xcm-executor`
      - [x] check existing logs, e.g. this one can be extended with more info
      `tracing::error!(target: "xcm::reanchor", ?error, "Failed reanchoring
      with error");`
      - [x] use `tracing` instead of `log` for `pallet-xcm/src/lib.rs`
      
      ---------
      
      Co-authored-by: default avatarAyevbeosa Iyamu <aiyamu@vatebra.com>
      Co-authored-by: default avatarAdrian Catangiu <adrian@parity.io>
      Co-authored-by: default avatarFrancisco Aguirre <franciscoaguirreperez@gmail.com>
      Co-authored-by: default avatarBranislav Kontur <bkontur@gmail.com>
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
    • Bastian Köcher's avatar
      Remove "Check Features" test · 36eadec1
      Bastian Köcher authored
      This is done by zepter any way
    • Branislav Kontur's avatar
      Remove `check-migrations` for rococo chain (#6061) · f7119e40
      Branislav Kontur authored
      This PR removes the `check-migrations` pipelines for all Rococo chains
      because they are going down:
      https://github.com/paritytech/devops/issues/3589, and these checks are
      starting to fail, e.g.:
      
      https://github.com/paritytech/polkadot-sdk/actions/runs/11339904745/job/31535485254?pr=4982
      
      https://github.com/paritytech/polkadot-sdk/actions/runs/11339904745/job/31535486189?pr=4982
      
      https://github.com/paritytech/polkadot-sdk/actions/runs/11339904745/job/31535486471?pr=4982
      
      Additionally, `coretime-westend` was added to the `check-migrations`
      matrix.
  2. Oct 14, 2024
    • Julian Eager's avatar
      Fix `feeless_if` in pallet section (#6032) · 6f03f7a1
      Julian Eager authored
      fixes #5981 
      
      Could confirm the issue with the added tests:
      
      ```
      test tests/split_ui/pass/split_call.rs [should pass] ... error
      ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
      error[E0423]: expected value, found attribute macro `origin`
        --> tests/split_ui/pass/split_call.rs:23:1
         |
      23 | #[frame_support::pallet(dev_mode)]
         | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not a value
         |
         = note: this error originates in the attribute macro `frame_support::pallet` (in Nightly builds, run with -Z macro-backtrace for more info)
      ```
      
      # Description
      
      `origin` unexpectedly resolved to a macro, which is available at the
      span of invocation. The solution here is to use the expansion as a
      function instead of a call and pass in the desired values to avoid
      ambiguities.
    • Oliver Tale-Yazdi's avatar
      Westend: Constant yearly emission (#5999) · aca11dcc
      Oliver Tale-Yazdi authored
      
      Testing the approach of this before it goes live on Polkadot
      https://github.com/polkadot-fellows/runtimes/pull/471
      
      ---------
      
      Signed-off-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
      Co-authored-by: default avatarDónal Murray <donal.murray@parity.io>
    • Serban Iorga's avatar
      Use the umbrella crate for the parachain template (#5991) · d7f01a17
      Serban Iorga authored
      Use the umbrella crate for the parachain template
      
      This covers almost all the dependencies. There are just a few exceptions
      for which I created a separate issue:
      https://github.com/paritytech/polkadot-sdk/issues/5993
      
      Also related to: https://github.com/paritytech/polkadot-sdk/issues/4782
    • Maksym H's avatar
      update cmd timeout (#6038) · ff87db8c
      Maksym H authored
      30 hrs -> 72 hours
      as it has stopped by timeout here
      https://github.com/paritytech/polkadot-sdk/actions/runs/11299872333/job/31431758932
  3. Oct 12, 2024
    • Julian Eager's avatar
      Fix storage expansion in pallet section (#6023) · d1c115b6
      Julian Eager authored
      fixes #5320 @sam0x17 @gupnik 
      
      # Description
      
      The issue could be confirmed with the added example. The cause is for
      macro hygiene, `entries` in the `#( #entries_builder )*` expansion won't
      be able to reference the `entries` defined outside. The solution here is
      to allow the reference to be passed into the expansion with closure.
      
      Or we could just switch to the unhygienic span with `quote::quote!`
      instead such that `entries` will resolve to the "outer" definition.
  4. Oct 11, 2024
    • Maksym H's avatar
      /cmd: Improved devx of benching many pallets simultaneously (#6007) · c0b73433
      Maksym H authored
      
      ### Improved devx of running many pallets simultaneously
      
      Changes to /cmd:
      - Replace (flip) `--continue-on-fail` with `--fail-fast`, but only for
      `bench`. This makes all pallets/runtimes run non-stop by default, as it
      was primary use-case during tests
      - The list of successful/failed pallets was hard to find within tons of
      logs, so decided to write only needed logs in a file, and output as a
      summary in the workflow and in the comment
      - Side fix: updated `tasks_example` to `pallet_example_tasks` to make
      compliant with standard naming
      
      <img width="1006" alt="image"
      src="https://github.com/user-attachments/assets/14896041-7018-4a0d-92b7-4508e81913c2">
      
      + added command results to workflow summary:
      <img width="1275" alt="image"
      src="https://github.com/user-attachments/assets/b4a8afdb-dc9f-4ff9-9720-28a88956035f">
      
      ---------
      
      Co-authored-by: default avatarGitHub Action <action@github.com>
    • Michal Kucharczyk's avatar
      `substrate-node`: removed excessive polkadot-sdk features (#5925) · b45f89c5
      Michal Kucharczyk authored
      Some of the features enabled for `polkadot-sdk` umbrella crate were not
      necessary for substrate node (e.g. all `cumulus-*` or `polkadot-*`
      features) resulting in much longer compilation time. This PR fixes that.
    • Andrei Eres's avatar
      Rename QueueEvent::StartWork (#6015) · e5ccc008
      Andrei Eres authored
      # Description
      
      When we send `QueueEvent::StartWork`, we have already completed the
      execution. This may be a leftover of a previous logic change. Currently,
      the name is misleading, so it would be better to rename it to
      `FinishWork`.
      
      
      https://github.com/paritytech/polkadot-sdk/blob/c52675ef/polkadot/node/core/pvf/src/execute/queue.rs#L632-L646
      
      
      https://github.com/paritytech/polkadot-sdk/blob/c52675ef
      
      /polkadot/node/core/pvf/src/execute/queue.rs#L361-L363
      
      Fixes https://github.com/paritytech/polkadot-sdk/issues/5910
      
      ## Integration
      
      Shouldn't affect downstream projects.
      
      ---------
      
      Co-authored-by: default avatarGitHub Action <action@github.com>
    • Alexander Samusev's avatar
      [ci] Remove quick-benchmarks-omni from GitLab (#6014) · c16ac925
      Alexander Samusev authored
      The `quick-benchmarks-omni` job was moved to GHA (can be found
      [here](https://github.com/paritytech/polkadot-sdk/blob/439b31ef/.github/workflows/check-frame-omni-bencher.yml#L22))
      but hasn't been removed from GitLab . PR fixes it and makes the check
      required.
  5. Oct 10, 2024
    • Maksym H's avatar
      Set larger timeout for cmd.yml (#6006) · 439b31ef
      Maksym H authored
      1800 min
    • Serban Iorga's avatar
      Fix `0003-beefy-and-mmr` test (#6003) · cba7d13b
      Serban Iorga authored
      Resolves https://github.com/paritytech/polkadot-sdk/issues/5972
      
      Only needed to increase some timeouts
    • Francisco Aguirre's avatar
      Remove redundant XCMs from dry run's forwarded xcms (#5913) · 4a70b2cf
      Francisco Aguirre authored
      # Description
      
      This PR addresses
      https://github.com/paritytech/polkadot-sdk/issues/5878.
      
      After dry running an xcm on asset hub, we had redundant xcms showing up
      in the `forwarded_xcms` field of the dry run effects returned.
      These were caused by two things:
      - The `UpwardMessageSender` router always added an element even if there
      were no messages.
      - The two routers on asset hub westend related to bridging (to rococo
      and sepolia) getting the message from their queues when their queues is
      actually the same xcmp queue that was already contemplated.
      
      In order to fix this, we check for no messages in UMP and clear the
      implementation of `InspectMessageQueues` for these bridging routers.
      Keep in mind that the bridged message is still sent, as normal via the
      xcmp-queue to Bridge Hub.
      To keep on dry-running the journey of the message, the next hop to
      dry-run is Bridge Hub.
      That'll be tackled in a different PR.
      
      Added a test in `bridge-hub-westend-integration-tests` and
      `bridge-hub-rococo-integration-tests` that show that dry-running a
      transfer across the bridge from asset hub results in one and only one
      message sent to bridge hub.
      
      ## TODO
      - [x] Functionality
      - [x] Test
      
      ---------
      
      Co-authored-by: command-bot <>
    • RadiumBlock's avatar
      Add RadiumBlock bootnodes to Coretime Polkadot Chain spec (#5967) · cb1f19c5
      RadiumBlock authored
      ✄
      -----------------------------------------------------------------------------
      
      Thank you for your Pull Request! :pray:
      
       Please make sure it follows the
      contribution guidelines outlined in [this
      
      document](https://github.com/paritytech/polkadot-sdk/blob/master/docs/contributor/CONTRIBUTING.md)
      and fill out the
      sections below. Once you're ready to submit your PR for review, please
      delete this section and leave only the text under
      the "Description" heading.
      
      # Description
      
      Please consider adding RadiumBlock bootnodes to Coretime Polkadot Chain
      spec
      
      ## Integration
      
      *In depth notes about how this PR should be integrated by downstream
      projects. This part is mandatory, and should be
      reviewed by reviewers, if the PR does NOT have the `R0-Silent` label. In
      case of a `R0-Silent`, it can be ignored.*
      
      ## Review Notes
      
      *In depth notes about the **implementation** details of your PR. This
      should be the main guide for reviewers to
      understand your approach and effectively review it. If too long, use
      
      [`<details>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details)*.
      
      *Imagine that someone who is depending on the old code wants to
      integrate your new code and the only information that
      they get is this section. It helps to include example usage and default
      value here, with a `diff` code-block to show
      possibly integration.*
      
      *Include your leftover TODOs, if any, here.*
      
      # Checklist
      
      * [x] My PR includes a detailed description as outlined in the
      "Description" and its two subsections above.
      * [ ] My PR follows the [labeling requirements](
      
      https://github.com/paritytech/polkadot-sdk/blob/master/docs/contributor/CONTRIBUTING.md#Process
      ) of this project (at minimum one label for `T` required)
      * External contributors: ask maintainers to put the right label on your
      PR.
      * [ ] I have made corresponding changes to the documentation (if
      applicable)
      * [ ] I have added tests that prove my fix is effective or that my
      feature works (if applicable)
      
      You can remove the "Checklist" section once all have been checked. Thank
      you for your contribution!
      
      ✄
      -----------------------------------------------------------------------------
      
      Co-authored-by: default avatarVeena <veena.john@radiumblock.com>
      Co-authored-by: default avatarDónal Murray <donal.murray@parity.io>
  6. Oct 09, 2024
    • dependabot[bot]'s avatar
      Bump strum from 0.26.2 to 0.26.3 (#5943) · e0062af9
      dependabot[bot] authored
      
      Bumps [strum](https://github.com/Peternator7/strum) from 0.26.2 to
      0.26.3.
      <details>
      <summary>Release notes</summary>
      <p><em>Sourced from <a
      href="https://github.com/Peternator7/strum/releases">strum's
      releases</a>.</em></p>
      <blockquote>
      <h2>v0.26.3</h2>
      <h2>What's Changed</h2>
      <ul>
      <li>Fix typos &amp; misspellings in docs by <a
      href="https://github.com/5-pebbles"><code>@​5-pebbles</code></a> in <a
      href="https://redirect.github.com/Peternator7/strum/pull/347">Peternator7/strum#347</a></li>
      <li>Update <code>heck</code> requirement by <a
      href="https://github.com/smoelius"><code>@​smoelius</code></a> in <a
      href="https://redirect.github.com/Peternator7/strum/pull/346">Peternator7/strum#346</a></li>
      <li>Fix broken links by <a
      href="https://github.com/rainbowatcher"><code>@​rainbowatcher</code></a>
      in <a
      href="https://redirect.github.com/Peternator7/strum/pull/350">Peternator7/strum#350</a></li>
      <li>Interpolate unnamed enum variant fields in to_string attribute by <a
      href="https://github.com/gin-ahirsch"><code>@​gin-ahirsch</code></a> in
      <a
      href="https://redirect.github.com/Peternator7/strum/pull/345">Peternator7/strum#345</a></li>
      <li>add hyperlinks to documentation and clarify derive macros by <a
      href="https://github.com/lolbinarycat"><code>@​lolbinarycat</code></a>
      in <a
      href="https://redirect.github.com/Peternator7/strum/pull/355">Peternator7/strum#355</a></li>
      <li>Use fully qualified syntax for calling <code>get</code> on an
      <code>EnumIter</code>, eliminating ambiguities by <a
      href="https://github.com/bluurryy"><code>@​bluurryy</code></a> in <a
      href="https://redirect.github.com/Peternator7/strum/pull/357">Peternator7/strum#357</a></li>
      </ul>
      <h2>New Contributors</h2>
      <ul>
      <li><a href="https://github.com/5-pebbles"><code>@​5-pebbles</code></a>
      made their first contribution in <a
      href="https://redirect.github.com/Peternator7/strum/pull/347">Peternator7/strum#347</a></li>
      <li><a
      href="https://github.com/rainbowatcher"><code>@​rainbowatcher</code></a>
      made their first contribution in <a
      href="https://redirect.github.com/Peternator7/strum/pull/350">Peternator7/strum#350</a></li>
      <li><a
      href="https://github.com/gin-ahirsch"><code>@​gin-ahirsch</code></a>
      made their first contribution in <a
      href="https://redirect.github.com/Peternator7/strum/pull/345">Peternator7/strum#345</a></li>
      <li><a
      href="https://github.com/lolbinarycat"><code>@​lolbinarycat</code></a>
      made their first contribution in <a
      href="https://redirect.github.com/Peternator7/strum/pull/355">Peternator7/strum#355</a></li>
      <li><a href="https://github.com/bluurryy"><code>@​bluurryy</code></a>
      made their first contribution in <a
      href="https://redirect.github.com/Peternator7/strum/pull/357">Peternator7/strum#357</a></li>
      </ul>
      <p><strong>Full Changelog</strong>: <a
      href="https://github.com/Peternator7/strum/compare/v0.26.2...v0.26.3">https://github.com/Peternator7/strum/compare/v0.26.2...v0.26.3</a></p>
      </blockquote>
      </details>
      <details>
      <summary>Changelog</summary>
      <p><em>Sourced from <a
      href="https://github.com/Peternator7/strum/blob/master/CHANGELOG.md">strum's
      changelog</a>.</em></p>
      <blockquote>
      <h2>0.26.3 (strum_macros)</h2>
      <ul>
      <li><a
      href="https://redirect.github.com/Peternator7/strum/pull/344">#344</a>:
      Hide <code>EnumTable</code> because it's going to be deprecated in the
      next
      version.</li>
      <li><a
      href="https://redirect.github.com/Peternator7/strum/pull/357">#357</a>:
      Fixes an incompatiblity with <code>itertools</code> by using the fully
      qualified name rather than the inherent method.</li>
      <li><a
      href="https://redirect.github.com/Peternator7/strum/pull/345">#345</a>:
      Allows unnamed tuple like variants to use their variants in
      string interpolation. <code>#[strum(to_string = &quot;Field 0: {0},
      Field 1: {1})&quot;)]</code> will now work for tuple variants</li>
      </ul>
      </blockquote>
      </details>
      <details>
      <summary>Commits</summary>
      <ul>
      <li><a
      href="https://github.com/Peternator7/strum/commit/c89286fc2a4916ee61133aaa8d63fce83f6fc39e"><code>c89286f</code></a>
      Update changelog &amp; strum_macros version</li>
      <li><a
      href="https://github.com/Peternator7/strum/commit/0c85c16e12e80dd49e75117e7c94f697d0ad06d0"><code>0c85c16</code></a>
      Use associated function syntax for calling <code>get</code> on an
      <code>EnumIter</code>, eliminatin...</li>
      <li><a
      href="https://github.com/Peternator7/strum/commit/9689d7bb55bad0269c3fc9679a7434670139b12b"><code>9689d7b</code></a>
      add hyperlinks to documentation and clarify derive macros (<a
      href="https://redirect.github.com/Peternator7/strum/issues/355">#355</a>)</li>
      <li><a
      href="https://github.com/Peternator7/strum/commit/186d29f6a1691b6356a2d85d66f8904b9a5d3140"><code>186d29f</code></a>
      Interpolate unnamed enum variant fields in to_string attribute (<a
      href="https://redirect.github.com/Peternator7/strum/issues/345">#345</a>)</li>
      <li><a
      href="https://github.com/Peternator7/strum/commit/410062e122e001e6c3725cdc91483a0d4de5ca31"><code>410062e</code></a>
      Fix broken links (<a
      href="https://redirect.github.com/Peternator7/strum/issues/350">#350</a>)</li>
      <li><a
      href="https://github.com/Peternator7/strum/commit/1e46337eb2ec71caccf2fc35929e2f0cbedbb3c2"><code>1e46337</code></a>
      Update <code>heck</code> requirement (<a
      href="https://redirect.github.com/Peternator7/strum/issues/346">#346</a>)</li>
      <li><a
      href="https://github.com/Peternator7/strum/commit/f5fce032ed381a334e81676bd2c391353c265476"><code>f5fce03</code></a>
      Fix typos &amp; misspellings in docs (<a
      href="https://redirect.github.com/Peternator7/strum/issues/347">#347</a>)</li>
      <li>See full diff in <a
      href="https://github.com/Peternator7/strum/compare/v0.26.2...v0.26.3">compare
      view</a></li>
      </ul>
      </details>
      <br />
      
      
      [![Dependabot compatibility
      score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=strum&package-manager=cargo&previous-version=0.26.2&new-version=0.26.3)](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] <support@github.com>
      Co-authored-by: default avatardependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    • Andrei Eres's avatar
      Add PVF execution priority (#4837) · e294d628
      Andrei Eres authored
      
      Resolves https://github.com/paritytech/polkadot-sdk/issues/4632
      
      The new logic optimizes the distribution of execution jobs for disputes,
      approvals, and backings. Testing shows improved finality lag and
      candidate checking times, especially under heavy network load.
      
      ### Approach
      
      This update adds prioritization to the PVF execution queue. The logic
      partially implements the suggestions from
      https://github.com/paritytech/polkadot-sdk/issues/4632#issuecomment-2209188695.
      
      We use thresholds to determine how much a current priority can "steal"
      from lower ones:
      -  Disputes: 70%
      -  Approvals: 80%
      -  Backing System Parachains: 100%
      -  Backing: 100%
      
      A threshold indicates the portion of the current priority that can be
      allocated from lower priorities.
      
      For example:
      -  Disputes take 70%, leaving 30% for approvals and all backings.
      - 80% of the remaining goes to approvals, which is 30% * 80% = 24% of
      the original 100%.
      - If we used parts of the original 100%, approvals couldn't take more
      than 24%, even if there are no disputes.
      
      Assuming a maximum of 12 executions per block, with a 6-second window, 2
      CPU cores, and a 2-second run time, we get these distributions:
      
      -  With disputes: 8 disputes, 3 approvals, 1 backing
      -  Without disputes: 9 approvals, 3 backings
      
      It's worth noting that when there are no disputes, if there's only one
      backing job, we continue processing approvals regardless of their
      fulfillment status.
      
      ### Versi Testing 40/20
      
      Testing showed a slight difference in finality lag and candidate
      checking time between this pull request and its base on the master
      branch. The more loaded the network, the greater the observed
      difference.
      
      Testing Parameters:
      -  40 validators (4 malicious)
      -  20 gluttons with 2 seconds of PVF execution time
      -  6 VRF modulo samples
      -  12 required approvals
      
      ![Pasted Graphic
      3](https://github.com/user-attachments/assets/8b6163a4-a1c9-44c2-bdba-ce1ef4b1eba7)
      ![Pasted Graphic
      4](https://github.com/user-attachments/assets/9f016647-7727-42e8-afe9-04f303e6c862)
      
      ### Versi Testing 80/40
      
      For this test, we compared the master branch with the branch from
      https://github.com/paritytech/polkadot-sdk/pull/5616. The second branch
      is based on the current one but removes backing jobs that have exceeded
      their time limits. We excluded malicious nodes to reduce noise from
      disputing and banning validators. The results show that, under the same
      load, nodes experience less finality lag and reduced recovery and check
      time. Even parachains are functioning with a shorter block time,
      although it remains over 6 seconds.
      
      Testing Parameters:
      -  80 validators (0 malicious)
      -  40 gluttons with 2 seconds of PVF execution time
      -  6 VRF modulo samples
      -  30 required approvals
      
      
      ![image](https://github.com/user-attachments/assets/42bcc845-9115-4ae3-9910-286b77a60bbf)
      
      ---------
      
      Co-authored-by: default avatarAndrei Sandu <54316454+sandreim@users.noreply.github.com>
    • Vincent Geddes's avatar
      Snowbridge V2 docs (#5902) · 90ff47d9
      Vincent Geddes authored
      Here are MD docs for V2 @acatangiu @franciscoaguirre
      
       . Let me know what
      you think.
      
      ---------
      
      Co-authored-by: default avatarAdrian Catangiu <adrian@parity.io>
      Co-authored-by: default avatarFrancisco Aguirre <franciscoaguirreperez@gmail.com>
      Co-authored-by: default avatarAlistair Singh <alistair.singh7@gmail.com>
    • ordian's avatar
      Fix u256 conversion in BABE (#5994) · 292bfac4
      ordian authored
      
      https://github.com/paritytech/polkadot-sdk/pull/5886#discussion_r1793423401
      
      ---------
      
      Co-authored-by: default avatarBastian Köcher <info@kchr.de>
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
    • Alexander Samusev's avatar
      [ci] Move test-linux-stable-no-try-runtime to GHA (#5979) · 48b56aa1
      Alexander Samusev authored
      PR moves `test-linux-stable-no-try-runtime` from gitlab to github.
      I disabled two tests because our current runners don't have necessary
      syscalls enabled. Will continue working on it in
      https://github.com/paritytech/ci_cd/issues/1056
      Also PR remove `gh cli` installation since it's installed in the
      `ci-unified` image.
      
      close https://github.com/paritytech/ci_cd/issues/1023
    • Andrei Eres's avatar
      Bump PoV request timeout (#5924) · 3ad12919
      Andrei Eres authored
      # Description
      
      We previously set the PoV request timeout to 1.2s based on synchronous
      backing, which allowed for 5 PoVs per relay block. With asynchronous
      backing, we no longer have a time budget and can increase the value to
      2s.
      
      Fixes https://github.com/paritytech/polkadot-sdk/issues/5885
      
      ## Integration
      
      This PR shouldn't affect downstream projects.
      
      ## Review Notes
      
      This PR can be followed by experiments with Gluttons on Kusama to
      confirm that the timeout is sufficient.
    • Egor_P's avatar
      [Release/CI] Github flow to build `polkadot`/`polkadot-parachain` rc binaries... · c4770762
      Egor_P authored
      [Release/CI] Github flow to build `polkadot`/`polkadot-parachain` rc binaries and deb package (#5963)
      
      This PR introduces a GitHub flow, that should replace a semi manual part
      of the release process to build rc binaries for `polkadot` and
      `polkadot-parachain` + the `polkadot` deb package.
      
      Right now, this part of the release is done on the `cleanroom` machine
      by the release engineers via triggering bash scripts directly on the
      server. These GitHub flows should replace it and move everything to the
      CI.
      
      The whole flow is meant to be run in the new
      [paritytech-release](https://github.com/paritytech-release) where the
      automated release is going to be moved.
      
      The flow includes the following steps:
      - Build `polkadot`, `polakdot-prepare-worker`, `polkadot-execute-worker`
      and `polkadopt-parachain` binaries
      - Sign those artefacts using `gpg` and generate a sha256 checksum
      - Build deb package for `polakdot`
      - Make a GitHub attestation
      - Upload artefacts to the S3 buckets
      
      Closes: https://github.com/paritytech/release-engineering/issues/223
      
      ---------
      
      Co-authored-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
    • Alexander Samusev's avatar
      [ci] Remove short-benchmarks from Gitlab (#5988) · 6765bcd8
      Alexander Samusev authored
      PR removes short-benchmarks from GitLab, adds condition for
      cargo-check-rutimes
    • Javier Viola's avatar
      Disable flaky tests reported in 5972/5973/5974 (#5976) · 6c2b46f9
      Javier Viola authored
      Disable flaky tests reported in:
      #5972 
      #5973 
      #5974
  7. Oct 08, 2024
  8. Oct 07, 2024
    • Ankan's avatar
      [Staking] Noop refactor to prep pallet for currency fungible migration (#5399) · 9128dca3
      Ankan authored
      This is a no-op refactor of staking pallet to move all `T::Currency` api
      calls under one module.
      
      A followup PR (https://github.com/paritytech/polkadot-sdk/pull/5501)
      will implement the Currency <> Fungible migration for the pallet.
      
      Introduces the new `asset` module that centralizes all interaction with
      `T::Currency`. This is an attempt to try minimising staking logic
      changes to minimal parts of the codebase.
      
      ## Things of note
      - `T::Currency::free_balance` in current implementation includes both
      staked (locked) and liquid tokens (kinda sounds wrong to call it free
      then). This PR renames it to `stakeable_balance` (any better name
      suggestions?). With #5501, this will become `free balance that can be
      held/staked` + `already held/staked balance`.
    • Alexander Theißen's avatar
      revive: Bump PolkaVM and add static code validation (#5939) · 5f55185e
      Alexander Theißen authored
      
      This PR adds **static** validation that prevents upload of code that:
      
      1) Contains basic blocks larger than the specified limit (currently
      `200`)
      2) Contains invalid instructions
      3) Uses the `sbrk` instruction
      
      Doing that statically at upload time (instead of at runtime) allows us
      to change the basic block limit or add instructions later without
      worrying about breaking old code. This is well worth the linear scan of
      the whole blob on deployment in my opinion. Please note that those
      checks are not applied when existing code is just run (hot path).
      
      Also some drive by fixes:
      - Remove superflous `publish = true`
      - Abort fixture build on warning and fix existing warnings
      - Re-enable optimizations in fixture builds (should be fixed now in
      PolkaVM)
      - Disable stripping for fixture builds (maybe we can get some line
      information on trap via `RUST_LOG`)
      
      ---------
      
      Co-authored-by: command-bot <>
      Co-authored-by: default avatarPG Herveou <pgherveou@gmail.com>
    • Shawn Tabrizi's avatar
      Introduce and Implement `VestedTransfer` Trait (#5630) · 38466913
      Shawn Tabrizi authored
      
      This PR introduces a `VestedTransfer` Trait, which handles making a
      transfer while also applying a vesting schedule to that balance.
      
      This can be used in pallets like the Treasury pallet, where now we can
      easily introduce a `vested_spend` extrinsic as an alternative to giving
      all funds up front.
      
      We implement `()` for the `VestedTransfer` trait, which just returns an
      error, and allows anyone to opt out from needing to use or implement
      this trait.
      
      This PR also updates the logic of `do_vested_transfer` to remove the
      "pre-check" which was needed before we had a default transactional layer
      in FRAME.
      
      Finally, I also fixed up some bad formatting in the test.rs file.
      
      ---------
      
      Co-authored-by: default avatarGuillaume Thiolliere <gui.thiolliere@gmail.com>
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
    • Branislav Kontur's avatar
      Bridges - add version guarding for standalone relaying of parachains and messages (#5952) · 5778b455
      Branislav Kontur authored
      This PR adds the ability to start version guarding when performing
      standalone relaying of messages and parachains.
      
      ## Follow-up
      - decouple and simplify `fn start_relay_guards`:
      https://github.com/paritytech/polkadot-sdk/issues/5923
      
      ---------
      
      Co-authored-by: command-bot <>
    • Shoyu Vanilla (Flint)'s avatar
      [FRAME] fix: Do not emit `Issued { amount: 0 }` event (#5946) · 215252e7
      Shoyu Vanilla (Flint) authored
      closes #5942
      
      Couldn't find any emissions of `Event::Issued` without amount check
      other than in this PR.
      
      Currently, we have;
      
      
      https://github.com/paritytech/polkadot-sdk/blob/4bda956d/substrate/frame/balances/src/impl_currency.rs#L212-L220
      
      and
      
      
      https://github.com/paritytech/polkadot-sdk/blob/4bda956d/substrate/frame/balances/src/impl_currency.rs#L293-L306