Skip to content

Commit

Permalink
transfer function Preservation is changed to Expendable (#7243)
Browse files Browse the repository at this point in the history
# Description

Fixes #7039

The Preservation of transfer method of fungible and fungibles adapters
is changed from Preserve to Expendable. So the behavior of the
TransferAsset will be consistent with the WithdrawAsset function, as in
[fungible](https://github.com/paritytech/polkadot-sdk/blob/f3ab3854e1df9e0498599f01ba4f9f152426432a/polkadot/xcm/xcm-builder/src/fungible_adapter.rs#L217)
and [fungibles](https://github.com/paritytech/polkadot-sdk/issues/url)
adapter.

This pull request includes changes to the `fungible_adapter.rs` and
`fungibles_adapter.rs` files in the `polkadot/xcm/xcm-builder`
directory. The main change involves modifying the transfer method to use
the `Expendable` strategy instead of the `Preserve` strategy.

Changes to transfer strategy:

*
[`polkadot/xcm/xcm-builder/src/fungible_adapter.rs`](diffhunk://#diff-6ebd77385441f2c8b023c480e818a01c4b43ae892c73ca30144cd64ee960bd66L67-R67):
Changed the transfer method to use `Expendable` instead of `Preserve`.
*
[`polkadot/xcm/xcm-builder/src/fungibles_adapter.rs`](diffhunk://#diff-82221429de4c4c88be3d2976ece6475ef4fa56a32abc70290911bd47191f8e17L61-R61):
Changed the transfer method to use `Expendable` instead of `Preserve`.

---------

Co-authored-by: Francisco Aguirre <franciscoaguirreperez@gmail.com>
Co-authored-by: Adrian Catangiu <adrian@parity.io>
(cherry picked from commit f96da6f)
  • Loading branch information
dhirajs0 authored and github-actions[bot] committed Feb 10, 2025
1 parent 7642d6b commit 8fa6463
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 11 deletions.
8 changes: 2 additions & 6 deletions polkadot/xcm/xcm-builder/src/fungible_adapter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,7 @@ use super::MintLocation;
use core::{marker::PhantomData, result};
use frame_support::traits::{
tokens::{
fungible,
Fortitude::Polite,
Precision::Exact,
Preservation::{Expendable, Preserve},
Provenance::Minted,
fungible, Fortitude::Polite, Precision::Exact, Preservation::Expendable, Provenance::Minted,
},
Get,
};
Expand Down Expand Up @@ -64,7 +60,7 @@ impl<
.ok_or(MatchError::AccountIdConversionFailed)?;
let dest = AccountIdConverter::convert_location(to)
.ok_or(MatchError::AccountIdConversionFailed)?;
Fungible::transfer(&source, &dest, amount, Preserve)
Fungible::transfer(&source, &dest, amount, Expendable)
.map_err(|error| XcmError::FailedToTransactAsset(error.into()))?;
Ok(what.clone().into())
}
Expand Down
7 changes: 2 additions & 5 deletions polkadot/xcm/xcm-builder/src/fungibles_adapter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,7 @@
use core::{marker::PhantomData, result};
use frame_support::traits::{
tokens::{
fungibles,
Fortitude::Polite,
Precision::Exact,
Preservation::{Expendable, Preserve},
fungibles, Fortitude::Polite, Precision::Exact, Preservation::Expendable,
Provenance::Minted,
},
Contains, Get,
Expand Down Expand Up @@ -58,7 +55,7 @@ impl<
.ok_or(MatchError::AccountIdConversionFailed)?;
let dest = AccountIdConverter::convert_location(to)
.ok_or(MatchError::AccountIdConversionFailed)?;
Assets::transfer(asset_id, &source, &dest, amount, Preserve)
Assets::transfer(asset_id, &source, &dest, amount, Expendable)
.map_err(|e| XcmError::FailedToTransactAsset(e.into()))?;
Ok(what.clone().into())
}
Expand Down
13 changes: 13 additions & 0 deletions prdoc/pr_7243.prdoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Schema: Polkadot SDK PRDoc Schema (prdoc) v1.0.0
# See doc at https://raw.githubusercontent.com/paritytech/polkadot-sdk/master/prdoc/schema_user.json

title: 'transfer function Preservation is changed to Expendable in fungible and fungibles adapter'

doc:
- audience: Runtime Dev
description: |
The Preservation of transfer method of fungible and fungibles adapters is changed from Preserve to Expendable. So the behavior of the TransferAsset will be consistent with the WithdrawAsset function, as in fungible and fungibles adapter.

crates:
- name: staging-xcm-builder
bump: patch

0 comments on commit 8fa6463

Please sign in to comment.