పాఠం 1సాధారణ కాంట్రాక్ట్ ప్యాటర్న్లు: Ownable, Pausable, ReentrancyGuard, Pull over Push payments, Checks-Effects-Interactions patternసురక్షితత మరియు నిర్వహణకు మెరుగుపరచే పునాది స్మార్ట్ కాంట్రాక్ట్ ప్యాటర్న్లను అన్వేషించండి. మీరు Ownable, Pausable, మరియు ReentrancyGuardను అమలు చేస్తారు, మరియు Pull over Push మరియు Checks-Effects-Interactionsను రియల్ పేమెంట్ ఫ్లోలలో అప్లై చేస్తారు.
Implementing and using Ownable access controlPausable contracts and emergency stopsReentrancyGuard and reentrancy attack defensePull over Push payment flow designChecks-Effects-Interactions best practicesపాఠం 2సాలిడిటీ 0.8+: సేఫ్ మ్యాథ్ మరియు ఓవర్ఫ్లో ప్రొటెక్షన్లు - బిల్ట్-ఇన్ చెక్లు vs. స్పష్టమైన లైబ్రరీలు (OpenZeppelin SafeMath చరిత్ర)సాలిడిటీ 0.8+ లో బిల్ట్-ఇన్ ఓవర్ఫ్లో చెక్లు అరిథ్మెటిక్ సురక్షితతను ఎలా మార్చాయో అధ్యయనం చేయండి. పాత SafeMath-స్టైల్ లైబ్రరీలను ఆధునిక ప్యాటర్న్లతో పోల్చండి, మరియు unchecked బ్లాక్లు గ్యాస్-సమర్థవంతమైన అరిథ్మెటిక్ ఆపరేషన్ల కోసం సురక్షితమైనప్పుడు నేర్చుకోండి.
Integer overflow and underflow fundamentalsBuilt-in arithmetic checks in Solidity 0.8+Legacy SafeMath libraries and migrationUsing unchecked blocks safely for gasTesting arithmetic edge cases and limitsపాఠం 3స్టేట్ వేరియబుల్స్, స్టోరేజ్ vs మెమరీ, ఈవెంట్లు, మాడిఫైయర్లు, మరియు ఎర్రర్ హ్యాండ్లింగ్ (require, revert, assert, కస్టమ్ ఎర్రర్లు)సాలిడిటీ స్టేట్ వేరియబుల్స్, స్టోరేజ్, మెమరీ, మరియు కాల్డేటా ఉపయోగించి డేటాను ఎలా స్టోర్ చేస్తుంది మరియు యాక్సెస్ చేస్తుందో మాస్టర్ చేయండి. ఈవెంట్లను ఎమిట్ చేయడం, రీయూసబుల్ మాడిఫైయర్లు రాయడం, మరియు require, revert, assert, మరియు కస్టమ్ ఎర్రర్లను స్పష్టమైన ఎర్రర్ హ్యాండ్లింగ్ కోసం అప్లై చేయడం నేర్చుకోండి.
State variables and storage slotsStorage vs memory vs calldata usageDesigning and emitting useful eventsWriting reusable and safe modifiersRequire, revert, assert, and custom errorsపాఠం 4ఫంక్షన్ విజిబిలిటీ మరియు మ్యూటబిలిటీ: public, external, internal, private; view, pure, payableఫంక్షన్ విజిబిలిటీ మరియు మ్యూటబిలిటీ సురక్షితత, గ్యాస్, మరియు ఉపయోగకరతపై ఎలా ప్రభావం చూపుతాయో స్పష్టం చేయండి. public, external, internal, మరియు privateను ఎప్పుడు ఉపయోగించాలో నేర్చుకోండి, మరియు view, pure, మరియు payable స్టేట్ మార్పులు మరియు వాల్యూ ట్రాన్స్ఫర్లపై ఎలా ప్రభావం చూపుతాయో.
Public vs external function trade-offsInternal and private for encapsulationView and pure for read-only logicPayable functions and ETH transfersDesigning clear and safe APIsపాఠం 5డిపాజిట్/విత్డ్రా అకౌంటింగ్ డిజైన్: mapping(address => uint256) బ్యాలెన్స్లు, డిపాజిట్/విత్డ్రా ఈవెంట్లు, మల్టిపుల్ టోకెన్లు vs సింగిల్-టోకెన్ వాల్ట్లుమ్యాపింగ్లు, ఈవెంట్లు, మరియు టోకెన్ ఇంటర్ఫేస్లను ఉపయోగించి సురక్షిత డిపాజిట్ మరియు విత్డ్రా ఫ్లోలను డిజైన్ చేయడం నేర్చుకోండి. సింగిల్-టోకెన్ మరియు మల్టీ-టోకెన్ వాల్ట్లను పోల్చండి, మరియు ఫెయిల్డ్ ట్రాన్స్ఫర్లు మరియు అప్రత్యాశిత టోకెన్ ప్రవర్తన వంటి ఎడ్జ్ కేసులను హ్యాండిల్ చేయండి.
Mapping balances and accounting invariantsEmitting events for deposits and withdrawalsSingle-token vault design and interfacesMulti-token vaults and token identifiersHandling failed transfers and token quirksపాఠం 6స్మార్ట్ కాంట్రాక్ట్ల టెస్టింగ్: యూనిట్ టెస్టింగ్ కాన్సెప్ట్లు, ఫిక్స్చర్లు, ERC-20 టోకెన్ల కోసం మాక్లు, మరియు టెస్ట్ స్ట్రక్చర్ (arrange-act-assert)స్ట్రక్చర్డ్ అప్రోచ్తో స్మార్ట్ కాంట్రాక్ట్లను టెస్ట్ చేయడం నేర్చుకోండి. మీరు యూనిట్ టెస్ట్లు రాస్తారు, ERC-20 టోకెన్ల కోసం ఫిక్స్చర్లు మరియు మాక్లను ఉపయోగించండి, arrange-act-assertను అనుసరించండి, మరియు ఎడ్జ్ కేసులు, రివర్ట్లు, మరియు ఈవెంట్ అంచనాలను కవర్ చేయండి.
Testing frameworks and project setupArrange-Act-Assert test structureUsing fixtures for repeatable stateMocking ERC-20 tokens and behaviorsTesting reverts, events, and edge casesపాఠం 7సాలిడిటీ భాషా బేసిక్స్: సింటాక్స్, టైప్లు, విజిబిలిటీ, ఇన్హెరిటెన్స్, మరియు కంపైలర్ ప్రాగ్మాలు (0.8.x స్పెసిఫిక్స్)సాలిడిటీ సింటాక్స్, టైప్లు, మరియు విజిబిలిటీ రూల్స్పై బలమైన గ్రాస్ప్ను నిర్మించండి. ఇన్హెరిటెన్స్, ఇంటర్ఫేస్లు, కంపైలర్ ప్రాగ్మాలు, మరియు 0.8.x స్పెసిఫిక్స్ వంటి కస్టమ్ ఎర్రర్లు మరియు మెరుగైన టైప్ సేఫ్టీని అన్వేషించండి.
Source files, contracts, and basic syntaxValue types, reference types, and arraysFunction and state variable visibilityInheritance, interfaces, and abstract contractsCompiler pragmas and 0.8.x language changesపాఠం 8కాంట్రాక్ట్ అప్గ్రేడబిలిటీ బేసిక్స్ మరియు ట్రేడ్-ఆఫ్లు: ప్రాక్సీ ప్యాటర్న్లు (ట్రాన్స్పేరెంట్, UUPS) మరియు సింగిల్ వాల్ట్ల కోసం అప్గ్రేడ్లను నివారించడంప్రాక్సీ ప్యాటర్న్లను ఉపయోగించి కాంట్రాక్ట్లను ఎప్పుడు మరియు ఎలా అప్గ్రేడ్ చేయాలో అర్థం చేసుకోండి. ట్రాన్స్పేరెంట్ మరియు UUPS ప్రాక్సీలను పోల్చండి, స్టోరేజ్ లేఅవుట్ కాన్స్ట్రెయింట్లు, మరియు గవర్నెన్స్ రిస్క్లు, మరియు సింగిల్ వాల్ట్లు అప్గ్రేడబిలిటీ లేకుండా సురక్షితంగా ఉండటానికి ఎందుకు చూడండి.
Why upgrade contracts and when to avoid itTransparent proxy architecture and rolesUUPS proxy pattern and upgrade functionsStorage layout compatibility and pitfallsSecurity and governance risks of upgradesపాఠం 9గ్యాస్ ఆప్టిమైజేషన్ బేసిక్స్: స్టోరేజ్ లేఅవుట్, ప్యాకింగ్, ఎక్స్టర్నల్ కాల్లను తగ్గించడం, మరియు కాల్డేటా ఉపయోగంసాలిడిటీ కాంట్రాక్ట్ల కోసం ఆచరణాత్మక గ్యాస్ ఆప్టిమైజేషన్ టెక్నిక్లను నేర్చుకోండి. మీరు స్టోరేజ్ లేఅవుట్ మరియు ప్యాకింగ్ను విశ్లేషించండి, ఖరీదైన ఎక్స్టర్నల్ కాల్లను తగ్గించండి, కాల్డేటాను లెవరేజ్ చేస్తారు, మరియు సురక్షిత మైక్రో-ఆప్టిమైజేషన్లను మార్గదర్శించడానికి గ్యాస్ ఉపయోగాన్ని కొలుస్తారు.
Understanding gas costs and refundsStorage layout and variable packingMinimizing external and cross-contract callsUsing calldata for cheap read-only inputsMeasuring and benchmarking gas usageపాఠం 10ERC-20 టోకెన్ స్టాండర్డ్ డీప్ డైవ్: ఇంటర్ఫేస్లు (IERC20), అలవెన్స్లు, approve/transferFrom సెమాంటిక్స్, రిటర్న్ వాల్యూ హ్యాండ్లింగ్ మరియు నాన్-స్టాండర్డ్ టోకెన్లుERC-20 స్టాండర్డ్లో IERC20 ఇంటర్ఫేస్, బ్యాలెన్స్లు, అలవెన్స్లు, మరియు approve/transferFrom ఫ్లోలపై డీప్ డైవ్ చేయండి. రిటర్న్ వాల్యూలను హ్యాండిల్ చేయడం, నాన్-స్టాండర్డ్ టోకెన్లు, మరియు ప్రొడక్షన్ కాంట్రాక్ట్లలో సురక్షిత ఇంటరాక్షన్ ప్యాటర్న్లను నేర్చుకోండి.
IERC20 interface and required functionsBalances, totalSupply, and decimals handlingApprove and transferFrom allowance workflowDealing with non-standard ERC-20 tokensSafe ERC-20 interactions with helper libraries