-
Notifications
You must be signed in to change notification settings - Fork 398
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
ICS 17: Nonfungible token transfer packet specification #30
Comments
Relevant linksEthereum NFT standardsOriginal NFT https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md Ethereum EIPs are a treasure trove of NFT use cases and corresponding logic. For a mature network we can assume usage won't be any less convoluted. People want to have simple NFT, semi-fungible tokens, batched NFTs, security (as in Howey test security) tokens, fungible ownership rights over a non-fungible token, tokens that are one-way fungible, or fungible but with a twist, all sort of things. EOS NFT standardEOS standart is notable in a way it has a lot of metadata for a token, and different schemas for different categories. A chain that doesn't bother itself with limiting state size too much has a very different approach to on-chain data commitments. |
NFT/semi-fungible tokens use cases:
I think we should focus on 1. and compatible tokens in this issue, namely, NFT/semi-fungibles that can be transferred in a permissionless way, do not expire, do not have a complex fungibility logic. That will cover a lot of use cases and will provide a base for more complex NFT standards. |
What do we want to do with NFTs+ICS? I think there are two big cases we might want to implement right from the start:
Also, a thing to consider (also concerns fungible token transfers): can we do state channels over IBC? Selling and buying items on marketplace chain within counterfactual state channels, tokens never leaving their origin chain would be so cool. |
The simplest form the NFT's over IBC is such that static NFTs can be moved between chains but mutations to the state of the NFT require returning the NFT to the home chain. Future improvements to the IBC system could enable distributed mutation of NFTs for instance by allowing a Hub to enforce a while list of what chain-ids are allowed to mutate the internal state of an NFT. |
ERC 721 specifies the It might be useful to provide information that could tell external software whether a particular token's data representation is compatible with a specific standard, and it might be more user-friendly to encode it somewhere inside
|
Alternatively, exact metadata scheme can be specified in its own field in the packet structure or in the metadata itself (thus not being part of the packet at all) |
We started discussing the appropriate changes to the NFT schema over in this issue: And began building a draft implementation here: cosmos/cosmos-sdk#4118 I need to update the issue with some of the choices we made on the draft but one of the thoughts that are already outlined in the issue is with regard to the metadata. Using For instance if the info contained in the metadata JSON object meant to be returned by the type NFT struct {
Owner sdk.AccAddress `json:"owner"`
Name string `json:"name"`
Description string `json:"description"`
Image string `json:"image"`
TokenURI string `json:"token_uri"`
} (The Token ID is used as a key when storing the NFT so is not contained in the NFT struct itself) |
Should we converge on a single schema for token data or IBC packet can be a subset? How valuable is IBC packet space compared to CosmosSDK chain space? Naive estimation is roughly three times more valuable (packet goes origin->hub->destination making a footprint in three chains) - is it enough to move, say, description to the external metadata? |
@okwme Do I get you right: you say that any metadata call will return an ERC721 JSON metadata object, but this object might contain (under the |
Hi @oopcode yes the description above is meant as a compromise between on-chain and off-chain data. This is the solution that has been implemented in the v1 NFT module that is an open PR at the moment: cosmos/cosmos-sdk#4209 However I've been considering the idea of a flexible metadata lately and I'd like v2 to separate the metadata into an interface that can have nested features to accommodate as flexible as a metadata schema as possible. It might even make sense to move the metadata into it's own module that can be used to describe any asset on an SDK chain (including fungible tokens). The metadata should stay on the origin chain as that should be the only trusted source of truth about that asset and it should be up to the origin chain who can update metadata and when. |
I believe this is obsolesced by more recent work of the NFT standardisation working group. |
Is nft ibc implement,we have some idea to define it which based on ics20 for evm chain. |
Similar to #9, but for nonfungible (unique) tokens, perhaps with metadata.
The text was updated successfully, but these errors were encountered: