If you've wondered what solidity is doing behind the scenes, this is the course to take. Perhaps you've head of assembly in Ethereum smart contracts and heard it can be efficient but dangerous. After you finish this course, you will have a ground-up understanding of what exactly happens when a smart contract receives a function call, how it encodes that data, where exactly it stores it, and how it updates the blockchain state. Even if you don't write contracts in assembly, you will have a much better understanding of solidity's design choices and previously cryptic error messages will make perfect sense.
If you've wondered what solidity is doing behind the scenes, this is the course to take. Perhaps you've head of assembly in Ethereum smart contracts and heard it can be efficient but dangerous. After you finish this course, you will have a ground-up understanding of what exactly happens when a smart contract receives a function call, how it encodes that data, where exactly it stores it, and how it updates the blockchain state. Even if you don't write contracts in assembly, you will have a much better understanding of solidity's design choices and previously cryptic error messages will make perfect sense.
We will learn how solidity represents various data types, and how we can come up with more efficient representations ourselves depending on the application. We will learn the assumptions solidity makes about memory layout and how to avoid violating those assumptions when we use low level instructions. We will learn what happens behind the scenes when smart contracts make function calls to each other, and how to implement that protocol by hand. And of course, we will build smart contracts from scratch in assembly.
Nobody can claim to be an expert in solidity without mastering assembly (also known as Yul). So if mastery is your goal, take this class.
Note: This class is not for beginners. You should be very comfortable with solidity before taking this course.
Errata: The illustration at 2:37 should have the array finishing as 0x1c, 0x1d, 0x1f as it is in hex, not decimal.
OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.
Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.
Find this site helpful? Tell a friend about us.
We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.
Your purchases help us maintain our catalog and keep our servers humming without ads.
Thank you for supporting OpenCourser.