Hacker News new | ask | show | jobs
by indigochill 3185 days ago
Disclaimer: I've mostly absorbed this stuff through osmosis and lazy web searching, but I thought I'd take a shot with my understanding and someone can correct me if I'm mistaken.

Blockchains are designed to solve a certain set of problems. Understanding those problems and their relation to your product will help you determine whether a blockchain is a reasonable solution.

1. Do you need a distributed ledger? (https://en.wikipedia.org/wiki/Distributed_ledger)

2. Do you need proof of work? (https://en.wikipedia.org/wiki/Proof-of-work_system)

3. Does your distributed ledger need to record things such that one block follows the next, as opposed to blocks of data being saved independently of each other? (https://en.wikipedia.org/wiki/Blockchain)

If the answer to all of the above is yes, using a blockchain probably makes sense. Otherwise, you probably want to use something other than a blockchain (for instance, if you just need a distributed ledger, just use a distributed ledger. No need to chain each block together unless that's actually useful for your product).

3 comments

Those are in line with my understanding too, but I'm asking what is there to learn about blockchain technology, not what the use cases are. (That's actually also a question I have, but a separate question to me.)

To me a blockchain is just a tree, where the "parent pointers" are just hashes of the parent nodes rather than their addresses. And I guess to pick one as the "correct" one, you just choose the one with (say) the longest chain. End of story? What else _is_ there to learn about this that people are looking for? (Btw, isn't this just a Merkle tree, which has been around since at least 1979? What's so revolutionary or even different in a blockchain?)

> What else _is_ there to learn about this that people are looking for?

This is where it gets a bit interesting. While Merkle Trees are great for ensuring, immutability, most cryptocurrencies need more than just that. They need to have a way for records to be inserted into this immutable ledger and an incentive to keep adding records to the ledger. This is where Proof of Work and mining rewards come into play, and this is where a lot of altcoins (non-Bitcoin cryptos) have a lot of different opinions. A decent amount of work has also been put into making sure that there isn't an incentive for a miner to mine on two different chains (and cause the ledger to fork) and other concerns.

Based on my cursory understanding of the topic, The Merkle tree has been around for a while, but Satoshi figured out how to use that to achieve decentralization, and consensus building. If you ask me, that's quite revolutionary. Yes, the blockchain is just a gigantic DAG, but adding and deleting nodes on the graph is where the crux of the matter is I guess. I am starting to understand the logic from a currency perspective. Still trying to understand how the same translates to smart contracts.
Is there more to consensus and decentralization than just pinging a few other computers and picking the longest chain you find?

And proof of work is literally just the hash having a certain number of zero bits, right? Definitely a neat idea but hardly revolutionary if that's all there is to it.

Something can be "revolutionary" and made up of pieces not in themselves groundbreaking. Linux was revolutionary and it was just a Unix clone for IBM PCs.
It's also the same thing with the git commit tree. You see commit IDs change when you rebase because of the parent pointers.
Not all blockchains use proof of work.

A better single question would be: do you need a distributed ledger with immutability guarantees (i.e. security against an adversary that might want to tamper with the history of your ledger).

The answer to point 2 (proof of work) is irrelevant with regard to block chains. Those are separate class of problems.