Skip to content

Instantly share code, notes, and snippets.

@joepie91
Last active June 25, 2023 08:40
Show Gist options
  • Save joepie91/e49d2bdc9dfec4adc9da8a8434fd029b to your computer and use it in GitHub Desktop.
Save joepie91/e49d2bdc9dfec4adc9da8a8434fd029b to your computer and use it in GitHub Desktop.
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.

@fulldecent
Copy link

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