-
Notifications
You must be signed in to change notification settings - Fork 731
Description
Currently the denoms that has slashes in their base denominations are disallowed in IBC v2.
Here is context as to why:
https://github.com/cosmos/ibc-go/blob/main/modules/apps/transfer/v2/ibc_module.go#L64
In order to re-enable this, the simplest solution is to move on to ICS20 v2 (this may be v3 to avoid name conflict with ICS20 v2 in retracted version)
Using this struct as the external packet data will work to ensure that the trace and base denom is explicitly split out from each other in the packet data rather than being implicitly separated through a / denominator:
https://github.com/cosmos/ibc-go/blob/main/modules/apps/transfer/types/packet.go#L20
NOTE: This version should only be enabled for IBC V2 protocol since it will be very easy to roll out new application versions on IBC v2.
The Token representation should be changed to have ClientId in the Hop struct rather than the ChannelId so as to make the IBC v2 terminology the primary term of usage moving forward.
We still must have the port identifiers in the trace. Even though IBC v2 enforces transfer as the only port, IBC v1 does not and we want to enable funds to move across chains with IBC v1 and v2 smoothly. Thus, we should still have port identifiers in the trace so that we can preserve the non-transfer port identifiers that were used in the tokens history when sending over IBC v1