ஸ்மார்ட் ஒப்பந்தங்களில் இருந்து நிகழ்வுகளுடன் தரவைப் பதிவு செய்தல்
Solidity-இல், நிகழ்வுகள் (events) என்பவை ஸ்மார்ட் ஒப்பந்தங்கள் அனுப்பக்கூடிய சமிக்ஞைகள் (signals) ஆகும். Dapp-கள் அல்லது Ethereum JSON-RPC API உடன் இணைக்கப்பட்ட எந்தவொரு பயன்பாடும் இந்த நிகழ்வுகளைக் கவனித்து அதற்கேற்ப செயல்பட முடியும். ஒரு நிகழ்வை அட்டவணைப்படுத்தவும் (indexed) முடியும், இதனால் நிகழ்வு வரலாற்றை பின்னர் தேடலாம்.
நிகழ்வுகள்
இந்தக் கட்டுரையை எழுதும் நேரத்தில் Ethereum பிளாக்செயினில் மிகவும் பொதுவான நிகழ்வு Transfer நிகழ்வாகும், இது யாராவது டோக்கன்களைப் பரிமாற்றம் செய்யும்போது ERC20 டோக்கன்களால் வெளியிடப்படுகிறது.
event Transfer(address indexed from, address indexed to, uint256 value);
நிகழ்வு கையொப்பம் (event signature) ஒப்பந்தக் குறியீட்டிற்குள் அறிவிக்கப்படுகிறது மற்றும் emit முக்கிய சொல்லைக் (keyword) கொண்டு வெளியிடப்படலாம். எடுத்துக்காட்டாக, transfer நிகழ்வு பரிமாற்றத்தை யார் அனுப்பியது (from), யாருக்கு அனுப்பப்பட்டது (to) மற்றும் எவ்வளவு டோக்கன்கள் பரிமாற்றம் செய்யப்பட்டன (value) என்பதைப் பதிவு செய்கிறது.
நமது Counter ஸ்மார்ட் ஒப்பந்தத்திற்குத் திரும்பி, மதிப்பு மாற்றப்படும் ஒவ்வொரு முறையும் பதிவு செய்ய முடிவு செய்தால். இந்த ஒப்பந்தம் பயன்படுத்தப்படுவதற்காக (deployed) அல்லாமல், இதை நீட்டிப்பதன் மூலம் மற்றொரு ஒப்பந்தத்தை உருவாக்குவதற்கான அடிப்படையாகச் செயல்படுவதால்: இது ஒரு சுருக்க ஒப்பந்தம் (abstract contract) என்று அழைக்கப்படுகிறது. நமது counter எடுத்துக்காட்டில், இது இப்படி இருக்கும்:
pragma solidity 0.5.17;
contract Counter {
event ValueChanged(uint oldValue, uint256 newValue);
// எண்ணிக்கையை வைத்திருக்க unsigned int வகையிலான தனிப்பட்ட மாறி
uint256 private count = 0;
// நமது எண்ணியை அதிகரிக்கும் செயற்கூறு
function increment() public {
count += 1;
emit ValueChanged(count - 1, count);
}
// எண்ணிக்கை மதிப்பைப் பெறுவதற்கான கெட்டர்
function getCount() public view returns (uint256) {
return count;
}
}
இதைக் கவனியுங்கள்:
-
வரி 5: நமது நிகழ்வையும் அதில் என்ன உள்ளது என்பதையும், பழைய மதிப்பு மற்றும் புதிய மதிப்பையும் அறிவிக்கிறோம்.
-
வரி 13: நமது count மாறியை (variable) அதிகரிக்கும்போது, நிகழ்வை வெளியிடுகிறோம்.
இப்போது நாம் ஒப்பந்தத்தைப் பயன்படுத்தி (deploy) increment செயல்பாட்டை அழைத்தால், logs என்ற பெயரிலான அணிவரிசைக்குள் (array) உள்ள புதிய பரிவர்த்தனையைக் கிளிக் செய்யும் போது Remix தானாகவே அதைக் காண்பிப்பதை நாம் பார்க்கலாம்.
உங்கள் ஸ்மார்ட் ஒப்பந்தங்களில் உள்ள பிழைகளைத் திருத்துவதற்கு (debugging) பதிவுகள் (Logs) மிகவும் பயனுள்ளதாக இருக்கும், ஆனால் வெவ்வேறு நபர்களால் பயன்படுத்தப்படும் பயன்பாடுகளை நீங்கள் உருவாக்கினால் அவை முக்கியமானவை, மேலும் உங்கள் ஸ்மார்ட் ஒப்பந்தம் எவ்வாறு பயன்படுத்தப்படுகிறது என்பதைக் கண்காணிக்கவும் புரிந்துகொள்ளவும் பகுப்பாய்வுகளை (analytics) மேற்கொள்வதை எளிதாக்குகிறது. பரிவர்த்தனைகளால் உருவாக்கப்படும் பதிவுகள் பிரபலமான பிளாக் எக்ஸ்ப்ளோரர்களில் (block explorers) காட்டப்படும், மேலும் எடுத்துக்காட்டாக குறிப்பிட்ட நிகழ்வுகளைக் கவனிப்பதற்கும் அவை நிகழும்போது நடவடிக்கை எடுப்பதற்கும் ஆஃப்செயின் ஸ்கிரிப்ட்களை (offchain scripts) உருவாக்க அவற்றைப் பயன்படுத்தலாம்.
பக்கம் கடைசியாகப் புதுப்பிக்கப்பட்டது: 3 மார்ச், 2026
