Hacker News new | ask | show | jobs
by gime_tree_fiddy 1632 days ago
A slightly tangential question, in regards to Bitcoin and Blockchain, that I (surprisingly?) haven't seen answered/asked: Blockchain is computationally intensive, but why does it has to be used for Bitcoin. There could be another solution, which achieves all its objectives, but isn't necessarily as convoluted. What am I missing? Why not just use SQL databases?
5 comments

SQL databases work well when all parties already agree with each other. With a distributed public "database" like blockchain you need a mechanism to prevent fraudulent transactions from being written to the database. That's how you end up with solutions like proof of work and proof of stake.
That’s actually a good question and most bitcoin people don’t know the answer. Bitcoin actually does solve a real technical problem but it’s kind of subtle.

The problem is that an SQL database isn’t distributed and trustless, but bitcoin wanted to be. But how does bitcoin accomplish this?

Bitcoin is backed by a blockchain, which is like a linked list of blocks. (Each block containing a list of transactions.) By looking at the history of the chain, you can learn the current balance of every wallet.

Anyone can add a block to the chain, and because bitcoin is distributed it’s possible for two people to add blocks at the same time. When this happens, the chain forks, and there needs to be a way to decide which fork is the “true” one. That’s because the chains associated with each branch of the fork will have different wallet balances, and it’s no good if there’s uncertainty about what your balance is.

In practice one of the two branches is picked randomly, but there’s an attack where someone spends bitcoin to buy something irl, then forks the chain at a point before they bought that thing. If the attacker’s fork were picked as the “true” one, the seller would find the bitcoin they received has disappeared. All the computational work of bitcoin to mitigate this problem.

Whatever way of deciding which fork is the true one must have one very important property: “the current true chain is always the descendent of a previous true chain”. But anyone can join the bitcoin network at any time, and when they do they need some way of knowing what the previous “true chain” was. You can’t just ask, because the person you ask might lie to you, so you need a way to tell which branch is “true“ just by looking at them.

Bitcoin solves this by introducing “proof of work”. To add a block, you need to do some computational work, and the true chain is the one with the most computational work behind it. That means that as long as more than half of the computing power in the bitcoin network is honest (always adding their computational work to the “true” chain), the chain with the most work behind it will be the true one.

Bitcoin goes further and rewards people who add blocks. This incentivizes people to add blocks (and therefore, computational work) to the longest chain they can find. The goal of doing that is to increase the chances that more than half the chain is trustworthy.

There are absolutely other solutions. The problem is they don’t allow existing participants to extract as much money out of newcomers as PoW, so the artificial hype being generated around alternatives is much lower.
Tell me one solution that would make blockchain technology obsolete. I would bet there is none even close because other solutions will require trust to some degree or have rather big security concerns but I am always open to learn new things.

If we are talking about blockchain tech PoS is a possible (not perfect) solution to replace PoW but this is even more hyped then PoW in my opinion.

> Why not just use SQL databases?

How would a centralized SQL database have prevented the USG from cutting funding to Wikileaks?

Because its easy to take down an SQL database. You'd have to expend 68 TWh of energy to take Bitcoin down.