Inscriptionless Inscriptions

Problem

Some users and developers do not like image, text etc. stored in witness by inscriptions. Approximately 20 GB of data has been stored on chain by inscriptions until now. Bitcoin is permissionless and users should be free to inscribe different things if they pay transactions fees. However, there could be efficient ways to have fun in which data doesn’t get lost because of broken links.

Research

I think bitcoin transactions already have everything you need to decode them to some image or inscription. There is no need to add anything extra in witness data.

Solution

Murch has explained nLockTime in a stackexchange Q&A and I had used it to build a proof of concept that generates different images using nLockTime. Images are not stored anywhere but generated off-chain based on nLockTime. In this case its just a pixelated cube but can be anything.

Initial idea was limited to ownership and gifting. It was good for privacy, could not be censored by any filters and can swim in ocean as well. These transactions would look same as any other bitcoin transactions. In fact all bitcoin transactions could be interpreted or decoded to some image.

Johannes has implemented the idea discussed in a tweet thread which uses a similar approach. Image is generated based on the transaction ID of the mint transaction, creating a unique pixelated cat image. A transaction is recognized as a CAT-21 mint if its nLockTime value is set to 21. The seed for generating the image and traits is retrieved from the concatenated transactionId and blockId , hashed using the SHA-256 algorithm. By using this method, the characteristics of each CAT-21 ordinal can only be determined after the transaction is included in a block, thus preventing anyone from generating transactions until they get a desirable outcome. This approach ensures fairness and unpredictability in the distribution of rare traits. Images and Traits are not stored on the blockchain but are generated on-demand using the concatenated transactionId and blockId as a seed.


Disclaimer: CAT-21 is just an example for the solution suggested in this post and should not be considered an endorsement. Cats were minted for free and I have no involvement with the project apart from one of my tweets being an inspiration.