It is a bit of an irony that I spent more than a year working on the Diem blockchain but I never really understood the consensus algorithms underpinning various types of chains…

For example, and pardon me for being dumb,

  • why 324 GB of 0s and 1s (the Bitcoin blockchain size) can serve as a proof that A paid B for the pizza and everyone just believes that…
  • why 51% attacks are less likely to happen on proof-of-stake chains compared with proof-of-work chains as both the CPUs/GPUs and staking coins can be purchased.
  • and yet, why people are still hesitant to adopt proof-of-stake given all the good qualities (e.g., energy efficiency, scalability, etc).

So I took some time to nail deeper in these consensus algorithms and presented my findings to the students of CS458/658 in this term. I have to say that I learned a lot in this process and discovered many subtle points that I thought I understood but in fact I didn’t.

As a result, I’d like to share my lecture slides in this post in case it can benefit anyone who happen to face the same confusion I faced. In addition, if I have time in the next couple of months, I may present a more systematic write-up for the consensus aspect of blockchains.