स्मार्ट अनुबंधों से घटनाओं के साथ डेटा लॉग करना
Solidity में, घटनाएँ ऐसे प्रेषित सिग्नल होते हैं जिन्हें स्मार्ट अनुबंध ट्रिगर कर सकते हैं। विकेंद्रीकृत एप्लिकेशन (dapp), या इथेरियम जेसन-आरपीसी API से जुड़ा कुछ भी, इन घटनाओं को सुन सकता है और उसके अनुसार कार्य कर सकता है। किसी घटना को अनुक्रमित (indexed) भी किया जा सकता है ताकि घटना के इतिहास को बाद में खोजा जा सके।
घटनाएँ
इस लेख को लिखते समय इथेरियम ब्लॉकचेन पर सबसे आम घटना Transfer घटना है जो ERC-20 टोकन द्वारा तब उत्सर्जित (emitted) होती है जब कोई टोकन ट्रांसफर करता है।
event Transfer(address indexed from, address indexed to, uint256 value);
घटना का हस्ताक्षर अनुबंध कोड के अंदर घोषित किया जाता है और इसे emit कीवर्ड के साथ उत्सर्जित किया जा सकता है। उदाहरण के लिए, transfer घटना यह लॉग करती है कि ट्रांसफर किसने भेजा (from), किसे भेजा (to) और कितने टोकन ट्रांसफर किए गए (value) हैं।
यदि हम अपने Counter स्मार्ट अनुबंध पर वापस जाते हैं और हर बार मान (value) बदलने पर लॉग करने का निर्णय लेते हैं। चूंकि यह अनुबंध तैनात करने के लिए नहीं है, बल्कि इसे विस्तारित करके एक और अनुबंध बनाने के लिए आधार के रूप में काम करने के लिए है: इसे एक एब्सट्रैक्ट (abstract) अनुबंध कहा जाता है। हमारे काउंटर उदाहरण के मामले में, यह इस तरह दिखेगा:
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 वेरिएबल को बढ़ाते हैं, तो हम घटना को उत्सर्जित करते हैं।
यदि अब हम अनुबंध को तैनात करते हैं और increment फ़ंक्शन को कॉल करते हैं, तो हम देखेंगे कि यदि आप logs नामक एरे (array) के अंदर नए लेन-देन पर क्लिक करते हैं तो Remix इसे स्वचालित रूप से प्रदर्शित करेगा।
लॉग आपके स्मार्ट अनुबंधों को डीबग करने के लिए वास्तव में उपयोगी होते हैं, लेकिन वे तब भी महत्वपूर्ण होते हैं जब आप विभिन्न लोगों द्वारा उपयोग किए जाने वाले एप्लिकेशन बनाते हैं और यह ट्रैक करने और समझने के लिए एनालिटिक्स बनाना आसान बनाते हैं कि आपके स्मार्ट अनुबंध का उपयोग कैसे किया जाता है। लेन-देन द्वारा उत्पन्न लॉग लोकप्रिय ब्लॉक एक्सप्लोरर में प्रदर्शित होते हैं और उदाहरण के लिए आप उनका उपयोग विशिष्ट घटनाओं को सुनने और उनके घटित होने पर कार्रवाई करने के लिए ऑफचेन स्क्रिप्ट बनाने के लिए भी कर सकते हैं।
पेज का अंतिम अपडेट: 3 मार्च 2026
