Aralin 1Mga karaniwang pattern ng kontrata: Ownable, Pausable, ReentrancyGuard, Pull over Push payments, Checks-Effects-Interactions patternGalugarin ang mga batayan ng mga pattern ng smart contract na nagpapabuti ng kaligtasan at pag-maintain. Ipapatupad mo ang Ownable, Pausable, at ReentrancyGuard, at ilalapat ang Pull over Push at Checks-Effects-Interactions sa mga aktwal na daloy ng pagbabayad.
Pagpapatupad at paggamit ng Ownable access controlMga kontratang Pausable at emergency stopsReentrancyGuard at depensa laban sa reentrancy attackDisenyo ng Pull over Push payment flowMga pinakamahusay na praktis ng Checks-Effects-InteractionsAralin 2Safe math at overflow protections sa Solidity 0.8+: built-in checks vs. explicit libraries (OpenZeppelin SafeMath history)Pag-aralan kung paano binago ng built-in overflow checks ng Solidity 0.8+ ang kaligtasan ng arithmetic. Ikuwento ang mga lumang library na parang SafeMath sa mga modernong pattern, at matututo kung kailan ligtas ang unchecked blocks para sa gas-efficient arithmetic operations.
Mga batayan ng integer overflow at underflowBuilt-in arithmetic checks sa Solidity 0.8+Legacy SafeMath libraries at migrationPaggamit ng unchecked blocks nang ligtas para sa gasPagsubok sa arithmetic edge cases at limitsAralin 3State variables, storage vs memory, events, modifiers, at error handling (require, revert, assert, custom errors)Master ang kung paano iniimbak at naa-access ng Solidity ang data gamit ang state variables, storage, memory, at calldata. Matututo kang mag-emit ng events, magsulat ng reusable modifiers, at maglagay ng require, revert, assert, at custom errors para sa malinaw na error handling.
State variables at storage slotsStorage vs memory vs calldata usagePagdidisenyo at pag-emit ng useful eventsPagsusulat ng reusable at ligtas na modifiersRequire, revert, assert, at custom errorsAralin 4Function visibility at mutability: public, external, internal, private; view, pure, payableLilinawin kung paano nakakaapekto ang function visibility at mutability sa seguridad, gas, at usability. Matutulo kang kailan gagamitin ang public, external, internal, at private, at kung paano nakakaapekto ang view, pure, at payable sa state changes at value transfers.
Public vs external function trade-offsInternal at private para sa encapsulationView at pure para sa read-only logicPayable functions at ETH transfersPagdidisenyo ng malinaw at ligtas na APIsAralin 5Pagdidisenyo ng deposit/withdraw accounting: mapping(address => uint256) balances, events para sa deposits/withdrawals, handling ng multiple tokens vs single-token vaultsMatutulo kung paano magdisenyo ng ligtas na deposit at withdrawal flows gamit ang mappings, events, at token interfaces. Ikuwento ang single-token at multi-token vaults, at hawakan ang edge cases tulad ng failed transfers at hindi inaasahang token behavior.
Mapping balances at accounting invariantsPag-emit ng events para sa deposits at withdrawalsDisenyo ng single-token vault at interfacesMulti-token vaults at token identifiersPaghawak ng failed transfers at token quirksAralin 6Pagsubok sa smart contracts: unit testing concepts, fixtures, mocks para sa ERC-20 tokens, at test structure (arrange-act-assert)Matutulo kung paano subukan ang smart contracts gamit ang structured approach. Magsusulat ka ng unit tests, gumagamit ng fixtures at mocks para sa ERC-20 tokens, sumusunod sa arrange-act-assert, at tinatakpan ang edge cases, reverts, at event expectations.
Testing frameworks at project setupArrange-Act-Assert test structurePaggamit ng fixtures para sa repeatable statePagmo-mock ng ERC-20 tokens at behaviorsPagsubok sa reverts, events, at edge casesAralin 7Mga batayan ng Solidity language: syntax, types, visibility, inheritance, at compiler pragmas (0.8.x specifics)Magbuo ng matibay na pag-unawa sa Solidity syntax, types, at visibility rules. Galugarin ang inheritance, interfaces, compiler pragmas, at 0.8.x specifics tulad ng custom errors at improved type safety para sa modernong smart contract development.
Source files, contracts, at basic syntaxValue types, reference types, at arraysFunction at state variable visibilityInheritance, interfaces, at abstract contractsCompiler pragmas at 0.8.x language changesAralin 8Mga batayan ng contract upgradeability at trade-offs: proxy patterns (transparent, UUPS) at kailan iwasan ang upgrades para sa simple vaultsUnawain kung kailan at paano i-upgrade ang contracts gamit ang proxy patterns. Ikuwento ang transparent at UUPS proxies, storage layout constraints, at governance risks, at makita kung bakit mas ligtas ang simple vaults nang walang upgradeability.
Bakit i-upgrade ang contracts at kailan iwasan itoTransparent proxy architecture at rolesUUPS proxy pattern at upgrade functionsStorage layout compatibility at pitfallsSeguridad at governance risks ng upgradesAralin 9Mga batayan ng Gas optimization: storage layout, packing, minimizing external calls, at paggamit ng calldataMatutulo ng praktikal na gas optimization techniques para sa Solidity contracts. Susuriin mo ang storage layout at packing, bawasan ang mahal na external calls, gamitin ang calldata, at sukatin ang gas usage upang gabayan ang ligtas na micro-optimizations.
Pag-unawa sa gas costs at refundsStorage layout at variable packingPagbabawas ng external at cross-contract callsPaggamit ng calldata para sa cheap read-only inputsPagsukat at benchmarking ng gas usageAralin 10Malalim na pag-aaral ng ERC-20 token standard: interfaces (IERC20), allowances, approve/transferFrom semantics, return value handling at non-standard tokensSumisid sa malalim ng ERC-20 standard, nakatuon sa IERC20 interface, balances, allowances, at approve/transferFrom flows. Matutulo kang hawakan ang return values, non-standard tokens, at ligtas na interaction patterns sa production contracts.
IERC20 interface at required functionsBalances, totalSupply, at decimals handlingApprove at transferFrom allowance workflowPaghawak ng non-standard ERC-20 tokensLigtas na ERC-20 interactions gamit ang helper libraries