0

I am trying to polkadotXcm.reserveTransferAssets of ROC on from Rockmine to Dali https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frococo-rockmine-rpc.polkadot.io#/extrinsics/decode/0x1f02010101009d2001000101002aa47c41b763a16946b6cc7e051174877b14fafe5d8daf075b0e39e2398c8e4c010400010000070088526a7400000000 .

It fails on client side with withpolkadotXcm.UnweighableMessage from Rococo node. There is no field in reserveTransferAssets to set weight. And message is not sent at all.

When I use polkadotXcm.teleportAssets https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frococo-rockmine-rpc.polkadot.io#/extrinsics/decode/0x1f01010101009d2001000101002aa47c41b763a16946b6cc7e051174877b14fafe5d8daf075b0e39e2398c8e4c010400010000070088526a7400000000 message reaches our parachain. But it is not configured to receive teleport assets.

Should we receive teleports from Rockmine? What would be origin? Is planned to have Statemine also use Teleport?

2 Answers 2

1

First, you should use reserve_transfer, because teleport requires both the source and destination of have a high level of mutual trust. Details can be found here.

About UnweighableMessage, I think there may be a bug in statemint runtime 9290 and it's ok in RT9220. Please wait for my debugging results for specific reasons, and I will update the answer soon.


Well, some prs related to UnweighableMessage :

  1. https://github.com/paritytech/cumulus/pull/1454
  2. https://github.com/paritytech/cumulus/pull/1629

Focus on this line: https://github.com/paritytech/cumulus/pull/1629/files#diff-ba0e9507c93c11e6a5cc354264540f9fab51dcaf97cfe7e28aebf08bb8c915f8R60

// Currently there is no trusted reserve
fn reserve_asset_deposited(_assets: &MultiAssets) -> XCMWeight {
    u64::MAX
}

This will make the weight of the reserve_asset_deposited instruction fail on check_add due to u64 overflow. And then UnweighableMessage.


However, you could use limited_reserve_transfer_assets instead of reserve_transfer_assets to avoid this error. Because it will not call weigher to compute the weight here.

like this: https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frococo-rockmine-rpc.polkadot.io#/extrinsics/decode/0x1f08010101009d2001000101002aa47c41b763a16946b6cc7e051174877b14fafe5d8daf075b0e39e2398c8e4c010400010000070088526a740000000000

9
  • ok. will check version mentioned Oct 18 at 11:43
  • i did transfers previosly. but they kind of stopped to work. Oct 18 at 11:43
  • transfer from rococo to rockmine does not work for me too. but teleport work perfectly. Oct 18 at 11:44
  • rockmine is in full 100% trust with rococo as rockmine accepts rococo as root. Oct 18 at 11:45
  • 1
    Updated @DzmitryLahoda
    – Guantong
    Oct 18 at 15:25
1

reserveTransferAssets is okay. That's not the root cause UnweighableMessage.

Check the documentation.

You should set a reasonable weight. Otherwise, the call will fail.


reserve_transfer_assets will call the do_reserve_transfer_assets internally with the weight None. Then it will enter here. So, check the Weighter. IIUC, "you should set a reasonable weighter in runtime/lib.rs".

3
  • downvoted. because there is not weight in reserveTransferAssets Oct 18 at 8:42
  • please read the docs too - in both cases it will fail either teleport or reserve transfer, so why one fails and other works if these are same? Oct 18 at 8:52
  • Updated. Check the answer again. Oct 18 at 10:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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