Thoughts on inscriptions
“Inscriptions” became a popular way to create NFTs on Bitcoin earlier in 2023 and have picked up significantly in the past month. However, they are, in many ways, a step backward.
To understand inscriptions, we must first understand some technical limitations of the Bitcoin blockchain and the historical emergence of solutions around it.
Data-availability and sovereign rollup
Bitcoin generally lacks support for the statefulness and logic required to deploy all but the most basic smart contracts. It is, however, possible to write arbitrary data to the Bitcoin blockchain. As such, Bitcoin can serve as a “data-availability layer” for a chain following arbitrary logic. You can create arbitrarily complex blockchain logic that takes as input data from the Bitcoin blocks and maintains the state of a ledger. This is the approach taken by systems like Mastercoin, Counterparty, etc. The logic can be arbitrarily complex and include smart contracts. If you are so inclined, think of the chain as a linked list and of the logic as a “fold” operation where the accumulator is the ledger state. This approach has recently been rebranded as “sovereign rollups.” There are several issues with it.
First, Bitcoin data-availability is fairly limited and expensive. Transactions can only use a small fraction of their content as a data payload, and the data itself is limited to 1MB - 4MB per 10 minutes. There isn’t much capacity to go by. While this can price out small transactions, it’s silly to try and police how a permissionless network will be used. Moreover, the Bitcoin network’s security is meant to be subsidized by fees, not inflation. As scaling solutions build up, Bitcoin purists should welcome, not rail against, any fee they can get, however, it’s far from certain that they can contribute meaningfully to the budget in the long run. Bitcoin has one thing to offer to these applications: its brand and luster1. The market for collectibles, and frankly, memecoins, is driven by many intangible factors, not necessarily cost-efficiency. Nonetheless, the cost does create a strong current to swim against, and applications will tend to migrate where fees are cheaper. Part of the problem is that Bitcoin only has its brand to offer; these systems do not meaningfully interact with bitcoin, the asset. This gets us to our second point.
Second, these systems cannot securely share their state with other systems, including the base chain they are built upon. In the case of a so-called “sovereign rollup” on top of Bitcoin, this means, ironically, that they cannot use bitcoin as a native asset. It’s perfectly possible to deposit bitcoin into such a rollup — the nodes computing the state of the rollup can take note of such deposits — but it’s not possible to take it out. This is because the Bitcoin chain itself is unaware of the state of the rollup; it does not and cannot know whether or not a valid withdrawal is taking place. Relatedly, Bitcoin light clients do not and cannot provide information about the state of the rollup. The same goes in general for so-called “sovereign rollups”; they cannot prove their state to any other rollup, meaning they are condemned to interact with other rollups via trusted bridges.
To conclude this section, I’ll add a note on colored coins, which are in some way a lighter version of the above. They typically do not implement extraneous logic but use data to “tag” certain transaction outputs (UTXO) with nominal value as representing assets. With careful wallet implementations, it’s possible to segregate these outputs from regular coins and treat them as special.
Ordinals and inscriptions
“Ordinals” for digital collectibles became popular in the middle of 2023, somewhat went away, and are now making a comeback. They do not implement complex logic as outlined above. As such, it’s not really possible to implement decentralized exchanges for ordinals, nor is it possible to implement auction contracts or a host of other important primitives for collectible ecosystems.
They differ from what has been typically seen in the NFT space in two particular ways:
- They are issued on the Bitcoin chain.
- The media content of the collectible is written in the transactions themselves.
Those two aspects are completely independent. It would be possible for ordinals to be issued on Bitcoin without inscribing the entire media content in transactions (by inscribing instead an IPFS link for instance), and of course, people have taken to inscribe collectibles on other chains.
On the first aspect, as discussed above, Bitcoin is not fit for purpose as most interesting primitives for a collectible ecosystem cannot be implemented. However, it does lend its brand, which has been enough to create an interest in the phenomenon.
The second aspect is weird, and a proper discussion involves dispelling technological misconceptions while reflecting on… reflexivity. Let’s start with the strict technical requirements for storing NFT media content.
Storing NFT media content
An NFT represents a title, a digital right to a piece of media. Those rights can vary. In many cases, the NFT only represents a right to hold the NFT, and nothing else. The fact that a piece of media was attached to it is meaningful to collectors, regardless of them holding any rights. Collecting is not about obtaining some IP right to display a piece, otherwise, no one would collect old masters; it can be about bragging rights, it can be about supporting artists (yes, collecting dead artists is a way to retrocausally support them, as the expectation of future collection is what enables speculators to support them during their lifetime). It can also be about explicit IP-related rights, but I think people who focus on some concrete form of utility, be it real-world utility or IP rights, are somewhat missing the point.
Hashes and IPFS
So what it is to be done about the piece of media? A simple hash of the content is sufficient in my opinion, it indicates without ambiguity that the piece was attached to the NFT, and that is all that matters. But what about the media itself? The collector can right-click and save it if they care to. This is a function that ought to be automated by most wallets.
IPFS represents a fairly good solution to the problem. It is as lightweight as a hash, but also specifies a fairly general way to retrieve the media if someone cares to make it available. The “natural” solution to the matter is wallets saving the content, running IPFS nodes and pinning it there. This can introduce practical problems, of course, marketplaces need to access the data, and it may be inconvenient to corral it from a bunch of sometimes offline nodes, but this is something that can be solved by caching. Sellers are incentivized to make the content broadly accessible.
It’s been proposed to store data in the state of the ledger. Smart contracts can hold data, which they rely on for business logic, and that data can represent various pieces of media. The advantage of this approach is that the validators of the chain typically have to store that data because they need to assess the validity of any incoming transaction, and a transaction could in theory depend on that data. The initial design of Ethereum does not price state storage correctly; it tries to limit the amount of data stored on-chain via gas fees. This has the unfortunate consequence that, when demand for transactions and thus gas fees are low, it can be cheap to permanently expand the size of that state. The huge size of the Ethereum state tree has been one of its major impediments to scaling, as most of the time spent by validators is waiting for IO in that large tree. Predictably, allowing stateless validation, or introducing state rent has been a major area of R&D in the Ethereum community. Tezos, in contrast, uses a simple but fairly robust approach to managing state size by charging a fixed burn cost for every byte added to the storage. This means that the cost of increasing the state tree size does not depend on gas costs. This offers much simpler UX and implementation than state rent but has worked well in practice.
What am I getting at with all this? I’m getting at the fact that it’s important for the state tree to remain somewhat light, and increasing it should be priced accordingly. This state will have to be replicated across all the validators and all the nodes, with economic incentives. This makes it extremely overkill and also particularly expensive. The convenience factor is high, any chain RPC will reply with the data, but at what cost?
A third approach, the one taken by inscriptions/ordinals, is not to store the data in the ledger state, but in the blocks themselves.
Blocks provide “data availability” guarantees, although, as Dankrad Feist points out, “data-availability” is a terrible name that obscures what is going on. He proposes the much better term “proof of publication.” Including data in blocks is a way to prove that the data was, at one point, made public. This means that anyone who cared to pay attention at that time, and run a node, was able to download that piece of data. Proof of publication is critical to ensure that all the participants wishing to maintain the state of the ledger, ascertain its validity, or even produce blocks can do so.
Proof-of-publication by itself does not guarantee that the data can be retrieved at a later time. There is no incentive in the Bitcoin protocol, the Tezos protocol, Ethereum, or others to store blocks for longer than the length of a typical chain reorganization. Fortunately, as long as there is at all times at least one altruistic, honest archivist online, then in practice the chain will be saved. Typically, I don’t think it’s worth really sweating incentives when you only need a single honest, altruistic participant, but that depends on the cost of this altruism. If the cost is on the order of thousands of dollars a year, this will just happen; if the cost is on the order of millions, you need incentives, funding mechanisms, etc.
There is no “crypto-economic” mechanism that makes inscriptions in blocks stored more safely and reliably than IPFS pins; in both cases, you are dependent on honest, altruistic participants storing the data. The only mechanism at play is bitcoin miners and node operators not really caring about optimizing their operations enough to prune old blocks. Note that it’s also possible for these miners to selectively prune inscriptions from old blocks with no adverse consequence, as blocks pruned of inscriptions can be used by new participants to validate the chain and recreate the ledger from genesis.
To be completely fair, I have zero concerns about Bitcoin archives becoming unavailable. The cost of storage is minimal, and Bitcoin is a huge social movement. In other words, Bitcoin’s block history isn’t going anywhere. But likewise, when the creator of Hic & Nunc, a leading NFT marketplace on Tezos suddenly pulled the plug on his site, a mirror was up within hours, and all the content on IPFS was repinned. Nothing was lost. IPFS can be brittle if not enough people care about the content. The benefit Bitcoin blocks is that someone is realistically always care about the content enough to save it.
Storing in blocks offers some convenience, but it’s just another form of storage, with a different social dynamic, there is no “crypto-economic” incentive at play. Sadly, there is more to it.
From a technical perspective, we’ve established there isn’t much of a case for storing media in the ledger state or in the blocks. However, that may not matter. The fact that the data is not stored “on-chain” is unpopular. Maybe this stems from a lack of familiarity with the above arguments, maybe it’s just a coping argument against digital collectibles in general, and maybe it is mere aesthetic preference. No matter, if enough people are convinced that this matters, and if they represent a market of buyers, then the incentive is to cater to that preference. If Elon Musk goes out and complains that “the image isn’t even on-chain,” the merit of technical arguments becomes moot. Reflectively, a Schelling Point can form around the idea that inscriptions are intrinsically more valuable, like a crystal growing around a seed. It does not matter in the least if the seed is a silly misconception, once the crystal is there, it’s there.
To be clear, this is an unfortunate state of affairs. Peacocks got trapped in making huge feathers because of a runaway Fisherian sexual selection phenomenon, making them easier prey, but they can’t escape the circular logic leading to it.
A world where block space is spent on inscriptions because people decided they mattered is slightly worse off than a world in which they recognized it didn’t. But the world is not always as we wish.
I think it’s the brand dilution that fundamentally upsets the Bitcoin purists. ↩