Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Is my blockchain a blockchain?

Your blockchain must have all of the following properties:

  • It's a merkle tree, or a construct with equivalent properties.
  • There is no single point of trust or authority; nodes are operated by different parties.
  • Multiple 'forks' of the blockchain may exist - that is, nodes may disagree on what the full sequence of blocks looks like.
  • In the case of such a fork, there must exist a deterministic consensus algorithm of some sort to decide what the "real" blockchain looks like (ie. which fork is "correct").
  • The consensus algorithm must be executable with only the information contained in the blockchain (or its forks), and no external input (eg. no decisionmaking from a centralized 'trust node').

If your blockchain is missing any of the above properties, it is not a blockchain, it is just a ledger.


This comment has been minimized.

Copy link

@fulldecent fulldecent commented Aug 31, 2019

1- Merkle tree is not necessary. This is only used for efficiency. Mailing around CDs and verifying with SHA sums would be sufficient to implement blockchain.

2- There is contention on whether the next point applies.

3- Strictly speaking, considering the speed of light, no two nodes can agree on the full sequence of anything. Setting that aside, there are some blockchain topologies where forks don't happen

4- Yes!

5- This is true in theory. But actually it fails when computers are controlled by humans.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment