-
Notifications
You must be signed in to change notification settings - Fork 22
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
CHIP-0010: Owner-Editable Metadata Format for NFT1 #33
CHIP-0010: Owner-Editable Metadata Format for NFT1 #33
Conversation
Signed-off-by: danieljperry <[email protected]>
CHIP 10 is now a |
Hi! Neat idea! We do something similar but use the NFT-tied DID for the xch.limo service, and it seems more elegant. The NFT-tied DID approach does require a bit more work to pull the info out and it is not within the NFT smartcoin, so that is the other side of it. So it depends on what the application needs are. However putting the editable info in the DID (using a key such as an NFT id) could be more elegant, at least until chia-blockchain repo adds rpc endpoints related to separate data fields in NFT1, per @cameroncooper and my comments in CHIP-9 discussion. I hope these comments are of some use. |
I think that this CHIP should also address a possibility of adding new (non-existing in the original metadata) "trait_type"s with "value"s to the "attributes" field. I think such additions should be allowed by default. One of the possible use cases is to add traits which were not added by the creator at the mint time. Creator himself, instead of reminting the whole collection, could publish updated metadata files and provide instructions to owners how to update. |
One problem with this solution, as has been mentioned somewhere before, is that as you add more URLs to the NFT, all previous URLs remain. This causes the list to grow and increases the CLVM cost of each spend after the metadata update. However, if updates are infrequent, this should be reasonable in the short to medium term. I feel that opt-in editable metadata and the ability to rename the NFT is useful for a variety of applications, including games utilizing NFTs as assets. And, the consequences of implementing this are pretty low, if used properly. It's an elegant solution that doesn't add much overhead, and can enable things that aren't possible today. Besides, it could be toggled on and off on an explorer since the original metadata is never actually replaced. Seems like a low risk addition to CHIP-0007. And, in future versions of the NFT standard, the URL limitation mentioned could be improved, for example by rotating the old URLs out after the list grows to a certain length, or by storing edited metadata directly on-chain. Overall, looks good to me. |
I think this is an interesting idea, but there are a few things to think through:
Unfortunately this feature comes with a lot of baggage. IMHO it isn't valuable enough to sacrifice the existing simplicity. HOWEVER I do have a possible compromise that would still be close to what you want AND allow all existing NFTs to participate! We could define a standard custom metadata attribute called "nft-graffiti" of type text. We'd make sure no existing metadata out there uses this attribute name now. As part of this standard, NFT viewers would know that there always might be a custom editable metadata value on the URL called nft-graffiti, even for older NFTs that were created before this CHIP. This would allow owners of all existing NFTs out there to add a "I was here" message on their owned NFTs. This nft-graffiti could include formatted data, links to other metadata, (very small) base64 encodes, etc. In fact, I like "nft graffiti" so much that I want to change this CHIP's name from "editable metadata" to "NFT Graffiti" because I think people will "get it" when they hear about this feature. "Oh, just like the owner of the mona lisa could draw a moustache on her if they wanted." 😂 |
Yep exactly! When I first wrote this, I actually assumed that each update to the URL only included THAT URL. I assumed the NFT viewer would try this "main" URL first and then if that failed, it would go look up the parent of this coin to try to find an older URL, and so on. This would add a bit more logic to the client but would save a huge amount of space on-chain! |
Hi all, I've added a section for "Etchings" which describe a way for existing NFTs to join the fun. LMK what you think! |
Please take a look at the new "Etchings" section and leave your reviews here. We are looking to finalize this CHIP soon if it gets consensus approval from the community. |
@joshpainter Love the etching idea and name! One other idea, regarding the size implications of adding full URIs every time the editable metadata should change: |
This is an awesome idea and incidentally resolves the following issue which may arise with editing the original URL. Query strings are sent to the server, and many web services actually make use of them. There is no guarantee that manipulating the query string would not cause the server to return different data. Some servers may even forbid unrecognized parameters. A simple tweak would be to write the parameters after the "#" character (known as the URL fragment). It's a strong convention that nothing influencing the document content should go there, and browsers don't forward it to servers, so playing with this really shouldn't influence the content. I still like the custom protocol scheme idea more for its cleanliness, saves some chain fees and simplifies the business logic for all implementers. |
Thank you! I really like this idea as it is much cleaner, but I'm worried about two things:
However, I do recognize the potential data (and fee) savings here. Users could use URL shorteners as one workaround, but it won't ever be as compact as a new convention like META://. So I'm open to more discussion on it! Particularly interested in input from the NFT1 authors!
This is a good point and at first I like just changing to fragment (#) but some counterpoints:
This discussion brings up another detail that I didn't cover in the CHIP though: when the owner updates an editable field, do ALL existing unchanged editable values PLUS the new edited value get saved to the querystring? Or just the actual value(s) that changed? Just adding the changed value(s) makes most sense to me from a data(fee) usage perspective but it does add work to implementors, because they need to iterate through the URLs until they have most recent values for all editable fields. So we should discuss that more too! Thanks again for input!! This is great, keep it coming! |
Next week we are going to hold a meeting to finalize the features of CHIP-10. See this post for more info: |
…m/joshpainter/chips into joshpainter-editable-nft-metadata
The author has chosen to withdraw this CHIP from consideration. The ideas contained within could be revisited at a future date. @joshpainter feel free to close this PR at your convenience. |
* Add `add-additional-partial-headers` chip * Assign #33 and open as a Draft * Move CHIP-33 to Review * Include config options and scoped harvester stats * Move CHIP-33 to Last Call * Update CHIPs/chip-0033.md Co-authored-by: Starttoaster <[email protected]> * Switch to `include_peer_ids_in_partials` option * Move CHIP-33 to Review * Move CHIP-33 to Last Call * Move CHIP-33 to Final --------- Co-authored-by: danieljperry <[email protected]> Co-authored-by: Starttoaster <[email protected]>
This CHIP describes a simple way to enable owners to edit some or all of the metadata for an NFT without breaking the metadata hash. It is backwards compatible with NFT1 and CHIP-0007 and requires only a simple change to be supported by any NFT viewer.