Skip to content

Discuss how to deal with Acknowledgements for MultiPayload Packets #1158

Open
@AdityaSripal

Description

@AdityaSripal

IBC v2 is introducing the ability to allow multiple payloads in the same packet.

We want to allow atomic processing of the Receive for the multiple payloads. If any of the applications return an Ack error, then all the receive logic should be reverted and an error acknowledgement should be written.

However, there is a problem when it comes to Acknowledgement and Timeout. In these cases, an error returned by any application callback will cause the entire transaction to revert. In the single payload case, this can be ok since the single application is at fault and must recover from this situation.

In the multipayload case, a single app's failure can cause other applications to never acknowledge or timeout their packet.

Potential solutions:

  1. Accept this as a possibility and document for app developers to handle
  2. Do not revert tx on an error in OnAcknowledgement or OnTImeout packet. Instead just revert app-specific changes. This requires partial rollback of state. Perhaps we only support multipayload in these platforms
  3. Split acknowledgements and timeouts to occur on a per-payload level even if the packet included multiple payloads atomically on receive.

I'm generally in favor of option 2 as it seems the simplest to me. This does increase the platform requirements for a full implementation of IBC v2 (namely partial rollback of state changes within tx execution)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions