HIP-10: NFT Metadata JSON Schema #50
Replies: 27 comments 21 replies
-
for images/videos - probably use IPFS to ensure authenticity? Pinata is also another interesting idea! |
Beta Was this translation helpful? Give feedback.
-
Here is a potential add-on to this proposal or a separate HIP for NFTs. HTS should support the creation of numerous non-fungible tokens of a single type. Currently, it seems that NFTs can only work on HTS if you create a token with a supply of one and treat it as an NFT. This seems like a workaround for now and leaves a lot to be desired. In addition to having embedded metadata, HTS should also allow users to create a single class of NFTs that can each be recognized as the same type while still being individually distinct tokens. |
Beta Was this translation helpful? Give feedback.
-
At this point, it might be easier to just create an HNFTS (Hedera Non-Fungible Token Service). |
Beta Was this translation helpful? Give feedback.
-
Re: IPFS: The proposed spec discusses how this URI can point to IPFS: Re: NFTs, I agree that standardization is necessary for the best way to do NFTs on HTS today, and possibly this may be a separate API or service. I think it's best to break that out into a separate specification, so as to limit the scope of this spec just to the linking of asset metadata. |
Beta Was this translation helpful? Give feedback.
-
Metadata asset linking is mainly a core NFT feature so it would make sense to formally support NFTs on HTS before adopting NFT-specific features. I propose we create a single HIP that requests formal NFT support on Hedera with a list of critical features including asset metadata and the ability to create multiple unique tokens of an associated type. |
Beta Was this translation helpful? Give feedback.
-
Folks are deploying NFTs today on HTS. This HIP gives them a standard way to link to token metadata. |
Beta Was this translation helpful? Give feedback.
-
I agree that it makes sense to support metadata on HTS as it is today. I could see scenarios where someone might want to host metadata that applies to fungible tokens as well while also supporting the current NFTs being created on HTS. The main difference between this proposal and full NFT support is that metadata links could be unique to each token created under a common type. So this proposal could target metadata JSON as a general standard and focus on defining a schema structure that can be used for both fungible tokens and NFTs. A separate proposal could then be made to create NFTs as a formal standard on HTS using the same schema proposed here. So I propose the following:
Happy to hear feedback on this. My main goal is to ensure the standard we come with up here doesn't need to be duplicated later and that metadata JSON support on HTS isn't confused with the full NFT support that is still needed. |
Beta Was this translation helpful? Give feedback.
-
I propose a few modifications (and yes I know this will make it incompatible with ETH):
To summarize, here is an example JSON schema:
Sanity check: the metadata of an actual NFT wouldn't actually have |
Beta Was this translation helpful? Give feedback.
-
Hi @cylon56 ,
This sounds reasonable to me. I will update the proposal to indicate that it's a general way to link to token metadata on HTS, regardless of the type of token. |
Beta Was this translation helpful? Give feedback.
-
Hi @rahul-kothari , I think it's important to keep the image attribute (note that none of the properties in the schema are marked required) that specifically has requirements around the image format, so as to facilitate the integrations with different wallets (software & hardware) and explorers that display the content. (see example in HIP-10). Note that in this JSON schema additional properties are allowed, so messages conforming to your example schema above would still be allowed as part of the proposal. |
Beta Was this translation helpful? Give feedback.
-
@cylon56 and @rahul-kothari: thinking about this more, since I agree that it makes sense to make this token metadata broader than just NFTs, what do you think about the following JSON schema? It is an extension of the one presently described in the HIP-10 draft, and has adoption already in ERC-1155 which is used heavily by some NFT explorers? It includes
|
Beta Was this translation helpful? Give feedback.
-
@sam-at-luther I like this approach. It covers all our bases and leaves room for future changes in Hedera-based tokens. |
Beta Was this translation helpful? Give feedback.
-
Yea I think erc1155 like json makes so much more sense. I also agree to your previous point about keeping images for wallet integration. |
Beta Was this translation helpful? Give feedback.
-
Hi @cylon56 and @rahul-kothari . I've updated the PR above to incorporate feedback from this discussion. |
Beta Was this translation helpful? Give feedback.
-
Cool saw it. Makes sense to me. Not sure how technical HIP docs need to be/who would end up actually implementing but yea excited to see what happens next! |
Beta Was this translation helpful? Give feedback.
-
I would love to work with you Sam on some NFTs for pilot projects to test out this HIP. |
Beta Was this translation helpful? Give feedback.
-
I agree with Rahul re removing image so NFT can be any type (video etc) FYI example 3D model on GoMint using custom json, but would like to align with work here.
The roothash links the metadata to the token symbol, and could be expanded to any nested structure. |
Beta Was this translation helpful? Give feedback.
-
Correct me if I’m wrong, but it seems as though HTS is its own standard for all token types whereas fungibility is a spectrum. Ethereum took an entirely different approach having a set of overall ERC standards and specific groups of standards for different use cases (20,721,1155). A true 1:1 no-decimals token on HTS is an NFT for all intensive purposes. While the schema might differ from 721 or 1155, it still has a description and images field for tagging actual assets on either centralized dbs, Hedera file service, or IPFS. Also many real world rewards/experiences can be tied to tokens that are offline, or simply promises by the issuer. There’s also use cases for 10:10 or 100:100 NFTs sortof like limited edition prints. While there’s a higher degree of “fungibility” since there are equal copies of each, they are not meant to be divisible and the supply is limited and scarce imputing a higher value. There’s also the ability to have a 1:1 with 1 decimal making a single asset divisible into 10 possible owners. Of course more decimals add more divisibility for fractional ownership. One could also mint 10 separate 1:1s so make 10 unique tokens that all tie to the same asset or reward. At the end of the day it’s all about how you actually use HTS. One of the key features on OpenSea is the ability for setting a residual reward to the creator every time it is traded like 10%. I’d like to know if this is possible with HTS, and what metadata if any is missing from the HTS schema which would prevent HTS tokens from having the same end functionality as any number of ERC token standards. |
Beta Was this translation helpful? Give feedback.
-
So a couple of points
1. HTS can be used for NFTs except you can’t add ANY metadata. So you can’t link the token to an image, video or document, which effectively makes the NFT worthless.
2. (Not related to the HIP but an answer to one of your questions): HTS doesn’t provide any programmability and so it can’t replicate an ERC. Apart from admin stuff like freezing/pausing/minting/burning, you can “only” transfer tokens. That said, HTS wasn’t created to be the ERC of ethereum. HTS was created to create a basic token very very quickly.
… Am 19/04/2021 um 19:47 schrieb Andrew Antar ***@***.***>:
Correct me if I’m wrong, but it seems as though HTS is its own standard for all token types whereas fungibility is a spectrum. Ethereum took an entirely different approach having a set of overall ERC standards and specific groups of standards for different use cases (20,721,1155).
A true 1:1 no-decimals token on HTS is an NFT for all intensive purposes. While the schema might differ from 721 or 1155, it still has a description and images field for tagging actual assets on either centralized dbs, Hedera file service, or IPFS. Also many real world rewards/experiences can be tied to tokens that are offline, or simply promises by the issuer. There’s also use cases for 10:10 or 100:100 NFTs sortof like limited edition prints. While there’s a higher degree of “fungibility” since there are equal copies of each, they are not meant to be divisible and the supply is limited and scarce imputing a higher value. There’s also the ability to have a 1:1 with 1 decimal making a single asset divisible into 10 possible owners. Of course more decimals add more divisibility for fractional ownership. One could also mint 10 separate 1:1s so make 10 unique tokens that all tie to the same asset or reward. At the end of the day it’s all about how you actually use HTS. One of the key features on OpenSea is the ability for setting a residual reward to the creator every time it is traded like 10%. I’d like to know if this is possible with HTS, and what metadata if any is missing from the HTS schema which would prevent HTS tokens from having the same end functionality as any number of ERC token standards.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
Beta Was this translation helpful? Give feedback.
-
Hi, Just as a use case example, i am starting to concept a VR experience using HTS and would like to be able to retrieve an image preview from an NFT stored/associated with someones account. It would be great if this was a reasonable dimension (large preview) might be unreasonable i am not sure on your size limitations etc.?. As an alternative if this has to be kept light, could perhaps the file service be able to act as a source location to host say a video preview or a light 3d model for the object?. Can someone please explain what the MVP for the metadata and images might look like. Kind regards. |
Beta Was this translation helpful? Give feedback.
-
Thanks for linking the HIP and I like the more fleshed out JSON schema. I
think instead of image URI it should be file URI since NFTs can be linked
to images, videos, audio, or simply files. Also couldn't 100 characters
include any shortened URI?
…On Wed, May 12, 2021 at 2:35 PM Sam Wood ***@***.***> wrote:
Please see the Reference Implementation
<https://github.com/hashgraph/hedera-improvement-proposal/blob/master/HIP/hip-10.md#reference-implementation>
section for an example of how to use this HIP for an image.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#50 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAG2KXPHZWZJFFG4S4D7TDDTNLC6JANCNFSM42THOTHQ>
.
|
Beta Was this translation helpful? Give feedback.
-
It may be beneficial to include a version number to the "specification" so that later revisions of the specification can be handled accordingly by consumers of the data. It is of course always possible to check for the presence/absence of an attribute in JSON, but a version number could be useful still. |
Beta Was this translation helpful? Give feedback.
-
Suggesting an alternative for localization, IPFS doesn't allow for custom URLs for example change from
to
|
Beta Was this translation helpful? Give feedback.
-
Hi
|
Beta Was this translation helpful? Give feedback.
-
Are all the questions addressed, and we can move it to the |
Beta Was this translation helpful? Give feedback.
-
@sam-at-luther are we good to move this HIP to Also, what's your take on changing the type of this HIP from |
Beta Was this translation helpful? Give feedback.
-
Would it be more versatile to have a structure something like this? Images aren't the only thing to be cognizant of, and support for multi-file metadata would be nice. {
"name": "NFT Name",
"description": "NFT Description",
"thumbnail": "//link to image",
"files": [
{
"file": "https://dev.luthersystemsapp.com/chloe_assets/SearchingForLightNo_81_20/image_part_005.jpg",
"type": "image"
},
{
"file": "//IPFS LINK",
"type": "pdf"
}
]
} |
Beta Was this translation helpful? Give feedback.
-
A key accelerator to the adoption of the ERC721 [0] Non Fungible Tokens (NFT) standard for the Ethereum network is the "ERC721 Metadata JSON Schema" definition. This schema is part of the optional metadata extension of that standard, and provides a guidelines for the format of the data that served for a token's metadata URI. This standard is how the plethora of wallets in that ecosystem (for example OpenSea [1] and d'cent [2]) display asset attributes for many ERC721 implementations, including an image for each NFT.
Building on the success of that standard, I propose optionally adopting this same JSON schema standard for NFT metadata on HTS. Specifically,
I also would like to solicit feedback on how the community thinks is best to include URIs that serve metadata in the above format within HTS NFTs.
Based on these discussions, I'm eager to draft a HIP and be a champion for such a standard.
[0] https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md#specification
[1] https://opensea.io/
[2] https://dcentwallet.com/
Beta Was this translation helpful? Give feedback.
All reactions