I'm trying to integrate stablecoin into parachain. First of all, I tried to repeat the steps shown in the video (https://www.youtube.com/watch?v=UfxU3hUprKo&t=1182s) with standard settings:

Running with zombienet:

Relay chain - Westend

Para1 - Westmint

Para2 - Westmint

Firstly, create assets for each parachain and make xUSD sufficient:

enter image description here

I do similar steps, but at the limitedReservedTransferAssets stage I get an error on the side of the receiving parachain - Para2. Error XcmError::TooExpensive, although everything is similar with the example and in xcm_config.rs everything is also standard. This is a fairly standard transaction that cannot exceed the allowed weight. The first question is how can this be fixed?

The second question is this. I do similar steps on this video, I just connected a custom parachain and at the same stage the transaction falls with the XcmError::UntrustedReserveLocation error, which is also not very clear. Where to look in this case?

My steps to produce error:

enter image description here

enter image description here

After submitting the transaction:

Got this on Para1:

enter image description here

And this on Para 2:

enter image description here

Thank you all in advance

2 Answers 2


The instructions are probably correct, but there is probably something wrong with your Configuration of the XCM executor. Like other components in Substrate and FRAME-based chains, the XCM executor is modular and configurable, and has to be properlty configured in order to make the XCM instructions between chains work.

If you want to go more in deep in the configuration I suggest you watch this video: XCM Config & Pallet-XCM | Polkadot Deep Dives.

The XcmError::TooExpensive is triggered with the BuyExecution instruction, when the fees declared to purchase weight are insufficient. So you probably need to have funds on the asset you are paying fees or modify the Config to accept other assets.

And the XcmError::UntrustedReserveLocation means that the origin register doesn't contain a valid value for a reserve transfer notification. So probably here you can take a look in the previous StackExchange question suggested by @wakar-seraj-khan I want to enable Teleport Asset functionality in XCM between two parachains. How should I do it? Also, how do I teleport asset from Para1 to Para2?.

In case you want to test with the same setup of the video you are watching, you need the same binaries he is using (notice the version is an old one, as the video):

Clone & build Polkadot

git clone -b release-v0.9.30 --depth 1 https://github.com/paritytech/polkadot
cd polkadot && cargo build –-release

Clone & build Cumulus

git clone -b polkadot-v0.9.30 --depth 1 https://github.com/paritytech/cumulus
cd cumulus && cargo build –-release

Clone & build Trappist

git clone --depth 1 https://github.com/paritytech/trappist
cd trappist && cargo build --release

You can take a look in the XCM configuration Trappist has implemented here.


The issue of UntrustedReserveLocation happened because parachain don't trust each other. Here is the solutions for the UntrustedTrustedLocation which is similar to UntrustedReserveLocation. You can teleport the assets from one chain to another.

  • Ohh, thanks for you answer. But, what exactly do you mean I have to change in my code? I have this parameter types for my chain ` parameter_types! { ... pub const Statemine: MultiLocation = Parachain(1000).into_location(); pub const KsmForStatemine: (MultiAssetFilter, MultiLocation) = (Ksm::get(), Statemine::get()); ... } pub type TrustedTeleporters = (xcm_builder::Case<KsmForStatemine>, xcm_builder::Case<KsmForEncointer>);` And I use this variable. So what can be a problem? Aug 14, 2023 at 11:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.