Learning Solidity and Smart Contract Development
Smart Contract Development off the top of my head can be broken down into a variety of skills and tools including but not limited to:
- Testing: Fuzz Testing, Invariant Testing, Stateful/stateless testing, Unit Testing etc.
Testing may require knowledge of the Forge Standard Library, Foundry Cheatcodes, Scripting etc.
-
Scripting: Deployment Scripts, Configuration Scripts (HelperConfig)
-
Auditing: Debugging, Access control, Reading Documentation, Understanding Codebases.
-
Low Level EVM stuff: Gas optimization, OPCODES, Assembly and Formal Verification, EIPs and their effects, ERCs.
-
Syntax and Logic: Functions, Conditionals, Calls, Storage Optimization, Access Control, Imports, Using Interfaces, Oracles, Types and Type Conversion.
-
Concepts: Lending/Borrowing, Flash Loans, Stablecoins, Randomness/Gamification, Marketplaces, Upgradable Smart Contracts, Signatures, Airdrops.
Smart Contract Development can be further broken down into it's most common and native use cases such as:
- Lending/Borrowing (Basically all of DeFi)
- Marketplaces (from Simple Trading or Exchanges to AMMs, liquidity pools etc.)
- Airdrops (and all things related to Signature Verification)
- Tokens and Tokenization (Stablecoins, SBTs, ERC20s, 721s, 1155s etc)
- FOCGs (Randomness, ZK/Obscification of Information)
Smart Contract Development also has ideas or truths that are central to all that is built with this:
-
Blockchains are Deterministic Systems: True Randomness does not exist, but Randomness is needed. External Data cannot be introduced directly but need to be introduced. Smart Contracts are Immutable once deployed but need to be fixable or upgradable.
-
Decentralization is an extremely important feature with security implications.
-
Correct Access control can make or break a contract.
- Target Use Case:
- Key Considerations:
- Prerequisites:
- Skills that will be learned:
- Resources: