cosmos / ibc-rs

Rust implementation of the Inter-Blockchain Communication (IBC) protocol.
Apache License 2.0
199 stars 79 forks source link

Implement ICS 721: NFT transfer on `ibc-rs` #346

Closed blasrodri closed 8 months ago

blasrodri commented 1 year ago

Summary

Implement iCS 721: NFT transfer on ibc-rs

Problem Definition

At Composable, we are currently finishing up our Centauri Bridge, which will connect the Polkadot with Cosmos. It is important for us to be able to support NFT transfers to give those chains that are using this feature through IBC.

Proposal

Ideally follow the spec and the reference implementation written in go, and a reference implementation in CosmWasm

Acceptance Criteria

Happy path

NFT being transferred from chain A to B, and then back from B to A.

Less happy path

NFT transfer timing out, and not being transferred to chain B from A. NFT transfer succeeding from A to B, but timing out from B to A.


For Admin Use

plafer commented 1 year ago

Thank you for opening this issue. Would someone from Composable have the capacity to implement this? Ideally, we would also have a (brief) ADR outlining the architecture of the module so that we can agree on the general architecture before you start implementing.

Also please note that with #322, the Module API will be changed slightly. However the merge conflicts shouldn't be that bad (depending on when you start implementing).

blasrodri commented 1 year ago

Thank you for opening this issue. Would someone from Composable have the capacity to implement this? Ideally, we would also have a (brief) ADR outlining the architecture of the module so that we can agree on the general architecture before you start implementing.

Also please note that with #322, the Module API will be changed slightly. However the merge conflicts shouldn't be that bad (depending on when you start implementing).

Pleasure :)

Our goal is to do the bulk of the work, and get from the core maintainers support on the review side + architecture. We'd have to port these changes into our own fork, since we aren't currently using the canonical ibc-rs. But I felt it was a good feature to collaborate and potentially avoid duplication of efforts.

What do you think?

plafer commented 1 year ago

Yes that sounds great to me 😀