Packet forward middleware

Feature Request: Packet forward middleware

Summary

Allow users to perform an Ics20Withdraw where to a chain with a token where that chain is not the native home for that token.

Problem Statement

At the moment, users cannot do an Ics20Withdraw for say $TIA from Penumbra to Osmosis in one transaction. They are required to do: Penumbra → Celestia → Osmosis (all manually). Given ibc transfer paths creates new token denoms, the community generally only recognizes tokens that have been “unwound” through the native chain.

Proposed Solution

Implement packet forward middleware as a routing feature within Penumbra. Add new fields to Ics20Withdraw action to support the new routing ability.

Use Cases

If the chains in this path have “packet forward middleware”, then this process is easy for the user and does not require signatures on multiple chains. They’d just sign one transaction and the unwinding happens automatically.

Technical Details

Priority

Medium

1 Like

I think there are actually two sub-objectives here:

  1. Allow Penumbra transactions to use PFM when doing withdrawals
  2. Support PFM on Penumbra itself, to allow UM tokens to be routed between counterparty chains via Penumbra

(1) is both more immediately useful and also easier – I think it will just require allowing clients to specify an ICS20 memo field – while (2) is more work. So I think it makes sense to prioritize (1) over (2).