Skip to content

Conversation

@ggwpez
Copy link
Member

@ggwpez ggwpez commented Jun 25, 2025

The .polkavm files are not recompiled when deleting target/pallet-revive-fixtures. I assume that CI is not caching that folder or the .polkavm file extension. This leads to the include_bytes! macro to not finding these files.

Tested it here polkadot-fellows/runtimes#785

@ggwpez ggwpez added the T2-pallets This PR/Issue is related to a particular pallet. label Jun 25, 2025
@athei athei requested a review from pgherveou June 25, 2025 13:11
@athei athei added this pull request to the merge queue Jun 25, 2025
@ggwpez ggwpez added the A4-backport-stable2506 Pull request must be backported to the stable2506 release branch label Jun 25, 2025
Merged via the queue into master with commit e774263 Jun 25, 2025
322 of 326 checks passed
@athei athei deleted the oty-revive-fixtures branch June 25, 2025 15:09
@paritytech-release-backport-bot

Successfully created backport PR for stable2506:

paritytech-release-backport-bot bot pushed a commit that referenced this pull request Jun 25, 2025
The .polkavm files are not recompiled when deleting
`target/pallet-revive-fixtures`. I assume that CI is not caching that
folder or the .polkavm file extension. This leads to the
`include_bytes!` macro to not finding these files.

Tested it here polkadot-fellows/runtimes#785

---------

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>
(cherry picked from commit e774263)
@ggwpez ggwpez added A4-backport-stable2503 Pull request must be backported to the stable2503 release branch labels Jun 26, 2025
@paritytech-release-backport-bot

Successfully created backport PR for stable2503:

paritytech-release-backport-bot bot pushed a commit that referenced this pull request Jun 26, 2025
The .polkavm files are not recompiled when deleting
`target/pallet-revive-fixtures`. I assume that CI is not caching that
folder or the .polkavm file extension. This leads to the
`include_bytes!` macro to not finding these files.

Tested it here polkadot-fellows/runtimes#785

---------

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>
(cherry picked from commit e774263)
EgorPopelyaev pushed a commit that referenced this pull request Jun 27, 2025
Backport #8980 into `stable2503` from ggwpez.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>
EgorPopelyaev pushed a commit that referenced this pull request Jun 27, 2025
Backport #8980 into `stable2503` from ggwpez.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>
EgorPopelyaev added a commit that referenced this pull request Jun 30, 2025
Backport #8980 into `stable2506` from ggwpez.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>
Co-authored-by: Egor_P <[email protected]>
alstjd0921 added a commit to bifrost-platform/polkadot-sdk that referenced this pull request Aug 14, 2025
* [stable2503] Backport paritytech#6827 (paritytech#8770)

Backport paritytech#6827 into `stable2503` from Overkillus.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Maciej <[email protected]>
Co-authored-by: ordian <[email protected]>
Co-authored-by: Stephane Gurgenidze <[email protected]>
Co-authored-by: ordian <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* [stable2503] Backport paritytech#8861 (paritytech#8867)

Backport paritytech#8861 into `stable2503` from ordian.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: ordian <[email protected]>

* [stable2503] Backport paritytech#8755 (paritytech#8814)

Backport paritytech#8755 into `stable2503` from iulianbarbu.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Signed-off-by: Iulian Barbu <[email protected]>
Co-authored-by: Iulian Barbu <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* [stable2503] Backport paritytech#8832 (paritytech#8846)

Backport paritytech#8832 into `stable2503` from alexggh.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Andrei Sandu <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Egor_P <[email protected]>

* [stable2503] Backport paritytech#8837 (paritytech#8884)

Backport paritytech#8837 into `stable2503` from tdimitrov.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Tsvetomir Dimitrov <[email protected]>
Co-authored-by: Javier Viola <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* [stable2503] Backport paritytech#8345: tx/metrics: Add metrics for the RPC v2 transactionWatch_v1_submitAndWatch (paritytech#8759)

Backport paritytech#8345 into `stable2503` from lexnv.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Signed-off-by: Alexandru Vasile <[email protected]>
Co-authored-by: Alexandru Vasile <[email protected]>
Co-authored-by: Alexandru Vasile <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* [stable2503] Backport paritytech#8834 (paritytech#8889)

Backport paritytech#8834 into `stable2503` from alexggh.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Javier Viola <[email protected]>
Co-authored-by: Javier Viola <[email protected]>

* [stable2503] Backport paritytech#8948 (paritytech#8959)

Backport paritytech#8948 into `stable2503` from alexggh.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* [stable2503] Backport paritytech#8787 (paritytech#8913)

Backport paritytech#8787 into `stable2503` from karolk91.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Co-authored-by: Karol Kokoszka <[email protected]>
Co-authored-by: Egor_P <[email protected]>
Co-authored-by: Karol Kokoszka <[email protected]>

