घटनांचा वापर करून स्मार्ट कॉन्ट्रॅक्ट्समधून डेटाची नोंद करणे
Solidity मध्ये, घटना हे स्मार्ट कॉन्ट्रॅक्ट्सद्वारे पाठवले जाणारे सिग्नल्स असतात. विकेंद्रित ॲप्लिकेशन्स (dapps), किंवा इथेरियम जेसॉन-आरपीसी API शी जोडलेले कोणतेही ॲप्लिकेशन, या घटना ऐकू शकतात आणि त्यानुसार कृती करू शकतात. एखादी घटना अनुक्रमित (indexed) देखील केली जाऊ शकते जेणेकरून नंतर घटनांचा इतिहास शोधता येईल.
घटना
हा लेख लिहिताना इथेरियम ब्लॉकचेनवरील सर्वात सामान्य घटना म्हणजे Transfer घटना आहे, जी ERC-20 टोकन्सद्वारे तेव्हा उत्सर्जित (emit) केली जाते जेव्हा कोणीतरी टोकन्सचे हस्तांतरण करते.
event Transfer(address indexed from, address indexed to, uint256 value);
घटनेची स्वाक्षरी कॉन्ट्रॅक्ट कोडच्या आत घोषित केली जाते आणि ती emit कीवर्डसह उत्सर्जित केली जाऊ शकते. उदाहरणार्थ, transfer घटना कोणी हस्तांतरण पाठवले (from), कोणाला पाठवले (to) आणि किती टोकन्स हस्तांतरित केले गेले (value) याची नोंद करते.
जर आपण आपल्या Counter स्मार्ट कॉन्ट्रॅक्टकडे परत गेलो आणि प्रत्येक वेळी मूल्य बदलल्यावर नोंद करण्याचे ठरवले. हे कॉन्ट्रॅक्ट प्रस्थापित करण्यासाठी (deploy) बनवलेले नाही तर ते विस्तारित करून दुसरे कॉन्ट्रॅक्ट तयार करण्यासाठी आधार म्हणून काम करते: याला ॲब्स्ट्रॅक्ट (abstract) कॉन्ट्रॅक्ट म्हणतात. आपल्या 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;
}
}
लक्षात घ्या की:
-
Line 5: आपण आपली घटना आणि त्यात काय समाविष्ट आहे, जुने मूल्य आणि नवीन मूल्य घोषित करतो.
-
Line 13: जेव्हा आपण आपले count व्हेरिएबल वाढवतो, तेव्हा आपण घटना उत्सर्जित करतो.
जर आपण आता कॉन्ट्रॅक्ट प्रस्थापित केले आणि increment फंक्शन कॉल केले, तर आपण पाहू की जर तुम्ही logs नावाच्या ॲरेमधील नवीन व्यवहारावर क्लिक केले तर Remix ते स्वयंचलितपणे प्रदर्शित करेल.
तुमच्या स्मार्ट कॉन्ट्रॅक्ट्सचे डीबगिंग करण्यासाठी नोंदी खरोखर उपयुक्त आहेत परंतु जर तुम्ही वेगवेगळ्या लोकांद्वारे वापरले जाणारे ॲप्लिकेशन्स तयार करत असाल तर त्या देखील महत्त्वाच्या आहेत आणि तुमचे स्मार्ट कॉन्ट्रॅक्ट कसे वापरले जाते याचा मागोवा घेण्यासाठी आणि समजून घेण्यासाठी ॲनालिटिक्स करणे सोपे करतात. व्यवहारांद्वारे व्युत्पन्न केलेल्या नोंदी लोकप्रिय ब्लॉक एक्सप्लोरर्समध्ये प्रदर्शित केल्या जातात आणि उदाहरणार्थ तुम्ही त्यांचा वापर विशिष्ट घटना ऐकण्यासाठी आणि त्या घडल्यावर कृती करण्यासाठी साखळीबाह्य स्क्रिप्ट्स तयार करण्यासाठी देखील करू शकता.
