{"version":1,"pages":[{"id":"J57PanRSEOzEVDyAoBAS","title":"CS4998: Blockchain Development","pathname":"/","siteSpaceId":"sitesp_mwFwl","description":"Fall 2023"},{"id":"EaN6qXgHNeWnraQUpzkM","title":"Prerequisites","pathname":"/prerequisites","siteSpaceId":"sitesp_mwFwl","description":"What You Need To Already Know"},{"id":"MSZ6rini886XtqPoafAf","title":"Blockchain Theory","pathname":"/introduction/blockchain-theory","siteSpaceId":"sitesp_mwFwl","description":"Understanding What You're Writing On","breadcrumbs":[{"label":"Introduction"}]},{"id":"FbOTbbyHZHfzXXOTySbF","title":"Bitcoin and the UTXO Model","pathname":"/introduction/blockchain-theory/bitcoin-and-the-utxo-model","siteSpaceId":"sitesp_mwFwl","description":"The Original Blockchain","breadcrumbs":[{"label":"Introduction"},{"label":"Blockchain Theory"}]},{"id":"asslZZmK0rMeVjY8pExi","title":"Ethereum and the State-Based Model","pathname":"/introduction/blockchain-theory/ethereum-and-the-state-based-model","siteSpaceId":"sitesp_mwFwl","description":"An Alternative to Bitcoin","breadcrumbs":[{"label":"Introduction"},{"label":"Blockchain Theory"}]},{"id":"rRm4PDzclSZ7CZEmrrrb","title":"Remix - A First Glance","pathname":"/introduction/remix-a-first-glance","siteSpaceId":"sitesp_mwFwl","description":"Getting Started with Solidity","breadcrumbs":[{"label":"Introduction"}]},{"id":"vceibp4LQSoVFmVd8iWf","title":"Hello World!","pathname":"/introduction/hello-world","siteSpaceId":"sitesp_mwFwl","description":"Writing a Smart Contract That Compiles","breadcrumbs":[{"label":"Introduction"}]},{"id":"bT6Sx1Pz75TyBkeIGai8","title":"Solidity File Structure","pathname":"/introduction/hello-world/solidity-file-structure","siteSpaceId":"sitesp_mwFwl","description":"What is a Solidity File?","breadcrumbs":[{"label":"Introduction"},{"label":"Hello World!"}]},{"id":"a0Y9YLdNjZ4WHvyE7CEw","title":"Primitive Values & Types","pathname":"/introduction/hello-world/primitive-values-and-types","siteSpaceId":"sitesp_mwFwl","description":"What are we working with?","breadcrumbs":[{"label":"Introduction"},{"label":"Hello World!"}]},{"id":"k6CCjlv34iA7To6v1YUF","title":"Contract Structure","pathname":"/introduction/hello-world/contract-structure","siteSpaceId":"sitesp_mwFwl","description":"What is a Contract?","breadcrumbs":[{"label":"Introduction"},{"label":"Hello World!"}]},{"id":"jfBJaJT1kp4skFDFfqkA","title":"Functions","pathname":"/introduction/hello-world/functions","siteSpaceId":"sitesp_mwFwl","description":"The Behavior of Smart Contracts","breadcrumbs":[{"label":"Introduction"},{"label":"Hello World!"}]},{"id":"jOS4fGfWLQmhZLIA8GBF","title":"Data Structures","pathname":"/introduction/hello-world/data-structures","siteSpaceId":"sitesp_mwFwl","description":"Helping Us Store Data","breadcrumbs":[{"label":"Introduction"},{"label":"Hello World!"}]},{"id":"rtEGR80WKASxOUSGjOfJ","title":"Summary & Exercises","pathname":"/introduction/hello-world/summary-and-exercises","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"Introduction"},{"label":"Hello World!"}]},{"id":"OjX7SXk0W2yEuNXdbby9","title":"Hello World! Pt. 2","pathname":"/introduction/hello-world-pt.-2","siteSpaceId":"sitesp_mwFwl","description":"Smarter Smart Contracts","breadcrumbs":[{"label":"Introduction"}]},{"id":"XlWRWSlP8ul1oOakUJfV","title":"Control Flow","pathname":"/introduction/hello-world-pt.-2/control-flow","siteSpaceId":"sitesp_mwFwl","description":"Logic is no longer sequential!","breadcrumbs":[{"label":"Introduction"},{"label":"Hello World! Pt. 2"}]},{"id":"J3IX1sTG3KZYL06tXRXh","title":"Interfaces and Inheritance","pathname":"/introduction/hello-world-pt.-2/interfaces-and-inheritance","siteSpaceId":"sitesp_mwFwl","description":"B is A","breadcrumbs":[{"label":"Introduction"},{"label":"Hello World! Pt. 2"}]},{"id":"XJHvqe238QBDU8VI6CHh","title":"Constructors","pathname":"/introduction/hello-world-pt.-2/constructors","siteSpaceId":"sitesp_mwFwl","description":"Defining Initial Values","breadcrumbs":[{"label":"Introduction"},{"label":"Hello World! Pt. 2"}]},{"id":"tF9NJhI9FhaHUl4Tlo22","title":"Contract Interactions","pathname":"/introduction/hello-world-pt.-2/contract-interactions","siteSpaceId":"sitesp_mwFwl","description":"Our Contracts Are No Longer Sandboxed!","breadcrumbs":[{"label":"Introduction"},{"label":"Hello World! Pt. 2"}]},{"id":"usKCrefT0cLkFbnnOpX7","title":"Modifiers","pathname":"/introduction/hello-world-pt.-2/modifiers","siteSpaceId":"sitesp_mwFwl","description":"A New Type of Function","breadcrumbs":[{"label":"Introduction"},{"label":"Hello World! Pt. 2"}]},{"id":"lMLkHpd9OLobDuZtVYfd","title":"Dynamic Arrays and Strings","pathname":"/introduction/hello-world-pt.-2/dynamic-arrays-and-strings","siteSpaceId":"sitesp_mwFwl","description":"Advanced Data Structures","breadcrumbs":[{"label":"Introduction"},{"label":"Hello World! Pt. 2"}]},{"id":"O7aCK4BBVpUkvznsP11C","title":"Dynamic Arrays","pathname":"/introduction/hello-world-pt.-2/dynamic-arrays-and-strings/dynamic-arrays","siteSpaceId":"sitesp_mwFwl","description":"The Cooler Version of Static Arrays","breadcrumbs":[{"label":"Introduction"},{"label":"Hello World! Pt. 2"},{"label":"Dynamic Arrays and Strings"}]},{"id":"F9u87OrGjugFWC7EokNm","title":"Strings","pathname":"/introduction/hello-world-pt.-2/dynamic-arrays-and-strings/strings","siteSpaceId":"sitesp_mwFwl","description":"Everyone's Favorite Type","breadcrumbs":[{"label":"Introduction"},{"label":"Hello World! Pt. 2"},{"label":"Dynamic Arrays and Strings"}]},{"id":"vGIYsbd0g8wY1M0ngYlu","title":"Errors","pathname":"/introduction/hello-world-pt.-2/errors","siteSpaceId":"sitesp_mwFwl","description":"Maintaining Invariants","breadcrumbs":[{"label":"Introduction"},{"label":"Hello World! Pt. 2"}]},{"id":"DDptOSRfmlaqQHXBRzlU","title":"Events","pathname":"/introduction/hello-world-pt.-2/events","siteSpaceId":"sitesp_mwFwl","description":"A Special Kind of On-Chain Data","breadcrumbs":[{"label":"Introduction"},{"label":"Hello World! Pt. 2"}]},{"id":"LPkrtxBMEqHb40Hx5cjB","title":"Units and Global Variables","pathname":"/introduction/hello-world-pt.-2/units-and-global-variables","siteSpaceId":"sitesp_mwFwl","description":"Working with numbers, made easy!","breadcrumbs":[{"label":"Introduction"},{"label":"Hello World! Pt. 2"}]},{"id":"yZKlBYmXQAbDfpywkrzN","title":"Default Functions","pathname":"/introduction/hello-world-pt.-2/default-functions","siteSpaceId":"sitesp_mwFwl","description":"Calling Contracts w/o Calling Any Functions","breadcrumbs":[{"label":"Introduction"},{"label":"Hello World! Pt. 2"}]},{"id":"pzX2Q0zjFu0bQLUMeGtI","title":"Node Providers","pathname":"/local-development/node-providers","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"Local Development"}]},{"id":"HgWLrTVBJRbqnCMie0ff","title":"Interacting With On-Chain Contracts","pathname":"/local-development/interacting-with-on-chain-contracts","siteSpaceId":"sitesp_mwFwl","description":"Building => Using Smart Contracts","breadcrumbs":[{"label":"Local Development"}]},{"id":"txwAo4SiAbrvewUkZNyW","title":"Migrating to Foundry & VS Code","pathname":"/local-development/migrating-to-foundry-and-vs-code","siteSpaceId":"sitesp_mwFwl","description":"Your Best Friends When Developing","breadcrumbs":[{"label":"Local Development"}]},{"id":"FVz3XWZnDhrsopvPHxxi","title":"The Basics of Forge","pathname":"/local-development/migrating-to-foundry-and-vs-code/the-basics-of-forge","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"Local Development"},{"label":"Migrating to Foundry & VS Code"}]},{"id":"I4HINAxvQOZ0wOzqpmK4","title":"Installing and Using Dependencies","pathname":"/local-development/migrating-to-foundry-and-vs-code/installing-and-using-dependencies","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"Local Development"},{"label":"Migrating to Foundry & VS Code"}]},{"id":"ECSsAYFxPDIHsGkcKe7B","title":"Cast","pathname":"/local-development/migrating-to-foundry-and-vs-code/cast","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"Local Development"},{"label":"Migrating to Foundry & VS Code"}]},{"id":"cBiZlNB0rvvuJn9EmyWa","title":"Anvil","pathname":"/local-development/migrating-to-foundry-and-vs-code/anvil","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"Local Development"},{"label":"Migrating to Foundry & VS Code"}]},{"id":"11EqUKQF6CdNpRKkC21J","title":"The Ethereum Virtual Machine","pathname":"/understanding-the-evm/the-ethereum-virtual-machine","siteSpaceId":"sitesp_mwFwl","description":"Simple, but Powerful","breadcrumbs":[{"label":"Understanding the EVM"}]},{"id":"QilMqhmE6HeFeknQPgfw","title":"A First Look at Computers","pathname":"/understanding-the-evm/the-ethereum-virtual-machine/a-first-look-at-computers","siteSpaceId":"sitesp_mwFwl","description":"Examining an Elementary Computer","breadcrumbs":[{"label":"Understanding the EVM"},{"label":"The Ethereum Virtual Machine"}]},{"id":"FKNuw4ADOw1sen8iioKL","title":"The Turing Machine","pathname":"/understanding-the-evm/the-ethereum-virtual-machine/the-turing-machine","siteSpaceId":"sitesp_mwFwl","description":"What Unites All Modern Computers","breadcrumbs":[{"label":"Understanding the EVM"},{"label":"The Ethereum Virtual Machine"}]},{"id":"Er7v0MSRmQQoLwcZzsG3","title":"EVM Data Structures","pathname":"/understanding-the-evm/the-ethereum-virtual-machine/evm-data-structures","siteSpaceId":"sitesp_mwFwl","description":"What the EVM Stores","breadcrumbs":[{"label":"Understanding the EVM"},{"label":"The Ethereum Virtual Machine"}]},{"id":"GcssJMqLA9RNKikuaMmm","title":"Operation Codes (Opcodes)","pathname":"/understanding-the-evm/the-ethereum-virtual-machine/operation-codes-opcodes","siteSpaceId":"sitesp_mwFwl","description":"What the EVM Can Do","breadcrumbs":[{"label":"Understanding the EVM"},{"label":"The Ethereum Virtual Machine"}]},{"id":"yvnpn97my66M6l2uateQ","title":"Gas","pathname":"/understanding-the-evm/the-ethereum-virtual-machine/gas","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"Understanding the EVM"},{"label":"The Ethereum Virtual Machine"}]},{"id":"CaXqJLIPEl1vhqYAi9l5","title":"Contract Compilation","pathname":"/understanding-the-evm/the-ethereum-virtual-machine/contract-compilation","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"Understanding the EVM"},{"label":"The Ethereum Virtual Machine"}]},{"id":"S284GwwbXQEygYPu1vDZ","title":"Contract Runtime","pathname":"/understanding-the-evm/the-ethereum-virtual-machine/contract-runtime","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"Understanding the EVM"},{"label":"The Ethereum Virtual Machine"}]},{"id":"UUfcBRXAgkusNEPV1Qsf","title":"Gas Optimizations","pathname":"/understanding-the-evm/gas-optimizations","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"Understanding the EVM"}]},{"id":"WE7vt1WjoXe8jNbAm8wb","title":"Yul","pathname":"/yul-and-advanced-evm-topics/yul","siteSpaceId":"sitesp_mwFwl","description":"Solidity's Sophisticated Brother","breadcrumbs":[{"label":"Yul & Advanced EVM Topics"}]},{"id":"MGMaRMwL46m3D76NtNNk","title":"Metamorphism","pathname":"/yul-and-advanced-evm-topics/metamorphism","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"Yul & Advanced EVM Topics"}]},{"id":"eoKfQMWIUMUGTodzFISk","title":"Bitwise Manipulations","pathname":"/yul-and-advanced-evm-topics/bitwise-manipulations","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"Yul & Advanced EVM Topics"}]},{"id":"zSxiTnpSEnbCuzu3E5dB","title":"Security","pathname":"/correctness/security","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"Correctness"}]},{"id":"nZYwbNlp7qfU2A55aVze","title":"Types of Testing","pathname":"/correctness/types-of-testing","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"Correctness"}]},{"id":"9hpM00NvAFcBvxdAseTh","title":"Why ERCs?","pathname":"/erc-standards/why-ercs","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"ERC Standards"}]},{"id":"OrdFNhB177qZFWnv01C2","title":"ERC20","pathname":"/erc-standards/erc20","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"ERC Standards"}]},{"id":"hhtcCWsPzzpxkNTczU7K","title":"ERC721","pathname":"/erc-standards/erc721","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"ERC Standards"}]},{"id":"CfzqIBKdQYv0GFaepXLk","title":"ERC777","pathname":"/erc-standards/erc777","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"ERC Standards"}]},{"id":"iHDVrIbFCB80vqmwRG0W","title":"ERC1155","pathname":"/erc-standards/erc1155","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"ERC Standards"}]},{"id":"6uClmLQYdjd0SApmoxYV","title":"OpenZeppelin","pathname":"/frequently-used-smart-contracts/openzeppelin","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"Frequently Used Smart Contracts"}]},{"id":"3ul1kc88a3o4zPXxpzBJ","title":"Uniswap","pathname":"/frequently-used-smart-contracts/uniswap","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"Frequently Used Smart Contracts"}]},{"id":"1OoNwwV8MQvtN639EQuY","title":"Multisignature Contracts","pathname":"/frequently-used-smart-contracts/multisignature-contracts","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"Frequently Used Smart Contracts"}]},{"id":"AkNVJDfh8BNU8yofSe4v","title":"AAVE/Compound","pathname":"/frequently-used-smart-contracts/aave-compound","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"Frequently Used Smart Contracts"}]},{"id":"dTE3FXizeTNhNA9ehtCW","title":"Consensus Mechanisms vs Sybil Resistance Mechanisms","pathname":"/mev-and-advanced-blockchain-theory/consensus-mechanisms-vs-sybil-resistance-mechanisms","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"MEV & Advanced Blockchain Theory"}]},{"id":"eJjzDNIbui0VPEfM3jPd","title":"Maximal Extractable Value (MEV)","pathname":"/mev-and-advanced-blockchain-theory/maximal-extractable-value-mev","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"MEV & Advanced Blockchain Theory"}]},{"id":"SRrNu5cHWnQpcOWiR9AA","title":"Looking Past The EVM","pathname":"/mev-and-advanced-blockchain-theory/looking-past-the-evm","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"MEV & Advanced Blockchain Theory"}]},{"id":"6HQPhNxw6FBZXsaRsfm5","title":"Developer Practices","pathname":"/etcetera/developer-practices","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"Etcetera"}]},{"id":"X9tfbofgiu6ZNryHqY3x","title":"Spring 2023 Past Resources","pathname":"/etcetera/spring-2023-past-resources","siteSpaceId":"sitesp_mwFwl","description":"","breadcrumbs":[{"label":"Etcetera"}]}]}