यदि आप एक सॉलिडिटी डेवलपर हैं, तो आप यह सुनकर उत्साहित होंगे कि ट्रफल अब सॉलिडिटी स्मार्ट कॉन्ट्रैक्ट्स में कंसोल लॉगिंग का समर्थन करता है। जबकि Truffle लंबे समय से स्मार्ट कॉन्ट्रैक्ट डेवलपमेंट टूलिंग में अग्रणी रहा है - स्मार्ट कॉन्ट्रैक्ट बनाने, परीक्षण करने और डीबग करने के लिए उपयोग में आसान वातावरण प्रदान करता है - एक सीधे एकीकृत कंसोल.लॉग एक ऐसी सुविधा थी जिसकी अभी भी आवश्यकता थी।
लेकिन और नहीं! डेवलपर्स अब आसानी से संदेश लॉग कर सकते हैं और अपने स्मार्ट अनुबंधों को डिबग कर सकते हैं, सभी परिचित ट्रफल (गनाचे) वातावरण में। आइए देखें कैसे।
कंसोल.लॉग जावास्क्रिप्ट में एक बहुत लोकप्रिय विशेषता है और डेवलपर्स द्वारा व्यापक रूप से लॉगिंग संदेशों को आसानी से आउटपुट करने और सीधे कोड से विवरण निकालने के लिए उपयोग किया जाता है। वेब 3 और स्मार्ट कॉन्ट्रैक्ट डेवलपमेंट के संदर्भ में, कंसोल.लॉग एक समान भूमिका निभाता है, जिससे डेवलपर्स अपने स्मार्ट कॉन्ट्रैक्ट से सॉलिडिटी वैरिएबल और अन्य जानकारी प्रिंट कर सकते हैं।
उदाहरण के लिए, आप अपने स्मार्ट अनुबंध के भीतर एक चर के मान या फ़ंक्शन कॉल के आउटपुट को प्रदर्शित करने के लिए कंसोल.लॉग का उपयोग कर सकते हैं। अपने स्मार्ट अनुबंध को डिबग या परीक्षण करते समय यह अत्यंत उपयोगी हो सकता है।
console.log("Console Logging: The Smart Contract Developer's Best Friend");
कंसोल.लॉग का उपयोग करना काफी सीधा है। सबसे पहले, आपको यह सुनिश्चित करना होगा कि आपके पास अप-टू-डेट ट्रफल संस्करण आपके कंप्यूटर पर चल रहा है। यदि आपको कोई समस्या है, तो हो सकता है कि आप पैकेज को पूरी तरह से अनइंस्टॉल करना चाहें, फिर उसे पुनः इंस्टॉल करें। इस पोस्ट में उपयोग किए गए कमांड के लिए, हम NPM को अपने पैकेज मैनेजर के रूप में उपयोग करेंगे।
$ npm install -g truffle
एक सफल स्थापना के बाद, मेरा सुझाव है कि आप ट्रफल कॉन्फ़िगरेशन फ़ाइल (यानी truffle-config.js ) को निम्नानुसार संशोधित करें:
module.exports = { . . . solidityLog: { displayPrefix: ' :', // defaults to "" preventConsoleLogMigration: true, // defaults to false }
अब आप इसे आजमाने के लिए तैयार हैं! हमेशा की तरह अपने सॉलिडिटी कोड में कॉन्ट्रैक्ट.सोल कॉन्ट्रैक्ट को इम्पोर्ट करें। अब आप कंसोल.लॉग () कमांड का उपयोग करने के लिए तैयार हैं जैसा कि आप जावास्क्रिप्ट में करेंगे।
इसमें स्ट्रिंग प्रतिस्थापन जैसे %s और %f का उपयोग करना शामिल है।
pragma solidity ^0.8.9; import "truffle/console.sol"; contract BookStore { //... function transfer(address to, uint256 amount) external { console.log("Transferring %s tokens to %s", amount, to); require(balances[msg.sender] >= amount, "Not enough tokens"); balances[msg.sender] -= amount; balances[to] += amount; emit Transfer(amount, to, msg.sender); } }
उपरोक्त स्थानांतरण फ़ंक्शन कंसोल.लॉग को कार्रवाई में दिखाता है। " पर्याप्त टोकन नहीं " त्रुटि के साथ विफल होने वाले स्थानांतरण फ़ंक्शन के लिए एक कॉल की कल्पना करें। कंसोल.लॉग लाइन, इस मामले में, कॉल को स्थानांतरित करने का प्रयास कर रहे टोकन की संख्या दिखाएगी। यह डेवलपर को स्थानांतरित किए जा रहे टोकन का पता और राशि देखने की अनुमति देता है। संदेश इस तरह दिखेगा।
... Transferring 10 tokens to 0x377bbcae5327695b32a1784e0e13bedc8e078c9c
इसे डिबग करने का एक बेहतर तरीका यह हो सकता है कि balances[msg.sender]
को कंसोल.लॉग स्टेटमेंट में जोड़ा जाए या इसे एक अलग लाइन पर प्रिंट किया जाए। इस प्रकार, प्रेषक का शेष कंसोल में भी दिखाई देता है। तुम समझ गए!
आप परीक्षण और मेननेट में भी लॉग छोड़ सकते हैं; इस तरह, आपके पास अपने स्मार्ट अनुबंध का पालन करने का एक अच्छा तरीका होगा। और यह उल्लेखनीय है कि निविदा जैसे उपकरण लॉग के स्क्रैपिंग को एकीकृत करेंगे, जो उत्पादन वातावरण में स्मार्ट अनुबंधों को डिबगिंग और परीक्षण करते समय उपयोगी हो सकते हैं।
अंत में, कंसोल लॉगिंग का उपयोग करते समय, उन सभी अच्छे उपयोग नियमों का पालन करना महत्वपूर्ण है जिन्हें आप पहले से जानते हैं, जैसे कि स्पष्ट और वर्णनात्मक लॉग संदेशों का उपयोग करना। इससे आउटपुट को समझना और उत्पन्न होने वाली किसी भी समस्या की पहचान करना आसान हो जाएगा।
जबकि कंसोल लॉगिंग स्मार्ट कॉन्ट्रैक्ट डिबगिंग के लिए एक शक्तिशाली उपकरण है, ध्यान रखें कि Truffle अन्य डिबगिंग टूल भी प्रदान करता है। Truffle में एक शक्तिशाली अंतर्निहित डिबगर सीएलआई उपकरण है जिसका उपयोग स्मार्ट अनुबंध के निष्पादन के माध्यम से कदम उठाने और निष्पादन में विभिन्न बिंदुओं पर चर की स्थिति का निरीक्षण करने के लिए किया जा सकता है। इसके अतिरिक्त, संदेश लॉग करने और स्मार्ट अनुबंध के व्यवहार को ट्रैक करने के लिए ईवेंट एक अच्छा तरीका है।
उस ने कहा, यह ध्यान देने योग्य है कि परिवर्तनीय आउटपुट के रूप में सरल के लिए डीबगर का उपयोग करना अधिक हो सकता है। इसी तरह, इवेंट लॉगिंग तभी काम करती है जब लेन-देन सफल होता है, जो कुछ स्थितियों में एक सीमा हो सकती है।
लब्बोलुआब यह है कि ट्रफल में अन्य डिबगिंग टूल के संयोजन में कंसोल.लॉग फीचर-एक बेहतर डेवलपर अनुभव प्रदान कर सकता है, इसकी सादगी और उपयोग में आसानी के लिए धन्यवाद। यह डेवलपर्स को संदेशों को जल्दी और आसानी से लॉग इन करने और उनके स्मार्ट अनुबंधों के व्यवहार की निगरानी करने की क्षमता देता है, जबकि अन्य डिबगिंग टूल का उपयोग अधिक उन्नत डिबगिंग और समस्या निवारण के लिए किया जा सकता है।
Truffle का नया कंसोल लॉगिंग फीचर स्मार्ट कॉन्ट्रैक्ट डेवलपमेंट के लिए एक मूल्यवान अतिरिक्त है। इसका उपयोग करना आसान है और डिबगिंग और परीक्षण प्रक्रिया को सुव्यवस्थित कर सकता है। संदेशों को लॉग करने और वास्तविक समय में स्मार्ट अनुबंधों के व्यवहार को ट्रैक करने की क्षमता अक्षमताओं और सिरदर्द को कम कर सकती है। आपके टूलबॉक्स में होना एक अच्छा टूल है।