Such a scenario: cross-chain transfer from chain A to chain B, XCM fails to execute in chain B, and chain A can be rolled back.

Is this possible?

2 Answers 2


As far as I know, it is not really possible since parachains are entirely sovereign systems.

You should not think of XCM messages the same as internal chain transactions since they are asynchronous and between two different blockchains.


While you could not force a rollback, you could do an xcm callback:

  1. Commit to doing something in parachain A (but not actually do it yet - maybe transfer things to a holding account),
  2. Send the xcm message to to parachain B with a parameter of an xcm message to send on success.
  3. When you receive the success message you could complete the action in parachain A.

At each step of the way you know that you will get rolled back if your input message gets rolled back.

One of the cute features here is that parachain B does not necessarily need to know anything about the success xcm message that it is sending.

  • Thank you for your answer! In the second step, how to let parachain B notify me of the execution result? Does this require the cooperation of parachain B? Or the existing XCM executor can do this?
    – Guantong
    Jun 18 at 7:23
  • 1
    It requires cooperation and custom logic. XCM does not have the primitives of "rollback" inside it. But it can send messages, and of course, with those messages, you can hack your own custom rollback mechanism between two chains... but it would generally be very expensive and probably not very useful in this way.
    – Shawn Tabrizi
    Jun 18 at 19:30

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.