திறன் ஒப்பந்த நிரலகங்கள்
உங்கள் திட்டத்தில் உள்ள ஒவ்வொரு திறன் ஒப்பந்தத்தையும் (smart contract) நீங்கள் புதிதாக எழுத வேண்டியதில்லை. உங்கள் திட்டத்திற்கு மீண்டும் பயன்படுத்தக்கூடிய கட்டுமானத் தொகுதிகளை வழங்கும் பல திறந்த மூல திறன் ஒப்பந்த நிரலகங்கள் (smart contract libraries) கிடைக்கின்றன, இவை நீங்கள் ஏற்கனவே உள்ளதை மீண்டும் உருவாக்குவதைத் தவிர்க்க உதவும்.
முன்நிபந்தனைகள்
திறன் ஒப்பந்த நிரலகங்களுக்குச் செல்வதற்கு முன், திறன் ஒப்பந்தத்தின் கட்டமைப்பைப் பற்றி நன்கு புரிந்துகொள்வது நல்லது. நீங்கள் இன்னும் அவ்வாறு செய்யவில்லை என்றால், திறன் ஒப்பந்த உடற்கூறியல் பகுதிக்குச் செல்லவும்.
நிரலகத்தில் என்ன இருக்கிறது
திறன் ஒப்பந்த நிரலகங்களில் நீங்கள் வழக்கமாக இரண்டு வகையான கட்டுமானத் தொகுதிகளைக் காணலாம்: உங்கள் ஒப்பந்தங்களில் நீங்கள் சேர்க்கக்கூடிய மீண்டும் பயன்படுத்தக்கூடிய நடத்தைகள் மற்றும் பல்வேறு தரநிலைகளின் செயலாக்கங்கள்.
நடத்தைகள்
திறன் ஒப்பந்தங்களை எழுதும்போது, ஒரு ஒப்பந்தத்தில் பாதுகாக்கப்பட்ட செயல்பாடுகளைச் செய்ய ஒரு நிர்வாகி (admin) முகவரியை ஒதுக்குவது அல்லது எதிர்பாராத சிக்கல் ஏற்பட்டால் அவசரகால இடைநிறுத்த (pause) பொத்தானைச் சேர்ப்பது போன்ற ஒத்த வடிவங்களை நீங்கள் மீண்டும் மீண்டும் எழுதுவதற்கான வாய்ப்புகள் அதிகம்.
திறன் ஒப்பந்த நிரலகங்கள் வழக்கமாக இந்த நடத்தைகளின் மீண்டும் பயன்படுத்தக்கூடிய செயலாக்கங்களை நிரலகங்களாக (புதிய தாவலில் திறக்கப்படும்) அல்லது Solidity-இல் மரபுரிமை (inheritance) (புதிய தாவலில் திறக்கப்படும்) வழியாக வழங்குகின்றன.
உதாரணமாக, பின்வருவது ஓப்பன்செப்பெலின் ஒப்பந்தங்கள் நிரலகத்திலிருந்து (OpenZeppelin Contracts library) (புதிய தாவலில் திறக்கப்படும்) பெறப்பட்ட Ownable ஒப்பந்தத்தின் (புதிய தாவலில் திறக்கப்படும்) எளிமைப்படுத்தப்பட்ட பதிப்பாகும், இது ஒரு முகவரியை ஒப்பந்தத்தின் உரிமையாளராக நியமிக்கிறது, மேலும் அந்த உரிமையாளருக்கு மட்டுமே ஒரு முறைக்கான அணுகலைக் கட்டுப்படுத்துவதற்கான மாற்றியை (modifier) வழங்குகிறது.
contract Ownable {
address public owner;
constructor() internal {
owner = msg.sender;
}
modifier onlyOwner() {
require(owner == msg.sender, "Ownable: caller is not the owner");
_;
}
}
உங்கள் ஒப்பந்தத்தில் இது போன்ற ஒரு கட்டுமானத் தொகுதியைப் பயன்படுத்த, நீங்கள் முதலில் அதை இறக்குமதி செய்ய வேண்டும், பின்னர் அதை உங்கள் சொந்த ஒப்பந்தங்களில் நீட்டிக்க வேண்டும். இது உங்கள் சொந்த செயல்பாடுகளைப் பாதுகாக்க அடிப்படை Ownable ஒப்பந்தத்தால் வழங்கப்பட்ட மாற்றியைப் பயன்படுத்த உங்களை அனுமதிக்கும்.
import ".../Ownable.sol"; // இறக்குமதி செய்யப்பட்ட நிரலகத்திற்கான பாதை
contract MyContract is Ownable {
// பின்வரும் செயல்பாட்டை உரிமையாளரால் மட்டுமே அழைக்க முடியும்
function secured() onlyOwner public {
msg.sender.transfer(1 ether);
}
}
மற்றொரு பிரபலமான உதாரணம் SafeMath (புதிய தாவலில் திறக்கப்படும்) அல்லது DsMath (புதிய தாவலில் திறக்கப்படும்) ஆகும். இவை (அடிப்படை ஒப்பந்தங்களுக்கு மாறாக) அளவுமீறல் (overflow) சரிபார்ப்புகளுடன் எண்கணித செயல்பாடுகளை வழங்கும் நிரலகங்கள் ஆகும், இவை மொழியால் வழங்கப்படுவதில்லை. பேரழிவு விளைவுகளை ஏற்படுத்தக்கூடிய அளவுமீறல்களிலிருந்து உங்கள் ஒப்பந்தத்தைப் பாதுகாக்க, சொந்த எண்கணித செயல்பாடுகளுக்குப் பதிலாக இந்த நிரலகங்களில் ஒன்றைப் பயன்படுத்துவது ஒரு நல்ல நடைமுறையாகும்!
தரநிலைகள்
ஒருங்கிணைக்கக்கூடிய தன்மை மற்றும் பரிமாற்று இயங்குதன்மை ஆகியவற்றை எளிதாக்க, எத்திரியம் சமூகம் ERC-களின் வடிவத்தில் பல தரநிலைகளை வரையறுத்துள்ளது. தரநிலைகள் பிரிவில் அவற்றைப் பற்றி நீங்கள் மேலும் படிக்கலாம்.
உங்கள் ஒப்பந்தங்களின் ஒரு பகுதியாக ஒரு ERC-ஐச் சேர்க்கும்போது, உங்களுடைய சொந்த செயலாக்கத்தை உருவாக்க முயற்சிப்பதை விட நிலையான செயலாக்கங்களைத் தேடுவது நல்லது. பல திறன் ஒப்பந்த நிரலகங்கள் மிகவும் பிரபலமான ERC-களுக்கான செயலாக்கங்களை உள்ளடக்கியுள்ளன. எடுத்துக்காட்டாக, எங்கும் காணக்கூடிய ERC-20 பரிமாற்றத்தக்க வில்லை தரநிலையை HQ20 (புதிய தாவலில் திறக்கப்படும்), DappSys (புதிய தாவலில் திறக்கப்படும்) மற்றும் ஓப்பன்செப்பெலின் (புதிய தாவலில் திறக்கப்படும்) ஆகியவற்றில் காணலாம். கூடுதலாக, சில ERC-கள் ERC-இன் ஒரு பகுதியாகவே நியமனச் செயலாக்கங்களையும் (canonical implementations) வழங்குகின்றன.
சில ERC-கள் தனித்தனி தரநிலைகள் அல்ல, மாறாக மற்ற ERC-களின் கூடுதல்களாகும் என்பதைக் குறிப்பிடுவது மதிப்பு. எடுத்துக்காட்டாக, ERC-2612 (புதிய தாவலில் திறக்கப்படும்) அதன் பயன்பாட்டினை மேம்படுத்துவதற்காக ERC-20-க்கு ஒரு நீட்டிப்பைச் சேர்க்கிறது.
ஒரு நிரலகத்தை எவ்வாறு சேர்ப்பது
உங்கள் திட்டத்தில் ஒரு நிரலகத்தை எவ்வாறு சேர்ப்பது என்பது குறித்த குறிப்பிட்ட வழிமுறைகளுக்கு, நீங்கள் சேர்க்கும் நிரலகத்தின் ஆவணங்களை எப்போதும் பார்க்கவும். பல Solidity ஒப்பந்த நிரலகங்கள் npm ஐப் பயன்படுத்தி தொகுக்கப்பட்டுள்ளன, எனவே நீங்கள் அவற்றை npm install செய்யலாம். ஒப்பந்தங்களை தொகுப்பதற்கான (compiling) பெரும்பாலான கருவிகள் திறன் ஒப்பந்த நிரலகங்களுக்காக உங்கள் node_modules ஐப் பார்க்கும், எனவே நீங்கள் பின்வருவனவற்றைச் செய்யலாம்:
// இது உங்கள் node_modules இலிருந்து @openzeppelin/contracts நிரலகத்தை ஏற்றும்
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
contract MyNFT is ERC721 {
constructor() ERC721("MyNFT", "MNFT") public { }
}
நீங்கள் பயன்படுத்தும் முறையைப் பொருட்படுத்தாமல், ஒரு நிரலகத்தைச் சேர்க்கும்போது, எப்போதும் மொழி பதிப்பைக் கவனத்தில் கொள்ளுங்கள். எடுத்துக்காட்டாக, நீங்கள் உங்கள் ஒப்பந்தங்களை Solidity 0.5-இல் எழுதுகிறீர்கள் என்றால், Solidity 0.6-க்கான நிரலகத்தைப் பயன்படுத்த முடியாது.
எப்போது பயன்படுத்த வேண்டும்
உங்கள் திட்டத்திற்கு ஒரு திறன் ஒப்பந்த நிரலகத்தைப் பயன்படுத்துவது பல நன்மைகளைக் கொண்டுள்ளது. முதலாவதாக, அவற்றை நீங்களே குறியிட வேண்டியதற்குப் பதிலாக, உங்கள் கணினியில் நீங்கள் சேர்க்கக்கூடிய பயன்படுத்தத் தயாராக உள்ள கட்டுமானத் தொகுதிகளை வழங்குவதன் மூலம் இது உங்கள் நேரத்தை மிச்சப்படுத்துகிறது.
பாதுகாப்பும் ஒரு முக்கிய நன்மையாகும். திறந்த மூல திறன் ஒப்பந்த நிரலகங்கள் பெரும்பாலும் கடுமையாக ஆராயப்படுகின்றன. பல திட்டங்கள் அவற்றைச் சார்ந்திருப்பதால், அவற்றை நிலையான மதிப்பாய்வில் வைத்திருக்க சமூகத்தால் வலுவான ஊக்கமளிக்கப்படுகிறது. மீண்டும் பயன்படுத்தக்கூடிய ஒப்பந்த நிரலகங்களை விட பயன்பாட்டுக் குறியீட்டில் பிழைகளைக் கண்டறிவது மிகவும் பொதுவானது. சில நிரலகங்கள் கூடுதல் பாதுகாப்பிற்காக வெளிப்புற தணிக்கைகளுக்கும் (external audits) (புதிய தாவலில் திறக்கப்படும்) உட்படுத்தப்படுகின்றன.
இருப்பினும், திறன் ஒப்பந்த நிரலகங்களைப் பயன்படுத்துவது உங்களுக்குப் பரிச்சயமில்லாத குறியீட்டை உங்கள் திட்டத்தில் சேர்க்கும் அபாயத்தைக் கொண்டுள்ளது. ஒரு ஒப்பந்தத்தை இறக்குமதி செய்து அதை நேரடியாக உங்கள் திட்டத்தில் சேர்ப்பது தூண்டுதலாக இருக்கும், ஆனால் அந்த ஒப்பந்தம் என்ன செய்கிறது என்பதைப் பற்றிய நல்ல புரிதல் இல்லாமல், எதிர்பாராத நடத்தை காரணமாக உங்கள் கணினியில் கவனக்குறைவாக ஒரு சிக்கலை நீங்கள் அறிமுகப்படுத்தலாம். நீங்கள் இறக்குமதி செய்யும் குறியீட்டின் ஆவணங்களை எப்போதும் படிக்க உறுதிசெய்து கொள்ளுங்கள், பின்னர் அதை உங்கள் திட்டத்தின் ஒரு பகுதியாக மாற்றுவதற்கு முன்பு குறியீட்டையே மதிப்பாய்வு செய்யவும்!
இறுதியாக, ஒரு நிரலகத்தைச் சேர்க்கலாமா என்று முடிவெடுக்கும்போது, அதன் ஒட்டுமொத்த பயன்பாட்டைக் கவனியுங்கள். பரவலாக ஏற்றுக்கொள்ளப்பட்ட ஒன்று, ஒரு பெரிய சமூகத்தைக் கொண்டிருப்பதன் நன்மைகளையும், சிக்கல்களுக்காக அதைப் பார்க்கும் அதிக கண்களையும் கொண்டுள்ளது. திறன் ஒப்பந்தங்களுடன் உருவாக்கும்போது பாதுகாப்பு உங்கள் முதன்மை கவனமாக இருக்க வேண்டும்!
தொடர்புடைய கருவிகள்
ஓப்பன்செப்பெலின் ஒப்பந்தங்கள் (OpenZeppelin Contracts) - பாதுகாப்பான திறன் ஒப்பந்த மேம்பாட்டிற்கான மிகவும் பிரபலமான நிரலகம்.
- ஆவணங்கள் (புதிய தாவலில் திறக்கப்படும்)
- GitHub (புதிய தாவலில் திறக்கப்படும்)
- சமூக மன்றம் (புதிய தாவலில் திறக்கப்படும்)
DappSys - திறன் ஒப்பந்தங்களுக்கான பாதுகாப்பான, எளிமையான, நெகிழ்வான கட்டுமானத் தொகுதிகள்.
HQ20 - நிஜ உலகத்திற்கான முழு அம்சமான விநியோகிக்கப்பட்ட பயன்பாடுகளை உருவாக்க உங்களுக்கு உதவ ஒப்பந்தங்கள், நிரலகங்கள் மற்றும் எடுத்துக்காட்டுகளைக் கொண்ட ஒரு Solidity திட்டம்.
thirdweb Solidity SDK - தனிப்பயன் திறன் ஒப்பந்தங்களை திறமையாக உருவாக்கத் தேவையான கருவிகளை வழங்குகிறது
தொடர்புடைய பயிற்சிகள்
- எத்திரியம் மேம்பாட்டாளர்களுக்கான பாதுகாப்புக் கருத்தாய்வுகள் – நிரலகப் பயன்பாடு உட்பட, திறன் ஒப்பந்தங்களை உருவாக்கும்போது பாதுகாப்புக் கருத்தாய்வுகள் குறித்த ஒரு பயிற்சி.
- ERC-20 வில்லை திறன் ஒப்பந்தத்தைப் புரிந்துகொள்ளுதல் - பல நிரலகங்களால் வழங்கப்படும் ERC-20 தரநிலை குறித்த பயிற்சி.
மேலும் படிக்க
உங்களுக்கு உதவிய சமூக வளம் பற்றித் தெரியுமா? இந்தப் பக்கத்தைத் திருத்தி அதைச் சேர்க்கவும்!