Closed acatangiu closed 5 months ago
cc @mrshiposha @xlc
PS: We could also probably do this in the one big instruction, further coupling concepts that work together. It would always require specifying a vector of AssetTransferType, even if it has only one element. That makes it good UX even when just doing a simple teleport.
enum Instruction { ... InitiateAssetTransfer { destination: Location, assets: Vec<AssetTransferType>, remote_fees: Option<AssetFilter>, remote_xcm: Xcm<()>, }, ... }
Yes, I like this ^
This pull request has been mentioned on Polkadot Forum. There might be relevant details there:
https://forum.polkadot.network/t/xcm-user-and-developer-experience-improvements/4511/21
This pull request has been mentioned on Polkadot Forum. There might be relevant details there:
https://forum.polkadot.network/t/managing-sas-on-multiple-reserve-chains-for-same-asset/7538/7
Unfortunately, following the repo migration to the new org, I lost write access to the PR (upstream) branch. I've opened the PR from a fork branch here https://github.com/polkadot-fellows/xcm-format/pull/63
Closing this one.
Summary
This RFC proposes new instructions that provide a way to initiate asset transfers which transfer multiple types (teleports, local-reserve, destination-reserve) of assets, on remote chains using XCM alone.
The currently existing instructions are too opinionated and force each XCM asset transfer to a single transfer type (teleport, local-reserve, destination-reserve). This results in inability to combine different types of transfers in single transfer which results in overall poor UX when trying to move assets across chains.
Example usage
Proof-of-Concept
I also have a proof-of-concept implementation and a proof-of-concept asset transfer test, transferring 2 different types of assets across 3 chains.