Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Outbound queue v2 #4

Closed
wants to merge 82 commits into from
Closed

Outbound queue v2 #4

wants to merge 82 commits into from

Conversation

yrong
Copy link
Owner

@yrong yrong commented Oct 18, 2024

Resolves: https://linear.app/snowfork/issue/SNO-1205

@yrong
Copy link
Owner Author

yrong commented Oct 21, 2024

Workflow

  1. on AH we add a custom exporter returns a lower fee(without the cost on Ethereum) charged from the user when exporting to Ethereum, essentially predict the route by content of XCM, more details in Predicate route table by Xcm paritytech/polkadot-sdk#6074

  2. on BH route the new XCM(with V2 specific instructions) to the new pallet OutboundQueueV2, in which convert the XCM to Message structure as following:

pub struct Message {
    /// Origin
    pub origin: H256,
    /// ID
    pub id: H256,
    /// Fee
    pub fee: u128,
    /// Commands
    pub commands: BoundedVec<Command, ConstU32<5>>,
}

which means we can execute multiple commands on Ethereum in one message.

  1. Then abi encode the message and store it into a merkle tree as before, meanwhile add the pending order into LockedOrder storage and increase the nonce. more detais here

  2. add a new extrinsic submit_delivery_proof in which we verify the event log is truely happened on Ethereum side, and add the fee to RewardLeger.

