# CS4998: Blockchain Development Textbook

## CS4998: Blockchain Development Textbook

- [CS4998: Blockchain Development](https://cs4998.cornellblockchain.org/cs4998-blockchain-development.md): Fall 2023
- [Prerequisites](https://cs4998.cornellblockchain.org/prerequisites.md): What You Need To Already Know
- [Blockchain Theory](https://cs4998.cornellblockchain.org/introduction/blockchain-theory.md): Understanding What You're Writing On
- [Bitcoin and the UTXO Model](https://cs4998.cornellblockchain.org/introduction/blockchain-theory/bitcoin-and-the-utxo-model.md): The Original Blockchain
- [Ethereum and the State-Based Model](https://cs4998.cornellblockchain.org/introduction/blockchain-theory/ethereum-and-the-state-based-model.md): An Alternative to Bitcoin
- [Remix - A First Glance](https://cs4998.cornellblockchain.org/introduction/remix-a-first-glance.md): Getting Started with Solidity
- [Hello World!](https://cs4998.cornellblockchain.org/introduction/hello-world.md): Writing a Smart Contract That Compiles
- [Solidity File Structure](https://cs4998.cornellblockchain.org/introduction/hello-world/solidity-file-structure.md): What is a Solidity File?
- [Primitive Values & Types](https://cs4998.cornellblockchain.org/introduction/hello-world/primitive-values-and-types.md): What are we working with?
- [Contract Structure](https://cs4998.cornellblockchain.org/introduction/hello-world/contract-structure.md): What is a Contract?
- [Functions](https://cs4998.cornellblockchain.org/introduction/hello-world/functions.md): The Behavior of Smart Contracts
- [Data Structures](https://cs4998.cornellblockchain.org/introduction/hello-world/data-structures.md): Helping Us Store Data
- [Summary & Exercises](https://cs4998.cornellblockchain.org/introduction/hello-world/summary-and-exercises.md)
- [Hello World! Pt. 2](https://cs4998.cornellblockchain.org/introduction/hello-world-pt.-2.md): Smarter Smart Contracts
- [Control Flow](https://cs4998.cornellblockchain.org/introduction/hello-world-pt.-2/control-flow.md): Logic is no longer sequential!
- [Interfaces and Inheritance](https://cs4998.cornellblockchain.org/introduction/hello-world-pt.-2/interfaces-and-inheritance.md): B is A
- [Constructors](https://cs4998.cornellblockchain.org/introduction/hello-world-pt.-2/constructors.md): Defining Initial Values
- [Contract Interactions](https://cs4998.cornellblockchain.org/introduction/hello-world-pt.-2/contract-interactions.md): Our Contracts Are No Longer Sandboxed!
- [Modifiers](https://cs4998.cornellblockchain.org/introduction/hello-world-pt.-2/modifiers.md): A New Type of Function
- [Dynamic Arrays and Strings](https://cs4998.cornellblockchain.org/introduction/hello-world-pt.-2/dynamic-arrays-and-strings.md): Advanced Data Structures
- [Dynamic Arrays](https://cs4998.cornellblockchain.org/introduction/hello-world-pt.-2/dynamic-arrays-and-strings/dynamic-arrays.md): The Cooler Version of Static Arrays
- [Strings](https://cs4998.cornellblockchain.org/introduction/hello-world-pt.-2/dynamic-arrays-and-strings/strings.md): Everyone's Favorite Type
- [Errors](https://cs4998.cornellblockchain.org/introduction/hello-world-pt.-2/errors.md): Maintaining Invariants
- [Events](https://cs4998.cornellblockchain.org/introduction/hello-world-pt.-2/events.md): A Special Kind of On-Chain Data
- [Units and Global Variables](https://cs4998.cornellblockchain.org/introduction/hello-world-pt.-2/units-and-global-variables.md): Working with numbers, made easy!
- [Default Functions](https://cs4998.cornellblockchain.org/introduction/hello-world-pt.-2/default-functions.md): Calling Contracts w/o Calling Any Functions
- [Node Providers](https://cs4998.cornellblockchain.org/local-development/node-providers.md)
- [Interacting With On-Chain Contracts](https://cs4998.cornellblockchain.org/local-development/interacting-with-on-chain-contracts.md): Building => Using Smart Contracts
- [Migrating to Foundry & VS Code](https://cs4998.cornellblockchain.org/local-development/migrating-to-foundry-and-vs-code.md): Your Best Friends When Developing
- [The Basics of Forge](https://cs4998.cornellblockchain.org/local-development/migrating-to-foundry-and-vs-code/the-basics-of-forge.md)
- [Installing and Using Dependencies](https://cs4998.cornellblockchain.org/local-development/migrating-to-foundry-and-vs-code/installing-and-using-dependencies.md)
- [Cast](https://cs4998.cornellblockchain.org/local-development/migrating-to-foundry-and-vs-code/cast.md)
- [Anvil](https://cs4998.cornellblockchain.org/local-development/migrating-to-foundry-and-vs-code/anvil.md)
- [The Ethereum Virtual Machine](https://cs4998.cornellblockchain.org/understanding-the-evm/the-ethereum-virtual-machine.md): Simple, but Powerful
- [A First Look at Computers](https://cs4998.cornellblockchain.org/understanding-the-evm/the-ethereum-virtual-machine/a-first-look-at-computers.md): Examining an Elementary Computer
- [The Turing Machine](https://cs4998.cornellblockchain.org/understanding-the-evm/the-ethereum-virtual-machine/the-turing-machine.md): What Unites All Modern Computers
- [EVM Data Structures](https://cs4998.cornellblockchain.org/understanding-the-evm/the-ethereum-virtual-machine/evm-data-structures.md): What the EVM Stores
- [Operation Codes (Opcodes)](https://cs4998.cornellblockchain.org/understanding-the-evm/the-ethereum-virtual-machine/operation-codes-opcodes.md): What the EVM Can Do
- [Gas](https://cs4998.cornellblockchain.org/understanding-the-evm/the-ethereum-virtual-machine/gas.md)
- [Contract Compilation](https://cs4998.cornellblockchain.org/understanding-the-evm/the-ethereum-virtual-machine/contract-compilation.md)
- [Contract Runtime](https://cs4998.cornellblockchain.org/understanding-the-evm/the-ethereum-virtual-machine/contract-runtime.md)
- [Gas Optimizations](https://cs4998.cornellblockchain.org/understanding-the-evm/gas-optimizations.md)
- [Yul](https://cs4998.cornellblockchain.org/yul-and-advanced-evm-topics/yul.md): Solidity's Sophisticated Brother
- [Metamorphism](https://cs4998.cornellblockchain.org/yul-and-advanced-evm-topics/metamorphism.md)
- [Bitwise Manipulations](https://cs4998.cornellblockchain.org/yul-and-advanced-evm-topics/bitwise-manipulations.md)
- [Security](https://cs4998.cornellblockchain.org/correctness/security.md)
- [Types of Testing](https://cs4998.cornellblockchain.org/correctness/types-of-testing.md)
- [Why ERCs?](https://cs4998.cornellblockchain.org/erc-standards/why-ercs.md)
- [ERC20](https://cs4998.cornellblockchain.org/erc-standards/erc20.md)
- [ERC721](https://cs4998.cornellblockchain.org/erc-standards/erc721.md)
- [ERC777](https://cs4998.cornellblockchain.org/erc-standards/erc777.md)
- [ERC1155](https://cs4998.cornellblockchain.org/erc-standards/erc1155.md)
- [OpenZeppelin](https://cs4998.cornellblockchain.org/frequently-used-smart-contracts/openzeppelin.md)
- [Uniswap](https://cs4998.cornellblockchain.org/frequently-used-smart-contracts/uniswap.md)
- [Multisignature Contracts](https://cs4998.cornellblockchain.org/frequently-used-smart-contracts/multisignature-contracts.md)
- [AAVE/Compound](https://cs4998.cornellblockchain.org/frequently-used-smart-contracts/aave-compound.md)
- [Consensus Mechanisms vs Sybil Resistance Mechanisms](https://cs4998.cornellblockchain.org/mev-and-advanced-blockchain-theory/consensus-mechanisms-vs-sybil-resistance-mechanisms.md)
- [Maximal Extractable Value (MEV)](https://cs4998.cornellblockchain.org/mev-and-advanced-blockchain-theory/maximal-extractable-value-mev.md)
- [Looking Past The EVM](https://cs4998.cornellblockchain.org/mev-and-advanced-blockchain-theory/looking-past-the-evm.md)
- [Developer Practices](https://cs4998.cornellblockchain.org/etcetera/developer-practices.md)
- [Spring 2023 Past Resources](https://cs4998.cornellblockchain.org/etcetera/spring-2023-past-resources.md)
