4 ms·
Though blockchain is an ill-defined term, this seems to be missing the most important part of one: consensus. Bitcoin achieves this in two ways: - Proof-of-W
by bascule 10y ago
Though blockchain is an ill-defined term, this seems to be missing the most important part of one: consensus. Bitcoin achieves this in two ways:
- Proof-of-Work, which effectively functions as a leader election algorithm
- Consensus programs, which mediate any changes to the blockchain.
Each Bitcoin transaction has an associated script that determines how it can be spent. A conforming block satisfies all of the scripts for all of the transactions being spent.
This particular post illustrates something which I would say is little more than a Merkle tree[1], except it isn't even that. But perhaps it's illustrative for some people.
[1]: https://en.wikipedia.org/wiki/Merkle_tree https://en.wikipedia.org/wiki/Merkle_tree
- kordless 10y agoI suppose we could look at consensus as means by which multiple blockchains are collapsed into a single chain which contains the "truth" for multiple entities or aggregates. Once a collapse or consensus occurs, the chain, regardless of who holds it, would contain the truth.
- throwaway91111 10y agoWithout consensus, what distinguishes a block chain from a Merkle tree?
- saurik 10y agoThe Merkle tree is only used within a Bitcoin block to store transactions in an efficient manner; it isn't part of the block chain. A block chain without consensus isn't even a tree: it is just a singly-linked list with cryptographic guarantees that given a linked list node, all previous entries can be "verified". However, as other people have pointed out, this implementation is so incorrect that it fails to even do that: it contains only the hash of the previous data, not the hash of the previous node, so this actually only manages to verify the previous one entry of the chain :/. This is essentially just a linked list :(.
- andirk 10y agoIsn't calculateHash() creating a hash from the whole block, not just the data part of it? If not, how should that function calculate the hash so that it satisfies what it needs to to be a real blockchain?
- saurik 10y agoAh! I was being confused by the diagram and another comment :(. It seems really strange to assume that the previous block's hash field is accurate, but I guess that is being verified as the chain is built; if you just remove that field you could calculate that hash and verify it that way. I now agree: it at least has the ability to verify the list's history. (Sorry for the confusion.)
- throwaway91111 10y agoWell, a merkle tree provides verification, too. You can only reach the hash given a certain chain of parents. What am I missing?
- nawitus 10y agoThe post states "The NaiveChain was created for demonstration and learning purposes. Since it does not have a “mining” algorithm (PoS of PoW) it cannot used in a public network."
- amag 10y agoWell, what makes a blockchain a blockchain is not that it's a list of nodes where each contain the hash of it's previous node. In that case git would be a blockchain. It is the PoW and consensus programs that make it a blockchain.
- lostsock 10y agoNo, that's what makes a block chain useful. The "block"+"chain" is exactly a connected set of blocks
- SkyMarshal 10y agoThat's actually not what makes a blockchain uniquely useful. "block+chain" also makes Git and other merkle tree-based datastructures useful, but what makes blockchain useful is unforgeability via chained PoW's.
- ajross 10y agoIs git (at least the SCM of a big project, the kernel, say)... not a block chain? The hash chain is (notwithstanding some recent discoveries) secure, the series is externally archived, "proof of work" is provided by trusted human review. Obviously no one uses the kernel series to store arbitrary data on behalf of the patch submitters. But you could, without modification to the software or processes.
- jcahill 10y agoCommits aren't automated and their contributions aren't commensurate. It's a distributed system, but not one solving the same problem. We can always torture the concrete into extended metaphor. It just doesn't add any value here.