Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change denom trace parsing to use channel identifier #1698

Closed
3 tasks
colin-axner opened this issue Jul 13, 2022 · 1 comment
Closed
3 tasks

Change denom trace parsing to use channel identifier #1698

colin-axner opened this issue Jul 13, 2022 · 1 comment
Assignees
Labels
20-transfer type: refactor Architecture, code or CI improvements that may or may not tackle technical debt.
Milestone

Comments

@colin-axner
Copy link
Contributor

Summary

Change the denom trace parsing to use the channel identifier as opposed to the port string "transfer".

Problem Definition

ICS20 does not enforce the usage of "transfer" as the port string. Certain applications/chains may choose to use non-transfer port strings, thus causing the stored denom trace to be incorrect. One current example is cosm wasm ports use a non transfer string.

The IBC specification does not enforce the "channel-X" format for channel identifiers. Other IBC implementations may choose to use a different format causing the stored denom trace to be incorrect.

To correctly parse the base denomination from a single string, some splitting point must be used. Neither the channel identifier or the port identifier provide reliable sources. A longer solution fix should create a separate field for the base denomination. I suspect without a longer solution fix, other use cases which want to make use of the base denomination will also only be able to support a subset of users (either users who use the naming "transfer" for their port, or users who use the format "channel-X" for channel identifiers).

Proposal

Short term: Change the denom trace parsing to use the channel identifier rather than the port string. The current implementation uses the port to split, but all ibc-go implementations use the same channel identifier format, thus more users will be supported in the short term by splitting on the channel identifier.

Long term (followup issue): Create a separate field within the ICS20 packet for the base denom


For Admin Use

  • Not duplicate issue
  • Appropriate labels applied
  • Appropriate contributors tagged/assigned
@crodriguezvega crodriguezvega added 20-transfer type: refactor Architecture, code or CI improvements that may or may not tackle technical debt. labels Jul 14, 2022
@crodriguezvega crodriguezvega added this to the v4.0.0 milestone Jul 14, 2022
@colin-axner colin-axner self-assigned this Jul 14, 2022
@crodriguezvega
Copy link
Contributor

Closed by #1730

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
20-transfer type: refactor Architecture, code or CI improvements that may or may not tackle technical debt.
Projects
Archived in project
Development

No branches or pull requests

2 participants