| 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). |
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?)