ordinals / ord

👁‍🗨 Rare and exotic sats
https://ordinals.com
Creative Commons Zero v1.0 Universal
3.85k stars 1.38k forks source link

Ordinals Protocol future and how cost scale #1878

Closed kevinfaveri closed 1 year ago

kevinfaveri commented 1 year ago

Currently, we are well aware that costs can be exorbitant to create inscriptions. It is inevitable that a new trend will set, and one I can imagine is people just using text/plain ContentTypes to store an URL to their servers. It loses the point of the artifact itself, as discouraged by the ordinals handbook as well.

Given this scenario, I think it would be cool if the Ordinals Protocol can come up with a solution that addresses both cost scalability for launching multiple inscriptions (collections) and resource quality, so that it can kill two birds with one stone (this expression feels so strange these days): high res image available for webapps to use and still cheap for users to upload the artifact on chain.

My suggestion is the following, introduce a new convention for an optional meta JSON object, that must be serialized to string and inscribed right after ContentType and ContentBytes, as ContentMetaBytes (should always be assumed to be a valid JSON... if not, the Ord wallet ignores it):

[
   {
      "name":"Legendary Sword",
      "high_res_img_url":"https://example.com/legendary_sword.jpg",
      "attributes":[
         {
            "trait_type":"Attack",
            "value":"1000"
         },
         {
            "trait_type":"Durability",
            "value":"500"
         },
         {
            "trait_type":"Element",
            "value":"Fire"
         }
      ]
   },
   {
      "name":"Mythical Shield",
      "high_res_img_url":"https://example.com/mythical_shield.jpg",
      "attributes":[
         {
            "trait_type":"Defense",
            "value":"800"
         },
         {
            "trait_type":"Durability",
            "value":"800"
         },
         {
            "trait_type":"Element",
            "value":"Ice"
         }
      ]
   }
]

This would allow for people to express arbitrary metadata that is webapps choice to present or not, while still having the digital artifact intact, and allowing to: focus on inscribing the artifact, with a low quality of image to pay less (leading to better scaling) while still being able to provide a high res image, if it exists. Also allows to express, immutably on the chain, attributes and a name for the individual inscription (rather than just Inscription number). This way, only the high res image would be mutable, but then it is an optional field, you can always use the bytes available on the inscription.

And this would prevent/disincentivize people from just upload a text/json ContentType with arbitrary metadata that can be changed later, as it would preserve the artifact on chain.

All in all, a solution for this will happen as people will look into how to scale this.

What do you think @casey? Also curious how you think about this.

V01dZer0 commented 1 year ago

"Digital artifacts are complete. An NFT that points to off-chain content on IPFS or Arweave is incomplete, and thus is not a digital artifact." --https://docs.ordinals.com/digital-artifacts.html

Casey doesn't like off-chain.

tyjvazum commented 1 year ago

Casey has explicitly suggested, as recently as this year, adding support for off-chain content in multiple issues: https://github.com/casey/ord/issues/801, https://github.com/casey/ord/issues/887, https://github.com/casey/ord/issues/624

kevinfaveri commented 1 year ago

"Digital artifacts are complete. An NFT that points to off-chain content on IPFS or Arweave is incomplete, and thus is not a digital artifact." --https://docs.ordinals.com/digital-artifacts.html

Casey doesn't like off-chain.

Only thing that is offchain on my proposal is a optional high res image. Metadata would still be immutable embedded into the ordinal. OG content bytes would still be available as well.

brianorwhatever commented 1 year ago

We are accomplishing this by having the entire inscription be a Verifiable Credential. This allows the embedding of the image alongside metadata as well as adds the provenance of who actually created the artifact (not just the address the inscription came from) in a completely verifiable manner. You can see what this ends up looking like in wallets here (https://ordinalswallet.com/inscription/2fc725c79d76327f741b17387deb8ff4ba54d78c7498a12eff062dc638b25fe9i0). Although it's not pretty right now we are working with wallets in order to get them to render the credentialSubject.image as if it were a standard image inscription

nammaki commented 1 year ago

I really want metadata support 🙏

casey commented 1 year ago

This is proposal for two things, metadata and off-chain links to data. I'd like some form of metadata, but off-chain links are not something I'm inclined to support.