NFTs in the bowels of Bitcoin… Affront, shrinking decentralization, non-event? The debate rages on.
Let’s start at the end. “Ordinals” are NFTs that squat in Bitcoin blocks.
Created by Casey Rodarmor, “Ordinals” is essentially a system for numbering the 2.1 quadrillon of satoshis according to the order in which they were mined.
These inscriptions which associate satoshis with a jpeg (or video, pdf, etc.) are stored in the Witness (we will come back to this) of a BTC transaction. So, instead of being stored on Opensea like most NFTs, everything is stored directly in BTC transaction blocks.
In summary, listings (on-chain Bitcoin NFTs or, as Casey Rodamor prefers to call them, “ Digital Artifacts“) are recorded in blocks via a BTC transaction.
And the fact is that these transactions containing these registrations are larger than normal transactions.
Hence the controversy
Many eyebrows were raised at these blocks that were filled to the brim but contained very few transactions.
Some see it as a Dos attack. The reason being that these large transactions fill the blocks inexpensively.
This is a problem in the sense that nodes that enforce the Bitcoin protocol will need to allocate more disk space to store the transaction history of the BTC network. This is a cost that ultimately harms the decentralization of the network.
Indeed, after 14 years, a node only needs 471 GB of disk space. This small space is related to the fact that most of the blocks were not full. We would be over 1600 GB if each block had been. We therefore understand the risk of a popularization of these NFTs on Bitcoin.
That being said, all transactions are competitive. Whoever pays the most fees takes priority. Point bar. Transactions containing an NFT wishing to be validated in priority will then have to pay transaction fees proportional to the space they occupy.
In other words, it is not strictly speaking a Dos attack. And then, it is up to the miners (or rather the mining pools, since they are the ones who choose the transactions) to sort out if these NFTs bother them.
But how is it possible to add voluminous “arbitrary content” in the transactions of a protocol as straightforward as Bitcoin? Good question.
To answer this question, we need to look at two major changes to the Bitcoin protocol: SegWit and OP_RETURN. But before that, a bit of history.
As a reminder, one of the consensus rules of the Bitcoin protocol is that each block should not contain more than one million bytes (1 MB). This million bytes consists of data such as the hash of the previous block, the number of transactions, the transactions themselves, etc.
In other words, a block larger than 1MB will be discarded by nodes. This limit is intended to ensure a certain level of decentralization. It is easy to understand that an unlimited block size would make it possible to carry out billions of free transactions in a very short time. The required disk space would then become too expensive for the nodes. Farewell to decentralization.
This decentralization therefore results in a low throughput of transactions. Each block added every ten minutes contains only a few thousand transactions. That’s a big handful of transactions per second.
So transaction fees skyrocket when too many people want to transact BTC at the same time. They have already reached $50 per transaction on two occasions:
This problem of Bitcoin’s low transaction rate (which is not a bug, but an essential attribute of decentralization) led to the “Big Block” war.
Those who wanted to increase block size, even if it meant sacrificing its decentralization, ended up “hard forking” by creating Bitcoin Cash (BCH).
The others bet on the Lightning Network (second layer). As the latter was not yet operational at the time of the schism, we avoided the most urgent matters by quadrupling the size of the blocks via the soft fork SegWit (Segregated Witness).
The SegWit Soft Fork
SegWit is an evolution of the Bitcoin protocol. The “SegWit blocks” are 4 MB. But since it is a soft fork, these blocks are still validated by the nodes that did not want to update (let’s call them “Legacy nodes”). A soft fork which means that the new consensus rules are compatible with the old ones.
The idea behind SegWit is that part of a transaction’s data (signature, pubkey, etc.) is segregated in a special section of the transaction called “Witness”. Since the Witness data is not counted by Legacy nodes, it is possible to make blocks of up to 4 MB without exceeding the 1 MB limit.
The technical explanation is that miners using the SegWit protocol use a new method to calculate the size of a block. SegWit blocks are no longer limited by 1 MB, but by what is called “blockweight”.
In summary, the new calculation formula takes into account the fact that Segwit transactions are transmitted to Legacy nodes without the Witness data. This segregation of part of the data in the Witness means that the size of the block sent to the legacy nodes does not exceed 1 MB while containing four times as many transactions. [Explication plus complète de SegWit].
Now that we have explained that there is quite a bit of space available in a BTC block, let’s now explain why it is possible to fit NFT “listings” into a block.
Storing arbitrary data on-chain has indeed been possible forever. Satoshi used coinbase to embed an 80-byte newspaper headline in the gensis block: “The Times 03/Jan/2009 Chancellor on brink of second bailout for banks”.
But 80 bytes is not much. Not enough to store arbitrary data such as NFT registrations. However, something called OP_RETURN, implemented as early as 2014, effectively allows storing any type of data without any size restriction other than 4MB.
SegWit therefore made it possible to increase the size of the blocks and OP_RETURN to enter as much arbitrary data as a block can contain. And Casey Rodarmor uses this space to create NFTs at the heart of Bitcoin.
Ironic. Even annoying when you know that NFTs are a great scam…
Receive a digest of news in the world of cryptocurrencies by subscribing to our new service ofdaily and weekly so you don’t miss any of the essential Tremplin.io!