ඔබේ Solidity smart contract එක පරීක්ෂණ වලින් පසු, Mainnet වෙත යාමට කිහිප දින ඉතිරිවී තිබේ. පූර්ණ ආරක්ෂක පරීක්ෂාවක් නොකරනවා නම් (කරන්න එපා) හෝ සති කිහිපයක් ගතකරන audit එකක් කරන්නේ නම්, කෙටි මිනිත්තු 20 කින් කළ හැකි මෙම පරීක්ෂාව ඔබට වැදගත් වේ.
මෙම ලැයිස්තුවේ අඩංගු කරුණු සරලයි, කෙලින්ම ඔබේ කේතය පරීක්ෂා කර බලන්න. මෙය විශාල මෙවලම් අවශ්ය නොකර, ඔබේ ඇස් සහ මතකය පමණක් භාවිතා කරගත හැක.
- කවුද කුමක් කැඳවිය හැකිද? මුදල් ගෙනයන, mint කරන, pause කරන, upgrade කරන සෑම external/public function එකක්ම විවෘතව බලන්න. එම function එකට අනුමත කරුණු (onlyOwner, onlyRole, require(msg.sender == …) වැනි) ඇතුළත්ද? Guard එකක් තිබුනත්, අභ්යන්තර function එකට යාමට පෙර ඒ guard එක මඟ හැරීමේ අවස්ථා නොමැතිව බලන්න.
- පළමු තැන්පතුකරුවාගේ අඩුපාඩුව (vault එකක් නම්). ERC‑4626 වැනි share‑based vault එකක පළමු තැන්පතුකරුවා asset ගොඩක් contract එකට යොදලා share price එක ඉහළ දැමිය හැක. දෙවන තැන්පතුකරුවාට share ගණන 0 වෙලා අහිමි වීමේ අවදානමක් තියෙනවා. එය වැලැක්වීමට virtual shares, dead‑shares mint, හෝ minimum‑liquidity lock එකක් යොදාගන්න. OpenZeppelin ERC‑4626 මේක ස්වයංක්රියව කරයි.
- Reentrancy – සැබෑ අවදානමක් සියලු external call එකක් reentrancy නෙවෙයි. ඇක්රාකාරී caller එකක් state update කරන පසු call එකක් කරලා storage එක අස්ථිර කරන්නේ නම් පමණක් ගැටලුවක්. state update කර පසු external transfer (checks‑effects‑interactions) කර තිබේද? nonReentrant modifier එකක් භාවිතා කර තිබේද? call target එක trusted contract එකක්ද, නැත්නම් attacker‑provided address එකක්ද? Slither වැනි scanner එකේ flag එකක් පමණක් බලන්න එපා.
- ‘Rescue’ මුදල් යන තැන sweep / emergencyWithdraw function එකක් තිබේ නම්, destination address එක fixed (owner/treasury)ද? එසේ නම් permissionless caller එකට අවදානමක් නැත. Caller එකට destination තෝරාගත හැකි නම්, එය මුදල් නගා ගැනීමට ඉඩ දෙනවා.
- Oracle තාජ්ජය Chainlink price feed එකක් භාවිතා කරනවානම්, answer > 0 පමණක් පරීක්ෂා නොකර updatedAt timestamp එකත් පරීක්ෂා කරන්න. කෙසේ වෙතත්, protocol එකේ අනෙකුත් layer එකක heartbeat හෝ staleness check එකක් තිබේදැයි පූර්ණ පථය පරීක්ෂා කරන්න.
- Upgradeable contract – initializer proxy pattern භාවිතා කරනවානම්, initialize() function එකට initializer modifier එකක් දී, දෙවරක් call නොවීමට සහ implementation contract එකේ initialize() අක්රියව ඉදිරියට self‑destruct නොවීමට සැලකිල්ලෙන් බලන්න. අවිවෘත initializer එක takeover attack එකකට හේතු වේ.
මෙම 20‑minute checklist එකින් obvious bugs සොයා ගත හැක. නමුත් protocol‑specific logic වැරදි (staking math, function interaction) වැනි ගැටළු මෙය හඳුනා නොගනිය. ඒ සඳහා පුද්ගලික code review එකක් අවශ්ය වේ.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලාංකීය blockchain developer කණ්ඩායම්, startups, සහ විශ්වවිද්යාල සිසුන්ට මේ පරීක්ෂාව ඉතා ප්රයෝජනවත්. කෙටි කාලයක් තුළම contract එකේ අවදානම් හඳුනා ගත හැකි නිසා, වියදම් අඩු කර, mainnet දියත් කිරීමේ වේගය වැඩි කරයි. දේශීය DeFi projects, NFT platforms, හෝ supply‑chain solutions සඳහා ආරක්ෂක පදනම ශක්තිමත් කර, ආයෝජකයන්ගේ විශ්වාසය වැඩි කරයි. තවද, OpenZeppelin සහ open‑source scanner (openclaw‑audit) භාවිතා කරමින්, ලාභදායී audit සේවා ගාස්තු වලින් මුදල් ඉතිරි කර, resources නිවැරදිව allocate කළ හැක.
ඉදිරි කාලයේ ශ්රී ලංකාවේ blockchain ecosystem එක තවත් විශ්වාසදායක හා නවෝත්පාදනශීලී වීමට, මෙවැනි practical security checklist එකක් අත්යවශ්යයි.
ඔබේ smart contract එක Mainnet වෙත යැවීමට පෙර, මේ 20‑minute පරීක්ෂාව අත්හදා බැලීම අමතක නොකරන්න. සුභ පැතුම්! 🚀