Comment on page

Blockchain Theory

Understanding What You're Writing On
Prior to developing applications on any blockchain, it is important that one understands the platform that they're building on. This is in contrast to writting programs in languages like Python, where we can just "assume" that they'll run as expected. We begin this section by proposing the following question:
What is a blockchain?
From the perspective of a computer scientist, one might claim that a blockchain is an append-only linked-list of blocks where each block contains a list of transactions. Whether you are first learning about blockchain or talking about blockchain amongst your friends, this definition should be enough. However, consider the following questions:
  • How do we only allow valid transactions to be included in appended blocks?
  • Where do smart contracts live?
Questions like the above expose the flaws of viewing blockchains as solely append-only linked-lists. In this section, we will transition from viewing blockchains as simple data structures towards viewing blockchains as distributed computers which are able to do so much more.