Skip to content

Commit 342dbcd

Browse files
Farhad-Shabaniyito88seanchen1991
authored
feat: implement ICS-721 NFT transfer application (#1053)
* feat: establish ICS-721 boilerplate, ready for new additions (#1012) * chore: establish ics721 boilerplate, ready for new additions * nit * Implement ICS-721 NFT transfer (#1020) * WIP: add types and contexts * WIP: add events * WIP: implement modules * add send_transfer * add recv and refund handlers * add tests * fix send and recv * fix context and add tests * fix fmt * fix for CI * fix messages and serde * fix comments * Add (de)serialization tests for `DataValue`, `TokenUri`, and `ClassUri` types (#1027) * WIP: add types and contexts * WIP: add events * WIP: implement modules * add send_transfer * add recv and refund handlers * add tests * fix send and recv * fix context and add tests * fix fmt * fix for CI * fix messages and serde * fix comments * Stub out DataValue Borsh unit test * Add basic borsh (de)ser roundtrip tests * Add basic serde roundtrip tests for DataValue * Add json (de)serialization tests * Add roundtrip tests for TokenUri * Add roundtrip tests for ClassUri * Remove ignore statement on a test * Resolve clippy warning * Change packet data dummy json strings to use camel case * Configure nft-transfer app under std feature flag * Move cfg statement * Add nft-transfer feature * Add nft-transfer feature * Remove nft-transfer feature from default features * Remove `optional = true` from `http` dependency --------- Co-authored-by: yito88 <yuji@phact-columba.com> * fix: calculate trace hash from both class ID and token ID (#1032) * trace hash with class ID and token ID * add serde flag * Fix ClassData and TokenData encoding in NonFungiblePacketData (#1038) * fix encoding for ClassData and TokenData * fix Cargo.toml * Support ClassData and TokenData not according to ICS-721 spec (#1039) * skip validation, make some data optional * check the length of token_uri and token_data * fix to set TokenData and TokenUri at once * imp: add validate_basic method for PacketData * imp: allow any format for Data + define parse_as_ics721_data method * fmt and clippy * custom serde packet data with option * add a test * restore conversions --------- Co-authored-by: Farhad Shabani <farhad.shabani@gmail.com> * chore: add unclog * nit: fix docstrings --------- Co-authored-by: Yuji Ito <yito88@users.noreply.github.com> Co-authored-by: Sean Chen <seanchen11235@gmail.com> Co-authored-by: yito88 <yuji@phact-columba.com>
1 parent 8289081 commit 342dbcd

File tree

33 files changed

+3940
-104
lines changed

33 files changed

+3940
-104
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
- [ibc-app-nft-transfer] Implement ICS-721 NFT transfer application
2+
([\#346](https://github.com/cosmos/ibc-rs/issues/346))

Cargo.toml

+4
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ members = [
2525
"ibc-clients",
2626
"ibc-apps/ics20-transfer/types",
2727
"ibc-apps/ics20-transfer",
28+
"ibc-apps/ics721-nft-transfer/types",
29+
"ibc-apps/ics721-nft-transfer",
2830
"ibc-apps",
2931
"ibc-core/ics24-host/cosmos",
3032
"ibc-data-types",
@@ -74,6 +76,7 @@ ibc-core-handler = { version = "0.49.1", path = "./ibc-core/ics25-handler",
7476
ibc-core-router = { version = "0.49.1", path = "./ibc-core/ics26-routing", default-features = false }
7577
ibc-client-tendermint = { version = "0.49.1", path = "./ibc-clients/ics07-tendermint", default-features = false }
7678
ibc-app-transfer = { version = "0.49.1", path = "./ibc-apps/ics20-transfer", default-features = false }
79+
ibc-app-nft-transfer = { version = "0.49.1", path = "./ibc-apps/ics721-nft-transfer", default-features = false }
7780

7881
ibc-core-client-context = { version = "0.49.1", path = "./ibc-core/ics02-client/context", default-features = false }
7982
ibc-core-client-types = { version = "0.49.1", path = "./ibc-core/ics02-client/types", default-features = false }
@@ -87,6 +90,7 @@ ibc-core-router-types = { version = "0.49.1", path = "./ibc-core/ics26-rou
8790
ibc-client-tendermint-types = { version = "0.49.1", path = "./ibc-clients/ics07-tendermint/types", default-features = false }
8891
ibc-client-wasm-types = { version = "0.49.1", path = "./ibc-clients/ics08-wasm/types", default-features = false }
8992
ibc-app-transfer-types = { version = "0.49.1", path = "./ibc-apps/ics20-transfer/types", default-features = false }
93+
ibc-app-nft-transfer-types = { version = "0.49.1", path = "./ibc-apps/ics721-nft-transfer/types", default-features = false }
9094

9195
ibc-proto = { version = "0.41.0", default-features = false }
9296

0 commit comments

Comments
 (0)