CS4998: Blockchain Development Textbook
  • CS4998: Blockchain Development
  • Prerequisites
  • Introduction
    • Blockchain Theory
      • Bitcoin and the UTXO Model
      • Ethereum and the State-Based Model
    • Remix - A First Glance
    • Hello World!
      • Solidity File Structure
      • Primitive Values & Types
      • Contract Structure
      • Functions
      • Data Structures
      • Summary & Exercises
    • Hello World! Pt. 2
      • Control Flow
      • Interfaces and Inheritance
      • Constructors
      • Contract Interactions
      • Modifiers
      • Dynamic Arrays and Strings
        • Dynamic Arrays
        • Strings
      • Errors
      • Events
      • Units and Global Variables
      • Default Functions
  • Local Development
    • Node Providers
    • Interacting With On-Chain Contracts
    • Migrating to Foundry & VS Code
      • The Basics of Forge
      • Installing and Using Dependencies
      • Cast
      • Anvil
  • Understanding the EVM
    • The Ethereum Virtual Machine
      • A First Look at Computers
      • The Turing Machine
      • EVM Data Structures
      • Operation Codes (Opcodes)
      • Gas
      • Contract Compilation
      • Contract Runtime
    • Gas Optimizations
  • Yul & Advanced EVM Topics
    • Yul
    • Metamorphism
    • Bitwise Manipulations
  • Correctness
    • Security
    • Types of Testing
  • ERC Standards
    • Why ERCs?
    • ERC20
    • ERC721
    • ERC777
    • ERC1155
  • Frequently Used Smart Contracts
    • OpenZeppelin
    • Uniswap
    • Multisignature Contracts
    • AAVE/Compound
  • MEV & Advanced Blockchain Theory
    • Consensus Mechanisms vs Sybil Resistance Mechanisms
    • Maximal Extractable Value (MEV)
    • Looking Past The EVM
  • Etcetera
    • Developer Practices
    • Spring 2023 Past Resources
Powered by GitBook
On this page
  1. Introduction

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.

PreviousPrerequisitesNextBitcoin and the UTXO Model

Last updated 1 year ago