मुख्य सामग्री पर जाएँ

इवेंट्स के साथ स्मार्ट अनुबंधों से डेटा लॉगिंग

स्मार्ट अनुबंध
Remix
Solidity
इवेंट्स
माध्यमिक
jdourlens
3 अप्रैल 2020
2 मिनट का पठन

सॉलिडिटी में, इवेंट्स ऐसे सिग्नल होते हैं जिन्हें स्मार्ट अनुबंध फायर कर सकते हैं। डैप्स, या एथेरियम JSON-RPC API से जुड़ी कोई भी चीज़, इन इवेंट्स को सुन सकती है और तदनुसार कार्य कर सकती है। एक इवेंट को अनुक्रमित भी किया जा सकता है ताकि इवेंट हिस्ट्री बाद में खोजने योग्य हो।

घटनाएँ

इस लेख को लिखने के समय एथेरियम ब्लॉकचेन पर सबसे आम इवेंट Transfer इवेंट है, जो किसी के द्वारा टोकन ट्रांसफर करने पर ERC20 टोकन द्वारा उत्सर्जित किया जाता है।

1event Transfer(address indexed from, address indexed to, uint256 value);

इवेंट सिग्नेचर अनुबंध कोड के अंदर घोषित किया गया है और इसे emit कीवर्ड के साथ उत्सर्जित किया जा सकता है। उदाहरण के लिए, ट्रांसफर इवेंट लॉग करता है कि ट्रांसफर किसने भेजा (from), किसे भेजा (to), और कितने टोकन ट्रांसफर किए गए (value)।

अगर हम अपने Counter स्मार्ट अनुबंध पर वापस जाएं और हर बार मान बदलने पर लॉग करने का निर्णय लें। चूंकि यह अनुबंध डिप्लॉय करने के लिए नहीं है, बल्कि इसे विस्तारित करके एक और अनुबंध बनाने के लिए एक आधार के रूप में काम करने के लिए है: इसे एक एब्स्ट्रेक्ट अनुबंध कहा जाता है। हमारे काउंटर उदाहरण के मामले में, यह इस तरह दिखेगा:

1pragma solidity 0.5.17;
2
3contract Counter {
4
5 event ValueChanged(uint oldValue, uint256 newValue);
6
7 // गणनाओं की संख्या रखने के लिए अहस्ताक्षरित पूर्णांक प्रकार का निजी चर
8 uint256 private count = 0;
9
10 // हमारे काउंटर को बढ़ाने वाला फ़ंक्शन
11 function increment() public {
12 count += 1;
13 emit ValueChanged(count - 1, count);
14 }
15
16 // गणना मान प्राप्त करने के लिए गेटर
17 function getCount() public view returns (uint256) {
18 return count;
19 }
20
21}
सभी दिखाएँ

ध्यान दें कि:

  • पंक्ति 5: हम अपने इवेंट की घोषणा करते हैं और उसमें क्या है—पुराना मान और नया मान।

  • पंक्ति 13: जब हम अपने काउंट चर को बढ़ाते हैं, तो हम इवेंट उत्सर्जित करते हैं।

यदि हम अब अनुबंध डिप्लॉय करते हैं और इंक्रीमेंट फ़ंक्शन को कॉल करते हैं, तो हम देखेंगे कि logs नामक ऐरे के अंदर नए लेनदेन पर क्लिक करने पर रीमिक्स इसे स्वचालित रूप से प्रदर्शित करेगा।

रीमिक्स स्क्रीनशॉट

लॉग आपके स्मार्ट अनुबंधों को डीबग करने के लिए वास्तव में उपयोगी हैं, लेकिन यदि आप विभिन्न लोगों द्वारा उपयोग किए जाने वाले एप्लिकेशन बनाते हैं, तो वे महत्वपूर्ण भी हैं और वे आपके स्मार्ट अनुबंध के उपयोग को ट्रैक करने और समझने के लिए एनालिटिक्स बनाना आसान बनाते हैं। लेनदेन द्वारा उत्पन्न लॉग लोकप्रिय ब्लॉक खोजकर्ताओं में प्रदर्शित होते हैं और आप उनका उपयोग, उदाहरण के लिए, विशिष्ट इवेंट्स सुनने और उनके होने पर कार्रवाई करने के लिए ऑफ-चेन स्क्रिप्ट बनाने के लिए भी कर सकते हैं।

पेज का अंतिम अपडेट: 12 फ़रवरी 2025

क्या यह ट्यूटोरियल सहायक था?