CosmWasm / CosmWasm/cw-multi-test

Implement the actual ICS20 protocol

Open
#195 1 comment 0 reactions 0 assignees View on GitHub
IBC
Dominant language
Rust
Stars
56
Forks
48
PR merge metrics
No merged PRs in 30d

Description

I guess, you are using a simplified version of the actual ICS-20 protocol here, but I do want to note that this is not how the denom works in the actual protocol. We will have to make changes to this if we want to implement IBC Callbacks later down the road.
Here's a quick example of how it looks on chain:
If I send `ujuno` from Juno to Osmosis, the denom is `ujuno`. If I send it back from Osmosis to Juno, it is `transfer/channel-42/ujuno`.
According to the spec, it's formatted as `{ics20Port}/{ics20Channel}/{denom}` using the source port and channel (so the ones on Osmosis in my example). To detect that, we would need to check for that prefix and remove it to get the denom on the receiving chain.
Side note: On most chains this denom is also different than what is shown to the bank module because it gets hashed with Sha256 and prefixed with `ibc/`

_Originally posted by @chipshort in https://github.com/CosmWasm/cw-multi-test/pull/184#discussion_r1642762440_

Contributor guide

No contributing guide indexed for this repository

Research direction

No files, tests, or entry points are named. Start by tracing the existing simplified ICS-20 denomination handling, then read the ICS-20 specification and the linked pull-request discussion. Done means denomination paths follow the source port and channel rules, including the receiving-chain prefix behavior and the noted bank-module hashing distinction.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
blockchain
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.