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

Multihop XCM transfer from Parachain > Relay chain #6637

Open
dudo50 opened this issue Nov 25, 2024 · 2 comments
Open

Multihop XCM transfer from Parachain > Relay chain #6637

dudo50 opened this issue Nov 25, 2024 · 2 comments

Comments

@dudo50
Copy link
Contributor

dudo50 commented Nov 25, 2024

Dear Parity team,

We are currently exploring MultiHop XCM transfers and we are running into issue which we believe is simple to resolve, but we need some explanation to help us further understand what needs to be changed.

The following scenario is for transferring DOT from Polkadot > Polkadot AssetHub > Polimec
https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fpolkadot-rpc-tn.dwellir.com#/extrinsics/decode/0x630d03000100a10f030400000000130000e8890423c78a00030000000003040e010204010100413408130001000002286bee000d0102040001010084fc49ce30071ea611731838cc7736113c1ec68fbc47119be8a0805066df9b2b00

What this extrinsic does is Teleport from Relay to AHP and then Reserve transfer from AHP to Polimec

How does the extrinsic must change in order for this transfer to work backwards also? Polimec > Polkadot AssetHub > Polkadot ? What we expect extrinsic to do is Reserve transfer from Polimec to AHP and then Teleport from AHP to Polkadot

Thanks for your help in advance!

@dudo50 dudo50 changed the title Multihop transfer from Parachain > Relay chain Multihop XCM transfer from Parachain > Relay chain Nov 25, 2024
@acatangiu
Copy link
Contributor

Unfortunately it is not possible yet to do that in a single XCM program while using XCM v3 or v4. It will be possible with XCMv5.

You would need to do a InitiateReserveWithdraw from Polimec to Asset Hub, and inside it would be an InitiateTeleport on AssetHub to Polkadot Relay.
The problem is that InitiateTeleport has to charge transport fees on Asset Hub for sending message to Polkadot Relay, but there is no mechanism available to charge those from transferred assets.

I had added support for charging transport fees from transferred assets for these types of cases here: #4834 but was met with resistance and ultimately closed in favor of XCMv5 which can do this easily and safely.

So your options are to:

  1. wait for XCMv5 (estimated live on Relay and AH Q1 2025),
  2. push for xcm-executor: take transport fee from transferred assets if necessary #4834 - earliest to get it in AH would be Jan or maybe Dec.

@dudo50
Copy link
Contributor Author

dudo50 commented Nov 27, 2024

Thanks for the thorough answer, @acatangiu. I appreciate the time you invested in the answer. It is indeed unfortunate that this isn't possible yet. I think waiting for v5 is the safest option, but I am also leaning towards the second option because the first one - forcing chains to update into v5 seems a bit brutal. Some chains might not have time to allocate to upgrade to the latest version as they could focus on other higher priority tasks (So they will eventually update to the latest, but once their Task pipeline allows). I think that the safest option is giving them the ability to use the feature in earlier versions also. That's just my opinion though.

Thanks anyway!

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

No branches or pull requests

2 participants