bridges/snowbridge/primitives/core/src/merkle.rs Outdated Show resolved Hide resolved
bridges/snowbridge/primitives/core/src/outbound_v2.rs Outdated Show resolved Hide resolved
@@ -172,3 +174,13 @@ impl Default for AssetMetadata {

/// Maximum length of a string field in ERC20 token metada
const METADATA_FIELD_MAX_LEN: u32 = 32;

// Origin for high-priority governance commands
pub fn primary_governance_origin() -> H256 {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is now a V1-only type, so should go in core/src/v1/mod.rs.

Copy link
Owner Author

@yrong yrong Oct 23, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

850fe96
Actually it's V2 specific.

The usage in

if ticket.origin != primary_governance_origin() {
ensure!(!Self::operating_mode().is_halted(), SendError::Halted);
}
is to allow upgrading even when bridge is halted.

}

// Origin for lower-priority governance commands
pub fn second_governance_origin() -> H256 {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ditto

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bridges/snowbridge/pallets/outbound-queue-v2/src/types.rs Outdated Show resolved Hide resolved
bridges/snowbridge/pallets/outbound-queue-v2/src/types.rs Outdated Show resolved Hide resolved
bridges/snowbridge/primitives/core/src/outbound_v2.rs Outdated Show resolved Hide resolved
bridges/snowbridge/primitives/core/src/outbound_v2.rs Outdated Show resolved Hide resolved
bridges/snowbridge/primitives/core/src/outbound_v2.rs Outdated Show resolved Hide resolved
@yrong yrong changed the base branch from v2 to master October 24, 2024 16:55
@yrong yrong changed the base branch from master to xcm-v5 October 29, 2024 02:03
@yrong
Copy link
Owner Author

yrong commented Oct 29, 2024

Check details in emulated tests how to construct transfer message for both ENA&PNA with XCMV5 instructions.

cargo test -p bridge-hub-westend-integration-tests --lib tests::snowbridge_v2  -- --nocapture

@yrong yrong marked this pull request as ready for review October 29, 2024 12:44
@yrong yrong force-pushed the outbound-queue-v2 branch 3 times, most recently from fffd895 to df137c0 Compare November 5, 2024 17:03
@yrong yrong changed the base branch from xcm-v5 to master November 11, 2024 02:33
@yrong yrong force-pushed the outbound-queue-v2 branch from 9492f1e to d359108 Compare November 11, 2024 02:35
/// - `metadata`: Metadata to include in the instantiated ERC20 contract on Ethereum
#[pallet::call_index(11)]
#[pallet::weight(T::WeightInfo::register_token())]
pub fn register_token_v2(
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alternatively can we reimplement the original register_token extrinsic to optionally use V2 protocol, depending on a config field in storage.

When the ethereum contracts have been upgraded to V2, we can configure register_token to use V2.

The benefit is that user-level apps won't need to change any code to register tokens using V2.

Copy link

@vgeddes vgeddes Nov 14, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, ignore my comment, I realize we need separate register extrinsics for V1 and V2 as they have different fee-taking behavior.

I see now there is also the problem of how to provide WETH as the fees for these governance calls. On BH users can only provide DOT

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we need to make the rewards pallet support both WETH and DOT.

Copy link
Owner Author

@yrong yrong Nov 14, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

how to provide WETH as the fees for these governance calls.

Actually there is no fee charged for governance calls. So it's possible pendingOrder bound with zero fee and no need to reward in this case.

// No fee for governance order
if !order.fee.is_zero() {
T::RewardLedger::deposit(envelope.reward_address, order.fee.into())?;
}

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The problem is that then no off-chain relayer will be incentivized to deliver the message. Letting users optionally pay using DOT is a solution we should consider.

Another issue is that when we make register_token_v2 permissionless, there is still no way for many parachains to call the extrinsic since they won't have HRMP channels registered.

So I think we have to force users to route their governance calls through AH and provide DOT. In which case, BH will see message like:

AliasOrigin /Parachain/Hydra
ReceiveTeleportedAsset (DOT, 10)
DepositAsset (DOT, /Parachain/Hydra)
Transact(EthereumSystem.register_token_v2)

Copy link
Owner Author

@yrong yrong Nov 15, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So I think we have to force users to route their governance calls through AH and provide DOT.

Agree. All calls should be through AH.

But I'd assume in this case the fee could also be swapped to WETH beforehand in AH so that in BH we only use WETH as fee for simplicity. Some todo logic here:

// Todo: Validate fee asset is WETH
let fee_amount = match fee_asset {
Asset { id: _, fun: Fungible(amount) } => Some(*amount),
_ => None,
}
.ok_or(AssetResolutionFailed)?;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would also prefer a solution where we only have 1 asset type in the rewards pallet.

Copy link

@vgeddes vgeddes Nov 20, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, that would be best.

If we move governance extrinsics such as register-token, create-agent to AH, then that would neatly solve the problem

As we could burn the WETH on AH and then send message to BH with the weth reward for the outbound message

Example flow:

  1. User calls EthereumSystem.register_token extrinsic on AH, supplying WETH for reward
  2. WETH is burnt, and AH sends Transact(EthereumSystem.register_token) XCM to BH
  3. On BH, the low-level EthereumSystem.register_token adds burnt WETH to rewards pallet and queues outbound command

use alloy_sol_types::SolValue;

sol! {
struct InboundMessageWrapper {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it possible to use modules as namespaces instead of appending Wrapper to the struct names? Thinking of this pattern:

mod abi {
	sol! {
		struct InboundMessageWrapper { ... }
	}
}

Then we can reference the type using abi::InboundMessage

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The point of adding the abi namespace is that we rename InboundMessageWrapper and CommandWrapper to InboundMessage and Command respectively

Copy link
Owner Author

@yrong yrong Nov 15, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, it seems a bit cubersome with InboundMessage and InboundMessageWrapper.

The reason is that it's not allowed to add macro #[derive(Encode, Decode, RuntimeDebug, PartialEq,TypeInfo)] into InboundMessageWrapper which is required for storing the data on chain, or error as follows:

--> /Users/yangrong/Projects/polkadot-sdk/bridges/snowbridge/primitives/core/src/outbound/v2.rs:31:12
     |
  31 |         #[derive(Encode, Decode, RuntimeDebug, PartialEq,TypeInfo)]
     |                  ^^^^^^ the trait `WrapperTypeEncode` is not implemented for `alloy_primitives::FixedBytes<32>`, which is required by `alloy_primitives::FixedBytes<32>: Encode`
     |
     = help: the following other types implement trait `WrapperTypeEncode`:
               &T
               &mut T
               Arc<T>
               Box<T>
               Cow<'a, T>
               Rc<T>
               alloy_primitives::bytes::Bytes
               parity_scale_codec::Ref<'a, T, U>
             and 3 others
     = note: required for `alloy_primitives::FixedBytes<32>` to implement `Encode`
     = note: this error originates in the derive macro `Encode` (in Nightly builds, run with -Z macro-backtrace for more info)
  ...

So InboundMessageWrapper is the intermediate data structure only for abi encode, will be converted to InboundMessage here when storing on chain.

bridges/snowbridge/primitives/core/src/outbound/v2.rs Outdated Show resolved Hide resolved
bridges/snowbridge/primitives/core/src/outbound/v2.rs Outdated Show resolved Hide resolved
bridges/snowbridge/primitives/core/src/outbound/v2.rs Outdated Show resolved Hide resolved
})?;

// Inspect AliasOrigin as V2 message
let mut instructions = message.clone().0;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like this logic should be inside XcmConverter

Copy link
Owner Author

@yrong yrong Nov 14, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's for compatible with V1, for xcm which does not contain AliasOrigin will fallback to EthereumBlobExporterV1.

type MessageExporter = (
XcmOverBridgeHubRococo,
crate::bridge_to_ethereum_config::SnowbridgeExporterV2,
crate::bridge_to_ethereum_config::SnowbridgeExporter,
);

bridges/snowbridge/primitives/router/src/outbound/v2.rs Outdated Show resolved Hide resolved
}

pub fn convert(&mut self) -> Result<Message, XcmConverterError> {
let result = match self.jump_to() {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think its safe to just "jump" over instructions, we should validate each instruction in turn to see whether it matches expectations.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bridges/snowbridge/primitives/router/src/outbound/v2.rs Outdated Show resolved Hide resolved
rockbmb and others added 28 commits November 29, 2024 19:35
# Description

Made as a follow-up of
polkadot-fellows/runtimes#499

## Integration

N/A

## Review Notes

N/A

---------

Co-authored-by: Dónal Murray <donal.murray@parity.io>
… as reserved (paritytech#6703)

Fixes paritytech#6598.

---------

Co-authored-by: GitHub Action <action@github.com>
This might actually happen in non malicious cases.

Co-authored-by: eskimor <eskimor@no-such-url.com>
* Add a bunch of differential tests to ensure that responses from
eth-rpc matches the one from `geth`
- These
[tests](https://github.com/paritytech/polkadot-sdk/blob/pg/fix-geth-diff/substrate/frame/revive/rpc/examples/js/src/geth-diff.test.ts)
are not run in CI for now but can be run locally with
```bash
cd revive/rpc/examples/js
bun test
```

* EVM RPC server will not fail gas_estimation if no gas is specified, I
updated pallet-revive to add an extra `skip_transfer` boolean check to
replicate this behavior in our pallet

* `eth_transact` and `bare_eth_transact` api have been updated to use
`GenericTransaction` directly as this is what is used by
`eth_estimateGas` and `eth_call`

## TODO

- [ ]  Add tests the new `skip_transfer` flag

---------

Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Alexander Theißen <alex.theissen@me.com>
…itytech#6516)

Bumps the ci_dependencies group with 3 updates in the / directory:
[lycheeverse/lychee-action](https://github.com/lycheeverse/lychee-action),
[actions/attest-build-provenance](https://github.com/actions/attest-build-provenance)
and [codecov/codecov-action](https://github.com/codecov/codecov-action).

Updates `lycheeverse/lychee-action` from 2.0.2 to 2.1.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/lycheeverse/lychee-action/releases">lycheeverse/lychee-action's
releases</a>.</em></p>
<blockquote>
<h2>Version 2.1.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Add missing argument <code>failIfEmpty</code> by <a
href="https://github.com/LitoMore"><code>@​LitoMore</code></a> in <a
href="https://redirect.github.com/lycheeverse/lychee-action/pull/261">lycheeverse/lychee-action#261</a></li>
<li>Fix bugs about the exit code by <a
href="https://github.com/YDX-2147483647"><code>@​YDX-2147483647</code></a>
in <a
href="https://redirect.github.com/lycheeverse/lychee-action/pull/262">lycheeverse/lychee-action#262</a></li>
<li>Bump lychee version to 0.17.0 by <a
href="https://github.com/mre"><code>@​mre</code></a> in <a
href="https://redirect.github.com/lycheeverse/lychee-action/pull/263">lycheeverse/lychee-action#263</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/LitoMore"><code>@​LitoMore</code></a>
made their first contribution in <a
href="https://redirect.github.com/lycheeverse/lychee-action/pull/261">lycheeverse/lychee-action#261</a></li>
<li><a
href="https://github.com/YDX-2147483647"><code>@​YDX-2147483647</code></a>
made their first contribution in <a
href="https://redirect.github.com/lycheeverse/lychee-action/pull/262">lycheeverse/lychee-action#262</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/lycheeverse/lychee-action/compare/v2...v2.1.0">https://github.com/lycheeverse/lychee-action/compare/v2...v2.1.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/lycheeverse/lychee-action/commit/f81112d0d2814ded911bd23e3beaa9dda9093915"><code>f81112d</code></a>
Bump version to 0.17.0 (<a
href="https://redirect.github.com/lycheeverse/lychee-action/issues/263">#263</a>)</li>
<li><a
href="https://github.com/lycheeverse/lychee-action/commit/988c4c129a79e6d2aa7e28cc1ec14997c3b4e831"><code>988c4c1</code></a>
Fix bugs about the exit code (<a
href="https://redirect.github.com/lycheeverse/lychee-action/issues/262">#262</a>)</li>
<li><a
href="https://github.com/lycheeverse/lychee-action/commit/ae4699150ab670dcfb64cc74e8680e776d9caae2"><code>ae46991</code></a>
Add missing argument <code>failIfEmpty</code> (<a
href="https://redirect.github.com/lycheeverse/lychee-action/issues/261">#261</a>)</li>
<li>See full diff in <a
href="https://github.com/lycheeverse/lychee-action/compare/7cd0af4c74a61395d455af97419279d86aafaede...f81112d0d2814ded911bd23e3beaa9dda9093915">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/attest-build-provenance` from 1.4.3 to 1.4.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/attest-build-provenance/releases">actions/attest-build-provenance's
releases</a>.</em></p>
<blockquote>
<h2>v1.4.4</h2>
<h2>What's Changed</h2>
<ul>
<li>Bump predicate action from 1.1.3 to 1.1.4 by <a
href="https://github.com/bdehamer"><code>@​bdehamer</code></a> in <a
href="https://redirect.github.com/actions/attest-build-provenance/pull/310">actions/attest-build-provenance#310</a>
<ul>
<li>Bump <code>@​actions/core</code> from 1.10.1 to 1.11.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/attest-build-provenance/pull/275">actions/attest-build-provenance#275</a></li>
<li>Bump <code>@​actions/attest</code> from 1.4.2 to 1.5.0 by <a
href="https://github.com/bdehamer"><code>@​bdehamer</code></a> in <a
href="https://redirect.github.com/actions/attest-build-provenance/pull/309">actions/attest-build-provenance#309</a>
<ul>
<li>Fix SLSA provenance bug related to <code>workflow_ref</code> OIDC
token claims containing the &quot;@&quot; symbol in the tag name (<a
href="https://redirect.github.com/actions/toolkit/pull/1863">actions/toolkit#1863</a>)</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/attest-build-provenance/compare/v1.4.3...v1.4.4">https://github.com/actions/attest-build-provenance/compare/v1.4.3...v1.4.4</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/attest-build-provenance/commit/ef244123eb79f2f7a7e75d99086184180e6d0018"><code>ef24412</code></a>
bump predicate from 1.1.3 to 1.1.4 (<a
href="https://redirect.github.com/actions/attest-build-provenance/issues/310">#310</a>)</li>
<li><a
href="https://github.com/actions/attest-build-provenance/commit/36fa7d009e22618ca7cd599486979b8150596c74"><code>36fa7d0</code></a>
bump <code>@​actions/attest</code> from 1.4.2 to 1.5.0 (<a
href="https://redirect.github.com/actions/attest-build-provenance/issues/309">#309</a>)</li>
<li><a
href="https://github.com/actions/attest-build-provenance/commit/390c0bb1a35248f1131918ae2ff5fbebb9c49da4"><code>390c0bb</code></a>
Bump <code>@​types/node</code> from 22.8.1 to 22.8.7 in the
npm-development group (<a
href="https://redirect.github.com/actions/attest-build-provenance/issues/305">#305</a>)</li>
<li><a
href="https://github.com/actions/attest-build-provenance/commit/21da615079f466933bace548cfb08958dd87adbb"><code>21da615</code></a>
Bump the npm-development group with 3 updates (<a
href="https://redirect.github.com/actions/attest-build-provenance/issues/299">#299</a>)</li>
<li><a
href="https://github.com/actions/attest-build-provenance/commit/0704961b8bd76c74543032539a4b87550ca97441"><code>0704961</code></a>
Bump actions/publish-immutable-action in the actions-minor group (<a
href="https://redirect.github.com/actions/attest-build-provenance/issues/298">#298</a>)</li>
<li><a
href="https://github.com/actions/attest-build-provenance/commit/d01b0709fadd560939726341a0459eef1833df34"><code>d01b070</code></a>
Bump the npm-development group with 3 updates (<a
href="https://redirect.github.com/actions/attest-build-provenance/issues/278">#278</a>)</li>
<li><a
href="https://github.com/actions/attest-build-provenance/commit/b1d65e4607685bd199bc1fa97811cbac797bd0ab"><code>b1d65e4</code></a>
Add workflow file for publishing releases to immutable action package
(<a
href="https://redirect.github.com/actions/attest-build-provenance/issues/277">#277</a>)</li>
<li><a
href="https://github.com/actions/attest-build-provenance/commit/3a2769405e23849cccd820e7eab22ac9e0f57754"><code>3a27694</code></a>
Bump <code>@​actions/core</code> from 1.10.1 to 1.11.1 (<a
href="https://redirect.github.com/actions/attest-build-provenance/issues/275">#275</a>)</li>
<li><a
href="https://github.com/actions/attest-build-provenance/commit/dff1ae69a71254b807bee9e2f72c7ab0eed66e60"><code>dff1ae6</code></a>
prevent e2e workflows on forks (<a
href="https://redirect.github.com/actions/attest-build-provenance/issues/272">#272</a>)</li>
<li><a
href="https://github.com/actions/attest-build-provenance/commit/e5892d032c30c69d4973a976c8bf77e9e470abdf"><code>e5892d0</code></a>
Bump the npm-development group with 3 updates (<a
href="https://redirect.github.com/actions/attest-build-provenance/issues/263">#263</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/attest-build-provenance/compare/1c608d11d69870c2092266b3f9a6f3abbf17002c...ef244123eb79f2f7a7e75d99086184180e6d0018">compare
view</a></li>
</ul>
</details>
<br />

Updates `codecov/codecov-action` from 4 to 5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/codecov/codecov-action/releases">codecov/codecov-action's
releases</a>.</em></p>
<blockquote>
<h2>v5.0.0</h2>
<h2>v5 Release</h2>
<p><code>v5</code> of the Codecov GitHub Action will use the <a
href="https://github.com/codecov/wrapper">Codecov Wrapper</a> to
encapsulate the <a
href="https://github.com/codecov/codecov-cli">CLI</a>. This will help
ensure that the Action gets updates quicker.</p>
<h3>Migration Guide</h3>
<p>The <code>v5</code> release also coincides with the opt-out feature
for tokens for public repositories. In the <code>Global Upload
Token</code> section of the settings page of an organization in
codecov.io, you can set the ability for Codecov to receive a coverage
reports from any source. This will allow contributors or other members
of a repository to upload without needing access to the Codecov token.
For more details see <a
href="https://docs.codecov.com/docs/codecov-tokens#uploading-without-a-token">how
to upload without a token</a>.</p>
<blockquote>
<p>[!WARNING]<br />
<strong>The following arguments have been changed</strong></p>
<ul>
<li><code>file</code> (this has been deprecated in favor of
<code>files</code>)</li>
<li><code>plugin</code> (this has been deprecated in favor of
<code>plugins</code>)</li>
</ul>
</blockquote>
<p>The following arguments have been added:</p>
<ul>
<li><code>binary</code></li>
<li><code>gcov_args</code></li>
<li><code>gcov_executable</code></li>
<li><code>gcov_ignore</code></li>
<li><code>gcov_include</code></li>
<li><code>report_type</code></li>
<li><code>skip_validation</code></li>
<li><code>swift_project</code></li>
</ul>
<p>You can see their usage in the <code>action.yml</code> <a
href="https://github.com/codecov/codecov-action/blob/main/action.yml">file</a>.</p>
<h2>What's Changed</h2>
<ul>
<li>chore(deps): bump to eslint9+ and remove eslint-config-google by <a
href="https://github.com/thomasrockhu-codecov"><code>@​thomasrockhu-codecov</code></a>
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1591">codecov/codecov-action#1591</a></li>
<li>build(deps-dev): bump <code>@​octokit/webhooks-types</code> from
7.5.1 to 7.6.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1595">codecov/codecov-action#1595</a></li>
<li>build(deps-dev): bump typescript from 5.6.2 to 5.6.3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1604">codecov/codecov-action#1604</a></li>
<li>build(deps-dev): bump <code>@​typescript-eslint/parser</code> from
8.8.0 to 8.8.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1601">codecov/codecov-action#1601</a></li>
<li>build(deps): bump <code>@​actions/core</code> from 1.11.0 to 1.11.1
by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1597">codecov/codecov-action#1597</a></li>
<li>build(deps): bump github/codeql-action from 3.26.9 to 3.26.11 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1596">codecov/codecov-action#1596</a></li>
<li>build(deps-dev): bump <code>@​typescript-eslint/eslint-plugin</code>
from 8.8.0 to 8.8.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1600">codecov/codecov-action#1600</a></li>
<li>build(deps-dev): bump eslint from 9.11.1 to 9.12.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1598">codecov/codecov-action#1598</a></li>
<li>build(deps): bump github/codeql-action from 3.26.11 to 3.26.12 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1609">codecov/codecov-action#1609</a></li>
<li>build(deps): bump actions/checkout from 4.2.0 to 4.2.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1608">codecov/codecov-action#1608</a></li>
<li>build(deps): bump actions/upload-artifact from 4.4.0 to 4.4.3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1607">codecov/codecov-action#1607</a></li>
<li>build(deps-dev): bump <code>@​typescript-eslint/parser</code> from
8.8.1 to 8.9.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1612">codecov/codecov-action#1612</a></li>
<li>build(deps-dev): bump <code>@​typescript-eslint/eslint-plugin</code>
from 8.8.1 to 8.9.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1611">codecov/codecov-action#1611</a></li>
<li>build(deps-dev): bump <code>@​typescript-eslint/eslint-plugin</code>
from 8.9.0 to 8.10.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1615">codecov/codecov-action#1615</a></li>
<li>build(deps-dev): bump eslint from 9.12.0 to 9.13.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1618">codecov/codecov-action#1618</a></li>
<li>build(deps): bump github/codeql-action from 3.26.12 to 3.26.13 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1617">codecov/codecov-action#1617</a></li>
<li>build(deps-dev): bump <code>@​typescript-eslint/parser</code> from
8.9.0 to 8.10.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1614">codecov/codecov-action#1614</a></li>
<li>build(deps-dev): bump <code>@​typescript-eslint/eslint-plugin</code>
from 8.10.0 to 8.11.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1620">codecov/codecov-action#1620</a></li>
<li>build(deps-dev): bump <code>@​typescript-eslint/parser</code> from
8.10.0 to 8.11.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1619">codecov/codecov-action#1619</a></li>
<li>build(deps-dev): bump <code>@​types/jest</code> from 29.5.13 to
29.5.14 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1622">codecov/codecov-action#1622</a></li>
<li>build(deps): bump actions/checkout from 4.2.1 to 4.2.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1625">codecov/codecov-action#1625</a></li>
<li>build(deps): bump github/codeql-action from 3.26.13 to 3.27.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1624">codecov/codecov-action#1624</a></li>
<li>build(deps-dev): bump <code>@​typescript-eslint/eslint-plugin</code>
from 8.11.0 to 8.12.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1626">codecov/codecov-action#1626</a></li>
<li>build(deps-dev): bump <code>@​typescript-eslint/eslint-plugin</code>
from 8.12.1 to 8.12.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1629">codecov/codecov-action#1629</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md">codecov/codecov-action's
changelog</a>.</em></p>
<blockquote>
<h2>4.0.0-beta.2</h2>
<h3>Fixes</h3>
<ul>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/1085">#1085</a>
not adding -n if empty to do-upload command</li>
</ul>
<h2>4.0.0-beta.1</h2>
<p><code>v4</code> represents a move from the <a
href="https://github.com/codecov/uploader">universal uploader</a> to the
<a href="https://github.com/codecov/codecov-cli">Codecov CLI</a>.
Although this will unlock new features for our users, the CLI is not yet
at feature parity with the universal uploader.</p>
<h3>Breaking Changes</h3>
<ul>
<li>No current support for <code>aarch64</code> and <code>alpine</code>
architectures.</li>
<li>Tokenless uploading is unsuported</li>
<li>Various arguments to the Action have been removed</li>
</ul>
<h2>3.1.4</h2>
<h3>Fixes</h3>
<ul>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/967">#967</a>
Fix typo in README.md</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/971">#971</a>
fix: add back in working dir</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/969">#969</a>
fix: CLI option names for uploader</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/970">#970</a>
build(deps-dev): bump <code>@​types/node</code> from 18.15.12 to
18.16.3</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/979">#979</a>
build(deps-dev): bump <code>@​types/node</code> from 20.1.0 to
20.1.2</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/981">#981</a>
build(deps-dev): bump <code>@​types/node</code> from 20.1.2 to
20.1.4</li>
</ul>
<h2>3.1.3</h2>
<h3>Fixes</h3>
<ul>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/960">#960</a>
fix: allow for aarch64 build</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/957">#957</a>
build(deps-dev): bump jest-junit from 15.0.0 to 16.0.0</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/958">#958</a>
build(deps): bump openpgp from 5.7.0 to 5.8.0</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/959">#959</a>
build(deps-dev): bump <code>@​types/node</code> from 18.15.10 to
18.15.12</li>
</ul>
<h2>3.1.2</h2>
<h3>Fixes</h3>
<ul>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/718">#718</a>
Update README.md</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/851">#851</a>
Remove unsupported path_to_write_report argument</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/898">#898</a>
codeql-analysis.yml</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/901">#901</a>
Update README to contain correct information - inputs and negate
feature</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/955">#955</a>
fix: add in all the extra arguments for uploader</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/819">#819</a>
build(deps): bump openpgp from 5.4.0 to 5.5.0</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/835">#835</a>
build(deps): bump node-fetch from 3.2.4 to 3.2.10</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/840">#840</a>
build(deps): bump ossf/scorecard-action from 1.1.1 to 2.0.4</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/841">#841</a>
build(deps): bump <code>@​actions/core</code> from 1.9.1 to 1.10.0</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/843">#843</a>
build(deps): bump <code>@​actions/github</code> from 5.0.3 to 5.1.1</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/869">#869</a>
build(deps): bump node-fetch from 3.2.10 to 3.3.0</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/872">#872</a>
build(deps-dev): bump jest-junit from 13.2.0 to 15.0.0</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/879">#879</a>
build(deps): bump decode-uri-component from 0.2.0 to 0.2.2</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/codecov/codecov-action/commit/5c47607acb93fed5485fdbf7232e8a31425f672a"><code>5c47607</code></a>
fix: override commit and pr values for PR cases (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1657">#1657</a>)</li>
<li><a
href="https://github.com/codecov/codecov-action/commit/3b1354a6c45db9f1008891f4eafc1a7e94ce1d18"><code>3b1354a</code></a>
chore(release): 5.0.1 (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1656">#1656</a>)</li>
<li><a
href="https://github.com/codecov/codecov-action/commit/2e2a9c6d5862d22e0f8cfb59d46bc47bf8eb1fe0"><code>2e2a9c6</code></a>
fix: update tokenless branch logic (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1650">#1650</a>)</li>
<li><a
href="https://github.com/codecov/codecov-action/commit/cfc521b7a1dcdbcf0ecf149c162c19ff9bd9568c"><code>cfc521b</code></a>
Update README.md</li>
<li><a
href="https://github.com/codecov/codecov-action/commit/06425412c8015bc1ab2385b41c7ea204f77b91bf"><code>0642541</code></a>
fix: use marketplace v5 badge (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1646">#1646</a>)</li>
<li><a
href="https://github.com/codecov/codecov-action/commit/968872560f81e7bdde9272853e65f2507c0eca7c"><code>9688725</code></a>
Update README.md</li>
<li><a
href="https://github.com/codecov/codecov-action/commit/2112eaec1bedbdabc7e93d5312449d0d62b07c60"><code>2112eae</code></a>
chore(deps): bump wrapper to 0.0.23 (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1644">#1644</a>)</li>
<li><a
href="https://github.com/codecov/codecov-action/commit/193421c5b3d1aca4209c9754f224ca0d85729414"><code>193421c</code></a>
fixL use the correct source (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1642">#1642</a>)</li>
<li><a
href="https://github.com/codecov/codecov-action/commit/6018df70b05b191502ce08196e76e30ea3578615"><code>6018df7</code></a>
fix: update container builds (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1640">#1640</a>)</li>
<li><a
href="https://github.com/codecov/codecov-action/commit/eff1a643d6887ee5935d4ca343e9076dc377d416"><code>eff1a64</code></a>
fix: add missing vars (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1638">#1638</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/codecov/codecov-action/compare/v4...v5">compare
view</a></li>
</ul>
</details>
<br />


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] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Migrates pallet-session-benchmarking to bench V2 syntax.

Part of:
* paritytech#6202

---------

Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
Co-authored-by: Giuseppe Re <giuseppe.re@parity.io>
…ch#6300)

Migrates pallet-offences-benchmarking to benchmark v2 syntax.

Part of:
* paritytech#6202

---------

Co-authored-by: Giuseppe Re <giuseppe.re@parity.io>
This PR contains following changes in release pipelines:
- re-built Create Release Draft workflow
- binaries builds are moved completely to the `Release - Build node
release candidate` flow
- added upload of all the release artefacts to the S3
- adjusted `Release - Publish Docker Image` workflow, so that it will
match now the new release flow.
…6735)

On some systems trying to re-create the output directory will lead to an
error.

Fixes paritytech/subxt#1876

---------

Co-authored-by: Bastian Köcher <git@kchr.de>
Bump Asset-Hub westend spec version

---------

Co-authored-by: GitHub Action <action@github.com>
Add publish-check-compile workflow

This Applies staged prdocs then configures crate deps to pull from
crates.io for our already published crates and local paths for
things to be published. Then runs cargo check on the result.

This results in a build state consitent with that of publish time and
should catch compile errors that we would of otherwise ran into mid
pubish.

This acts as a supplement to the check-semver job. check-semver works on
a high level and judges what changes are incorrect and why. This job
just runs the change, sees if it compiles, and if not spits out
a compile error.
)

This PR provides a number of improvements around handling limits and
priorities in the fork-aware transaction pool.


#### Notes to reviewers.
#### Following are the notable changes:
1. #### [Better
support](paritytech@414ec3c)
for `Usurped` transactions

When any view reports an `Usurped` transaction (replaced by other with
higher priority) it is removed from all the views (also inactive).
Removal is implemented by simply submitting usurper transaction to all
the views. It is also ensured that usurped tx will not sneak into the
`view_store` in newly created view (this is why
`ViewStore::pending_txs_replacements` was added).

1. ####
[`TimedTransactionSource`](paritytech@f10590f)
introduced:

Every view now has an information when the transaction entered the pool.
Enforce limits (now only for future txs) uses this timestamp to find
worst transactions. Having common timestamp ensures coherent assessment
of the transaction's importance across different views. This also could
later be used to select which ready transaction shall be dropped.

1. #### `DroppedWatcher`: [improved
logic](paritytech@560db28)
for future transactions
For future transaction - if the last referencing view is removed, the
transaction will be dropped from the pool. This prevents future
unincluded and un-promoted transactions from staying in the pool for
long time.

#### And some minor changes:

1.
[simplified](paritytech@2d0bbf8)
the flow in `update_view_with_mempool` (code duplication + minor bug
fix).
2. `graph::BasePool`: [handling
priorities](paritytech@c9f2d39)
for future transaction improved (previously transaction with lower prio
was reported as failed),
3. `graph::listener`: dedicated `limit_enforced`/`usurped`/`dropped`
[calls
added](paritytech@7b58a68),
4. flaky test
[fixed](paritytech@e0a7bc6)
5. new tests added,

related to: paritytech#5809

---------

Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Iulian Barbu <14218860+iulianbarbu@users.noreply.github.com>
No need to have them in the umbrella crate also by having them in the
umbrella crate they are bleeding into the normal build.

---------

Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Alexander Theißen <alex.theissen@me.com>
… final in S3 (paritytech#6748)

This PR adds the pipeline, that moves release candidate artefacts from
`polkadot-stableYYMM-rcX` bucket to the one that is going to be the
final `polkadot-stableYYMM` (bucket name matches the tag name). So that
it could be used for publishing later without a need to re-build it
again.
## [0.8.3] - 2024-12-03

This release includes two fixes for small memory leaks on edge-cases in
the notification and request-response protocols.

### Fixed

- req-resp: Fix memory leak of pending substreams
([paritytech#297](paritytech/litep2p#297))
- notification: Fix memory leak of pending substreams
([paritytech#296](paritytech/litep2p#296))

cc @paritytech/networking

---------

Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
…ech#6754)

This PR has changes to the `command-backport.yml`:
- swapped action that creates backports PRs from master to the stable
branches and added another app with more permissions
…ytech#6419)

# Description

Closes paritytech#6335.

## Integration

N/A

## Review Notes

`RuntimeTarget` is converted to return path to the custom target JSON
file

---------

Signed-off-by: Jarkko Sakkinen <jarkko@parity.io>
Co-authored-by: Alexander Theißen <alex.theissen@me.com>
Co-authored-by: Koute <koute@users.noreply.github.com>
…#6636)

# Description
These changes should enhance the quality of benchmark results by
excluding worker initialization time from the measurements and reducing
the overall duration of the benchmarks.

### Integration
It should not affect any downstream projects.

### Review Notes
- Workers initialize once per benchmark to avoid side effects.  
- The listen address is assigned when a worker starts.  
- Benchmarks are divided into two groups by size to create better charts
for comparison.

---------

Co-authored-by: GitHub Action <action@github.com>
@yrong
Copy link
Owner Author

yrong commented Dec 6, 2024

Closed in favor of the upstream paritytech#6706

@yrong yrong closed this Dec 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.