Fuzzing and invariants

Explore the concepts of fuzz testing and invariant testing in Solidity. This lesson explains how fuzz testing can help uncover unexpected application failures, and dives into the practice of testing invariants, or properties that always hold true, in smart contracts.

Solidity Developer

Smart Contract Security

1. Tooling Prerequisites
This lesson provides an overview of the essential tools required for Solidity and Smart Contract development. It includes a guide to text editors like Visual Studio Code and VSCodium, and an introduction to frameworks such as Foundry, alongside compatibility tips for different operating systems. It also highlights the importance of AI tools like Find and ChatGPT in the development process. Duration: 4min
2. Solidity Prerequisites
Review the prerequisites for the Security and Auditing course, including skills like using Remix and Foundry. Duration: 4min
3. Fuzzing and invariants
Explore the concepts of fuzz testing and invariant testing in Solidity. This lesson explains how fuzz testing can help uncover unexpected application failures, and dives into the practice of testing invariants, or properties that always hold true, in smart contracts. Duration: 10min
4. Installing Libraries
Learn to use OpenZeppelin for ERC20 token integration, including installation and contract creation. Insights into ERC-721 as well. Duration: 3min
5. What is an ERC20?
introduction to ERC-20 tokens, their functionality, and applications. Learn ERC-20 basics like token creation and use cases. Duration: 2min
6. What is an ERC721?
What is an NFT? Learn the role of ERC-721 in representing unique digital assets on the blockchain. Duration: 6min
7. Advanced Solidity Prerequisites
Learn advanced concepts in Solidity, focusing on storage in smart contracts. Delve into how storage works and the role of constants and immutables. Duration: 2min
8. Storage
Gain a comprehensive understanding of storage in Solidity. This lesson covers global variables, the storage data structure, handling dynamic variables, and the role of constant and immutable variables. It also explains the use of the 'memory' keyword for efficient data management. Duration: 5min
9. Fallback and Receive
Learn about the fallback and receive functions in Solidity. Investigate how these functions influence smart contract functionality. Duration: 2min
10. ABI encode
This lesson focuses on ABI (Application Binary Interface) encoding in Solidity, explaining its role in concatenating strings and encoding data into binary. It provides insights into the process of compressing binary data and techniques for multiple data encoding. Duration: 23min
11. Encoding Functions
Learn about ABI encoding and how it's used in the context of low level function calls in Ethereum. Duration: 6min
12. Upgradeable contracts
Explore the design of upgradeable smart contracts using Proxy and Delegate Call. This lesson covers the functionality, applications, and coding techniques of these concepts, crucial for managing contract upgrades while preserving the contract's state. Duration: 1min
13. Self Destruct and Review
Understand the use and implications of the selfdestruct keyword in Solidity. This lesson explains how selfdestruct can remove contracts and force ETH into specified addresses, a unique behavior with significant impact on contract functionality and security. Duration: 10min

Testimonials

Students Reviews

Read what our students have to say about this course.

Chainlink

Chainlink

Chainlink

Gustavo Gonzalez

Gustavo Gonzalez

Solutions Engineer at OpenZeppelin

Francesco Andreoli

Francesco Andreoli

Lead Devrel at Metamask

Albert Hu

Albert Hu

DeForm Founding Engineer

Radek

Radek

Senior Developer Advocate at Ceramic

Boidushya

Boidushya

WalletConnect

Idris

Idris

Developer Relations Engineer at Axelar

Cyfrin
Updraft
CodeHawks
Solodit
Resources