Request for feedback: ICRC-97 NFT metadata standard

Hi everyone, within the NFT ICRC Working Group we’ve created a metadata standard for NFTs.

ICRC-97: Non-Fungible Token (NFT) Metadata Standard

The standard is designed to allow for multiple assets with different data types with various purposes. Where additional asset purposes and attribute display types can be standardized in ICRC-97 extensions.

A list of asset purposes and attribute display types are defined in ICRC-97 to the minimum needed for wallets and marketplaces to display NFTs.

PR can be found here and the this link can be used to read the standard.

Design Rationale and Inspiration

The standard has been largely inspired by the Open Sea metadata standard but adapted to allow for either on-chain ICRC-3 metadata and off-chain JSON metadata.

Where the latter enables use cases like for example off-chain games with on-chain tokens for digital asset ownership, twin tokens for NFTs on other chains etc. This standard defines the technical details of defining common metadata, not the reasoning why one or the other should be used, this left open for developers to decide.

The standard has been designed to make it possible for extensions to cover various other NFT use cases like e.g. audio, 3d, video and other NFTs.

Feedback

We’re looking for feedback and input, below I’ve listed a few examples questions for feedback.

  • Do the current defined defaults within the standard cover most common use cases?
  • Do assets and attributes cover most common use cases, or is something else missing?
  • Does the definition of an asset fit or allow for an extension to fit your use case?
  • Does the definition of an attribute fit or allow for an extension to fit your use case?
  • Are there concerns from NFT devs regarding implementation complexity?
  • Are there concerns from Wallet & Market devs regarding implementation complexity?

We really appreciate any the feedback on this post, above PR or within the WG meetings.

Every two weeks there’s the NFT ICRC Working Group meeting, the first upcoming meeting is today. The agenda for this and other meetings can be found here.

@skilesare @dieter.sommer

6 Likes

I’m concerned about the cost of hosting assets for large collection, makes sense to use IPFS instead. But if you’re a purist and want everything on ICP then thats another topic. ICP NFT ecosystem’s innovation is stagnant due to corrupt and immature practices by gatekeepers and their enablers. This is definitely a good initiative in the right direction.

2 Likes

The topic of storing assets was actually part of the ICRC-97 discussion, the standard now defines an url (not limited to http) in the metadata that links to the asset.

This URL could be on the IC itself, something like Arweave or anything else. The standard keeps the option open for implementers to decide themselves regarding the asset storage. In case developers want to store the asset directly in the metadata itself instead of referencing somewhere else, this can be done by e.g. using a base64 data uri.

5 Likes

I know it’s been a while, but @jorgenbuilder spent some time thinking about this IIRC, maybe he has time to give this a review?

1 Like

Thanks a lot, @sea-snake, for this excellent summary and your work on ICRC-97! My comments have already been entered into GitHub and I think addressed from your side, besides those the current draft looks good to me!

Let’s see whether we can get some feedback from people who have been thinking about the same challenges themselves some time back as mentioned above in this topic. @jorgenbuilder, it would be great if we can get your inputs as it seems you have worked on something similar already.

1 Like

@sea-snake
Hi, I’m working on the implementation of ICRC7, and it brought me to this forum. The metadata is not standardized, and ICRC97 is the only implementation. This raises a question: why is it necessary to specify the standard (icrc97:external_metadata) for each token? Is it implied that a single collection can have tokens with different standards? Why don’t the returned data contain a unique identifier? Such an approach requires maintaining an additional list to preserve order and locate the requested token.

Also, is there an estimate for when the standard will be finalized? There are already different implementations of the standard on marketplaces, which will make the task much more challenging for data aggregators.

Thanks in advance.

Without wrapping the metadata in a key, you’d get collisions with any non standards key outside of this standard. On another note, we’re considering removing the external metadata concept from the ICRC-97 metadata standard and only focus on the on-chain metadata. This should simplify implementation, specifically for consumers significantly.

Can’t give a concrete estimate yet, but hoping to get the next iteration out 2 weeks from now (next WG meeting). This should then be stable enough to no longer change besides e.g. wording within the standard description itself.

If these marketplaces are using icrc97:metadata key, they should follow the ICRC-3 data structure for its value defined in the ICRC-97 standard. If this is not the case, feel free to let the marketplace and me know so we can look into efforts to standardize this existing data.

1 Like

Thank you. As I understand it, without ICRC-97, ICRC-7 isn’t particularly useful for a wallet since the structure isn’t strictly defined, and there’s no way to know the token metadata parsing algorithm in advance. To create a unified ICRC-7 database, we can only wait and hope that marketplaces will implement ICRC-97 alongside ICRC-7, or that a new standard will be introduced to describe and interpret already given metadata structure.

Hey guys,
We are also working on a icrc7 implementation in rust. Do you guys plan a new working session on this topic ?
Thanks !

See the bi-weekly token WG meetings, next one is today Token Standards Working Group: Merging "Ledger and Token" and "NFT" Working Groups - #13 by dieter.sommer

the meetings looks archived and i dont see the event for today.
Can you share the link here ?

See the following link for all the WG events: Internet Computer Events