Trading

Bitcoin Is A Database

Get ready, brace yourself. Reading this might enrage and confound you, it might confuse you, you might even get mad enough to punch your screen (don’t do that.) Consider this a trigger warning.

Bitcoin is a database. Period. That is what it is. The blockchain is a database for storing past updates to be able to reproduce the current state of that database, the UTXO set. The entire Bitcoin protocol is built around the database. What is a valid entry in that database, and what is not a valid database entry? Who is allowed to propose entries to that database, how do you ensure that only those users’ entries will be considered and accepted? What is the authentication mechanism restricting writing entries to this database? How do you throttle database entries so that people can’t make so many it overloads or crashes the software managing the database? How do you ensure that people can’t make single entries that are large enough to cause other denial of service concerns?

It’s all about the database.

Proof-of-work? The entire purpose of that in the protocol is to manage who can actually process updates to the database. Bitcoin is meant to be a decentralized system, so it needed a way for the database to be updated in a decentralized way while still allowing users to come to consensus with all their individual copies of the database on a single update to it. If everyone is just updating their own copy of the database by themselves, there is no way everyone will come to consensus on a single version of the database. If you depend on some authority figures to handle updates, then the update process is not truly decentralized. This was the point of POW, to allow anyone to process an update, but not without incurring a verifiable cost in doing so.

Proof-of-work is simply a decentralized mechanism for updating a database.

The entire peer-to-peer network architecture? It exists solely to propagate proposed database update entries (transactions), and finalized database updates (blocks). Nodes verifying transactions as they enter their mempool? It’s to pre-filter proposed entry updates to the database and ensure they are valid. Nodes verifying that a block meets the required difficulty target? It’s to pre-filter a proposed database update and ensure it’s valid before passing it on to other nodes to update their local copy.

The peer-to-peer network exists purely to reconcile multiple copies of the same database.

Bitcoin script? It literally exists for the sole purpose of functioning as an authorization mechanism for entries in the database. In order to delete an existing entry in the current database state, the UTXO set, a user proposing that update must provide authentication proof meeting the conditions of the script locking the existing database entry. Only existing entries, or UTXOs, can be “spent” in order to authorize the creation of new entries into the database. Miners are the only ones in the protocol allowed to create entries without meeting the condition of removing an existing one by meeting the authorization requirements set out in it’s locking script.

Bitcoin script is simply a mechanism to control and restrict who can write to the database.

Every single aspect of what Bitcoin is revolves around the core central function of maintaining a database, and ensuring that many network participants all retaining their individual copies of that database remain in sync and agree on what the current state of the database is. All of the properties that make Bitcoin valuable as a form of money, or a means of payment, are literally derived from how it functions as a database.

Many people in this space think that this database should be used solely for a means of payment, or a form of money, and I empathize with that view. I too think that is the most important use case for it, and I think that every effort should be taken in order to scale that particular use case as much as possible without sacrificing the sovereignty and security of being able to directly interact with that database yourself.

But it is still just a database when you boil down to the objective reality of what Bitcoin is. People willing to pay the costs denominated in satoshis to write an entry that is considered valid under the rules of that database can do so. There is nothing you can do in order to stop them short of changing what is considered a valid entry in that database, which entails convincing everyone else to also adopt a new ruleset regarding what is a valid entry.

People can freely compete within the consensus rules to write whatever they want to this database, as long as they pay the costs required of the rules and incentive structure of mining to do so. Period. Are many of the things people can and are entering into the database stupid? Yes. Of course they are. The internet is littered with mind numbing amounts of stupid things in siloed databases all over the place. Why is that? Because people are willing to pay the cost to put stupid things in a database.

Whether that is users of the database paying the provider and operator, or the operator themselves allowing certain things to be entered as part of operations without passing the cost to a user, is irrelevant. These stupid things only exist somewhere in digital form because in some way, the cost is paid to do so.

Bitcoin is fundamentally no different from any other database in that regard. The only difference is that there is no singular owner or gatekeeper dictating what is allowed or not. Every owner of a copy of the Bitcoin database is capable of allowing or not allowing whatever they want; the problem is if they choose to refuse something that everyone else finds acceptable, they fall out of consensus with everyone else. Their local database is no longer in sync with the global virtual database that everyone else is following and using.

If you find certain database entries unacceptable, then by all means change the rules your local copy validates new entries against. But that is cutting off your nose to spite your face. At the end of the day Bitcoin runs on one simple axiom: pay to play. If people pay the fee, they get to play. That’s just how it works.

At the end of the day, it is entirely up to every individual what they want to allow or not allow in their database, but cutting through all the semantics and philosophical debates going on right now one thing remains unquestionably and objectively true: Bitcoin is a database