* [stable2503] Post crates release adjustments (paritytech#8967)

Reordering of the prdocs and clean up after crates release to meet the
pipeline requirements

* [stable2503] Backport paritytech#8973 (paritytech#8978)

Backport paritytech#8973 into `stable2503` from AndreiEres.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Andrei Eres <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* [stable2503] Backport paritytech#8980 (paritytech#8995)

Backport paritytech#8980 into `stable2503` from ggwpez.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>

* [stable2503] Post crates release adjustments (paritytech#9009)

Reordering of the prdocs and clean up after crates release to meet the
pipeline requirements

---------

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: paritytech-release-backport-bot[bot] <191369287+paritytech-release-backport-bot[bot]@users.noreply.github.com>
Co-authored-by: Alexander Theißen <[email protected]>

* [stable2503] Backport paritytech#8932 (paritytech#9010)

Backport paritytech#8932 into `stable2503` from bkchr.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Egor_P <[email protected]>

* [stable2503] Backport paritytech#8694 (paritytech#9030)

Backport paritytech#8694 into `stable2503` from tmpolaczyk.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: tmpolaczyk <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* [stable2503] Backport paritytech#9050 (paritytech#9068)

Backport paritytech#9050 into `stable2503` from ordian.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: ordian <[email protected]>

* [stable2503] Backport paritytech#9092 (paritytech#9096)

Backport paritytech#9092 into `stable2503` from EgorPopelyaev.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Egor_P <[email protected]>

* [stable2503] Backport paritytech#9102 (paritytech#9109)

Backport paritytech#9102 into `stable2503` from iulianbarbu.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Signed-off-by: Iulian Barbu <[email protected]>
Co-authored-by: Iulian Barbu <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* [stable2503] Backport paritytech#9130 (paritytech#9130)

Partial manual backport of
[https://github.com/paritytech/polkadot-sdk/pull/8369](https://github.com/paritytech/polkadot-sdk/pull/8369)
- includes only the patched file with `ToParachainDeliveryHelper`, which
helps finalize
[https://github.com/polkadot-fellows/runtimes/pull/709](https://github.com/polkadot-fellows/runtimes/pull/709)
for AHM.

_(it is just benchmarking change, nothing else)_

* [stable2503] Post crates.io release updates (paritytech#9138)

This PR merges back to the stable2503 crates version bumps, node version
bumps and prdocs reordering

* [stable2503] Backport paritytech#9139 (paritytech#9144)

Backport paritytech#9139 into `stable2503` from bkontur.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Branislav Kontur <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* [stable2503] Backport paritytech#8193 (paritytech#9377)

Backport paritytech#8193 into `stable2503` from alvicsam.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Alexander Samusev <[email protected]>

* [stable2503] Backport paritytech#9094 (paritytech#9155)

Backport paritytech#9094 into `stable2503` from alexggh.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* [stable2503] Backport paritytech#9137 (paritytech#9199)

Backport paritytech#9137 into `stable2503` from franciscoaguirre.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Co-authored-by: Francisco Aguirre <[email protected]>
Co-authored-by: EgorPopelyaev <[email protected]>

* [stable2503] Backport paritytech#9179 (paritytech#9303)

Backport paritytech#9179 into `stable2503` from karolk91.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Karol Kokoszka <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Branislav Kontur <[email protected]>

* [stable2503] Backport paritytech#9264 (paritytech#9275)

Backport paritytech#9264 into `stable2503` from alexggh.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* [stable2503] Backport paritytech#9281 (paritytech#9328)

Backport paritytech#9281 into `stable2503` from lexnv.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Signed-off-by: Alexandru Vasile <[email protected]>
Co-authored-by: Alexandru Vasile <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Egor_P <[email protected]>

* [stable2503] Backport paritytech#9325 (paritytech#9334)

Backport paritytech#9325 into `stable2503` from TDemeco.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Tobi Demeco <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* [stable2503] Backport paritytech#9354 (paritytech#9374)

Backport paritytech#9354 into `stable2503` from karolk91.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Karol Kokoszka <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Egor_P <[email protected]>

* [stable2503] Backport paritytech#9355 (paritytech#9369)

Backport paritytech#9355 into `stable2503` from gui1117.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Guillaume Thiolliere <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* [stable2503] Backport paritytech#9195 (paritytech#9404)

Backport paritytech#9195 into `stable2503` from karolk91.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Co-authored-by: Karol Kokoszka <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Adrian Catangiu <[email protected]>

* [stable2503] Post crates release updates (paritytech#9408)

This PR includes:
- crates version bumps
- node version bump
- prdocs reorderings
- and formatting for the pipeline

* Bump crate versions in: cumulus/polkadot-parachain/Cargo.toml

* Bump spec_version to 1_015_000

* Apply plan

* Edit plan

* Adjust and apply plan

* Edit and apply plan

* [stable2407 backport] runtime: make the candidate relay parent progression check more stric… (paritytech#5157)

Backports paritytech#5113 on top of
stable2407

* Backport paritytech#4791 (paritytech#5247)

Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Jun Jiang <[email protected]>

* [stable2407] Backport paritytech#5321 (paritytech#5332)

Backports paritytech#5321 on the
stable release

* [stable2407] backport paritytech#4937 (paritytech#5337)

Backport paritytech#4937 on the
stable release

* [stable2407] Backport PoV-reclaim fixes (paritytech#5273, paritytech#5281) (paritytech#5351)

Backports paritytech#5273 & paritytech#5281

---------

Co-authored-by: Guillaume Thiolliere <[email protected]>

* Move prdocs

* [Backport] Bump serde_json from 1.0.120 to 1.0.121 in the known_good_semver group (paritytech#5169) (paritytech#5367)

Bumps the known_good_semver group with 1 update:
[serde_json](https://github.com/serde-rs/json).

Updates `serde_json` from 1.0.120 to 1.0.121
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/serde-rs/json/releases">serde_json's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.121</h2>
<ul>
<li>Optimize position search in error path (<a
href="https://github.com/serde-rs/json/issues/1160">#1160</a>,
thanks <a

href="https://github.com/purplesyringa"><code>@​purplesyringa</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a

href="https://github.com/serde-rs/json/commit/eca2658a22cb39952783cb6914eb18242659f66a"><code>eca2658</code></a>
Release 1.0.121</li>
<li><a

href="https://github.com/serde-rs/json/commit/b0d678cfb473386830d559b6ab255d9e21ba39c5"><code>b0d678c</code></a>
Merge pull request <a
href="https://github.com/serde-rs/json/issues/1160">#1160</a>
from iex-rs/efficient-position</li>
<li><a

href="https://github.com/serde-rs/json/commit/b1edc7d13f72880fd0ac569403a409e5f7961d5f"><code>b1edc7d</code></a>
Optimize position search in error path</li>
<li><a

href="https://github.com/serde-rs/json/commit/40dd7f5e862436f02471fe076f3486c55e472bc2"><code>40dd7f5</code></a>
Merge pull request <a
href="https://github.com/serde-rs/json/issues/1159">#1159</a>
from iex-rs/fix-recursion</li>
<li><a

href="https://github.com/serde-rs/json/commit/6a306e6ee9f47f3b37088217ffe3ebe9bbb54e5a"><code>6a306e6</code></a>
Move call to tri! out of check_recursion!</li>
<li><a

href="https://github.com/serde-rs/json/commit/3f1c6de4af28b1f6c5100da323f2bffaf7c2083f"><code>3f1c6de</code></a>
Ignore byte_char_slices clippy lint in test</li>
<li><a

href="https://github.com/serde-rs/json/commit/3fd6f5f49dc1c732d9b1d7dfece4f02c0d440d39"><code>3fd6f5f</code></a>
Merge pull request <a
href="https://github.com/serde-rs/json/issues/1153">#1153</a>
from dpathakj/master</li>
<li><a

href="https://github.com/serde-rs/json/commit/fcb5e83e44abe0f9c27c755a240a6ad56312c090"><code>fcb5e83</code></a>
Correct documentation URL for Value's Index impl.</li> <li>See full diff
in <a

href="https://github.com/serde-rs/json/compare/v1.0.120...v1.0.121">compare
view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility

score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.120&new-version=1.0.121)](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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions

</details>

---------

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>

* Move prdoc to release folder

* Backport timestamp logging fix (paritytech#5459)

paritytech@03c45b9

---------

Co-authored-by: Gonçalo Pestana <[email protected]>

* [Backport] Add feature to allow Aura collator to use full PoV size (paritytech#5393) (paritytech#5507)

This PR introduces a feature that allows to optionally enable using the
full PoV size.

Technically, we're ready to enable it by default, but as corresponding
runtime changes have not been propagated to the system parachain
runtimes yet, doing so could put them at risk. On the other hand, there
are teams that could benefit from it right now, and it makes no sense
for them to wait for the fellowship release and everything.

---------

Co-authored-by: Andrei Sandu <[email protected]>

* [Backport] Always include UnpaidExecution, not just when revenue is nonzero (paritytech#5510)

Backport paritytech#5369 to stable2407, which was already backported to v1.14 in
paritytech#5370

* Update plan

* [stable2407] Backport paritytech#5581 (paritytech#5603)

Backport paritytech#5581 into `stable2407` (cc @franciscoaguirre).

The dry-run shows in `forwarded_xcms` all the messages in the queues
at the time of calling the API.
Each time the API is called, the result could be different.
You could get messages even if you dry-run something that doesn't send
a message, like a `System::remark`.

This commit fixes this by clearing the message queues before doing the
dry-run, so the only messages left are the ones the users of the API actually
care about.

Co-authored-by: Francisco Aguirre <[email protected]>

* [stable2407] Backport paritytech#5466 (paritytech#5524)

Backport paritytech#5466 into `stable2407` (cc @ggwpez).

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* Backport 1.12.0: check-weight: Disable total pov size check for mandatory extrinsics (paritytech#4592)

Backport of paritytech#4571

---------

Co-authored-by: command-bot <>

* Implement `CheckMetadataHash` extension (paritytech#4274) (paritytech#4619)

This implements the `CheckMetadataHash` extension as described in
[RFC78](https://polkadot-fellows.github.io/RFCs/approved/0078-merkleized-metadata.html).

Besides the signed extension, the `substrate-wasm-builder` is extended
to support generating the metadata-hash.

Closes: paritytech#291

---------

Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: joe petrowski <[email protected]>
Co-authored-by: Liam Aharon <[email protected]>
Co-authored-by: Kian Paimani <[email protected]>

* init bifrost-polkadot-base

* fix: add legacy transferrable balance to currency trait (#1)

* feat: add a getter function to retrieve raw keystore value (#2)

* [stable2407] Backport paritytech#5713 (paritytech#5739)

Backport paritytech#5713 into `stable2407` from bkchr.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* [stable2407] Backport paritytech#3049 (paritytech#5734)

Backport paritytech#3049 into `stable2407` from bgallois.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Benjamin Gallois <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* Move prdocs to release folder

* Bump polkadot node version

* Update plan

* [stable2407]  Backport Fix parity-publish (paritytech#5670) (paritytech#6019)

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* [stable2407] Backport docker fix to 2407 (paritytech#6017)

This PR backports fixes for the docker publishing flow from master:
- paritytech#5896
- paritytech#5387

* [stable2407] Backport paritytech#5913 (paritytech#6004)

Backport paritytech#5913 into `stable2407` from franciscoaguirre.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Co-authored-by: Francisco Aguirre <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* [stable2407] Backport paritytech#4803 (paritytech#6097)

Backport paritytech#4803 into `stable2407` from gotnoshoeson.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Miles Patterson <[email protected]>

* [stable2407] Backport paritytech#5599 (paritytech#6068)

Backport paritytech#5599 into `stable2407` from franciscoaguirre.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Co-authored-by: Francisco Aguirre <[email protected]>
Co-authored-by: command-bot <>
Co-authored-by: Shawn Tabrizi <[email protected]>

* [stable2407] Backport paritytech#6205 (paritytech#6238)

Backport paritytech#6205 into `stable2407` from bkchr.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: command-bot <>

* [stable2407] Backport paritytech#6148 (paritytech#6232)

Backport paritytech#6148 into `stable2407` from bkontur.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Co-authored-by: Branislav Kontur <[email protected]>

* Bump node version

* Move prdocs

* Update plan

* Apply plan

* [stable2407] Backport paritytech#6417 (paritytech#6437)

Backport paritytech#6417 into `stable2407` from alindima.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Alin Dima <[email protected]>

* [Release|CI/CD] Fix audiences changelog template (paritytech#6444)

This PR addresses an issue mentioned
[here](paritytech#6424 (comment)).
The problem was that when the prdoc file has two audiences, but only one
description like in
[prdoc_5660](https://github.com/paritytech/polkadot-sdk/blob/master/prdoc/1.16.0/pr_5660.prdoc)
it was ignored by the template.

* [stable2407] Backport paritytech#6526 (paritytech#6530)

Backport paritytech#6526 into `stable2407` from bkchr.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: command-bot <>
Co-authored-by: Bastian Köcher <[email protected]>

* [stable2407] Backport paritytech#6645 (paritytech#6655)

Backport paritytech#6645 into `stable2407` from bkontur.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Co-authored-by: Branislav Kontur <[email protected]>

* [stable2407] Backport paritytech#6579 (paritytech#6634)

Backport paritytech#6579 into `stable2407` from bkontur.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Branislav Kontur <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* [stable2407] Backport paritytech#6603 (paritytech#6668)

Backport paritytech#6603 into `stable2407` from lexnv.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Alexandru Vasile <[email protected]>

* Backport paritytech#5887 to `stable2407` (paritytech#6674)

This PR accompanies paritytech#6672 to make backported changes consistent across
releases.

---------

Co-authored-by: Egor_P <[email protected]>

* [stable2407] Backport paritytech#6031 (paritytech#6106)

Backport paritytech#6031 into `stable2407` from drewstone.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: drewstone <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* [stable2407] Backport paritytech#6080 (paritytech#6180)

Backport paritytech#6080 into `stable2407` from franciscoaguirre.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Co-authored-by: Francisco Aguirre <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* [stable2407] Backport paritytech#6540 (paritytech#6591)

Backport paritytech#6540 into `stable2407` from Ank4n.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Ankan <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* [stable2407] Backport paritytech#6506 (paritytech#6657)

Backport paritytech#6506 into `stable2407` from Dinonard.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Dino Pačandi <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* [stable2407] Backport paritytech#6459 (paritytech#6663)

Backport paritytech#6459 into `stable2407` from franciscoaguirre.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Co-authored-by: Francisco Aguirre <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* Bump polkadot node version

* Move prdoxs to release folder

* Apply plan

* Update Cargo.lock

* [stable2407] Backport paritytech#6690 (paritytech#6798)

Backport paritytech#6690 into `stable2407` from alexggh.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Alexandru Gheorghe <[email protected]>

* [stable2407] Backport paritytech#6729 (paritytech#6828)

Backport paritytech#6729 into `stable2407` from alexggh.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>

* [stable2407] Backport paritytech#6662 (paritytech#6801)

Backport paritytech#6662 into `stable2407` from eskimor.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Co-authored-by: eskimor <[email protected]>
Co-authored-by: Andrei Sandu <[email protected]>

* [stable2407] Backport paritytech#5311 (paritytech#6804)

Backport paritytech#5311 into `stable2407` from Doordashcon.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Doordashcon <[email protected]>

* [stable2407] Backport paritytech#6696 (paritytech#6839)

Backport paritytech#6696 into `stable2407` from alexggh.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>

* [stable2407] Backport paritytech#6864 (paritytech#6877)

Backport paritytech#6864 into `stable2407` from alexggh.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Alexandru Gheorghe <[email protected]>

* [stable2407] Backport paritytech#7050 (paritytech#7058)

Backport paritytech#7050 into `stable2407` from skunert.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Sebastian Kunert <[email protected]>

* [stable2407] Backport paritytech#7013 (paritytech#7015)

Backport paritytech#7013 into `stable2407` from bkchr.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: EgorPopelyaev <[email protected]>

* Switch to parity-large runners to be able to run on the github (paritytech#7113)

* Move prdocs to release folder

* Bump node_version

* [stable2407] Backport paritytech#7116 (paritytech#7135)

Backport paritytech#7116 into `stable2407` from alexggh.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Alexandru Gheorghe <[email protected]>

* Move prdoc to release folder

* [stable2407] Backport paritytech#6807 (paritytech#7155)

Backport paritytech#6807 into `stable2407` from alexggh.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>

* [stable2407] Backport paritytech#6973 (paritytech#7159)

Backport paritytech#6973 into `stable2407` from alexggh.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>

* [stable2407] Backport paritytech#6971 (paritytech#7172)

Backport paritytech#6971 into `stable2407` from alexggh.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>

* Move prdocs to release folder

* Apply plan

* [stable2407] Backport paritytech#7365 (paritytech#7380)

Backport paritytech#7365 into `stable2407` from vgantchev.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Valery Gantchev <[email protected]>

* [stable2407] Backport paritytech#7437 (paritytech#7465)

Backport paritytech#7437 into `stable2407` from serban300.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Serban Iorga <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* [stable2407] Backport paritytech#7446 (paritytech#7460)

Backport paritytech#7446 into `stable2407` from serban300.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Serban Iorga <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* Update plan

* Apply changes

* Move prdocs to release folder

* Bump node version

* Backport 1.12.0: check-weight: Disable total pov size check for mandatory extrinsics (paritytech#4592)

Backport of paritytech#4571

---------

Co-authored-by: command-bot <>

* Implement `CheckMetadataHash` extension (paritytech#4274) (paritytech#4619)

This implements the `CheckMetadataHash` extension as described in
[RFC78](https://polkadot-fellows.github.io/RFCs/approved/0078-merkleized-metadata.html).

Besides the signed extension, the `substrate-wasm-builder` is extended
to support generating the metadata-hash.

Closes: paritytech#291

---------

Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: joe petrowski <[email protected]>
Co-authored-by: Liam Aharon <[email protected]>
Co-authored-by: Kian Paimani <[email protected]>

* init bifrost-polkadot-base

* fix: add legacy transferrable balance to currency trait (#1)

* wasm-builder(cherry-pick): Also set mcpu for c deps (paritytech#3777)

* update Cargo.lock

* feat: add a getter function to retrieve keystore raw value

---------

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: paritytech-cmd-bot-polkadot-sdk[bot] <179002856+paritytech-cmd-bot-polkadot-sdk[bot]@users.noreply.github.com>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Benjamin Gallois <[email protected]>
Co-authored-by: EgorPopelyaev <[email protected]>
Co-authored-by: Morgan Adamiec <[email protected]>
Co-authored-by: Francisco Aguirre <[email protected]>
Co-authored-by: Miles Patterson <[email protected]>
Co-authored-by: Shawn Tabrizi <[email protected]>
Co-authored-by: Branislav Kontur <[email protected]>
Co-authored-by: Alin Dima <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: Alexandru Vasile <[email protected]>
Co-authored-by: s0me0ne-unkn0wn <[email protected]>
Co-authored-by: drewstone <[email protected]>
Co-authored-by: Ankan <[email protected]>
Co-authored-by: Dino Pačandi <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: eskimor <[email protected]>
Co-authored-by: Andrei Sandu <[email protected]>
Co-authored-by: Doordashcon <[email protected]>
Co-authored-by: Sebastian Kunert <[email protected]>
Co-authored-by: Valery Gantchev <[email protected]>
Co-authored-by: Serban Iorga <[email protected]>
Co-authored-by: joe petrowski <[email protected]>
Co-authored-by: Liam Aharon <[email protected]>
Co-authored-by: Kian Paimani <[email protected]>

* resolve conflicts

* chore: pull stable2503

* chore: remove deprecated getter

---------

Signed-off-by: Iulian Barbu <[email protected]>
Signed-off-by: Alexandru Gheorghe <[email protected]>
Signed-off-by: Alexandru Vasile <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: paritytech-release-backport-bot[bot] <191369287+paritytech-release-backport-bot[bot]@users.noreply.github.com>
Co-authored-by: Maciej <[email protected]>
Co-authored-by: ordian <[email protected]>
Co-authored-by: Stephane Gurgenidze <[email protected]>
Co-authored-by: ordian <[email protected]>
Co-authored-by: Egor_P <[email protected]>
Co-authored-by: Iulian Barbu <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Andrei Sandu <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Tsvetomir Dimitrov <[email protected]>
Co-authored-by: Javier Viola <[email protected]>
Co-authored-by: Alexandru Vasile <[email protected]>
Co-authored-by: Alexandru Vasile <[email protected]>
Co-authored-by: Javier Viola <[email protected]>
Co-authored-by: Karol Kokoszka <[email protected]>
Co-authored-by: Karol Kokoszka <[email protected]>
Co-authored-by: Andrei Eres <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: tmpolaczyk <[email protected]>
Co-authored-by: ordian <[email protected]>
Co-authored-by: Branislav Kontur <[email protected]>
Co-authored-by: Alexander Samusev <[email protected]>
Co-authored-by: Francisco Aguirre <[email protected]>
Co-authored-by: Tobi Demeco <[email protected]>
Co-authored-by: Guillaume Thiolliere <[email protected]>
Co-authored-by: Adrian Catangiu <[email protected]>
Co-authored-by: Morgan Adamiec <[email protected]>
Co-authored-by: Alin Dima <[email protected]>
Co-authored-by: Jun Jiang <[email protected]>
Co-authored-by: Sebastian Kunert <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: Gonçalo Pestana <[email protected]>
Co-authored-by: s0me0ne-unkn0wn <[email protected]>
Co-authored-by: Dónal Murray <[email protected]>
Co-authored-by: joe petrowski <[email protected]>
Co-authored-by: Liam Aharon <[email protected]>
Co-authored-by: Kian Paimani <[email protected]>
Co-authored-by: dnjscksdn98 <[email protected]>
Co-authored-by: paritytech-cmd-bot-polkadot-sdk[bot] <179002856+paritytech-cmd-bot-polkadot-sdk[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Gallois <[email protected]>
Co-authored-by: Miles Patterson <[email protected]>
Co-authored-by: Shawn Tabrizi <[email protected]>
Co-authored-by: drewstone <[email protected]>
Co-authored-by: Ankan <[email protected]>
Co-authored-by: Dino Pačandi <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: eskimor <[email protected]>
Co-authored-by: Doordashcon <[email protected]>
Co-authored-by: Valery Gantchev <[email protected]>
Co-authored-by: Serban Iorga <[email protected]>
alstjd0921 added a commit to bifrost-platform/polkadot-sdk that referenced this pull request Aug 14, 2025
* [stable2503] Backport paritytech#6827 (paritytech#8770)

Backport paritytech#6827 into `stable2503` from Overkillus.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Maciej <[email protected]>
Co-authored-by: ordian <[email protected]>
Co-authored-by: Stephane Gurgenidze <[email protected]>
Co-authored-by: ordian <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* [stable2503] Backport paritytech#8861 (paritytech#8867)

Backport paritytech#8861 into `stable2503` from ordian.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: ordian <[email protected]>

* [stable2503] Backport paritytech#8755 (paritytech#8814)

Backport paritytech#8755 into `stable2503` from iulianbarbu.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Signed-off-by: Iulian Barbu <[email protected]>
Co-authored-by: Iulian Barbu <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* [stable2503] Backport paritytech#8832 (paritytech#8846)

Backport paritytech#8832 into `stable2503` from alexggh.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Andrei Sandu <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Egor_P <[email protected]>

* [stable2503] Backport paritytech#8837 (paritytech#8884)

Backport paritytech#8837 into `stable2503` from tdimitrov.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Tsvetomir Dimitrov <[email protected]>
Co-authored-by: Javier Viola <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* [stable2503] Backport paritytech#8345: tx/metrics: Add metrics for the RPC v2 transactionWatch_v1_submitAndWatch (paritytech#8759)

Backport paritytech#8345 into `stable2503` from lexnv.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Signed-off-by: Alexandru Vasile <[email protected]>
Co-authored-by: Alexandru Vasile <[email protected]>
Co-authored-by: Alexandru Vasile <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* [stable2503] Backport paritytech#8834 (paritytech#8889)

Backport paritytech#8834 into `stable2503` from alexggh.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Javier Viola <[email protected]>
Co-authored-by: Javier Viola <[email protected]>

* [stable2503] Backport paritytech#8948 (paritytech#8959)

Backport paritytech#8948 into `stable2503` from alexggh.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* [stable2503] Backport paritytech#8787 (paritytech#8913)

Backport paritytech#8787 into `stable2503` from karolk91.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Co-authored-by: Karol Kokoszka <[email protected]>
Co-authored-by: Egor_P <[email protected]>
Co-authored-by: Karol Kokoszka <[email protected]>

* [stable2503] Post crates release adjustments (paritytech#8967)

Reordering of the prdocs and clean up after crates release to meet the
pipeline requirements

* [stable2503] Backport paritytech#8973 (paritytech#8978)

Backport paritytech#8973 into `stable2503` from AndreiEres.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Andrei Eres <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* [stable2503] Backport paritytech#8980 (paritytech#8995)

Backport paritytech#8980 into `stable2503` from ggwpez.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>

* [stable2503] Post crates release adjustments (paritytech#9009)

Reordering of the prdocs and clean up after crates release to meet the
pipeline requirements

---------

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: paritytech-release-backport-bot[bot] <191369287+paritytech-release-backport-bot[bot]@users.noreply.github.com>
Co-authored-by: Alexander Theißen <[email protected]>

* [stable2503] Backport paritytech#8932 (paritytech#9010)

Backport paritytech#8932 into `stable2503` from bkchr.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Egor_P <[email protected]>

* [stable2503] Backport paritytech#8694 (paritytech#9030)

Backport paritytech#8694 into `stable2503` from tmpolaczyk.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: tmpolaczyk <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* [stable2503] Backport paritytech#9050 (paritytech#9068)

Backport paritytech#9050 into `stable2503` from ordian.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: ordian <[email protected]>

* [stable2503] Backport paritytech#9092 (paritytech#9096)

Backport paritytech#9092 into `stable2503` from EgorPopelyaev.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Egor_P <[email protected]>

* [stable2503] Backport paritytech#9102 (paritytech#9109)

Backport paritytech#9102 into `stable2503` from iulianbarbu.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Signed-off-by: Iulian Barbu <[email protected]>
Co-authored-by: Iulian Barbu <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* [stable2503] Backport paritytech#9130 (paritytech#9130)

Partial manual backport of
[https://github.com/paritytech/polkadot-sdk/pull/8369](https://github.com/paritytech/polkadot-sdk/pull/8369)
- includes only the patched file with `ToParachainDeliveryHelper`, which
helps finalize
[https://github.com/polkadot-fellows/runtimes/pull/709](https://github.com/polkadot-fellows/runtimes/pull/709)
for AHM.

_(it is just benchmarking change, nothing else)_

* [stable2503] Post crates.io release updates (paritytech#9138)

This PR merges back to the stable2503 crates version bumps, node version
bumps and prdocs reordering

* [stable2503] Backport paritytech#9139 (paritytech#9144)

Backport paritytech#9139 into `stable2503` from bkontur.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Branislav Kontur <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* [stable2503] Backport paritytech#8193 (paritytech#9377)

Backport paritytech#8193 into `stable2503` from alvicsam.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Alexander Samusev <[email protected]>

* [stable2503] Backport paritytech#9094 (paritytech#9155)

Backport paritytech#9094 into `stable2503` from alexggh.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* [stable2503] Backport paritytech#9137 (paritytech#9199)

Backport paritytech#9137 into `stable2503` from franciscoaguirre.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Co-authored-by: Francisco Aguirre <[email protected]>
Co-authored-by: EgorPopelyaev <[email protected]>

* [stable2503] Backport paritytech#9179 (paritytech#9303)

Backport paritytech#9179 into `stable2503` from karolk91.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Karol Kokoszka <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Branislav Kontur <[email protected]>

* [stable2503] Backport paritytech#9264 (paritytech#9275)

Backport paritytech#9264 into `stable2503` from alexggh.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* [stable2503] Backport paritytech#9281 (paritytech#9328)

Backport paritytech#9281 into `stable2503` from lexnv.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Signed-off-by: Alexandru Vasile <[email protected]>
Co-authored-by: Alexandru Vasile <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Egor_P <[email protected]>

* [stable2503] Backport paritytech#9325 (paritytech#9334)

Backport paritytech#9325 into `stable2503` from TDemeco.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Tobi Demeco <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* [stable2503] Backport paritytech#9354 (paritytech#9374)

Backport paritytech#9354 into `stable2503` from karolk91.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Karol Kokoszka <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Egor_P <[email protected]>

* [stable2503] Backport paritytech#9355 (paritytech#9369)

Backport paritytech#9355 into `stable2503` from gui1117.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Guillaume Thiolliere <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* [stable2503] Backport paritytech#9195 (paritytech#9404)

Backport paritytech#9195 into `stable2503` from karolk91.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Co-authored-by: Karol Kokoszka <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Adrian Catangiu <[email protected]>

* [stable2503] Post crates release updates (paritytech#9408)

This PR includes:
- crates version bumps
- node version bump
- prdocs reorderings
- and formatting for the pipeline

* Bump crate versions in: cumulus/polkadot-parachain/Cargo.toml

* Bump spec_version to 1_015_000

* Apply plan

* Edit plan

* Adjust and apply plan

* Edit and apply plan

* [stable2407 backport] runtime: make the candidate relay parent progression check more stric… (paritytech#5157)

Backports paritytech#5113 on top of
stable2407

* Backport paritytech#4791 (paritytech#5247)

Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Jun Jiang <[email protected]>

* [stable2407] Backport paritytech#5321 (paritytech#5332)

Backports paritytech#5321 on the
stable release

* [stable2407] backport paritytech#4937 (paritytech#5337)

Backport paritytech#4937 on the
stable release

* [stable2407] Backport PoV-reclaim fixes (paritytech#5273, paritytech#5281) (paritytech#5351)

Backports paritytech#5273 & paritytech#5281

---------

Co-authored-by: Guillaume Thiolliere <[email protected]>

* Move prdocs

* [Backport] Bump serde_json from 1.0.120 to 1.0.121 in the known_good_semver group (paritytech#5169) (paritytech#5367)

Bumps the known_good_semver group with 1 update:
[serde_json](https://github.com/serde-rs/json).

Updates `serde_json` from 1.0.120 to 1.0.121
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/serde-rs/json/releases">serde_json's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.121</h2>
<ul>
<li>Optimize position search in error path (<a
href="https://github.com/serde-rs/json/issues/1160">#1160</a>,
thanks <a

href="https://github.com/purplesyringa"><code>@​purplesyringa</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a

href="https://github.com/serde-rs/json/commit/eca2658a22cb39952783cb6914eb18242659f66a"><code>eca2658</code></a>
Release 1.0.121</li>
<li><a

href="https://github.com/serde-rs/json/commit/b0d678cfb473386830d559b6ab255d9e21ba39c5"><code>b0d678c</code></a>
Merge pull request <a
href="https://github.com/serde-rs/json/issues/1160">#1160</a>
from iex-rs/efficient-position</li>
<li><a

href="https://github.com/serde-rs/json/commit/b1edc7d13f72880fd0ac569403a409e5f7961d5f"><code>b1edc7d</code></a>
Optimize position search in error path</li>
<li><a

href="https://github.com/serde-rs/json/commit/40dd7f5e862436f02471fe076f3486c55e472bc2"><code>40dd7f5</code></a>
Merge pull request <a
href="https://github.com/serde-rs/json/issues/1159">#1159</a>
from iex-rs/fix-recursion</li>
<li><a

href="https://github.com/serde-rs/json/commit/6a306e6ee9f47f3b37088217ffe3ebe9bbb54e5a"><code>6a306e6</code></a>
Move call to tri! out of check_recursion!</li>
<li><a

href="https://github.com/serde-rs/json/commit/3f1c6de4af28b1f6c5100da323f2bffaf7c2083f"><code>3f1c6de</code></a>
Ignore byte_char_slices clippy lint in test</li>
<li><a

href="https://github.com/serde-rs/json/commit/3fd6f5f49dc1c732d9b1d7dfece4f02c0d440d39"><code>3fd6f5f</code></a>
Merge pull request <a
href="https://github.com/serde-rs/json/issues/1153">#1153</a>
from dpathakj/master</li>
<li><a

href="https://github.com/serde-rs/json/commit/fcb5e83e44abe0f9c27c755a240a6ad56312c090"><code>fcb5e83</code></a>
Correct documentation URL for Value's Index impl.</li> <li>See full diff
in <a

href="https://github.com/serde-rs/json/compare/v1.0.120...v1.0.121">compare
view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility

score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.120&new-version=1.0.121)](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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions

</details>

---------

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>

* Move prdoc to release folder

* Backport timestamp logging fix (paritytech#5459)

paritytech@03c45b9

---------

Co-authored-by: Gonçalo Pestana <[email protected]>

* [Backport] Add feature to allow Aura collator to use full PoV size (paritytech#5393) (paritytech#5507)

This PR introduces a feature that allows to optionally enable using the
full PoV size.

Technically, we're ready to enable it by default, but as corresponding
runtime changes have not been propagated to the system parachain
runtimes yet, doing so could put them at risk. On the other hand, there
are teams that could benefit from it right now, and it makes no sense
for them to wait for the fellowship release and everything.

---------

Co-authored-by: Andrei Sandu <[email protected]>

* [Backport] Always include UnpaidExecution, not just when revenue is nonzero (paritytech#5510)

Backport paritytech#5369 to stable2407, which was already backported to v1.14 in
paritytech#5370

* Update plan

* [stable2407] Backport paritytech#5581 (paritytech#5603)

Backport paritytech#5581 into `stable2407` (cc @franciscoaguirre).

The dry-run shows in `forwarded_xcms` all the messages in the queues
at the time of calling the API.
Each time the API is called, the result could be different.
You could get messages even if you dry-run something that doesn't send
a message, like a `System::remark`.

This commit fixes this by clearing the message queues before doing the
dry-run, so the only messages left are the ones the users of the API actually
care about.

Co-authored-by: Francisco Aguirre <[email protected]>

* [stable2407] Backport paritytech#5466 (paritytech#5524)

Backport paritytech#5466 into `stable2407` (cc @ggwpez).

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* Backport 1.12.0: check-weight: Disable total pov size check for mandatory extrinsics (paritytech#4592)

Backport of paritytech#4571

---------

Co-authored-by: command-bot <>

* Implement `CheckMetadataHash` extension (paritytech#4274) (paritytech#4619)

This implements the `CheckMetadataHash` extension as described in
[RFC78](https://polkadot-fellows.github.io/RFCs/approved/0078-merkleized-metadata.html).

Besides the signed extension, the `substrate-wasm-builder` is extended
to support generating the metadata-hash.

Closes: paritytech#291

---------

Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: joe petrowski <[email protected]>
Co-authored-by: Liam Aharon <[email protected]>
Co-authored-by: Kian Paimani <[email protected]>

* init bifrost-polkadot-base

* fix: add legacy transferrable balance to currency trait (#1)

* feat: add a getter function to retrieve raw keystore value (#2)

* [stable2407] Backport paritytech#5713 (paritytech#5739)

Backport paritytech#5713 into `stable2407` from bkchr.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* [stable2407] Backport paritytech#3049 (paritytech#5734)

Backport paritytech#3049 into `stable2407` from bgallois.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Benjamin Gallois <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* Move prdocs to release folder

* Bump polkadot node version

* Update plan

* [stable2407]  Backport Fix parity-publish (paritytech#5670) (paritytech#6019)

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* [stable2407] Backport docker fix to 2407 (paritytech#6017)

This PR backports fixes for the docker publishing flow from master:
- paritytech#5896
- paritytech#5387

* [stable2407] Backport paritytech#5913 (paritytech#6004)

Backport paritytech#5913 into `stable2407` from franciscoaguirre.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Co-authored-by: Francisco Aguirre <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* [stable2407] Backport paritytech#4803 (paritytech#6097)

Backport paritytech#4803 into `stable2407` from gotnoshoeson.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Miles Patterson <[email protected]>

* [stable2407] Backport paritytech#5599 (paritytech#6068)

Backport paritytech#5599 into `stable2407` from franciscoaguirre.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Co-authored-by: Francisco Aguirre <[email protected]>
Co-authored-by: command-bot <>
Co-authored-by: Shawn Tabrizi <[email protected]>

* [stable2407] Backport paritytech#6205 (paritytech#6238)

Backport paritytech#6205 into `stable2407` from bkchr.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: command-bot <>

* [stable2407] Backport paritytech#6148 (paritytech#6232)

Backport paritytech#6148 into `stable2407` from bkontur.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Co-authored-by: Branislav Kontur <[email protected]>

* Bump node version

* Move prdocs

* Update plan

* Apply plan

* [stable2407] Backport paritytech#6417 (paritytech#6437)

Backport paritytech#6417 into `stable2407` from alindima.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Alin Dima <[email protected]>

* [Release|CI/CD] Fix audiences changelog template (paritytech#6444)

This PR addresses an issue mentioned
[here](paritytech#6424 (comment)).
The problem was that when the prdoc file has two audiences, but only one
description like in
[prdoc_5660](https://github.com/paritytech/polkadot-sdk/blob/master/prdoc/1.16.0/pr_5660.prdoc)
it was ignored by the template.

* [stable2407] Backport paritytech#6526 (paritytech#6530)

Backport paritytech#6526 into `stable2407` from bkchr.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: command-bot <>
Co-authored-by: Bastian Köcher <[email protected]>

* [stable2407] Backport paritytech#6645 (paritytech#6655)

Backport paritytech#6645 into `stable2407` from bkontur.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Co-authored-by: Branislav Kontur <[email protected]>

* [stable2407] Backport paritytech#6579 (paritytech#6634)

Backport paritytech#6579 into `stable2407` from bkontur.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Branislav Kontur <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* [stable2407] Backport paritytech#6603 (paritytech#6668)

Backport paritytech#6603 into `stable2407` from lexnv.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Alexandru Vasile <[email protected]>

* Backport paritytech#5887 to `stable2407` (paritytech#6674)

This PR accompanies paritytech#6672 to make backported changes consistent across
releases.

---------

Co-authored-by: Egor_P <[email protected]>

* [stable2407] Backport paritytech#6031 (paritytech#6106)

Backport paritytech#6031 into `stable2407` from drewstone.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: drewstone <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* [stable2407] Backport paritytech#6080 (paritytech#6180)

Backport paritytech#6080 into `stable2407` from franciscoaguirre.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Co-authored-by: Francisco Aguirre <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* [stable2407] Backport paritytech#6540 (paritytech#6591)

Backport paritytech#6540 into `stable2407` from Ank4n.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Ankan <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* [stable2407] Backport paritytech#6506 (paritytech#6657)

Backport paritytech#6506 into `stable2407` from Dinonard.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Dino Pačandi <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* [stable2407] Backport paritytech#6459 (paritytech#6663)

Backport paritytech#6459 into `stable2407` from franciscoaguirre.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Co-authored-by: Francisco Aguirre <[email protected]>
Co-authored-by: Egor_P <[email protected]>

* Bump polkadot node version

* Move prdoxs to release folder

* Apply plan

* Update Cargo.lock

* [stable2407] Backport paritytech#6690 (paritytech#6798)

Backport paritytech#6690 into `stable2407` from alexggh.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Alexandru Gheorghe <[email protected]>

* [stable2407] Backport paritytech#6729 (paritytech#6828)

Backport paritytech#6729 into `stable2407` from alexggh.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>

* [stable2407] Backport paritytech#6662 (paritytech#6801)

Backport paritytech#6662 into `stable2407` from eskimor.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Co-authored-by: eskimor <[email protected]>
Co-authored-by: Andrei Sandu <[email protected]>

* [stable2407] Backport paritytech#5311 (paritytech#6804)

Backport paritytech#5311 into `stable2407` from Doordashcon.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Doordashcon <[email protected]>

* [stable2407] Backport paritytech#6696 (paritytech#6839)

Backport paritytech#6696 into `stable2407` from alexggh.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>

* [stable2407] Backport paritytech#6864 (paritytech#6877)

Backport paritytech#6864 into `stable2407` from alexggh.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Alexandru Gheorghe <[email protected]>

* [stable2407] Backport paritytech#7050 (paritytech#7058)

Backport paritytech#7050 into `stable2407` from skunert.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Sebastian Kunert <[email protected]>

* [stable2407] Backport paritytech#7013 (paritytech#7015)

Backport paritytech#7013 into `stable2407` from bkchr.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: EgorPopelyaev <[email protected]>

* Switch to parity-large runners to be able to run on the github (paritytech#7113)

* Move prdocs to release folder

* Bump node_version

* [stable2407] Backport paritytech#7116 (paritytech#7135)

Backport paritytech#7116 into `stable2407` from alexggh.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Alexandru Gheorghe <[email protected]>

* Move prdoc to release folder

* [stable2407] Backport paritytech#6807 (paritytech#7155)

Backport paritytech#6807 into `stable2407` from alexggh.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>

* [stable2407] Backport paritytech#6973 (paritytech#7159)

Backport paritytech#6973 into `stable2407` from alexggh.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>

* [stable2407] Backport paritytech#6971 (paritytech#7172)

Backport paritytech#6971 into `stable2407` from alexggh.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>

* Move prdocs to release folder

* Apply plan

* [stable2407] Backport paritytech#7365 (paritytech#7380)

Backport paritytech#7365 into `stable2407` from vgantchev.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Co-authored-by: Valery Gantchev <[email protected]>

* [stable2407] Backport paritytech#7437 (paritytech#7465)

Backport paritytech#7437 into `stable2407` from serban300.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Serban Iorga <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* [stable2407] Backport paritytech#7446 (paritytech#7460)

Backport paritytech#7446 into `stable2407` from serban300.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Serban Iorga <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* Update plan

* Apply changes

* Move prdocs to release folder

* Bump node version

* Backport 1.12.0: check-weight: Disable total pov size check for mandatory extrinsics (paritytech#4592)

Backport of paritytech#4571

---------

Co-authored-by: command-bot <>

* Implement `CheckMetadataHash` extension (paritytech#4274) (paritytech#4619)

This implements the `CheckMetadataHash` extension as described in
[RFC78](https://polkadot-fellows.github.io/RFCs/approved/0078-merkleized-metadata.html).

Besides the signed extension, the `substrate-wasm-builder` is extended
to support generating the metadata-hash.

Closes: paritytech#291

---------

Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: joe petrowski <[email protected]>
Co-authored-by: Liam Aharon <[email protected]>
Co-authored-by: Kian Paimani <[email protected]>

* init bifrost-polkadot-base

* fix: add legacy transferrable balance to currency trait (#1)

* wasm-builder(cherry-pick): Also set mcpu for c deps (paritytech#3777)

* update Cargo.lock

* feat: add a getter function to retrieve keystore raw value

---------

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: paritytech-cmd-bot-polkadot-sdk[bot] <179002856+paritytech-cmd-bot-polkadot-sdk[bot]@users.noreply.github.com>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Benjamin Gallois <[email protected]>
Co-authored-by: EgorPopelyaev <[email protected]>
Co-authored-by: Morgan Adamiec <[email protected]>
Co-authored-by: Francisco Aguirre <[email protected]>
Co-authored-by: Miles Patterson <[email protected]>
Co-authored-by: Shawn Tabrizi <[email protected]>
Co-authored-by: Branislav Kontur <[email protected]>
Co-authored-by: Alin Dima <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: Alexandru Vasile <[email protected]>
Co-authored-by: s0me0ne-unkn0wn <[email protected]>
Co-authored-by: drewstone <[email protected]>
Co-authored-by: Ankan <[email protected]>
Co-authored-by: Dino Pačandi <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: eskimor <[email protected]>
Co-authored-by: Andrei Sandu <[email protected]>
Co-authored-by: Doordashcon <[email protected]>
Co-authored-by: Sebastian Kunert <[email protected]>
Co-authored-by: Valery Gantchev <[email protected]>
Co-authored-by: Serban Iorga <[email protected]>
Co-authored-by: joe petrowski <[email protected]>
Co-authored-by: Liam Aharon <[email protected]>
Co-authored-by: Kian Paimani <[email protected]>

* resolve conflicts

* chore: pull stable2503

* chore: remove deprecated getter

---------

Signed-off-by: Iulian Barbu <[email protected]>
Signed-off-by: Alexandru Gheorghe <[email protected]>
Signed-off-by: Alexandru Vasile <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: paritytech-release-backport-bot[bot] <191369287+paritytech-release-backport-bot[bot]@users.noreply.github.com>
Co-authored-by: Maciej <[email protected]>
Co-authored-by: ordian <[email protected]>
Co-authored-by: Stephane Gurgenidze <[email protected]>
Co-authored-by: ordian <[email protected]>
Co-authored-by: Egor_P <[email protected]>
Co-authored-by: Iulian Barbu <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Andrei Sandu <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Tsvetomir Dimitrov <[email protected]>
Co-authored-by: Javier Viola <[email protected]>
Co-authored-by: Alexandru Vasile <[email protected]>
Co-authored-by: Alexandru Vasile <[email protected]>
Co-authored-by: Javier Viola <[email protected]>
Co-authored-by: Karol Kokoszka <[email protected]>
Co-authored-by: Karol Kokoszka <[email protected]>
Co-authored-by: Andrei Eres <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: tmpolaczyk <[email protected]>
Co-authored-by: ordian <[email protected]>
Co-authored-by: Branislav Kontur <[email protected]>
Co-authored-by: Alexander Samusev <[email protected]>
Co-authored-by: Francisco Aguirre <[email protected]>
Co-authored-by: Tobi Demeco <[email protected]>
Co-authored-by: Guillaume Thiolliere <[email protected]>
Co-authored-by: Adrian Catangiu <[email protected]>
Co-authored-by: Morgan Adamiec <[email protected]>
Co-authored-by: Alin Dima <[email protected]>
Co-authored-by: Jun Jiang <[email protected]>
Co-authored-by: Sebastian Kunert <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: Gonçalo Pestana <[email protected]>
Co-authored-by: s0me0ne-unkn0wn <[email protected]>
Co-authored-by: Dónal Murray <[email protected]>
Co-authored-by: joe petrowski <[email protected]>
Co-authored-by: Liam Aharon <[email protected]>
Co-authored-by: Kian Paimani <[email protected]>
Co-authored-by: dnjscksdn98 <[email protected]>
Co-authored-by: paritytech-cmd-bot-polkadot-sdk[bot] <179002856+paritytech-cmd-bot-polkadot-sdk[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Gallois <[email protected]>
Co-authored-by: Miles Patterson <[email protected]>
Co-authored-by: Shawn Tabrizi <[email protected]>
Co-authored-by: drewstone <[email protected]>
Co-authored-by: Ankan <[email protected]>
Co-authored-by: Dino Pačandi <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: eskimor <[email protected]>
Co-authored-by: Doordashcon <[email protected]>
Co-authored-by: Valery Gantchev <[email protected]>
Co-authored-by: Serban Iorga <[email protected]>
github-merge-queue bot pushed a commit that referenced this pull request Oct 1, 2025
#8980 did fix the
fellowship CI but it triggers a rebuild of the fixtures every single
time you run tests. Annoying during development.

Instead of rebuilding, we just move the fixtures into the
`target/release` directory where it should be cached by the fellowship
CI.

Verifying that it works here:
polkadot-fellows/runtimes#891

Why: Re-running when the output dir changes will make it re-run every
time. Since every run changes the output dir.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
bee344 pushed a commit that referenced this pull request Oct 7, 2025
#8980 did fix the
fellowship CI but it triggers a rebuild of the fixtures every single
time you run tests. Annoying during development.

Instead of rebuilding, we just move the fixtures into the
`target/release` directory where it should be cached by the fellowship
CI.

Verifying that it works here:
polkadot-fellows/runtimes#891

Why: Re-running when the output dir changes will make it re-run every
time. Since every run changes the output dir.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
alvicsam pushed a commit that referenced this pull request Oct 17, 2025
The .polkavm files are not recompiled when deleting
`target/pallet-revive-fixtures`. I assume that CI is not caching that
folder or the .polkavm file extension. This leads to the
`include_bytes!` macro to not finding these files.

Tested it here polkadot-fellows/runtimes#785

---------

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>
alvicsam pushed a commit that referenced this pull request Oct 17, 2025
#8980 did fix the
fellowship CI but it triggers a rebuild of the fixtures every single
time you run tests. Annoying during development.

Instead of rebuilding, we just move the fixtures into the
`target/release` directory where it should be cached by the fellowship
CI.

Verifying that it works here:
polkadot-fellows/runtimes#891

Why: Re-running when the output dir changes will make it re-run every
time. Since every run changes the output dir.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
TorstenStueber pushed a commit that referenced this pull request Dec 4, 2025
This is a fix for the fact that `exec::Key` is exposed from within
`pallet_revive::tracing::Tracing` interface, but not from the crate
itself making custom tracers effectively unimplementable outside said
crate.

In my case it's useful for implementing custom tracers for integration
with `foundry`

Requires no downstream changes

This is a fix for the fact that `exec::Key` is exposed from within
`pallet_revive::tracing::Tracing` interface, but not from the crate
itself making custom tracers effectively unimplementable outside said
crate.

see here for one of the methods: [`exec::Key` exposed to the
implementor, despite not being exported by the
`crate`](https://github.com/paritytech/polkadot-sdk/blob/pkhry/expose_key_pallet_revive/substrate/frame/revive/src/tracing.rs#L68)

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[pallet-revive] Move `to_account_id` host function to `System` pre-compile (#9455)

Part of closing https://github.com/paritytech/polkadot-sdk/issues/8572.

cc @athei @pgherveou

---------

Co-authored-by: xermicus <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>

[pallet-revive] Move `blake2_128` host function to `System` pre-compile (#9454)

Part of closing https://github.com/paritytech/polkadot-sdk/issues/8572.

I'm splitting some of the host function migrations into separate PRs, as
there are sometimes refactorings involved and this should make reviewing
easier.

cc @athei @pgherveou

[revive] move existing files to prepare evm backend introduction (#9501)

- Move exisiting files in pallet-revive to accomodate the upcoming EVM
backend
- Add solc/resolc compilation feature for fixtures
- Add `fn is_pvm` to later distinguish between pvm / evm bytecode

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

align eth-rpc response with geth (#9177)

- Update some serde encoding for eth-rpc to match serialization behavior
of Geth
- Add support for serializing / deserializing EIP7702 tx types
- Disable transaction type we don't support yet in
try_ino_unchecked_extrinsics

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[revive] revm backend (#9285)

Initial EVM support via the REVM crate to create a dual-VM system that
can execute both PolkaVM and EVM

- Added `AllowEVMBytecode: Get<bool>` to the config to enable/disable
EVM call and instantiation
- CodeInfo has been updated to add the type of bytecode (EVM / PVM).
`migration/v2.rs` takes care of migrating existing storages
- The CodeUploadDeposit is not held by a pallet account instead of being
held on the uploader, It's automatically refunded when the refcount
drops to 0 and the code is removed.
- The basic flow of uploading an EVM contract and running it should work
- instructions are copied and adapted from REVM they should be ignored
in this PR and reviewed in follow-up PR
(**reviewers** please ignore
`substrate/frame/revive/src/vm/evm/instructions/*` for now)

A basic instruction looks like this:

```rust
pub fn coinbase<'ext, E: Ext>(context: Context<'_, 'ext, E>) {
	gas_legacy!(context.interpreter, revm_gas::BASE);
	push!(context.interpreter, context.host.beneficiary().into_word().into());
}
```

All instructions have been copied from `REVM` and updated with generic
types for pallet-revive. Two main changes are required:

Replace REVM gas calls with existing benchmarks where available:

```diff
- gas_legacy!(context.interpreter, revm_gas::BASE);
+ gas!(context.interpreter, RuntimeCosts::BlockAuthor);
```

Replace `context.host` calls with `context.extend` (set to `&mut Ext`):

```diff
- push!(context.interpreter, context.host.beneficiary().into_word().into());
+ let coinbase: Address = context.interpreter.extend.block_author().unwrap_or_default().0.into();
+ push!(context.interpreter, coinbase.into_word().into());
```

- For cases without existing benchmarks (e.g arithmetic, bitwise) , we
will keep `gas_legacy!`
- The u64 gas value are multiplied by a base cost benchmarked by
`evm_opcode`

- ### Important Rules
- All calls to `context.host` should be removed (initialized to default
values)
- All calls to `context.interpreter.gas` should be removed (except
`gas.memory` handled by `resize_memory!` macro)
- See `block_number` implementation as a reference example

The following instructions in src/vm/evm/instructions/** need to be
updated

We probably don't need to touch these implementations here, they use the
gas_legacy! macro to charge a low gas value that will be scaled with our
gas_to_weight benchmark. The only thing needed here are tests that
exercise these instructions

<details>

- [ ] **add**
- [ ] **mul**
- [ ] **sub**
- [ ] **div**
- [ ] **sdiv**
- [ ] **rem**
- [ ] **smod**
- [ ] **addmod**
- [ ] **mulmod**
- [ ] **exp**
- [ ] **signextend**

- [ ] **lt**
- [ ] **gt**
- [ ] **slt**
- [ ] **sgt**
- [ ] **eq**
- [ ] **iszero**
- [ ] **bitand**
- [ ] **bitor**
- [ ] **bitxor**
- [ ] **not**
- [ ] **byte**
- [ ] **shl**
- [ ] **shr**
- [ ] **sar**
- [ ] **clz**

- [ ] **jump**
- [ ] **jumpi**
- [ ] **jumpdest**
- [ ] **pc**
- [ ] **stop**
- [ ] **ret**
- [ ] **revert**
- [ ] **invalid**

- [ ] **mload**
- [ ] **mstore**
- [ ] **mstore8**
- [ ] **msize**
- [ ] **mcopy**

- [ ] **pop**
- [ ] **push0**
- [ ] **push**
- [ ] **dup**
- [ ] **swap**

</details>

These instructions should be updated from using gas_legacy! to gas! with
the appropriate RuntimeCost, the returned value need to be pulled from
our `&mut Ext` ctx.interpreter.extend instead of the host or input
context value

<details>

- [x] **block_number**
- [ ] **coinbase**
- [ ] **timestamp**
- [ ] **difficulty**
- [ ] **gaslimit**
- [ ] **chainid**
- [ ] **basefee**
- [ ] **blob_basefee**

- [ ] **balance**
- [ ] **extcodesize**
- [ ] **extcodecopy**
- [ ] **extcodehash**
- [ ] **blockhash**
- [ ] **sload**
- [ ] **sstore**
- [ ] **tload**
- [ ] **tstore**
- [ ] **log**
- [ ] **selfdestruct**
- [ ] **selfbalance**

- [ ] **keccak256**
- [ ] **address**
- [ ] **caller**
- [ ] **callvalue**
- [ ] **calldataload**
- [ ] **calldatasize**
- [ ] **calldatacopy**
- [ ] **codesize**
- [ ] **codecopy**
- [ ] **returndatasize**
- [ ] **returndatacopy**
- [ ] **gas**

- [ ] **origin**
- [ ] **gasprice**
- [ ] **blob_hash**

</details>

These instructions should be updated,, that's where I expect the most
code change in the instruction implementation.
See how it's done in vm/pvm module, the final result should look pretty
similar to what we are doing there with the addition of custom gas_limit
calculation that works with our gas model.

see also example code here https://github.com/paritytech/revm_example

<details>

- [ ] **create**
- [ ] **create**
- [ ] **call**
- [ ] **call_code**
- [ ] **delegate_call**
- [ ] **static_call**

</details>

---------

Signed-off-by: Cyrill Leutwiler <[email protected]>
Signed-off-by: xermicus <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Alexander Theißen <[email protected]>
Co-authored-by: xermicus <[email protected]>
Co-authored-by: 0xRVE <[email protected]>
Co-authored-by: Robert van Eerdewijk <[email protected]>

[pallet-revive] Expose `AccountInfo` and `ContractInfo` in the public interface (#9606)

Part of https://github.com/paritytech/polkadot-sdk/issues/9553
See https://github.com/paritytech/foundry-polkadot/issues/276

Exposes revive types to use in foundry-polkadot project.

Should not affect downstream projects.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[pallet-revive] EVM backend: Implement tx, block system and call stack instructions (#9414)

This PR is part of the road to EVM.
- Implement call and create frames, allowing to call and instantiate
other contracts.
- Implement support for tx info, block info, system and contract
opcodes.
- The `InstructionResult` <-> `ExecError` conversion functions.

---------

Signed-off-by: Cyrill Leutwiler <[email protected]>
Signed-off-by: xermicus <[email protected]>
Co-authored-by: pgherveou <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Alexander Theißen <[email protected]>
Co-authored-by: xermicus <[email protected]>
Co-authored-by: 0xRVE <[email protected]>
Co-authored-by: Robert van Eerdewijk <[email protected]>
Co-authored-by: Cyrill Leutwiler <[email protected]>

[pallet-revive] Update genesis config (#9557)

Update pallet-revive Genesis config
Make it possible to define accounts (contracts or EOA) that we want to
setup at Genesis

---------

Signed-off-by: Cyrill Leutwiler <[email protected]>
Signed-off-by: xermicus <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Alexander Theißen <[email protected]>
Co-authored-by: xermicus <[email protected]>
Co-authored-by: 0xRVE <[email protected]>
Co-authored-by: Robert van Eerdewijk <[email protected]>

[pallet-revive] Add `Pallet::set_evm_balance` (#9617)

Part of https://github.com/paritytech/polkadot-sdk/issues/9553
See https://github.com/paritytech/foundry-polkadot/issues/273

Adds a balance setter in EVM.

Should not affect downstream projects.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: PG Herveou <[email protected]>

[pallet-revive] EVM backend: implement various missing opcodes (#9385)

* [x] system (other PR, no tests)
* [x] block_info (other PR)
* [x] contract (other PR)
* [x] tx_info (other PR)
* [x] arithmetic
* [x] bitwise
* [x] i256 (these are not opcodes so will not test)
* [x] host (except `log()`)
* [x] memory
* [x] control (except `pc()`)
* [x] macros (these are not opcodes so will not test)
* [x] utility (these are not opcodes so will not test)
* [x] stack

---------

Signed-off-by: xermicus <[email protected]>
Signed-off-by: Cyrill Leutwiler <[email protected]>
Co-authored-by: pgherveou <[email protected]>
Co-authored-by: Sebastian Miasojed <[email protected]>
Co-authored-by: Robert van Eerdewijk <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Sebastian Miasojed <[email protected]>
Co-authored-by: xermicus <[email protected]>
Co-authored-by: Cyrill Leutwiler <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>
Co-authored-by: Alexander Cyon <[email protected]>
Co-authored-by: Alexander Cyon <[email protected]>
Co-authored-by: Andrei Sandu <[email protected]>
Co-authored-by: Dmitry Sinyavin <[email protected]>
Co-authored-by: s0me0ne-unkn0wn <[email protected]>
Co-authored-by: Serban Iorga <[email protected]>

[pallet-revive] fix GAS_PRICE (#9679)

Currently submitting a transactio to the dev-node or kitchensink will
trigger an error when you try to submit a transaction trhough cast (or
anything using alloy) as the block gas limit on these runtime is greater
than u64::max.

This bump the GAS_PRICE to fix this issue, this will eventually be
superseeded by the new gas model

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: xermicus <[email protected]>

[pallet-revive] Properly convert `Ext::minimum_balance` value to `U256` (#9705)

The value is just cast to `U256` here, without applying the actual
conversion factor (`NativeToEthRatio`).

There are some tests that apply the same easy conversion via `Into`,
without applying the conversion factor. Those tests still succeed, but
you might want to go through those usages to not confuse people reading
the code.

@athei @pgherveou

added trace logging in EVM interpreter loop (#9561)

Added trace logging for each instruction to evm::run function.
solves https://github.com/paritytech/polkadot-sdk/issues/9575

---------

Signed-off-by: xermicus <[email protected]>
Signed-off-by: Cyrill Leutwiler <[email protected]>
Co-authored-by: pgherveou <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Robert van Eerdewijk <[email protected]>
Co-authored-by: xermicus <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>
Co-authored-by: Cyrill Leutwiler <[email protected]>

[pallet-revive] fix CodeInfo owner (#9744)

Fix CodeInfo owner, it should always be set to the origin of the
transaction

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[pallet-revive] fix tracing collect (#9736)

Tracing fixes:

- collect_trace take `self` instead of `&mut self`, to avoid reusing the
tracer state when tracing multiple transactions in a block.
- Fix issues related to call traces and the onlyTopCall config option

Fix
https://github.com/paritytech/contract-issues/issues/156https://github.com/paritytech/contract-issues/issues/156

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

revive-rpc: use generic RpcClient instead of ReconnectingRpcClient (#9701)

This will enable more flexible usage of the revive RPC as a library.

Needed so that we can reuse it with an in-memory RPC client for
anvil-polkadot:
https://github.com/paritytech/foundry-polkadot/issues/238

[pallet-revive] Migrate various getters to `System` pre-compile (#9517)

Part of closing https://github.com/paritytech/polkadot-sdk/issues/8572.

Migrates:
* `own_code_hash`
* `caller_is_origin`
* `caller_is_root`
* `weight_left`
* `minimum_balance`

There are some minor other fixes in there (removing leftovers from
deprecating chain extensions, stabilizing `block_hash` in overlooked
crates, etc.).

cc @athei @pgherveou

---------

Co-authored-by: Alexander Theißen <[email protected]>

[pallet-revive] fix salt endianness  (#9771)

fix <https://github.com/paritytech/polkadot-sdk/issues/9769>

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet_revive: add account_id and new_balance_with_dust runtime APIs  (#9683)

Needed for https://github.com/paritytech/foundry-polkadot/issues/240

revive-fixtures: Provide an env variable to disable compilation (#9791)

Right now `pallet-revive-fixtures` is always trying to build the
fixtures. It requires `solc` and other stuff for compilation. If you are
not requiring the fixtures, because you for example only run `cargo
check`, this pull request introduces `SKIP_PALLET_REVIVE_FIXTURES`. When
the environment variable is set, the compilation of the fixtures is
skipped. It will set the fixtures to `None` and they will panic at
runtime.

EIP-3607 added check to make sure a contract account cannot transfer funds as an EOA account (#9717)

fixes https://github.com/paritytech/polkadot-sdk/issues/9570

---------

Co-authored-by: Robert van Eerdewijk <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Alexander Theißen <[email protected]>

[pallet-revive] Add set_storage/set_storage_var_key methods (#9759)

... to be used in polkadot foundry to make sure EVM state is in sync
with pallet-revive state.

Fixes: https://github.com/paritytech/foundry-polkadot/issues/275

---------

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Alexander Theißen <[email protected]>

bugfix revm set_storage gas cost (#9823)

Fixes bug in revm gasmetering where the initial charge was less than the
adjusted charge.

---------

Co-authored-by: Robert van Eerdewijk <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: PG Herveou <[email protected]>

pallet revive evm backend add tests for cross vm contract calls (#9768)

fixes https://github.com/paritytech/polkadot-sdk/issues/9576

---------

Co-authored-by: Robert van Eerdewijk <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Alexander Theißen <[email protected]>

[pallet-revive] update rpc metadata (#9853)

Update eth-rpc metadata files

the metadata should have been updated here
https://github.com/paritytech/polkadot-sdk/pull/9759
where a new variant was added to an enum used by the runtime api

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet-revive: allow changing immutables (#9801)

... to be used in polkadot foundry to make sure EVM state is in sync
with pallet-revive state.

Fixes: https://github.com/paritytech/foundry-polkadot/issues/277

---------

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>

[pallet_transaction_payment]: Share withdrawn tx fee credit with other pallets (#9780)

Replaces https://github.com/paritytech/polkadot-sdk/pull/9590.

The audit of #9590 showed that holding the txfee as held balance and
especially playing around with `providers` causes a lot of troubles.

This PR is a much lighter change. It keeps the original withdraw/deposit
pattern. It simply stores the withdrawn `Credit` and allows other
pallets to withdraw from it.

It is also better in terms of performance since all tx signers share a
single storage item (instead of a named hold per account).

---------

Co-authored-by: joe petrowski <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Bastian Köcher <[email protected]>

`pallet-assets`: extract precompiles to a separate crate (#9796)

closes #9434

Assets pallet includes `pallet-revive` precompiles and subsequently pull
a lot of EVM related dependencies by default. This forces downstream
users that only want `pallet-assets` functionality to pull unrelated
dependencies and causes confusion (why do we have bunch of ethereum
crates in the dependency tree of `pallet-assets`?). This extracts
precompiles into its own crate

---------

Co-authored-by: Alexander Theißen <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>

pallet-revive: add custom addr recovery logic in `ReceiptExtractor` (#9878)

`ReceiptExtractor` parses blocks and associated transactions in
pallet-revive-eth-rpc and is useful for a range of Ethereum node RPCs.
When the transactions are impersonated, they are based on a fake
signature, which can't be used with the production eth address recovery
logic. The recovery logic must be customised in cases where we
impersonate transactions, so this PR adds a custom function on the
`ReceiptExtractor` which can be used to customize address recovery.

Developers using pallet-revive-eth-rpc as a lib should instantiate the
`ReceiptExtractor` with the custom constructor if impersonation usecases
must be supported.

Relevant in context of
https://github.com/paritytech/foundry-polkadot/issues/242, to implement
anvil-polkadot impersonation.

---------

Signed-off-by: Iulian Barbu <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

replace forloop solc fixture type with test-case macro (#9841)

For all tests of revm instructions replaced `for fixture_type` with
test-case macro

---------

Co-authored-by: Robert van Eerdewijk <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

Move revive fixtures into release directory (#9670)

https://github.com/paritytech/polkadot-sdk/pull/8980 did fix the
fellowship CI but it triggers a rebuild of the fixtures every single
time you run tests. Annoying during development.

Instead of rebuilding, we just move the fixtures into the
`target/release` directory where it should be cached by the fellowship
CI.

Verifying that it works here:
https://github.com/polkadot-fellows/runtimes/pull/891

Why: Re-running when the output dir changes will make it re-run every
time. Since every run changes the output dir.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

Rework gas mapping (#9803)

Replacement of https://github.com/paritytech/polkadot-sdk/pull/9740.

Build on top of the new tx payment changes:
https://github.com/paritytech/polkadot-sdk/pull/9780

Started a new PR because due to the rebase on top of the new tx payment
changes this PR is substantially different and I don't want to
invalidate the existing comments on
https://github.com/paritytech/polkadot-sdk/pull/9740 which are not
implemented, yet.

This will change the weight to eth fee mapping according to [this
model](https://shade-verse-e97.notion.site/Gas-Mapping-Challenges-Revised-26c8532a7ab580db8222c2ce3023669e).

This only changes the estimate returned from the dry run and how the
weights are derived from an ethereum transaction. It does not change how
contracts observe the gas. This will be done in a follow up. More
specifically:

1. The `GAS` opcode should return the new gas. As of right now it
returns `ref_time.`
2. The `*_CALL` opcodes should use the passed `gas` parameter and decode
it into `Weight`. As of right now the parameter is ignored.

That said, even without those follow ups this PR should fix all
`InvalidTransaction` errors we are observing.

We should add a configurable divisor so that the gas_price is always at
least some gwei. That makes it easier to input the values.

---------

Signed-off-by: Alexander Theißen <[email protected]>
Co-authored-by: joe petrowski <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Francisco Aguirre <[email protected]>
Co-authored-by: PG Herveou <[email protected]>

pallet-revive: Bump PolkaVM (#9928)

Bumped `polkavm` to the latest version. No semantic changes in that
update.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[pallet-revive] revm refactor (#9818)

Refactor REVM implementation in `pallet-revive`

This PR removes technical debt and eliminates tight coupling to specific
REVM versions, facilitating integration with other projects (e.g.,
Foundry). After this refactoring, we primarily depend only on REVM's
[`Bytecode`](https://docs.rs/revm/latest/revm/bytecode/struct.Bytecode.html)
struct.

Most of REVM's generic type system and trait abstractions are unused or
had to be ignored to prevent bugs. Interactions with the host in
pallet-revive are handled through the `Ext` trait, making REVM's other
abstractions unnecessary or potentially harmful.

Unused REVM abstractions included:
- **Host trait**: Unused in the pallet, we relied on the `DummyHost`
default mocked implementation
- **Gas field**: Unused, the pallet uses its own gas accounting system
- **Methods from `InputsTr`**: Unused most methods had panic
implementations since they couldn't be relied upon
- **Spec**: Unused: We only maintain the latest fork for each runtime

This refactor introduces:
- **Interpreter**: Simplified struct containing only the fields actually
needed
- **Stack**: Simplified implementation using `sp_core::*` instead of
`alloy_core::primitives::*` for better integration with the rest of the
pallet
- **Memory**: Simplified implementation providing only the methods
actually needed
- **Instructions**:
- New instructions don't rely on macros and have a simplified signature:
`Fn(&mut interpreter) -> ControlFlow<Halt>`
- Removed function pointer table lookup for instructions in favor of
match statements,
- Unified gas charging: legacy u64 gas charging is now wrapped in
`EVMGas` that implements `Token<T>` to provide the associated weight
- Removed the `InterpreterAction`, this simplify the interpreter loop
to:
```rust
loop {
	let opcode = interpreter.bytecode.opcode();
	interpreter.bytecode.relative_jump(1);
	exec_instruction(interpreter, opcode)?;
}
```
- **Error handling**: Opcode that fail return Halt::Err(DispatchError),
this remove the need from converting between InstructionResult and
`ExecError` like we were previously doing and standardize errors
generated on both backends

---------

Co-authored-by: 0xRVE <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Robert van Eerdewijk <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>

[pallet-revive] Allows setting evm balance for non-existing account (#9911)

Allows calling set_evm_balance for a non-existing account on
pallet-revive.
It is needed by foundry to inject EVM accounts.

pallet-revive: Fix dry run balance check logic (#9942)

Fix fault balance check logic during dry-run:

We should not enforce that the sender has enough balance for the fees in
case no `gas` is supplied.

cc @TorstenStueber

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

Allow unlimited contract size in debug mode. (#9831)

Fixes https://github.com/paritytech/contract-issues/issues/167

The main changes in this PR are:

1. Added an associated type DebugEnabled
2. Introduced a DebugSettings struct with a single boolean field
3. Added a StorageValue: pub(crate) type DebugSettingsOf<T: Config> =
StorageValue<_, DebugSettings<T>, ValueQuery>;
4. Included debug_settings in the GenesisConfig
5. Added a unit test to verify that large EVM contracts can be
instantiated.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Alexander Theißen <[email protected]>

pallet-revive update basefee instruction (#9945)

The base fee instruction now returns the proper base price instead of a
hard coded value.

---------

Co-authored-by: Alexander Theißen <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[pallet-revive] Migrate unstable storage host functions to `Storage` pre-compile (#9603)

Part of closing https://github.com/paritytech/polkadot-sdk/issues/8572.

Introduces a new `Storage` pre-compile and migrates:
* `clear_storage`
* `take_storage`
* `contains_storage`

The new `Storage` pre-compile is introduced, as it requires implementing
the `BuiltinPrecompile::call_with_info` function, which cannot be
implemented together with `BuiltinPrecompile::call` (implemented by the
`System` pre-compile).

I've added the `sol_utils` as I (on admittedly quick glance) couldn't
find a crate that supports those encodings (Solidity's `bytes`) without
requiring an allocator.

cc @athei @pgherveou

---------

Co-authored-by: xermicus <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>

Return unified gas for `gas_left` syscalls and opcodes (#9968)

In https://github.com/paritytech/polkadot-sdk/pull/9803 we introduced
the new gas mapping. However, when contracts are querying the remaining
gas we still returned the `ref_time`. This PR changes that.

- Added a new `Stack::gas_left` function that calculates the remaining
gas as eth gas that matches the gas passed in the transaction. It
supports both the `eth_` and non `eth_` flavors of dispatchables.
- Changed the PVM syscall `ref_time_left` to return the new unified gas.
- Changes the EVM `GAS` opcode to return the new unified gas
- When calculating the consumed storage we now take into account what
was charged during the current frame
- Removed `storage_deposit_limit` from `eth_*` dispatchables. It is
always uncapped in this case and the overall limit is conveyed using the
tx credit.

Now that we can return the proper remaining gas that also includes the
storage deposit we can change the EVM `call` instruction next to take
the passed `gas` into account. Since the unified gas takes both the
txfee and the deposit into account it will be able to limit both
effectively.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: xermicus <[email protected]>

[pallet-revive] dev-node constant fee multiplier (#9939)

This will let us have stable gas cost (as long as the state of the dev
net does not change)

In mainnet neither polkadot, nor EVM chains can guarantee stable gas
since the state of the blockchain can change between two dry runs, but I
would argue that we are better off if we have stable gas cost in testing
environments as that is the standard on EVM devnet

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[pallet-revive] fix exp overflow (#9991)

Update arithmetic tests, and fix potential overflow

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: xermicus <[email protected]>

 Wait for transaction receipt if instant seal is enabled (#9914)

Fixes https://github.com/paritytech/contract-issues/issues/165

The main changes in this PR are:

1. Add a new API to revive-dev-node to check whether the node has
instant seal enabled.
2. Add a new debug API to eth-rpc to check whether the node has instant
seal enabled. (optional)
3. Query and cache the node’s instant seal status during eth-rpc
initialization.
4. If instant seal is enabled, wait for the transaction receipt to be
available

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: pgherveou <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>

[pallet-revive] Implement the consume_all_gas syscall (#9997)

This PR implements a new API `consume_all_gas` which is required for
100% EVM `INVALID` opcode compatibility.

Since ceding of all remaining gas is handled in the EVM interpreter, I
decided to not add a return flag but make this a dedicated syscall for
consistency instead.

Didn't implement a benchmark since the first (and only) thing this does
is consuming all remaining gas anyways.

---------

Signed-off-by: Cyrill Leutwiler <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

`pallet-xcm`: extract precompiles to a separate crate (#9985)

This PR extracts the XCM precompile from `pallet-xcm` into a new
standalone crate `pallet-xcm-precompiles` to resolve an unwanted
dependency issue. Previously, the XCM precompile was implemented
directly in `pallet-xcm/src/precompiles.rs`, which required `pallet-xcm`
to depend on `pallet-revive`, introducing it as a transitive dependency
for all parachains using `pallet-xcm`.

Closes #9955

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[pallet-revive] fix subxt submit & add debug statments (#10016)

- Fix subxt submit by default it's using
`author_submitAndWatchExtrinsic` even though we just want to fire and
forget
- Add debug instructions to log the signer & nonce of new eth
transactions when the node validate the transaction

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet_revive: Lower the deposit costs for child trie items (#10027)

Fixes https://github.com/paritytech/polkadot-sdk/issues/9246

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet_revive: Fix incorrect `block.gaslimit` (#10026)

Fixes https://github.com/paritytech/contract-issues/issues/112

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

frame/revive: ETH block storage (#9418)

This PR constructs the Ethereum block in the following way:
- events (logs) are captured via an `environmental!` variable to reduce
reliance on pallet storage
- A maximum of 512 events is allowed per transaction, with the size of
an event capped to `self.ext.max_value_size()`
- A memory-efficient intermediate block builder is deserialized and
serialized back to the pallet storage
- The intermediate block builder builds the transaction and event root
hashes using low level RLP encoding primitives to achieve around 90%
pallet storage optimization
- For more details, see
https://github.com/paritytech/polkadot-sdk/pull/9764
- A fixup is included for 7702 transaction rlp
serialization/deserialization is added to ensure we can build the
Ethereum block hash from live Ethereum blocks.
- The maximum `CALL_PARAMS_MAX_SIZE` is increased to 512 to 244 to
accommodate the transaction added to the Eth call

This PR also includes benchmarking:
- https://github.com/paritytech/polkadot-sdk/pull/9496

- pallet storage testing and capturing of events / transactions are
added at `tests/block_hash.rs`
- incremental block storage is tested in `evm/block_hash.rs`, which
ensures RLP encoding / hash builder and identical hashes from live
ethereum blocks
- tested via RPC work

- https://github.com/paritytech/polkadot-sdk/pull/9512
- https://github.com/paritytech/polkadot-sdk/pull/9616
- https://github.com/paritytech/polkadot-sdk/pull/9452

Builds upon https://github.com/paritytech/polkadot-sdk/pull/9413

Part of: https://github.com/paritytech/contract-issues/issues/139

---------

Signed-off-by: Alexandru Vasile <[email protected]>
Co-authored-by: Lukasz Rubaszewski <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[pallet-revive] improve revive genesis config (#9988)

- Update test to make sure contracts created at genesis are callable
- make sure that contracts are brought to existence by minting e.d first

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

added baltathar, charleth, dorothy, and ethan to eth-rpc and revive-d… (#10041)

adds more funded accounts to eth-rpc and dev-node

---------

Co-authored-by: Robert van Eerdewijk <[email protected]>
Co-authored-by: PG Herveou <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet_revive: Increase event sizes (#10047)

Fixes https://github.com/paritytech/contract-issues/issues/140

This increases the maximum event payload size from 416 bytes to 64k.
Since https://github.com/paritytech/polkadot-sdk/pull/9418 we charge
some additional weight per byte of event payload. This makes it possible
to raise the limit while staying within our memory envelope. This
artificial weight will add 18us of weight to a maximum sized event.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet_revive: when a dry run simulates contract deployment, return the execution result data. (#10032)

Fixes https://github.com/paritytech/contract-issues/issues/177

Expose the deployed contract's runtime bytecode in eth_call responses
during simulated contract creation.

The test from issue
https://github.com/paritytech/contract-issues/issues/177 sends an
eth_call request without a destination address, while providing contract
bytecode in the data field. This simulates a contract creation
transaction. The test expects the RPC response to return the result of
executing the init code, which is the deployed contract's runtime
bytecode. While this result is not returned in actual deployments, it is
expected in dry-run simulations.

---------

Co-authored-by: pgherveou <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

eth-rpc add trace logs (#10065)

Add extra tracing logs for estimate_gas and send_raw_transaction

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: xermicus <[email protected]>

pallet_revive: Raise the MaxEthExtrinsicWeight (#10089)

Fixes https://github.com/paritytech/contract-issues/issues/194

Factory extrinsics do need more weight. It is fine to raise them to
almost the full max extrinsic weight since this is still lower than the
block weight.

Also improving the error reporting during the dry run in case an
extrinsic hits this limit. No more `OutOfGas` but a more descriptive
error of how much it is overweight.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

precompiles: Enforce state mutability (#10080)

`pallet-assets-precompile`, `pallet-xcm-precompiles` and revive builtin
precompile implementations currently violate [Solidity state
mutability](https://docs.soliditylang.org/en/latest/grammar.html#syntax-rule-SolidityParser.stateMutability),
potentially introducing a new attack vector. This PR implements
corresponding checks at the function dispatch.

Could be enforced in `pallet-revive`, however:
1. Adding something like a `const MUTATES: bool` to the `Precompile`
trait won't help because whether the call is mutating or not depends on
the [Solidity function
selector.](https://docs.soliditylang.org/en/latest/abi-spec.html#function-selector).
2. Alloy, which we are using to parse the interface definitions prior to
calling precompile implementations, doesn't provide a mapping from
function selector to its mutability
[modifier](https://docs.soliditylang.org/en/latest/cheatsheet.html#modifiers).

---------

Signed-off-by: Cyrill Leutwiler <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

revive: fix alloy-consensus dependency (#10090)

Needed in order to update foundry-polkadot to the latest master:
https://github.com/paritytech/foundry-polkadot/pull/352

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

Enforce single-state txpool for revive-dev-node (#10106)

Use single-state txpool for dev-node when instant-seal is selected

see https://github.com/paritytech/polkadot-sdk/issues/10104

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet-revive: Add ExportChainSpec command to revive-dev-node (#10020)

Add the `export-chain-spec` command to the revive-dev-node.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

revive/rpc: Adjust the RPC to utilize the ETH block from storage (#9512)

This PR adjusts the RPC layer of pallet-revive to use Ethereum blocks
from storage via runtime APIs and establishes proper Ethereum ↔
Substrate block hash mappings.

- **New database table**: `eth_to_substrate_blocks` maps Ethereum block
hashes to Substrate block hashes and block numbers
- **Bidirectional lookups**: Support for both ETH→Substrate and
Substrate→ETH hash resolution with backward compatibility fallbacks
- **Block pruning**: Updated to remove stale mappings alongside
transaction and log data

- **Genesis block initialization**: Added
`block_storage::on_finalize_build_eth_block()` call in
`BuildGenesisConfig` to properly build and store block 0

- Added comprehensive tests for block hash mapping operations
- Ethereum vs Substrate hash resolution tests
- Fork handling in block pruning tests
- Log filtering with Ethereum block hash tests
- TransactionInfo deserialization from JSON Value tests

The implementation uses a **runtime API approach** where the RPC layer
queries the runtime for Ethereum blocks and hashes, which are then
mapped to Substrate block hashes in the local SQLite database. This
provides:

1. **Backward compatibility**: Falls back to treating hashes as
Substrate hashes when no mapping exists
2. **Efficient lookups**: Database indices on both Ethereum and
Substrate block hashes
3. **Automatic cleanup**: Block mappings are pruned alongside
transaction and log data
4. **Genesis block handling**: Block 0 is built during genesis using the
block storage infrastructure

Builds upon: https://github.com/paritytech/polkadot-sdk/pull/9418
Part of: https://github.com/paritytech/contract-issues/issues/139

---------

Signed-off-by: Alexandru Vasile <[email protected]>
Co-authored-by: Lukasz Rubaszewski <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: PG Herveou <[email protected]>

revive-dev-node enforce --dev (#10109)

enforce --dev and default --log in revive-dev-node

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

Change bahaviour of contract termination in accordance with EIP-6780 (#9699)

fixes https://github.com/paritytech/polkadot-sdk/issues/9621

Behavior of `terminate` is changed in accordance with EIP-6780 (and EVM
in general):
- `terminate` only deletes the code from storage if it is called in the
same transaction the contract was created.
- `terminate` does not destroy the contract instantly. The contract is
registered for destruction, which happens at the end of the transaction.

---------

Signed-off-by: xermicus <[email protected]>
Signed-off-by: Cyrill Leutwiler <[email protected]>
Co-authored-by: Robert van Eerdewijk <[email protected]>
Co-authored-by: pgherveou <[email protected]>
Co-authored-by: Sebastian Miasojed <[email protected]>
Co-authored-by: Sebastian Miasojed <[email protected]>
Co-authored-by: xermicus <[email protected]>
Co-authored-by: Cyrill Leutwiler <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet_revive: Only enforce EIP-3607 for dispatchables (#10100)

The EIP states that contract addresses cannot be the origin of a
transaction. However, we are enforcing this rule for all contract
execution (i.e all public function on the pallet). This is a problem for
code that uses `pallet_revive` and explicitly wants to allow this.

This PR now only enforces this check for dispatchables so that all the
`bare_*` functions are unaffected.

As a drive-by a regrouped the functions on the `Pallet` so that the
public functions are no longer interleaved with the private ones. This
got mixed up when we resolved some merge conflicts.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet-revive: add interface to implement mocks and pranks (#9909)

Needed for: https://github.com/paritytech/foundry-polkadot/pull/334.

In foundry-polkadot we need the ability to be able to manipulate the
`msg.sender` and the `tx.origin` that a solidity contract sees cheatcode
documentation, plus the ability to mock calls and functions.

Currently all create/call methods use the `bare_instantiate`/`bare_call`
to run things in pallet-revive, the caller then normally gets set
automatically, based on what is the call stack, but for `forge test` we
need to be able to manipulate, so that we can set it to custom values.

Additionally, for delegate_call, bare_call is used, so there is no way
to specify we are dealing with a delegate call, so the call is not
working correcly.

For both this paths, we need a way to inject this information into the
execution environment, hence I added an optional hooks interface that we
implement from foundry cheatcodes for prank and mock functionality.

- [x] Add tests to make sure the hooks functionality does not regress.

---------

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[revive] Receipts should include failed tx (#10120)

The current implementation incorrectly accumulates receipts in storage
to compute the `receipts_root`.
However, when an extrinsic fails, all storage changes are reverted
causing the receipts to be lost.

This PR updates the handling of Ethereum transactions so that they
always succeed. The transaction logic is now wrapped in a top-level
storage transaction that rolls back all state changes on failure while
still producing a valid receipt.

A new event `EthExtrinsicRevert` is emitted when an eth transaction
reverts.
eth-rpc uses this event to set the correct receipt status.

This event also serves as a replacement for ExtrinsicFailed to make
debugging failed Ethereum transactions easier in tools like Polkadot.js.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

anvil / eth-rpc - fix subscription race (#10146)

fix
https://github.com/paritytech/polkadot-sdk/issues/10139#issuecomment-3456077366

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Alin Dima <[email protected]>

pallet_revive: Improve logging (#10157)

Just added some more information to the log output during dry_run and
transaction creation. This was helpful when debugging if the correct gas
was passed in by the client.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet-revive: make contract reverted error message more verbose (#10168)

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet-revive-eth-rpc: derive Encode/Decode for subxt-generated types (#10169)

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet_revive_dev_node: Always increment the timestamp by at least one second (#10160)

Fixes https://github.com/paritytech/contract-issues/issues/191

cc @albertov19

The instant seal introduces a race condition. Blocks can be build faster
than the timestamp resolution of Ethereum. Eth timestamps are only one
second granularity. If we build blocks faster it can happen that the
timestamp delta between them is zero. This is not allowed. We have to
make sure that in instant seal two blocks don't return the same
timestamp.

This PR does that by always incrementing the timestamp by at least one
second. Note that this is a dev-node only change. Production chains
won't have this problem as long as the block time is larger than 1
second.

Yes, it will produce timestamps in the future. But this seems to be the
lesser evil for this dev node. Time is subjective. But the rule to not
return duplicate timestamps is dependent on.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

Add upload evm code function (#10129)

EVM Runtime Code Upload for Foundry Integration
This feature enables direct upload of EVM runtime bytecode (deployed
contract code without constructor) to the pallet-revive, supporting
Foundry's code migration functionality between REVM and pallet-revive
execution environments.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

revive-eth-rpc: fix blocks pruning (#10175)

We need to call prune_blocks before the insertion process.
Otherwise, if we get a fork, we won't be able to insert it into the DB
because it already exists there. In reality, we want the other fork to
be pruned instead.

Moreover, once we do get a fork we need to prune all the other
subsequent blocks of the old fork

Return the correct block difficulty from the eth-rpc (#10186)

This PR fixes an issue in the eth-rpc/pallet-revive that was causing it
to return an incorrect value for the block's difficulty or prevrandao.

In the VM/interpreter implementation we use a constant for the block
difficulty. However, the eth block construction side was unaware of this
constant being used and therefore the RPC was always returning a block
difficulty of zero.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

revive: Fix dust & child contract calls (#10192)

When transferring to self we should just return early as it's a noop.
Not doing so cause bug in `transfer_with_dust`

as we do
```
from.dust -= from.dust
to.dust += to.dust
```

We end up with a value of dust - planck (that we burnt from to create
dust amount) on the account

fix https://github.com/paritytech/contract-issues/issues/211

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

revive fix reported gas used (#10148)

Fix `gas_used` calculation introduced in #9418 to use the actual gas
instead of just `ref_time`.

With these changes we now guarantee that `tx_cost = effective_gas_price
* gas`.
Note that since we compute gas as `fee / gas_price`, this can lead to
rounding errors when the chain uses `SlowAdjustingFeeUpdate` (i.e. the
fee is not a multiple of the gas price).
The changes in this PR ensure the fee still matches by burning the
rounding remainder.

This PR also fixes how the actual fee is computed and introduces a new
`compute_actual_fee` in `Config::FeeInfo`.
The previous fee calculation was skipping the `extension_weight` in the
fee calculation.

The updated tests ensure that the tx cost reported in the receipt
matches the fees deducted from the user account:

https://github.com/paritytech/evm-test-suite/blob/460b2c9aa3a3019d3508bb5a34a2498ea86035ff/src/gas.test.ts?plain=1#L31-L61

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[v2] pallet-revive: support uploading EVM bytecode via upload_code extrinsic. (#10193)

Fixes https://github.com/paritytech/contract-issues/issues/182

Add support for EVM bytecode to the upload_code extrinsic.
Tests in issue https://github.com/paritytech/contract-issues/issues/182
send hardhat_setCode, which uses revive's upload_code API; this change
makes that flow accept and store the EVM bytecode using upload_code
extrinsic.

This PR deprecates PR:
https://github.com/paritytech/polkadot-sdk/pull/10095

Comment explaining test configuration requirements:
https://github.com/paritytech/polkadot-sdk/pull/10095#issuecomment-3456450460

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

Notify when there is a new best block (#10220)

Modify the tx_notifier to send the block hash to the subscribers instead
of all transactions hashes.
Modify the send_raw_transaction to look for the transaction hash in the
transactions field of the evm block.

We need this changes in anvil-polkadot:
* https://github.com/paritytech/foundry-polkadot/pull/389
* to be able to implement some RPCs like : send_transaction_sync and the
filters logic

---------

Signed-off-by: Alexandru Cihodaru <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[pallet-revive] Only fund new accounts with ED (#10233)

fixes https://github.com/paritytech/contract-issues/issues/179

In case an account is created by transferring funds to it, and after
that a contract is deployed to that account, it will receive the
existential deposit twice. This can be done using create2.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: PG Herveou <[email protected]>

pallet_revive: Add dry-run timestamp override support (#10191)

This PR updates `pallet-revive` to **support overriding the block
timestamp during dry-run calls**.
The dry-run execution now uses the following configuration for
`eth_estimateGas` and `eth_call` when the block tag is `pending`:

```text
block.timestamp = max(rpc_timestamp, latest_block.timestamp + 1)
block.number = latest_block.number + 1
```

Fixes [#153](https://github.com/paritytech/contract-issues/issues/153),
[#205](https://github.com/paritytech/contract-issues/issues/205)

Downstream projects using the `ReviveApi::eth_transact` runtime API
should either provide a `timestamp` or pass `None`.

- Added dry run timestamp to `ExecConfig`.
- Added a new parameter to `ReviveApi::eth_transact` for passing the
current RPC timestamp.
- `eth_estimateGas` and `eth_call` with `pending` block tag will dry run
the transaction with the block timestamp set to `max(rpc_timestamp,
latest_block.timestamp + 1)` and block number set to
`latest_block.number + 1`.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: pgherveou <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>

pallet_revive: use real storage when building the eth genesis block (#10225)

When building the eth genesis block, query the real storage items that
store the timestamp and block number instead of using the zeroed items.

If the chainspec does not customise these, they will remain zeroed.

However, anvil does customise these if requested by the user.
Needed in order to merge
https://github.com/paritytech/foundry-polkadot/pull/391

Remove outdated comment on Tracer Type (#10246)

Prestate tracer type is now supported

[pallet-revive] fix prestate tracer current address (#10239)

Fix prestate tracer not reporting the contract addresses properly.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[pallet-revive] Add eth_substrate_call extrinsic (#10159)

Fixes https://github.com/paritytech/contract-issues/issues/180

This PR introduces `eth_substrate_call`, a new extrinsic in
pallet-revive that enables Substrate runtime calls from Ethereum
transactions. This allows tools like Hardhat to invoke Substrate
extrinsics (e.g., `upload_code`) via the Ethereum RPC.

This implements a new approach for dispatching Substrate extrinsics
through the magic RUNTIME_PALLETS_ADDR address, which fixes two
shortcomings of the previous implementation:

1. Incorrect origin verification - The origin is now correctly verified
as EthTransaction.
2. Missing Ethereum transaction receipts - Receipts are now properly
generated for all Ethereum transactions.

Includes:
- New eth-rpc integration test validating end-to-end functionality
- Benchmark measuring the extrinsic overhead
- Unit tests

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[pallet-revive] use run_instant_seal_and_finalize in dev-node (#10252)

fix finalized block production with instant-seal by using
`run_instant_seal_and_finalize` instead of `run_instant_seal`

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

make contracts create consider is_unlimited_contract_size_allowed (#10224)

While running foundry tests from
https://github.com/balancer/balancer-v3-monorepo/tree/main/pkg/pool-weighted,
found we hit this limit.

Foundry environment is configured with unlimited code size, so we need
to make sure pallet-revive respects those configurations everywhere.

---------

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet-revive: add secp256r1 (0x100) precompile (#10267)

Add secp256r1 precompile (0x100)

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

fix NextFeeMultiplier update before Revive::on_finalize (#10271)

Fix https://github.com/paritytech/polkadot-sdk/issues/10177

Store `base_fee_per_gas` and `block_gas_limit` in the EthBlockBuilderIR,
since these values are derived from the NextFeeMultiplier and we can't
read it from Revive::on_finalize since this runs (in most Runtime) after
TransactionPayment::on_finalize where the value is updated for the next
block.

also use `BlockNumberFor<T>` for the BlockHash map instead of U256. No
release have been performed yet since the introduction of that change,
so that should not require any migration.
```
	#[pallet::storage]
	pub(crate) type BlockHash<T: Config> =
		StorageMap<_, Identity, BlockNumberFor<T>, H256, ValueQuery>;
```

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet_revive: Fix EVM tests to pass `data` as part of `code` (#10214)

The test code was passing the constructor argument as `data` on EVM. But
it should be passed as part of the `code`. This is different from PVM
where those are separate.

Failing to do so makes those opcodes return the wrong values when `data`
is passed to the constructor:

```
CODESIZE
CODECOPY
CALLDATASIZE
CALLDATACOPY
CALLDATALOAD
```

Further changes:

- I also added some checks to fail instantiation if `data` is non empty
when uploading new EVM bytecode.
- Return error when trying to construct EVM contract from code hash as
this does not make sense since no initcode is stored on-chain.

---------

Co-authored-by: pgherveou <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

fix genesis eth block builder number again (#10297)

Redoes https://github.com/paritytech/polkadot-sdk/pull/10225 for the
genesis block number.

It was broken again by
https://github.com/paritytech/polkadot-sdk/pull/10271

pallet-revive: fix eth tx decoding (#10290)

Fix Ethereum transaction decoding

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[pallet-revive] improve eth-rpc tests reliability (#10281)

Improve eth-rpc tests reliability by replacing substrate-node with
revive-dev-node, fixing nonce query in runtime_api_dry_run_addr, and
running all tests in a single tokio test function

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet-revive: add hook for mocking origin (#10272)

While runing some balancer v3 tests:
https://github.com/paritytech/foundry-polkadot/issues/287#issuecomment-3502668161,
discovered we need a way to mock up the origin as well, so add hook.

---------

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet-revive fix prestate diff tracing (#10303)

Fix prestate diff-tracing, add missing storage diff for created
contracts

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

fix P256Verify precompile address (#10336)

fix https://github.com/paritytech/contract-issues/issues/220

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[pallet-revive] add tracing for selfdestruct (#10244)

Add tracing for selfdestruct

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: PG Herveou <[email protected]>

[pallet-revive] update evm create benchmark (#10366)

Add a benchmark for the EVM CREATE instruction.

We are currently reusing the `seal_instantiate` benchmark from PVM
instantiation, which is incorrect because instantiating an EVM contract
takes different arguments and follows a different code path than
creating a PVM contract.

This benchmark performs the following steps:

- Generates init bytecode of size i, optionally including a balance with
dust.
- Executes the init code that triggers a single benchmark opcode
returning a runtime code of the maximum allowed size
(qrevm::primitives::eip170::MAX_CODE_SIZE`).

Also fix the order of the weight function arguments, they were wrong
causing the weight to be much bigger that what it should be

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet-revive benchmark opcode fix (#10380)

Benchmark opcode was using the invalid opcode instead of defining a new
one.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

Enable force debug in revive dev node (#10383)

This change ensures that all types that implement `RuntimeDebug` are
fully displayed in log output of the revive dev node, instead of just
showing `<wasm:stripped>`.

Unfortunately, the trait `RuntimeDebugNoBound`, that we also use
frequently in pallet-revive, is not affected and will still output
`<wasm:stripped>` (it does not check for the `force-debug` feature flag,
instead it only fully outputs values when either one of the features
`std` or `try_runtime` is enabled – this is something we implement as a
general change).

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: pgherveou <[email protected]>

pallet-revive: add DebugSetting for bypassing eip-3607 (#10387)

Only works for contract accounts, not precompiles.
This is needed so that test nodes like anvil can send transactions from
contract accounts, a widely-used feature in tests

Needed for https://github.com/paritytech/foundry-polkadot/pull/423

Fix termination (#10302)

This PR fixes up termination by changing the behavior to:

- The free balance (without ed) should be send away right away to the
beneficiary and not be delayed like the contract deletion.
- The ed and storage deposit will be send away only when terminating but
to the origin (delayed).
- The scheduling of the terminate needs to be reverted if the scheduling
frame reverts.
- `SELFDESTRUCT` should be allowed inside the constructor. The issuing
contract will exist as account without code for the remainder of the
transaction.
- The `terminate` pre-compile should revert if delegate called or its
caller was delegate called. This is just my opinion but if we are
changing semantics we can might as well add some security. We are
increasing the attack surface by allowing the destruction of any
contract (not only created in the current tx).

- Storage refunds should no longer use `BestEffort`. This is necessary
to fail refunds in case some other locks (due to participation in gov
for example) prevent sending them away. This is in anticipation of new
pre-compiles.
- Moved pre-compile interfaces to sol files and made them available to
fixtures
- Added some Solidity written tests to exercise error cases

Those should all be written in Solidity to test both backends at the
same time. No more Rust fixtures.

@0xRVE can you take those over as I am ooo.

- Test that checks that scheduled deletions do properly roll back if a
frame fails
- Test that value send to a contract after scheduling for deletion is
send to the beneficiary (different from Eth where this balance is lost)
- Add tests that use `SELFDESTRUCT` to `Terminate.sol`. Need
https://github.com/paritytech/devops/issues/4508 but can be tested
locally with newest `resolc`.

---------

Signed-off-by: Alexandru Gheorghe <[email protected]>
Signed-off-by: Andrei Sandu <[email protected]>
Co-authored-by: 0xRVE <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: pgherveou <[email protected]>
Co-authored-by: Alin Dima <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: Kian Paimani <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Marian Radu <[email protected]>
Co-authored-by: Karol Kokoszka <[email protected]>
Co-authored-by: Francisco Aguirre <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: girazoki <[email protected]>
Co-authored-by: Adrian Catangiu <[email protected]>
Co-authored-by: Lukasz Rubaszewski <[email protected]>
Co-authored-by: Paolo La Camera <[email protected]>
Co-authored-by: Andrei Eres <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Egor_P <[email protected]>
Co-authored-by: Agustín Rodriguez <[email protected]>
Co-authored-by: Branislav Kontur <[email protected]>
Co-authored-by: Andrei Sandu <[email protected]>
Co-authored-by: Thang X. Vu <[email protected]>
Co-authored-by: DenzelPenzel <[email protected]>
Co-authored-by: Javier Viola <[email protected]>
Co-authored-by: Alexander Cyon <[email protected]>
Co-authored-by: Sebastian Kunert <[email protected]>
Co-authored-by: Alexander Samusev <[email protected]>
Co-authored-by: Omar <[email protected]>
Co-authored-by: Guillaume Thiolliere <[email protected]>
Co-authored-by: BDevParity <[email protected]>

[pallet-revive] evm remove contract storage slot when writing all zero bytes (#10309)

fixes https://github.com/paritytech/contract-issues/issues/216

When an EVM contract writes an all-zero 32-byte storage word, remove the
corresponding child‑trie entry so storage-deposit accounting sees
bytes/items removed and a refund can be applied.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: pgherveou <[email protected]>

Fix assertion (#10427)

According to assertion message and comment("at least"),
`T::MaxDebugBufferLen::get() > MIN_DEBUG_BUF_SIZE` should be changed
into `T::MaxDebugBufferLen::get() >= MIN_DEBUG_BUF_SIZE`
```rust
// Debug buffer should at least be large enough to accommodate a simple error message
const MIN_DEBUG_BUF_SIZE: u32 = 256;
assert!(
	T::MaxDebugBufferLen::get() > MIN_DEBUG_BUF_SIZE,
	"Debug buffer should have minimum size of {} (current setting is {})",
	MIN_DEBUG_BUF_SIZE,
	T::MaxDebugBufferLen::get(),
);
```
For this assertion, the assertion message indicates assertion will fail
when max_storage_size > storage_size_limit, which means it requires
max_storage_size <= storage_size_limit, but assertion predicate is
`max_storage_size < storage_size_limit`. Based on the code semantics,
assertion predicate should be changed into `max_storage_size <=
storage_size_limit`.
```ru…
TorstenStueber pushed a commit that referenced this pull request Dec 5, 2025
This is a fix for the fact that `exec::Key` is exposed from within
`pallet_revive::tracing::Tracing` interface, but not from the crate
itself making custom tracers effectively unimplementable outside said
crate.

In my case it's useful for implementing custom tracers for integration
with `foundry`

Requires no downstream changes

This is a fix for the fact that `exec::Key` is exposed from within
`pallet_revive::tracing::Tracing` interface, but not from the crate
itself making custom tracers effectively unimplementable outside said
crate.

see here for one of the methods: [`exec::Key` exposed to the
implementor, despite not being exported by the
`crate`](https://github.com/paritytech/polkadot-sdk/blob/pkhry/expose_key_pallet_revive/substrate/frame/revive/src/tracing.rs#L68)

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[pallet-revive] Move `to_account_id` host function to `System` pre-compile (#9455)

Part of closing https://github.com/paritytech/polkadot-sdk/issues/8572.

cc @athei @pgherveou

---------

Co-authored-by: xermicus <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>

[pallet-revive] Move `blake2_128` host function to `System` pre-compile (#9454)

Part of closing https://github.com/paritytech/polkadot-sdk/issues/8572.

I'm splitting some of the host function migrations into separate PRs, as
there are sometimes refactorings involved and this should make reviewing
easier.

cc @athei @pgherveou

[revive] move existing files to prepare evm backend introduction (#9501)

- Move exisiting files in pallet-revive to accomodate the upcoming EVM
backend
- Add solc/resolc compilation feature for fixtures
- Add `fn is_pvm` to later distinguish between pvm / evm bytecode

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

align eth-rpc response with geth (#9177)

- Update some serde encoding for eth-rpc to match serialization behavior
of Geth
- Add support for serializing / deserializing EIP7702 tx types
- Disable transaction type we don't support yet in
try_ino_unchecked_extrinsics

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[revive] revm backend (#9285)

Initial EVM support via the REVM crate to create a dual-VM system that
can execute both PolkaVM and EVM

- Added `AllowEVMBytecode: Get<bool>` to the config to enable/disable
EVM call and instantiation
- CodeInfo has been updated to add the type of bytecode (EVM / PVM).
`migration/v2.rs` takes care of migrating existing storages
- The CodeUploadDeposit is not held by a pallet account instead of being
held on the uploader, It's automatically refunded when the refcount
drops to 0 and the code is removed.
- The basic flow of uploading an EVM contract and running it should work
- instructions are copied and adapted from REVM they should be ignored
in this PR and reviewed in follow-up PR
(**reviewers** please ignore
`substrate/frame/revive/src/vm/evm/instructions/*` for now)

A basic instruction looks like this:

```rust
pub fn coinbase<'ext, E: Ext>(context: Context<'_, 'ext, E>) {
	gas_legacy!(context.interpreter, revm_gas::BASE);
	push!(context.interpreter, context.host.beneficiary().into_word().into());
}
```

All instructions have been copied from `REVM` and updated with generic
types for pallet-revive. Two main changes are required:

Replace REVM gas calls with existing benchmarks where available:

```diff
- gas_legacy!(context.interpreter, revm_gas::BASE);
+ gas!(context.interpreter, RuntimeCosts::BlockAuthor);
```

Replace `context.host` calls with `context.extend` (set to `&mut Ext`):

```diff
- push!(context.interpreter, context.host.beneficiary().into_word().into());
+ let coinbase: Address = context.interpreter.extend.block_author().unwrap_or_default().0.into();
+ push!(context.interpreter, coinbase.into_word().into());
```

- For cases without existing benchmarks (e.g arithmetic, bitwise) , we
will keep `gas_legacy!`
- The u64 gas value are multiplied by a base cost benchmarked by
`evm_opcode`

- ### Important Rules
- All calls to `context.host` should be removed (initialized to default
values)
- All calls to `context.interpreter.gas` should be removed (except
`gas.memory` handled by `resize_memory!` macro)
- See `block_number` implementation as a reference example

The following instructions in src/vm/evm/instructions/** need to be
updated

We probably don't need to touch these implementations here, they use the
gas_legacy! macro to charge a low gas value that will be scaled with our
gas_to_weight benchmark. The only thing needed here are tests that
exercise these instructions

<details>

- [ ] **add**
- [ ] **mul**
- [ ] **sub**
- [ ] **div**
- [ ] **sdiv**
- [ ] **rem**
- [ ] **smod**
- [ ] **addmod**
- [ ] **mulmod**
- [ ] **exp**
- [ ] **signextend**

- [ ] **lt**
- [ ] **gt**
- [ ] **slt**
- [ ] **sgt**
- [ ] **eq**
- [ ] **iszero**
- [ ] **bitand**
- [ ] **bitor**
- [ ] **bitxor**
- [ ] **not**
- [ ] **byte**
- [ ] **shl**
- [ ] **shr**
- [ ] **sar**
- [ ] **clz**

- [ ] **jump**
- [ ] **jumpi**
- [ ] **jumpdest**
- [ ] **pc**
- [ ] **stop**
- [ ] **ret**
- [ ] **revert**
- [ ] **invalid**

- [ ] **mload**
- [ ] **mstore**
- [ ] **mstore8**
- [ ] **msize**
- [ ] **mcopy**

- [ ] **pop**
- [ ] **push0**
- [ ] **push**
- [ ] **dup**
- [ ] **swap**

</details>

These instructions should be updated from using gas_legacy! to gas! with
the appropriate RuntimeCost, the returned value need to be pulled from
our `&mut Ext` ctx.interpreter.extend instead of the host or input
context value

<details>

- [x] **block_number**
- [ ] **coinbase**
- [ ] **timestamp**
- [ ] **difficulty**
- [ ] **gaslimit**
- [ ] **chainid**
- [ ] **basefee**
- [ ] **blob_basefee**

- [ ] **balance**
- [ ] **extcodesize**
- [ ] **extcodecopy**
- [ ] **extcodehash**
- [ ] **blockhash**
- [ ] **sload**
- [ ] **sstore**
- [ ] **tload**
- [ ] **tstore**
- [ ] **log**
- [ ] **selfdestruct**
- [ ] **selfbalance**

- [ ] **keccak256**
- [ ] **address**
- [ ] **caller**
- [ ] **callvalue**
- [ ] **calldataload**
- [ ] **calldatasize**
- [ ] **calldatacopy**
- [ ] **codesize**
- [ ] **codecopy**
- [ ] **returndatasize**
- [ ] **returndatacopy**
- [ ] **gas**

- [ ] **origin**
- [ ] **gasprice**
- [ ] **blob_hash**

</details>

These instructions should be updated,, that's where I expect the most
code change in the instruction implementation.
See how it's done in vm/pvm module, the final result should look pretty
similar to what we are doing there with the addition of custom gas_limit
calculation that works with our gas model.

see also example code here https://github.com/paritytech/revm_example

<details>

- [ ] **create**
- [ ] **create**
- [ ] **call**
- [ ] **call_code**
- [ ] **delegate_call**
- [ ] **static_call**

</details>

---------

Signed-off-by: Cyrill Leutwiler <[email protected]>
Signed-off-by: xermicus <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Alexander Theißen <[email protected]>
Co-authored-by: xermicus <[email protected]>
Co-authored-by: 0xRVE <[email protected]>
Co-authored-by: Robert van Eerdewijk <[email protected]>

[pallet-revive] Expose `AccountInfo` and `ContractInfo` in the public interface (#9606)

Part of https://github.com/paritytech/polkadot-sdk/issues/9553
See https://github.com/paritytech/foundry-polkadot/issues/276

Exposes revive types to use in foundry-polkadot project.

Should not affect downstream projects.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[pallet-revive] EVM backend: Implement tx, block system and call stack instructions (#9414)

This PR is part of the road to EVM.
- Implement call and create frames, allowing to call and instantiate
other contracts.
- Implement support for tx info, block info, system and contract
opcodes.
- The `InstructionResult` <-> `ExecError` conversion functions.

---------

Signed-off-by: Cyrill Leutwiler <[email protected]>
Signed-off-by: xermicus <[email protected]>
Co-authored-by: pgherveou <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Alexander Theißen <[email protected]>
Co-authored-by: xermicus <[email protected]>
Co-authored-by: 0xRVE <[email protected]>
Co-authored-by: Robert van Eerdewijk <[email protected]>
Co-authored-by: Cyrill Leutwiler <[email protected]>

[pallet-revive] Update genesis config (#9557)

Update pallet-revive Genesis config
Make it possible to define accounts (contracts or EOA) that we want to
setup at Genesis

---------

Signed-off-by: Cyrill Leutwiler <[email protected]>
Signed-off-by: xermicus <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Alexander Theißen <[email protected]>
Co-authored-by: xermicus <[email protected]>
Co-authored-by: 0xRVE <[email protected]>
Co-authored-by: Robert van Eerdewijk <[email protected]>

[pallet-revive] Add `Pallet::set_evm_balance` (#9617)

Part of https://github.com/paritytech/polkadot-sdk/issues/9553
See https://github.com/paritytech/foundry-polkadot/issues/273

Adds a balance setter in EVM.

Should not affect downstream projects.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: PG Herveou <[email protected]>

[pallet-revive] EVM backend: implement various missing opcodes (#9385)

* [x] system (other PR, no tests)
* [x] block_info (other PR)
* [x] contract (other PR)
* [x] tx_info (other PR)
* [x] arithmetic
* [x] bitwise
* [x] i256 (these are not opcodes so will not test)
* [x] host (except `log()`)
* [x] memory
* [x] control (except `pc()`)
* [x] macros (these are not opcodes so will not test)
* [x] utility (these are not opcodes so will not test)
* [x] stack

---------

Signed-off-by: xermicus <[email protected]>
Signed-off-by: Cyrill Leutwiler <[email protected]>
Co-authored-by: pgherveou <[email protected]>
Co-authored-by: Sebastian Miasojed <[email protected]>
Co-authored-by: Robert van Eerdewijk <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Sebastian Miasojed <[email protected]>
Co-authored-by: xermicus <[email protected]>
Co-authored-by: Cyrill Leutwiler <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>
Co-authored-by: Alexander Cyon <[email protected]>
Co-authored-by: Alexander Cyon <[email protected]>
Co-authored-by: Andrei Sandu <[email protected]>
Co-authored-by: Dmitry Sinyavin <[email protected]>
Co-authored-by: s0me0ne-unkn0wn <[email protected]>
Co-authored-by: Serban Iorga <[email protected]>

[pallet-revive] fix GAS_PRICE (#9679)

Currently submitting a transactio to the dev-node or kitchensink will
trigger an error when you try to submit a transaction trhough cast (or
anything using alloy) as the block gas limit on these runtime is greater
than u64::max.

This bump the GAS_PRICE to fix this issue, this will eventually be
superseeded by the new gas model

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: xermicus <[email protected]>

[pallet-revive] Properly convert `Ext::minimum_balance` value to `U256` (#9705)

The value is just cast to `U256` here, without applying the actual
conversion factor (`NativeToEthRatio`).

There are some tests that apply the same easy conversion via `Into`,
without applying the conversion factor. Those tests still succeed, but
you might want to go through those usages to not confuse people reading
the code.

@athei @pgherveou

added trace logging in EVM interpreter loop (#9561)

Added trace logging for each instruction to evm::run function.
solves https://github.com/paritytech/polkadot-sdk/issues/9575

---------

Signed-off-by: xermicus <[email protected]>
Signed-off-by: Cyrill Leutwiler <[email protected]>
Co-authored-by: pgherveou <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Robert van Eerdewijk <[email protected]>
Co-authored-by: xermicus <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>
Co-authored-by: Cyrill Leutwiler <[email protected]>

[pallet-revive] fix CodeInfo owner (#9744)

Fix CodeInfo owner, it should always be set to the origin of the
transaction

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[pallet-revive] fix tracing collect (#9736)

Tracing fixes:

- collect_trace take `self` instead of `&mut self`, to avoid reusing the
tracer state when tracing multiple transactions in a block.
- Fix issues related to call traces and the onlyTopCall config option

Fix
https://github.com/paritytech/contract-issues/issues/156https://github.com/paritytech/contract-issues/issues/156

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

revive-rpc: use generic RpcClient instead of ReconnectingRpcClient (#9701)

This will enable more flexible usage of the revive RPC as a library.

Needed so that we can reuse it with an in-memory RPC client for
anvil-polkadot:
https://github.com/paritytech/foundry-polkadot/issues/238

[pallet-revive] Migrate various getters to `System` pre-compile (#9517)

Part of closing https://github.com/paritytech/polkadot-sdk/issues/8572.

Migrates:
* `own_code_hash`
* `caller_is_origin`
* `caller_is_root`
* `weight_left`
* `minimum_balance`

There are some minor other fixes in there (removing leftovers from
deprecating chain extensions, stabilizing `block_hash` in overlooked
crates, etc.).

cc @athei @pgherveou

---------

Co-authored-by: Alexander Theißen <[email protected]>

[pallet-revive] fix salt endianness  (#9771)

fix <https://github.com/paritytech/polkadot-sdk/issues/9769>

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet_revive: add account_id and new_balance_with_dust runtime APIs  (#9683)

Needed for https://github.com/paritytech/foundry-polkadot/issues/240

revive-fixtures: Provide an env variable to disable compilation (#9791)

Right now `pallet-revive-fixtures` is always trying to build the
fixtures. It requires `solc` and other stuff for compilation. If you are
not requiring the fixtures, because you for example only run `cargo
check`, this pull request introduces `SKIP_PALLET_REVIVE_FIXTURES`. When
the environment variable is set, the compilation of the fixtures is
skipped. It will set the fixtures to `None` and they will panic at
runtime.

EIP-3607 added check to make sure a contract account cannot transfer funds as an EOA account (#9717)

fixes https://github.com/paritytech/polkadot-sdk/issues/9570

---------

Co-authored-by: Robert van Eerdewijk <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Alexander Theißen <[email protected]>

[pallet-revive] Add set_storage/set_storage_var_key methods (#9759)

... to be used in polkadot foundry to make sure EVM state is in sync
with pallet-revive state.

Fixes: https://github.com/paritytech/foundry-polkadot/issues/275

---------

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Alexander Theißen <[email protected]>

bugfix revm set_storage gas cost (#9823)

Fixes bug in revm gasmetering where the initial charge was less than the
adjusted charge.

---------

Co-authored-by: Robert van Eerdewijk <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: PG Herveou <[email protected]>

pallet revive evm backend add tests for cross vm contract calls (#9768)

fixes https://github.com/paritytech/polkadot-sdk/issues/9576

---------

Co-authored-by: Robert van Eerdewijk <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Alexander Theißen <[email protected]>

[pallet-revive] update rpc metadata (#9853)

Update eth-rpc metadata files

the metadata should have been updated here
https://github.com/paritytech/polkadot-sdk/pull/9759
where a new variant was added to an enum used by the runtime api

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet-revive: allow changing immutables (#9801)

... to be used in polkadot foundry to make sure EVM state is in sync
with pallet-revive state.

Fixes: https://github.com/paritytech/foundry-polkadot/issues/277

---------

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>

[pallet_transaction_payment]: Share withdrawn tx fee credit with other pallets (#9780)

Replaces https://github.com/paritytech/polkadot-sdk/pull/9590.

The audit of #9590 showed that holding the txfee as held balance and
especially playing around with `providers` causes a lot of troubles.

This PR is a much lighter change. It keeps the original withdraw/deposit
pattern. It simply stores the withdrawn `Credit` and allows other
pallets to withdraw from it.

It is also better in terms of performance since all tx signers share a
single storage item (instead of a named hold per account).

---------

Co-authored-by: joe petrowski <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Bastian Köcher <[email protected]>

`pallet-assets`: extract precompiles to a separate crate (#9796)

closes #9434

Assets pallet includes `pallet-revive` precompiles and subsequently pull
a lot of EVM related dependencies by default. This forces downstream
users that only want `pallet-assets` functionality to pull unrelated
dependencies and causes confusion (why do we have bunch of ethereum
crates in the dependency tree of `pallet-assets`?). This extracts
precompiles into its own crate

---------

Co-authored-by: Alexander Theißen <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>

pallet-revive: add custom addr recovery logic in `ReceiptExtractor` (#9878)

`ReceiptExtractor` parses blocks and associated transactions in
pallet-revive-eth-rpc and is useful for a range of Ethereum node RPCs.
When the transactions are impersonated, they are based on a fake
signature, which can't be used with the production eth address recovery
logic. The recovery logic must be customised in cases where we
impersonate transactions, so this PR adds a custom function on the
`ReceiptExtractor` which can be used to customize address recovery.

Developers using pallet-revive-eth-rpc as a lib should instantiate the
`ReceiptExtractor` with the custom constructor if impersonation usecases
must be supported.

Relevant in context of
https://github.com/paritytech/foundry-polkadot/issues/242, to implement
anvil-polkadot impersonation.

---------

Signed-off-by: Iulian Barbu <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

replace forloop solc fixture type with test-case macro (#9841)

For all tests of revm instructions replaced `for fixture_type` with
test-case macro

---------

Co-authored-by: Robert van Eerdewijk <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

Move revive fixtures into release directory (#9670)

https://github.com/paritytech/polkadot-sdk/pull/8980 did fix the
fellowship CI but it triggers a rebuild of the fixtures every single
time you run tests. Annoying during development.

Instead of rebuilding, we just move the fixtures into the
`target/release` directory where it should be cached by the fellowship
CI.

Verifying that it works here:
https://github.com/polkadot-fellows/runtimes/pull/891

Why: Re-running when the output dir changes will make it re-run every
time. Since every run changes the output dir.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

Rework gas mapping (#9803)

Replacement of https://github.com/paritytech/polkadot-sdk/pull/9740.

Build on top of the new tx payment changes:
https://github.com/paritytech/polkadot-sdk/pull/9780

Started a new PR because due to the rebase on top of the new tx payment
changes this PR is substantially different and I don't want to
invalidate the existing comments on
https://github.com/paritytech/polkadot-sdk/pull/9740 which are not
implemented, yet.

This will change the weight to eth fee mapping according to [this
model](https://shade-verse-e97.notion.site/Gas-Mapping-Challenges-Revised-26c8532a7ab580db8222c2ce3023669e).

This only changes the estimate returned from the dry run and how the
weights are derived from an ethereum transaction. It does not change how
contracts observe the gas. This will be done in a follow up. More
specifically:

1. The `GAS` opcode should return the new gas. As of right now it
returns `ref_time.`
2. The `*_CALL` opcodes should use the passed `gas` parameter and decode
it into `Weight`. As of right now the parameter is ignored.

That said, even without those follow ups this PR should fix all
`InvalidTransaction` errors we are observing.

We should add a configurable divisor so that the gas_price is always at
least some gwei. That makes it easier to input the values.

---------

Signed-off-by: Alexander Theißen <[email protected]>
Co-authored-by: joe petrowski <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Francisco Aguirre <[email protected]>
Co-authored-by: PG Herveou <[email protected]>

pallet-revive: Bump PolkaVM (#9928)

Bumped `polkavm` to the latest version. No semantic changes in that
update.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[pallet-revive] revm refactor (#9818)

Refactor REVM implementation in `pallet-revive`

This PR removes technical debt and eliminates tight coupling to specific
REVM versions, facilitating integration with other projects (e.g.,
Foundry). After this refactoring, we primarily depend only on REVM's
[`Bytecode`](https://docs.rs/revm/latest/revm/bytecode/struct.Bytecode.html)
struct.

Most of REVM's generic type system and trait abstractions are unused or
had to be ignored to prevent bugs. Interactions with the host in
pallet-revive are handled through the `Ext` trait, making REVM's other
abstractions unnecessary or potentially harmful.

Unused REVM abstractions included:
- **Host trait**: Unused in the pallet, we relied on the `DummyHost`
default mocked implementation
- **Gas field**: Unused, the pallet uses its own gas accounting system
- **Methods from `InputsTr`**: Unused most methods had panic
implementations since they couldn't be relied upon
- **Spec**: Unused: We only maintain the latest fork for each runtime

This refactor introduces:
- **Interpreter**: Simplified struct containing only the fields actually
needed
- **Stack**: Simplified implementation using `sp_core::*` instead of
`alloy_core::primitives::*` for better integration with the rest of the
pallet
- **Memory**: Simplified implementation providing only the methods
actually needed
- **Instructions**:
- New instructions don't rely on macros and have a simplified signature:
`Fn(&mut interpreter) -> ControlFlow<Halt>`
- Removed function pointer table lookup for instructions in favor of
match statements,
- Unified gas charging: legacy u64 gas charging is now wrapped in
`EVMGas` that implements `Token<T>` to provide the associated weight
- Removed the `InterpreterAction`, this simplify the interpreter loop
to:
```rust
loop {
	let opcode = interpreter.bytecode.opcode();
	interpreter.bytecode.relative_jump(1);
	exec_instruction(interpreter, opcode)?;
}
```
- **Error handling**: Opcode that fail return Halt::Err(DispatchError),
this remove the need from converting between InstructionResult and
`ExecError` like we were previously doing and standardize errors
generated on both backends

---------

Co-authored-by: 0xRVE <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Robert van Eerdewijk <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>

[pallet-revive] Allows setting evm balance for non-existing account (#9911)

Allows calling set_evm_balance for a non-existing account on
pallet-revive.
It is needed by foundry to inject EVM accounts.

pallet-revive: Fix dry run balance check logic (#9942)

Fix fault balance check logic during dry-run:

We should not enforce that the sender has enough balance for the fees in
case no `gas` is supplied.

cc @TorstenStueber

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

Allow unlimited contract size in debug mode. (#9831)

Fixes https://github.com/paritytech/contract-issues/issues/167

The main changes in this PR are:

1. Added an associated type DebugEnabled
2. Introduced a DebugSettings struct with a single boolean field
3. Added a StorageValue: pub(crate) type DebugSettingsOf<T: Config> =
StorageValue<_, DebugSettings<T>, ValueQuery>;
4. Included debug_settings in the GenesisConfig
5. Added a unit test to verify that large EVM contracts can be
instantiated.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Alexander Theißen <[email protected]>

pallet-revive update basefee instruction (#9945)

The base fee instruction now returns the proper base price instead of a
hard coded value.

---------

Co-authored-by: Alexander Theißen <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[pallet-revive] Migrate unstable storage host functions to `Storage` pre-compile (#9603)

Part of closing https://github.com/paritytech/polkadot-sdk/issues/8572.

Introduces a new `Storage` pre-compile and migrates:
* `clear_storage`
* `take_storage`
* `contains_storage`

The new `Storage` pre-compile is introduced, as it requires implementing
the `BuiltinPrecompile::call_with_info` function, which cannot be
implemented together with `BuiltinPrecompile::call` (implemented by the
`System` pre-compile).

I've added the `sol_utils` as I (on admittedly quick glance) couldn't
find a crate that supports those encodings (Solidity's `bytes`) without
requiring an allocator.

cc @athei @pgherveou

---------

Co-authored-by: xermicus <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>

Return unified gas for `gas_left` syscalls and opcodes (#9968)

In https://github.com/paritytech/polkadot-sdk/pull/9803 we introduced
the new gas mapping. However, when contracts are querying the remaining
gas we still returned the `ref_time`. This PR changes that.

- Added a new `Stack::gas_left` function that calculates the remaining
gas as eth gas that matches the gas passed in the transaction. It
supports both the `eth_` and non `eth_` flavors of dispatchables.
- Changed the PVM syscall `ref_time_left` to return the new unified gas.
- Changes the EVM `GAS` opcode to return the new unified gas
- When calculating the consumed storage we now take into account what
was charged during the current frame
- Removed `storage_deposit_limit` from `eth_*` dispatchables. It is
always uncapped in this case and the overall limit is conveyed using the
tx credit.

Now that we can return the proper remaining gas that also includes the
storage deposit we can change the EVM `call` instruction next to take
the passed `gas` into account. Since the unified gas takes both the
txfee and the deposit into account it will be able to limit both
effectively.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: xermicus <[email protected]>

[pallet-revive] dev-node constant fee multiplier (#9939)

This will let us have stable gas cost (as long as the state of the dev
net does not change)

In mainnet neither polkadot, nor EVM chains can guarantee stable gas
since the state of the blockchain can change between two dry runs, but I
would argue that we are better off if we have stable gas cost in testing
environments as that is the standard on EVM devnet

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[pallet-revive] fix exp overflow (#9991)

Update arithmetic tests, and fix potential overflow

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: xermicus <[email protected]>

 Wait for transaction receipt if instant seal is enabled (#9914)

Fixes https://github.com/paritytech/contract-issues/issues/165

The main changes in this PR are:

1. Add a new API to revive-dev-node to check whether the node has
instant seal enabled.
2. Add a new debug API to eth-rpc to check whether the node has instant
seal enabled. (optional)
3. Query and cache the node’s instant seal status during eth-rpc
initialization.
4. If instant seal is enabled, wait for the transaction receipt to be
available

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: pgherveou <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>

[pallet-revive] Implement the consume_all_gas syscall (#9997)

This PR implements a new API `consume_all_gas` which is required for
100% EVM `INVALID` opcode compatibility.

Since ceding of all remaining gas is handled in the EVM interpreter, I
decided to not add a return flag but make this a dedicated syscall for
consistency instead.

Didn't implement a benchmark since the first (and only) thing this does
is consuming all remaining gas anyways.

---------

Signed-off-by: Cyrill Leutwiler <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

`pallet-xcm`: extract precompiles to a separate crate (#9985)

This PR extracts the XCM precompile from `pallet-xcm` into a new
standalone crate `pallet-xcm-precompiles` to resolve an unwanted
dependency issue. Previously, the XCM precompile was implemented
directly in `pallet-xcm/src/precompiles.rs`, which required `pallet-xcm`
to depend on `pallet-revive`, introducing it as a transitive dependency
for all parachains using `pallet-xcm`.

Closes #9955

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[pallet-revive] fix subxt submit & add debug statments (#10016)

- Fix subxt submit by default it's using
`author_submitAndWatchExtrinsic` even though we just want to fire and
forget
- Add debug instructions to log the signer & nonce of new eth
transactions when the node validate the transaction

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet_revive: Lower the deposit costs for child trie items (#10027)

Fixes https://github.com/paritytech/polkadot-sdk/issues/9246

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet_revive: Fix incorrect `block.gaslimit` (#10026)

Fixes https://github.com/paritytech/contract-issues/issues/112

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

frame/revive: ETH block storage (#9418)

This PR constructs the Ethereum block in the following way:
- events (logs) are captured via an `environmental!` variable to reduce
reliance on pallet storage
- A maximum of 512 events is allowed per transaction, with the size of
an event capped to `self.ext.max_value_size()`
- A memory-efficient intermediate block builder is deserialized and
serialized back to the pallet storage
- The intermediate block builder builds the transaction and event root
hashes using low level RLP encoding primitives to achieve around 90%
pallet storage optimization
- For more details, see
https://github.com/paritytech/polkadot-sdk/pull/9764
- A fixup is included for 7702 transaction rlp
serialization/deserialization is added to ensure we can build the
Ethereum block hash from live Ethereum blocks.
- The maximum `CALL_PARAMS_MAX_SIZE` is increased to 512 to 244 to
accommodate the transaction added to the Eth call

This PR also includes benchmarking:
- https://github.com/paritytech/polkadot-sdk/pull/9496

- pallet storage testing and capturing of events / transactions are
added at `tests/block_hash.rs`
- incremental block storage is tested in `evm/block_hash.rs`, which
ensures RLP encoding / hash builder and identical hashes from live
ethereum blocks
- tested via RPC work

- https://github.com/paritytech/polkadot-sdk/pull/9512
- https://github.com/paritytech/polkadot-sdk/pull/9616
- https://github.com/paritytech/polkadot-sdk/pull/9452

Builds upon https://github.com/paritytech/polkadot-sdk/pull/9413

Part of: https://github.com/paritytech/contract-issues/issues/139

---------

Signed-off-by: Alexandru Vasile <[email protected]>
Co-authored-by: Lukasz Rubaszewski <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[pallet-revive] improve revive genesis config (#9988)

- Update test to make sure contracts created at genesis are callable
- make sure that contracts are brought to existence by minting e.d first

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

added baltathar, charleth, dorothy, and ethan to eth-rpc and revive-d… (#10041)

adds more funded accounts to eth-rpc and dev-node

---------

Co-authored-by: Robert van Eerdewijk <[email protected]>
Co-authored-by: PG Herveou <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet_revive: Increase event sizes (#10047)

Fixes https://github.com/paritytech/contract-issues/issues/140

This increases the maximum event payload size from 416 bytes to 64k.
Since https://github.com/paritytech/polkadot-sdk/pull/9418 we charge
some additional weight per byte of event payload. This makes it possible
to raise the limit while staying within our memory envelope. This
artificial weight will add 18us of weight to a maximum sized event.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet_revive: when a dry run simulates contract deployment, return the execution result data. (#10032)

Fixes https://github.com/paritytech/contract-issues/issues/177

Expose the deployed contract's runtime bytecode in eth_call responses
during simulated contract creation.

The test from issue
https://github.com/paritytech/contract-issues/issues/177 sends an
eth_call request without a destination address, while providing contract
bytecode in the data field. This simulates a contract creation
transaction. The test expects the RPC response to return the result of
executing the init code, which is the deployed contract's runtime
bytecode. While this result is not returned in actual deployments, it is
expected in dry-run simulations.

---------

Co-authored-by: pgherveou <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

eth-rpc add trace logs (#10065)

Add extra tracing logs for estimate_gas and send_raw_transaction

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: xermicus <[email protected]>

pallet_revive: Raise the MaxEthExtrinsicWeight (#10089)

Fixes https://github.com/paritytech/contract-issues/issues/194

Factory extrinsics do need more weight. It is fine to raise them to
almost the full max extrinsic weight since this is still lower than the
block weight.

Also improving the error reporting during the dry run in case an
extrinsic hits this limit. No more `OutOfGas` but a more descriptive
error of how much it is overweight.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

precompiles: Enforce state mutability (#10080)

`pallet-assets-precompile`, `pallet-xcm-precompiles` and revive builtin
precompile implementations currently violate [Solidity state
mutability](https://docs.soliditylang.org/en/latest/grammar.html#syntax-rule-SolidityParser.stateMutability),
potentially introducing a new attack vector. This PR implements
corresponding checks at the function dispatch.

Could be enforced in `pallet-revive`, however:
1. Adding something like a `const MUTATES: bool` to the `Precompile`
trait won't help because whether the call is mutating or not depends on
the [Solidity function
selector.](https://docs.soliditylang.org/en/latest/abi-spec.html#function-selector).
2. Alloy, which we are using to parse the interface definitions prior to
calling precompile implementations, doesn't provide a mapping from
function selector to its mutability
[modifier](https://docs.soliditylang.org/en/latest/cheatsheet.html#modifiers).

---------

Signed-off-by: Cyrill Leutwiler <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

revive: fix alloy-consensus dependency (#10090)

Needed in order to update foundry-polkadot to the latest master:
https://github.com/paritytech/foundry-polkadot/pull/352

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

Enforce single-state txpool for revive-dev-node (#10106)

Use single-state txpool for dev-node when instant-seal is selected

see https://github.com/paritytech/polkadot-sdk/issues/10104

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet-revive: Add ExportChainSpec command to revive-dev-node (#10020)

Add the `export-chain-spec` command to the revive-dev-node.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

revive/rpc: Adjust the RPC to utilize the ETH block from storage (#9512)

This PR adjusts the RPC layer of pallet-revive to use Ethereum blocks
from storage via runtime APIs and establishes proper Ethereum ↔
Substrate block hash mappings.

- **New database table**: `eth_to_substrate_blocks` maps Ethereum block
hashes to Substrate block hashes and block numbers
- **Bidirectional lookups**: Support for both ETH→Substrate and
Substrate→ETH hash resolution with backward compatibility fallbacks
- **Block pruning**: Updated to remove stale mappings alongside
transaction and log data

- **Genesis block initialization**: Added
`block_storage::on_finalize_build_eth_block()` call in
`BuildGenesisConfig` to properly build and store block 0

- Added comprehensive tests for block hash mapping operations
- Ethereum vs Substrate hash resolution tests
- Fork handling in block pruning tests
- Log filtering with Ethereum block hash tests
- TransactionInfo deserialization from JSON Value tests

The implementation uses a **runtime API approach** where the RPC layer
queries the runtime for Ethereum blocks and hashes, which are then
mapped to Substrate block hashes in the local SQLite database. This
provides:

1. **Backward compatibility**: Falls back to treating hashes as
Substrate hashes when no mapping exists
2. **Efficient lookups**: Database indices on both Ethereum and
Substrate block hashes
3. **Automatic cleanup**: Block mappings are pruned alongside
transaction and log data
4. **Genesis block handling**: Block 0 is built during genesis using the
block storage infrastructure

Builds upon: https://github.com/paritytech/polkadot-sdk/pull/9418
Part of: https://github.com/paritytech/contract-issues/issues/139

---------

Signed-off-by: Alexandru Vasile <[email protected]>
Co-authored-by: Lukasz Rubaszewski <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: PG Herveou <[email protected]>

revive-dev-node enforce --dev (#10109)

enforce --dev and default --log in revive-dev-node

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

Change bahaviour of contract termination in accordance with EIP-6780 (#9699)

fixes https://github.com/paritytech/polkadot-sdk/issues/9621

Behavior of `terminate` is changed in accordance with EIP-6780 (and EVM
in general):
- `terminate` only deletes the code from storage if it is called in the
same transaction the contract was created.
- `terminate` does not destroy the contract instantly. The contract is
registered for destruction, which happens at the end of the transaction.

---------

Signed-off-by: xermicus <[email protected]>
Signed-off-by: Cyrill Leutwiler <[email protected]>
Co-authored-by: Robert van Eerdewijk <[email protected]>
Co-authored-by: pgherveou <[email protected]>
Co-authored-by: Sebastian Miasojed <[email protected]>
Co-authored-by: Sebastian Miasojed <[email protected]>
Co-authored-by: xermicus <[email protected]>
Co-authored-by: Cyrill Leutwiler <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet_revive: Only enforce EIP-3607 for dispatchables (#10100)

The EIP states that contract addresses cannot be the origin of a
transaction. However, we are enforcing this rule for all contract
execution (i.e all public function on the pallet). This is a problem for
code that uses `pallet_revive` and explicitly wants to allow this.

This PR now only enforces this check for dispatchables so that all the
`bare_*` functions are unaffected.

As a drive-by a regrouped the functions on the `Pallet` so that the
public functions are no longer interleaved with the private ones. This
got mixed up when we resolved some merge conflicts.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet-revive: add interface to implement mocks and pranks (#9909)

Needed for: https://github.com/paritytech/foundry-polkadot/pull/334.

In foundry-polkadot we need the ability to be able to manipulate the
`msg.sender` and the `tx.origin` that a solidity contract sees cheatcode
documentation, plus the ability to mock calls and functions.

Currently all create/call methods use the `bare_instantiate`/`bare_call`
to run things in pallet-revive, the caller then normally gets set
automatically, based on what is the call stack, but for `forge test` we
need to be able to manipulate, so that we can set it to custom values.

Additionally, for delegate_call, bare_call is used, so there is no way
to specify we are dealing with a delegate call, so the call is not
working correcly.

For both this paths, we need a way to inject this information into the
execution environment, hence I added an optional hooks interface that we
implement from foundry cheatcodes for prank and mock functionality.

- [x] Add tests to make sure the hooks functionality does not regress.

---------

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[revive] Receipts should include failed tx (#10120)

The current implementation incorrectly accumulates receipts in storage
to compute the `receipts_root`.
However, when an extrinsic fails, all storage changes are reverted
causing the receipts to be lost.

This PR updates the handling of Ethereum transactions so that they
always succeed. The transaction logic is now wrapped in a top-level
storage transaction that rolls back all state changes on failure while
still producing a valid receipt.

A new event `EthExtrinsicRevert` is emitted when an eth transaction
reverts.
eth-rpc uses this event to set the correct receipt status.

This event also serves as a replacement for ExtrinsicFailed to make
debugging failed Ethereum transactions easier in tools like Polkadot.js.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

anvil / eth-rpc - fix subscription race (#10146)

fix
https://github.com/paritytech/polkadot-sdk/issues/10139#issuecomment-3456077366

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Alin Dima <[email protected]>

pallet_revive: Improve logging (#10157)

Just added some more information to the log output during dry_run and
transaction creation. This was helpful when debugging if the correct gas
was passed in by the client.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet-revive: make contract reverted error message more verbose (#10168)

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet-revive-eth-rpc: derive Encode/Decode for subxt-generated types (#10169)

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet_revive_dev_node: Always increment the timestamp by at least one second (#10160)

Fixes https://github.com/paritytech/contract-issues/issues/191

cc @albertov19

The instant seal introduces a race condition. Blocks can be build faster
than the timestamp resolution of Ethereum. Eth timestamps are only one
second granularity. If we build blocks faster it can happen that the
timestamp delta between them is zero. This is not allowed. We have to
make sure that in instant seal two blocks don't return the same
timestamp.

This PR does that by always incrementing the timestamp by at least one
second. Note that this is a dev-node only change. Production chains
won't have this problem as long as the block time is larger than 1
second.

Yes, it will produce timestamps in the future. But this seems to be the
lesser evil for this dev node. Time is subjective. But the rule to not
return duplicate timestamps is dependent on.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

Add upload evm code function (#10129)

EVM Runtime Code Upload for Foundry Integration
This feature enables direct upload of EVM runtime bytecode (deployed
contract code without constructor) to the pallet-revive, supporting
Foundry's code migration functionality between REVM and pallet-revive
execution environments.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

revive-eth-rpc: fix blocks pruning (#10175)

We need to call prune_blocks before the insertion process.
Otherwise, if we get a fork, we won't be able to insert it into the DB
because it already exists there. In reality, we want the other fork to
be pruned instead.

Moreover, once we do get a fork we need to prune all the other
subsequent blocks of the old fork

Return the correct block difficulty from the eth-rpc (#10186)

This PR fixes an issue in the eth-rpc/pallet-revive that was causing it
to return an incorrect value for the block's difficulty or prevrandao.

In the VM/interpreter implementation we use a constant for the block
difficulty. However, the eth block construction side was unaware of this
constant being used and therefore the RPC was always returning a block
difficulty of zero.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

revive: Fix dust & child contract calls (#10192)

When transferring to self we should just return early as it's a noop.
Not doing so cause bug in `transfer_with_dust`

as we do
```
from.dust -= from.dust
to.dust += to.dust
```

We end up with a value of dust - planck (that we burnt from to create
dust amount) on the account

fix https://github.com/paritytech/contract-issues/issues/211

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

revive fix reported gas used (#10148)

Fix `gas_used` calculation introduced in #9418 to use the actual gas
instead of just `ref_time`.

With these changes we now guarantee that `tx_cost = effective_gas_price
* gas`.
Note that since we compute gas as `fee / gas_price`, this can lead to
rounding errors when the chain uses `SlowAdjustingFeeUpdate` (i.e. the
fee is not a multiple of the gas price).
The changes in this PR ensure the fee still matches by burning the
rounding remainder.

This PR also fixes how the actual fee is computed and introduces a new
`compute_actual_fee` in `Config::FeeInfo`.
The previous fee calculation was skipping the `extension_weight` in the
fee calculation.

The updated tests ensure that the tx cost reported in the receipt
matches the fees deducted from the user account:

https://github.com/paritytech/evm-test-suite/blob/460b2c9aa3a3019d3508bb5a34a2498ea86035ff/src/gas.test.ts?plain=1#L31-L61

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[v2] pallet-revive: support uploading EVM bytecode via upload_code extrinsic. (#10193)

Fixes https://github.com/paritytech/contract-issues/issues/182

Add support for EVM bytecode to the upload_code extrinsic.
Tests in issue https://github.com/paritytech/contract-issues/issues/182
send hardhat_setCode, which uses revive's upload_code API; this change
makes that flow accept and store the EVM bytecode using upload_code
extrinsic.

This PR deprecates PR:
https://github.com/paritytech/polkadot-sdk/pull/10095

Comment explaining test configuration requirements:
https://github.com/paritytech/polkadot-sdk/pull/10095#issuecomment-3456450460

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

Notify when there is a new best block (#10220)

Modify the tx_notifier to send the block hash to the subscribers instead
of all transactions hashes.
Modify the send_raw_transaction to look for the transaction hash in the
transactions field of the evm block.

We need this changes in anvil-polkadot:
* https://github.com/paritytech/foundry-polkadot/pull/389
* to be able to implement some RPCs like : send_transaction_sync and the
filters logic

---------

Signed-off-by: Alexandru Cihodaru <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[pallet-revive] Only fund new accounts with ED (#10233)

fixes https://github.com/paritytech/contract-issues/issues/179

In case an account is created by transferring funds to it, and after
that a contract is deployed to that account, it will receive the
existential deposit twice. This can be done using create2.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: PG Herveou <[email protected]>

pallet_revive: Add dry-run timestamp override support (#10191)

This PR updates `pallet-revive` to **support overriding the block
timestamp during dry-run calls**.
The dry-run execution now uses the following configuration for
`eth_estimateGas` and `eth_call` when the block tag is `pending`:

```text
block.timestamp = max(rpc_timestamp, latest_block.timestamp + 1)
block.number = latest_block.number + 1
```

Fixes [#153](https://github.com/paritytech/contract-issues/issues/153),
[#205](https://github.com/paritytech/contract-issues/issues/205)

Downstream projects using the `ReviveApi::eth_transact` runtime API
should either provide a `timestamp` or pass `None`.

- Added dry run timestamp to `ExecConfig`.
- Added a new parameter to `ReviveApi::eth_transact` for passing the
current RPC timestamp.
- `eth_estimateGas` and `eth_call` with `pending` block tag will dry run
the transaction with the block timestamp set to `max(rpc_timestamp,
latest_block.timestamp + 1)` and block number set to
`latest_block.number + 1`.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: pgherveou <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>

pallet_revive: use real storage when building the eth genesis block (#10225)

When building the eth genesis block, query the real storage items that
store the timestamp and block number instead of using the zeroed items.

If the chainspec does not customise these, they will remain zeroed.

However, anvil does customise these if requested by the user.
Needed in order to merge
https://github.com/paritytech/foundry-polkadot/pull/391

Remove outdated comment on Tracer Type (#10246)

Prestate tracer type is now supported

[pallet-revive] fix prestate tracer current address (#10239)

Fix prestate tracer not reporting the contract addresses properly.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[pallet-revive] Add eth_substrate_call extrinsic (#10159)

Fixes https://github.com/paritytech/contract-issues/issues/180

This PR introduces `eth_substrate_call`, a new extrinsic in
pallet-revive that enables Substrate runtime calls from Ethereum
transactions. This allows tools like Hardhat to invoke Substrate
extrinsics (e.g., `upload_code`) via the Ethereum RPC.

This implements a new approach for dispatching Substrate extrinsics
through the magic RUNTIME_PALLETS_ADDR address, which fixes two
shortcomings of the previous implementation:

1. Incorrect origin verification - The origin is now correctly verified
as EthTransaction.
2. Missing Ethereum transaction receipts - Receipts are now properly
generated for all Ethereum transactions.

Includes:
- New eth-rpc integration test validating end-to-end functionality
- Benchmark measuring the extrinsic overhead
- Unit tests

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[pallet-revive] use run_instant_seal_and_finalize in dev-node (#10252)

fix finalized block production with instant-seal by using
`run_instant_seal_and_finalize` instead of `run_instant_seal`

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

make contracts create consider is_unlimited_contract_size_allowed (#10224)

While running foundry tests from
https://github.com/balancer/balancer-v3-monorepo/tree/main/pkg/pool-weighted,
found we hit this limit.

Foundry environment is configured with unlimited code size, so we need
to make sure pallet-revive respects those configurations everywhere.

---------

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet-revive: add secp256r1 (0x100) precompile (#10267)

Add secp256r1 precompile (0x100)

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

fix NextFeeMultiplier update before Revive::on_finalize (#10271)

Fix https://github.com/paritytech/polkadot-sdk/issues/10177

Store `base_fee_per_gas` and `block_gas_limit` in the EthBlockBuilderIR,
since these values are derived from the NextFeeMultiplier and we can't
read it from Revive::on_finalize since this runs (in most Runtime) after
TransactionPayment::on_finalize where the value is updated for the next
block.

also use `BlockNumberFor<T>` for the BlockHash map instead of U256. No
release have been performed yet since the introduction of that change,
so that should not require any migration.
```
	#[pallet::storage]
	pub(crate) type BlockHash<T: Config> =
		StorageMap<_, Identity, BlockNumberFor<T>, H256, ValueQuery>;
```

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet_revive: Fix EVM tests to pass `data` as part of `code` (#10214)

The test code was passing the constructor argument as `data` on EVM. But
it should be passed as part of the `code`. This is different from PVM
where those are separate.

Failing to do so makes those opcodes return the wrong values when `data`
is passed to the constructor:

```
CODESIZE
CODECOPY
CALLDATASIZE
CALLDATACOPY
CALLDATALOAD
```

Further changes:

- I also added some checks to fail instantiation if `data` is non empty
when uploading new EVM bytecode.
- Return error when trying to construct EVM contract from code hash as
this does not make sense since no initcode is stored on-chain.

---------

Co-authored-by: pgherveou <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

fix genesis eth block builder number again (#10297)

Redoes https://github.com/paritytech/polkadot-sdk/pull/10225 for the
genesis block number.

It was broken again by
https://github.com/paritytech/polkadot-sdk/pull/10271

pallet-revive: fix eth tx decoding (#10290)

Fix Ethereum transaction decoding

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[pallet-revive] improve eth-rpc tests reliability (#10281)

Improve eth-rpc tests reliability by replacing substrate-node with
revive-dev-node, fixing nonce query in runtime_api_dry_run_addr, and
running all tests in a single tokio test function

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet-revive: add hook for mocking origin (#10272)

While runing some balancer v3 tests:
https://github.com/paritytech/foundry-polkadot/issues/287#issuecomment-3502668161,
discovered we need a way to mock up the origin as well, so add hook.

---------

Signed-off-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet-revive fix prestate diff tracing (#10303)

Fix prestate diff-tracing, add missing storage diff for created
contracts

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

fix P256Verify precompile address (#10336)

fix https://github.com/paritytech/contract-issues/issues/220

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

[pallet-revive] add tracing for selfdestruct (#10244)

Add tracing for selfdestruct

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: PG Herveou <[email protected]>

[pallet-revive] update evm create benchmark (#10366)

Add a benchmark for the EVM CREATE instruction.

We are currently reusing the `seal_instantiate` benchmark from PVM
instantiation, which is incorrect because instantiating an EVM contract
takes different arguments and follows a different code path than
creating a PVM contract.

This benchmark performs the following steps:

- Generates init bytecode of size i, optionally including a balance with
dust.
- Executes the init code that triggers a single benchmark opcode
returning a runtime code of the maximum allowed size
(qrevm::primitives::eip170::MAX_CODE_SIZE`).

Also fix the order of the weight function arguments, they were wrong
causing the weight to be much bigger that what it should be

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

pallet-revive benchmark opcode fix (#10380)

Benchmark opcode was using the invalid opcode instead of defining a new
one.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>

Enable force debug in revive dev node (#10383)

This change ensures that all types that implement `RuntimeDebug` are
fully displayed in log output of the revive dev node, instead of just
showing `<wasm:stripped>`.

Unfortunately, the trait `RuntimeDebugNoBound`, that we also use
frequently in pallet-revive, is not affected and will still output
`<wasm:stripped>` (it does not check for the `force-debug` feature flag,
instead it only fully outputs values when either one of the features
`std` or `try_runtime` is enabled – this is something we implement as a
general change).

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: pgherveou <[email protected]>

pallet-revive: add DebugSetting for bypassing eip-3607 (#10387)

Only works for contract accounts, not precompiles.
This is needed so that test nodes like anvil can send transactions from
contract accounts, a widely-used feature in tests

Needed for https://github.com/paritytech/foundry-polkadot/pull/423

Fix termination (#10302)

This PR fixes up termination by changing the behavior to:

- The free balance (without ed) should be send away right away to the
beneficiary and not be delayed like the contract deletion.
- The ed and storage deposit will be send away only when terminating but
to the origin (delayed).
- The scheduling of the terminate needs to be reverted if the scheduling
frame reverts.
- `SELFDESTRUCT` should be allowed inside the constructor. The issuing
contract will exist as account without code for the remainder of the
transaction.
- The `terminate` pre-compile should revert if delegate called or its
caller was delegate called. This is just my opinion but if we are
changing semantics we can might as well add some security. We are
increasing the attack surface by allowing the destruction of any
contract (not only created in the current tx).

- Storage refunds should no longer use `BestEffort`. This is necessary
to fail refunds in case some other locks (due to participation in gov
for example) prevent sending them away. This is in anticipation of new
pre-compiles.
- Moved pre-compile interfaces to sol files and made them available to
fixtures
- Added some Solidity written tests to exercise error cases

Those should all be written in Solidity to test both backends at the
same time. No more Rust fixtures.

@0xRVE can you take those over as I am ooo.

- Test that checks that scheduled deletions do properly roll back if a
frame fails
- Test that value send to a contract after scheduling for deletion is
send to the beneficiary (different from Eth where this balance is lost)
- Add tests that use `SELFDESTRUCT` to `Terminate.sol`. Need
https://github.com/paritytech/devops/issues/4508 but can be tested
locally with newest `resolc`.

---------

Signed-off-by: Alexandru Gheorghe <[email protected]>
Signed-off-by: Andrei Sandu <[email protected]>
Co-authored-by: 0xRVE <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: pgherveou <[email protected]>
Co-authored-by: Alin Dima <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: Kian Paimani <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Marian Radu <[email protected]>
Co-authored-by: Karol Kokoszka <[email protected]>
Co-authored-by: Francisco Aguirre <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: girazoki <[email protected]>
Co-authored-by: Adrian Catangiu <[email protected]>
Co-authored-by: Lukasz Rubaszewski <[email protected]>
Co-authored-by: Paolo La Camera <[email protected]>
Co-authored-by: Andrei Eres <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Egor_P <[email protected]>
Co-authored-by: Agustín Rodriguez <[email protected]>
Co-authored-by: Branislav Kontur <[email protected]>
Co-authored-by: Andrei Sandu <[email protected]>
Co-authored-by: Thang X. Vu <[email protected]>
Co-authored-by: DenzelPenzel <[email protected]>
Co-authored-by: Javier Viola <[email protected]>
Co-authored-by: Alexander Cyon <[email protected]>
Co-authored-by: Sebastian Kunert <[email protected]>
Co-authored-by: Alexander Samusev <[email protected]>
Co-authored-by: Omar <[email protected]>
Co-authored-by: Guillaume Thiolliere <[email protected]>
Co-authored-by: BDevParity <[email protected]>

[pallet-revive] evm remove contract storage slot when writing all zero bytes (#10309)

fixes https://github.com/paritytech/contract-issues/issues/216

When an EVM contract writes an all-zero 32-byte storage word, remove the
corresponding child‑trie entry so storage-deposit accounting sees
bytes/items removed and a refund can be applied.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: pgherveou <[email protected]>

Fix assertion (#10427)

According to assertion message and comment("at least"),
`T::MaxDebugBufferLen::get() > MIN_DEBUG_BUF_SIZE` should be changed
into `T::MaxDebugBufferLen::get() >= MIN_DEBUG_BUF_SIZE`
```rust
// Debug buffer should at least be large enough to accommodate a simple error message
const MIN_DEBUG_BUF_SIZE: u32 = 256;
assert!(
	T::MaxDebugBufferLen::get() > MIN_DEBUG_BUF_SIZE,
	"Debug buffer should have minimum size of {} (current setting is {})",
	MIN_DEBUG_BUF_SIZE,
	T::MaxDebugBufferLen::get(),
);
```
For this assertion, the assertion message indicates assertion will fail
when max_storage_size > storage_size_limit, which means it requires
max_storage_size <= storage_size_limit, but assertion predicate is
`max_storage_size < storage_size_limit`. Based on the code semantics,
assertion predicate should be changed into `max_storage_size <=
storage_size_limit…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A4-backport-stable2503 Pull request must be backported to the stable2503 release branch A4-backport-stable2506 Pull request must be backported to the stable2506 release branch T2-pallets This PR/Issue is related to a particular pallet.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants