1 වන පාඩමපොදු කොන්ට්රැක්ට් රටා: Ownable, Pausable, ReentrancyGuard, Pull over Push ගෙවීම්, Checks-Effects-Interactions රටාවආරක්ෂාව සහ නඩත්තු කිරීම වැඩිදියුණු කරන මූලික ස්මාර්ට් කොන්ට්රැක්ට් රටා ගවේෂණය කරන්න. ඔබ Ownable, Pausable, සහ ReentrancyGuard ක්රියාත්මක කරනු ඇත, සහ සැබෑ ගෙවීම් ගලනවල Pull over Push සහ Checks-Effects-Interactions යෙදෙනු ඇත.
Ownable ප්රවේශ පාලනය ක්රියාත්මක කිරීම සහ භාවිතයPausable කොන්ට්රැක්ට් සහ හදිසි නවතීම්ReentrancyGuard සහ reentrancy ප්රහාර ආරක්ෂාවPull over Push ගෙවීම් ගලන සැලසුම්කරණයChecks-Effects-Interactions හොඳම පිළිවෙත්2 වන පාඩමSolidity 0.8+ හි සුරක්ෂිත ගණිතය සහ overflow ආරක්ෂාව: බිල්ට්-ඉන් පරීක්ෂණ vs. පැහැදිලි ලයිබ්රරි (OpenZeppelin SafeMath ඉතිහාසය)Solidity 0.8+ බිල්ට්-ඉන් overflow පරීක්ෂණ ගණිත ආරක්ෂාව වෙනස් කරන ආකාරය අධ්යයනය කරන්න. පැරණි SafeMath-ආකාර ලයිබ්රරි නවීන රටා සමඟ සංසන්දනය කරන්න, සහ unchecked blocks ගෑස්-කාර්යක්ෂම ගණිත මෙහෙයුම් සඳහා ආරක්ෂිත වන විට ඉගෙන ගන්න.
Integer overflow සහ underflow මූලික සංකල්පSolidity 0.8+ හි බිල්ට්-ඉන් ගණිත පරීක්ෂණපැරණි SafeMath ලයිබ්රරි සහ migrationගෑස් සඳහා unchecked blocks ආරක්ෂිතව භාවිතයගණිත edge cases සහ සීමාවන් පරීක්ෂා කිරීම3 වන පාඩමState variables, storage vs memory, events, modifiers, සහ error handling (require, revert, assert, custom errors)Solidity state variables, storage, memory, සහ calldata භාවිතයෙන් දත්ත සංරක්ෂණය සහ ප්රවේශය ලබා ගන්නා ආකාරය ප්රවේශ කරන්න. events emit කිරීම, reusable modifiers ලිවීම, සහ require, revert, assert, සහ custom errors පැහැදිලි error handling සඳහා යෙදීම ඉගෙන ගන්න.
State variables සහ storage slotsStorage vs memory vs calldata භාවිතයඋපකාරී events සැලසුම්කරණය සහ emit කිරීමReusable සහ ආරක්ෂිත modifiers ලිවීමRequire, revert, assert, සහ custom errors4 වන පාඩමFunction visibility සහ mutability: public, external, internal, private; view, pure, payableFunction visibility සහ mutability ආරක්ෂාව, ගෑස්, සහ භාවිතා හැකියාවට බලපාන ආකාරය පැහැදිලි කරන්න. public, external, internal, private භාවිතා කළ යුතු විට, සහ view, pure, payable state changes සහ value transfers වලට බලපාන ආකාරය ඉගෙන ගන්න.
Public vs external function trade-offsEncapsulation සඳහා Internal සහ privateRead-only logic සඳහා View සහ purePayable functions සහ ETH transfersපැහැදිලි සහ ආරක්ෂිත APIs සැලසුම්කරණය5 වන පාඩමDeposit/withdraw accounting සැලසුම්කරණය: mapping(address => uint256) balances, deposits/withdrawals සඳහා events, multiple tokens vs single-token vaults handlingMappings, events, සහ token interfaces භාවිතයෙන් ආරක්ෂිත deposit සහ withdrawal flows සැලසුම්කරණය ඉගෙන ගන්න. Single-token සහ multi-token vaults සංසන්දනය කරන්න, failed transfers සහ unexpected token behavior වැනි edge cases handle කරන්න.
Mapping balances සහ accounting invariantsDeposits සහ withdrawals සඳහා events emit කිරීමSingle-token vault සැලසුම්කරණය සහ interfacesMulti-token vaults සහ token identifiersFailed transfers සහ token quirks handle කිරීම6 වන පාඩමස්මාර්ට් කොන්ට්රැක්ට් පරීක්ෂණ: unit testing සංකල්ප, fixtures, ERC-20 tokens සඳහා mocks, test structure (arrange-act-assert)ප්රමාණවත් ප්රවේශයකින් ස්මාර්ට් කොන්ට්රැක්ට් පරීක්ෂා කිරීම ඉගෙන ගන්න. Unit tests ලියන්න, ERC-20 tokens සඳහා fixtures සහ mocks භාවිතා කරන්න, arrange-act-assert අනුගමනය කරන්න, edge cases, reverts, සහ event expectations cover කරන්න.
Testing frameworks සහ project setupArrange-Act-Assert test structureRepeatable state සඳහා fixtures භාවිතයERC-20 tokens සහ behaviors mock කිරීමReverts, events, සහ edge cases පරීක්ෂා කිරීම7 වන පාඩමSolidity භාෂා මූලික: syntax, types, visibility, inheritance, compiler pragmas (0.8.x specifics)Solidity syntax, types, සහ visibility rules හොඳින් ඉගෙන ගන්න. Inheritance, interfaces, compiler pragmas, සහ 0.8.x specifics විශේෂයෙන් custom errors සහ improved type safety නවීන ස්මාර්ට් කොන්ට්රැක්ට් සංවර්ධනය සඳහා ගවේෂණය කරන්න.
Source files, contracts, සහ basic syntaxValue types, reference types, සහ arraysFunction සහ state variable visibilityInheritance, interfaces, සහ abstract contractsCompiler pragmas සහ 0.8.x language changes8 වන පාඩමContract upgradeability මූලික සහ trade-offs: proxy patterns (transparent, UUPS) සහ simple vaults සඳහා upgrades වළක්වා යෑමProxy patterns භාවිතයෙන් contracts upgrade කිරීමේදී සහ එය කරන්නේ කවදාදැයි තේරුම් ගන්න. Transparent සහ UUPS proxies, storage layout constraints, governance risks සංසන්දනය කරන්න, සහ simple vaults upgradeability නොමැතිව ආරක්ෂිත බව බලන්න.
Upgrade contracts කිරීමේ හේතු සහ වළක්වා යෑමTransparent proxy architecture සහ rolesUUPS proxy pattern සහ upgrade functionsStorage layout compatibility සහ pitfallsUpgrades හි ආරක්ෂක සහ governance අවදානම්9 වන පාඩමගෑස් ඔප්ටිමයිසේෂන් මූලික: storage layout, packing, external calls අවම කිරීම, calldata භාවිතයSolidity contracts සඳහා ප්රායෝගික ගෑස් ඔප්ටිමයිසේෂන් තාක්ෂණයන් ඉගෙන ගන්න. Storage layout සහ packing විශ්ලේෂණය කරන්න, expensive external calls අඩු කරන්න, calldata උපයෝගී කර ගන්න, ගෑස් භාවිතය මැනීමෙන් ආරක්ෂිත micro-optimizations මඟ පෙන්වන්න.
ගෑස් costs සහ refunds තේරුම් ගැනීමStorage layout සහ variable packingExternal සහ cross-contract calls අවම කිරීමCheap read-only inputs සඳහා calldataගෑස් භාවිතය මැනීම සහ benchmarking10 වන පාඩමERC-20 token standard ගැඹුරු ගවේෂණය: interfaces (IERC20), allowances, approve/transferFrom semantics, return value handling සහ non-standard tokensERC-20 standard ගැඹුරින් ගවේෂණය කරන්න, IERC20 interface, balances, allowances, approve/transferFrom flows මත අවධානය යොමු කරන්න. Return values handle කිරීම, non-standard tokens, production contracts හි safe interaction patterns ඉගෙන ගන්න.
IERC20 interface සහ අවශ්ය functionsBalances, totalSupply, සහ decimals handlingApprove සහ transferFrom allowance workflowNon-standard ERC-20 tokens handle කිරීමHelper libraries සමඟ safe ERC-20 interactions