مسترکلاس توسعه بلاکچین اتریوم با زبان Solidity
همراه با میلاد
سرفصلهای دوره
- Introduction to Solidity and first steps
1.1 Introduction to Solidity and Solidity DataTypes
1.2 Fundamentals of 1.3 Blockchain part 1
1.4 BlockchainFundamentals
1.5 Solidity Math
1.6 Global Variables
1.7 Tuples
1.8 Enum
1.9 Constructor
1.10 Mapping , Struct, Constructor, Array of Struct, Memory, Calldata, Storage
1.11 Iterable Mappings
1.12 Fundamentals of Markets
1.13 Immutable
1.14 Modifiers With Parameters
1.15 Require , Revert , Modifer , Blockchian Intro, Hash function Intro
2. Tools and Frameworks
2.1 Foundry Frame Work
2.2 Cast , anvil , in foundry
2.3 Deploying and Testing Contracts With Foundry
2.4 Fuzz Testing With Foundry
2.5 Simple Debugging in remix
2.6 Verifying and Publishing Smart Contracts on EtherScan and SepoliaScan
2.7 abi.encode , Event and emit, Events on EtherScan and SepoliaScan
2.8 Verifying and publishing on Sepolia Scan and Generate ABI
3. Contract development and Data management
3.1 Storage Slot Management in Upgradeable Contracts
3.2 Using Immutable & Constant Variables
3.3 Smaller Data Types
3.4 Value Types vs Reference Types
3.5 (Understanding storage, memory, and calldata)
3.6 Careful Use of Storage vs. Memory
3.7 Packing Variables
3.8 Advanced Struct Packing (with arrays, mappings inside structs)
3.9 Mapping With Structs for Record Keeping
3.10 Mapping a Mapping to other Types
3.11 Interface Project Description
4. Gas Optimization
4.1 Gas optimization Techniques
4.2 Minimize SSTORE Operations
4.3 Avoiding Unnecessary Computations
4.4 Efficient For-Loops
4.5 Efficient Batch Operations
4.6 Efficient Array Modification
4.7 Minimize External Calls and Contract Calls
4.8 Short-Circuiting in Conditional Checks
4.9 Bitwise Operations & Flag Packing
4.10 Function Selector Collisions
4.11 Custom Error Handling (Custom Errors over revert Strings)
4.12 Gas Refund Patterns
4.13 EIP-2929/EIP-2200/EIP-3651 and Istanbul Gas Changes
5. Contract Security
5.1 Re-eterancy Hack Explained In details
5.2 Re-Eterency Hack Solution with Modifiers
5.3 Hack With fallback
5.4 Simple Smart Contract Hack
5.5 Try Catch Intro And Example
5.6 Verifying Signature in solidity
5.7 ecrecover, signature in meta mask off chain
5.8 error MyError(); uses less gas than require(cond, “message”);
5.9 msg.sender in diffrent Context
5.10 address(this).balance
5.11 Shadowing Inherited State Variables
6. Function call and complex structures
6.1 Delegate Call Exercise Solution
6.2 Delegate Call Exercise Explanation
6.3 DelegateCall
6.4 MultiCall , MultiCall Exercise Explanation
6.5 MultiCallExercise Helper
6.6 Static Call in solidity
6.7 Static Call Exercise Solution
6.8 Function Selectors
6.9 Calling Functions With Key Value Pairs
6.10 Calling Contracts Functions From Other Contracts
6.11 Encoding and Decoding and Sending Data with call Exercise
6.12 Sending Data With Call , Decoding Data
6.13 3 Ways to Encode Data
7. Advanced contracts, Token sales and Market features
7.1 Lottery Part One With Random Number Reseting Arrays
7.2 Lottery With Token Final
7.3 Lottery With Profit And Entry Limit
7.4 Lottery Exercise Explanation Random Number With Keccak Resetting Arrays
7.5 AggregatorV3Interface , Chainlink Oracle , Interface usage
7.6 Oracle and Chainlink
7.7 Oracle , Chainlink , , Oracle Consensus ,Interface
7.8 Price Feeds of chainlink
7.9 Dutch Auction
7.10 Dutch Auction Buy Function
7.11 Dutch Auction Buy Function Exercise
7.12 English Auction
7.13 English Auction Interaction Exercise
7.14 IERC721Receiver , onERC721Received , SafeTransferFrom Function for 721 Standard
7.15 Deployement of a 721NFT and Selling it in the Dutch Auction
7.16 Mint Function Exercise Explained
7.17 Mint Exercise
8. Special functions and Timing
8.1 TimeLock For Any Execution For Transparency , TimeLock Contract Usable as Owner of Other Contracts
8.2 TimeLock Functionality For Queue and Execution
8.3 Complex Data Preparation , Using TimeLock Contract As the Owner of any Contract and publish any Transactions With TimeLock
8.4 Preparing TxID , Preparing and Using Function Selector
8.5 Parts of a Complex Call , Building a Complex Call from Scratch , Preparing Data For a Complex Call , Structure of a Execution With TimeLock
8.6 Intro To TimeLock, Simplest TimeLock Contract
8.7 Simple TimeLock
9. CREATE 2, Precompute Adresses
9.1 Precompute Deploy Address of Create2 , Sending Ether to a Contract that hasn’t been Deployed Yet
9.2 ByteCode , salt , Precompute Address of a Contract Post Deploy , Create2
9.3 Minimal Proxies (EIP-1167) / Contract Clones
9.4 A contract Selling Contracts to Customers making them the Owners
10. ERC-20 and ERC-721
10.1 ERC20 Implementation
10.2 Intro to Erc-20 Standard , IERC20 Interface
10.3 ERC721 implementation
10.4 IERC165 and IERC721
10.5 Interface Examples
10.6 Access Control Contract in Solidity
10.7 Interface and Implementing them
11. Practical Projects and comprehensive exercise
11.1 CashBack Project
11.2 CashBack Project with Receive Function
11.3 MemberShip Contract Project
11.4 ToDo List Exercise
11.5 Twitter Contract
11.6 Tweeter Exercise Description
11.7 Voter Contract
11.8 Bank Inheritance Exercise
11.9 Calculator in solidity with inheritance
11.10 Eventing Inheritance with multiple inheritance and super keyword
11.11 Array Removal Algorithm
11.12 Arrays , Array removal algo
11.13 New Keyword and Deploying SmartContracts From Another SmartContract
11.14 Deploying a Contract From Another Contract
11.15 Deploying a Payable Contract From Another Contract
12. Pay, Transfer, Receive ETH
12.1 Payable Functions and Contracts
12.2 msg.value, msg.sender
12.3 Receive Function
12.4 Fallback Function
12.5 fallback With Input , Using a fallback With Input as Middle contract to call another Contract and making it payable
12.6 fallback Review , fallback with Input and Output , fallback with Input Exercise Explained
12.7 Send Ether with Transfer, Send, Call functions
12.8 Payable , How to receive funds in ETH
12.9 Deposit Function Intro , Getting Contract Balance with this
13. Testing, Debugging, and Validation
13.1 Assert , Testing a Contract by Assert
13.2 Assert
13.3 abi.encodePacked, abi.encode, abi.encodePacked Collision Problem and Solution
13.4 Keccak256 Hash Function
13.5 Selfdestruct , Deleting Deployed Contracts , Force Sending Ether without the need of fallback or receive
