समय पढ़ें: 4 मिनट
यह मार्गदर्शिका आपको परेशान करने वाले उस खतरनाक बग और उन्हें सुधारने के टूल ढूंढने में मदद कर सकती है।
किसी भी सॉफ़्टवेयर विकास चक्र के लिए डिबगिंग महत्वपूर्ण है; मनुष्य हमेशा गलतियाँ करते हैं। इसीलिए हम अपराजेय हैं; हम गलतियाँ करते हैं और उनसे सीखते हैं। डिबगिंग यह पता लगाने की एक प्रक्रिया है कि हमारा कोड कहां पिछड़ रहा है, उसे ठीक करना और उस त्रुटि के बारे में सीखना ताकि उसे दोहराया न जाए।
ब्लॉकचेन अनुप्रयोगों के निर्माण के लिए स्मार्ट अनुबंध विकास महत्वपूर्ण है। लेकिन किसी भी अन्य सॉफ़्टवेयर विकास चक्र की तरह, स्मार्ट अनुबंधों को डीबग करना कभी-कभी चुनौतीपूर्ण हो सकता है, और चूंकि यहां हम अक्सर बड़ी मात्रा में धन का सौदा करते हैं, इसलिए हम कोई भी मौका नहीं छोड़ सकते। हमें स्मार्ट कॉन्ट्रैक्ट लिखने में निपुण होना होगा और डिबगिंग में निपुण होना होगा। इसीलिए हम यह ब्लॉग लेकर आए हैं ताकि आप डिबगिंग के बारे में सबसे अच्छे से सीख सकें।
कुछ भी ठीक करने से पहले, हमें समस्या को जानना होगा, तो आइए स्मार्ट अनुबंध विकास में विभिन्न प्रकार के बग की पहचान करके शुरुआत करें।
आम त्रुटियों
इस अनुभाग में, हम स्मार्ट अनुबंध डेवलपर्स के सामने नियमित रूप से आने वाले विभिन्न प्रकार के बग का पता लगाएंगे।
- वक्य रचना त्रुटि:- इस त्रुटि को ठीक करना आसान है। ऐसा तब होता है जब कोई डेवलपर कोई कोड गलती करता है जो कंप्यूटर को इसे समझने से रोकता है, जैसे अर्धविराम गायब होना।
- तार्किक त्रुटि:- इस प्रकार की त्रुटि का पता लगाना कभी-कभी कठिन हो सकता है। यह निष्पादन को नहीं रोकता है, लेकिन प्रोग्राम की कार्यक्षमता बदल जाती है। यह प्रोग्राम अप्रत्याशित रूप से एक स्मार्ट अनुबंध की तरह व्यवहार करता है जो एक खाते से दूसरे खाते में पैसे भेजते समय गलत पते पर पैसे स्थानांतरित करता है।
- रनटाइम त्रुटि:- इन त्रुटियों का पूर्वानुमान लगाना कठिन है। वे अप्रत्याशित समय और अप्रत्याशित स्थानों पर आते हैं। यह स्मार्ट अनुबंधों के निष्पादन के दौरान होता है और अकुशल अपवाद प्रबंधन के कारण होता है। उदाहरण के लिए, यह तब हो सकता है जब कोई अनुबंध अप्रत्याशित इनपुट को संभालने में विफल रहता है या अंतर्निहित ब्लॉकचेन द्वारा निषिद्ध ऑपरेशन को अंजाम देने का प्रयास करता है। उदाहरण के लिए, एक अनुबंध अनुमत पैरामीटर से अधिक धन हस्तांतरित करने का प्रयास कर रहा है।
- निष्पादन से त्रुटियाँ वापस आ गईं:- ऐसा तब होता है जब उपयोगकर्ता कोई नाजायज अनुरोध करता है जो स्मार्ट अनुबंध के तर्क के विरुद्ध है तो अनुरोध रद्द कर दिया जाता है और वापस कर दिया जाता है। ऐसा इसलिए होता है क्योंकि कभी-कभी स्मार्ट अनुबंधों को लेनदेन को संसाधित करने के लिए कुछ आवश्यकताओं को पूरा करने की आवश्यकता होती है। फिर भी, उपयोगकर्ता आवश्यकताओं को पूरा किए बिना लेनदेन को आगे बढ़ाता है, और फिर लेनदेन को आगे नहीं बढ़ाया जाता है और वापस नहीं किया जाता है। उदाहरण के लिए, एक उपयोगकर्ता $100 स्थानांतरित करने का प्रयास कर रहा है लेकिन उसके पास $50 शेष है।
- स्टैक ओवरफ़्लो:- संचालन को निष्पादित करने के लिए संसाधनों पर गैस शुल्क लगता है। कार्य जितना भारी होगा, लागत उतनी ही अधिक होगी। कोडिंग में कुछ भारी तंत्र लूप और हैं
पुनरावर्ती कॉल<!– wp:paragraph –>रिकर्सिव कॉल एक ऐसी स्थिति है जो खुद को संदर्भित कर सकती है और उन्हें एक लूप में बार-बार कॉल कर सकती है। पुनरावर्ती फ़ंक्शन बेस केस (if) और इंडक्शन केस (else) का उपयोग करता है। कोड में पुनरावर्ती कॉलों का शोषण करके पुन: प्रवेश के हमले किए जाते हैं। <br/><!– /wp:paragraph –>
” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]">रिकर्सिव कॉल्स। स्टैक ओवरफ्लो का संबंध इससे है
पुनरावर्ती कॉल<!– wp:paragraph –>रिकर्सिव कॉल एक ऐसी स्थिति है जो खुद को संदर्भित कर सकती है और उन्हें एक लूप में बार-बार कॉल कर सकती है। पुनरावर्ती फ़ंक्शन बेस केस (if) और इंडक्शन केस (else) का उपयोग करता है। कोड में पुनरावर्ती कॉलों का शोषण करके पुन: प्रवेश के हमले किए जाते हैं। <br/><!– /wp:paragraph –>” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]">रिकर्सिव कॉल्स।
पुनरावर्ती कॉल<!– wp:paragraph –>रिकर्सिव कॉल एक ऐसी स्थिति है जो खुद को संदर्भित कर सकती है और उन्हें एक लूप में बार-बार कॉल कर सकती है। पुनरावर्ती फ़ंक्शन बेस केस (if) और इंडक्शन केस (else) का उपयोग करता है। कोड में पुनरावर्ती कॉलों का शोषण करके पुन: प्रवेश के हमले किए जाते हैं। <br/><!– /wp:paragraph –>” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]">रिकर्सिव कॉल एक ही फ़ंक्शन के भीतर अलग-अलग इनपुट के साथ एक फ़ंक्शन को इनवॉइस करने की एक विधि है। गन्ने के रस की मशीन के रूप में एक आवर्ती कार्य के बारे में सोच सकते हैं। मशीन एक फंक्शन की तरह व्यवहार करती है और गन्ना इनपुट की तरह। मशीन से गन्ने के प्रत्येक भाग का मतलब एक फ़ंक्शन कॉल है। एक बार के बाद गन्ना दोबारा मशीन के नीचे चला जाता है और यही प्रक्रिया दोहराई जाती रहती है. पुनरावृत्ति यही है. लेकिन चूँकि हम गैस की लागत और ईवीएम संसाधनों में कटौती करना चाहते हैं, एथेरियम पुनरावृत्ति कॉल को 1024 बार तक सीमित कर देता है। जब आप किसी फ़ंक्शन को 1025वीं बार कॉल करते हैं, तो इसका परिणाम स्टैक ओवरफ़्लो होता है।
- जंप त्रुटि:- जब आप किसी ऐसे फ़ंक्शन को कॉल करने का प्रयास करते हैं जो मौजूद नहीं है या असेंबली भाषा का उपयोग करते हैं और झूठी मेमोरी को इंगित करते हैं, तो इसके परिणामस्वरूप त्रुटि होती है। ऐसा तब भी हो सकता है जब आप किसी अन्य अनुबंध के फ़ंक्शन को कॉल करते हैं, लेकिन वह फ़ंक्शन मौजूद नहीं है। इस प्रकार की त्रुटियों को JUMP त्रुटियाँ कहा जाता है।
ये कुछ सामान्य स्मार्ट अनुबंध त्रुटियाँ थीं जिनका डेवलपर्स को सामना करना पड़ता है; त्रुटियों का पता लगाना और समझना कभी-कभी कठिन हो सकता है। त्रुटियों को ढूंढने और उन्हें ठीक करने का प्रयास करने के लिए हम विभिन्न उपकरणों की मदद लेते हैं। आइए हम अगले भाग में एक-एक करके उनके बारे में जानें।
चार उपयोगी डिबगिंग उपकरण
इस अनुभाग में, हम दुनिया भर के अधिकांश अनुभवी डेवलपर्स द्वारा बग की पहचान करने और उन्हें हल करने के लिए बड़े पैमाने पर उपयोग किए जाने वाले टूल के बारे में जानेंगे। चल दर।
hardhat
विभिन्न मापदंडों पर स्मार्ट अनुबंधों के परीक्षण के लिए इस उपकरण का व्यापक रूप से उपयोग और स्वीकार किया जाता है। यह एथेरियम के लिए एक ओपन-सोर्स विकास वातावरण प्रदान करता है। इसमें स्मार्ट अनुबंधों के विकास, परीक्षण और तैनाती के लिए उपकरण शामिल हैं। इसका अंतर्निर्मित डिबगर दुनिया भर के कई डेवलपर्स के लिए सहायक है। यह परीक्षण चरण में भी एक बड़ी भूमिका निभाता है।
कवक
यह एथेरियम के लिए एक लोकप्रिय विकास ढांचा है। हार्डहैट की तरह, इसमें स्मार्ट कॉन्ट्रैक्ट के विकास, परीक्षण और तैनाती के लिए उपकरण शामिल हैं और इसका निर्माण भी किया गया है ट्रफल डिबगर, जो डेवलपर्स को परीक्षण चरण में सहज विकास अनुभव में मदद करता है।
रीमिक्स
यह वह है जो लगभग हर डेवलपर के सामने तब आया जब उन्होंने पहली बार वेब3 में अपनी यात्रा शुरू की थी। यह सॉलिडिटी के लिए एक ऑनलाइन कोड संपादक है, इसलिए विकास शुरू करने के लिए किसी ऑफ़लाइन इंस्टॉलेशन की आवश्यकता नहीं है। इसकी अंतर्निहित डिबगिंग सुविधा डेवलपर्स को कोड को स्कैन करने और परिवर्तनीय मुद्दों का निरीक्षण करने देती है। और यह सब ऑनलाइन है, ऑफ़लाइन टूल की कोई आवश्यकता नहीं है।
Etherscan
यह एथेरियम के लिए व्यापक रूप से विश्वसनीय और लोकप्रिय ब्लॉक एक्सप्लोरर है। यह डेवलपर्स को एथेरियम ब्लॉकचेन पर तैनात स्मार्ट अनुबंधों का निरीक्षण और डिबग करने की अनुमति देता है। इसका उपयोग करके आप किसी भी पते या अनुबंध के लेनदेन और गतिविधि को ट्रैक कर सकते हैं। इससे आपको यह पहचानने में मदद मिलती है कि यदि आपका स्मार्ट अनुबंध किसी ऑन-चेन समस्या का सामना कर रहा है तो समस्या कहां होगी।
निष्कर्ष
स्मार्ट अनुबंधों को डिबग करना कठिन और कभी-कभी निराशाजनक होता है, लेकिन यह सुरक्षा और परीक्षण से संबंधित एक महत्वपूर्ण चरण है। यह वह जगह है जहां कमजोरियों के हैकर्स के सामने आने की सबसे अधिक संभावना है और इससे प्रोटोकॉल पूरी तरह विफल हो सकता है। ऐसी परिस्थितियों से खुद को बचाने के लिए ऑडिट कराने की अत्यधिक सलाह दी जाती है।
क्विलऑडिट्स लंबे समय से इस क्षेत्र में है और उसके पास एक विशेषज्ञ टीम है जो हर संभावित भेद्यता को संभाल सकती है और आपके प्रोटोकॉल को सुरक्षित करने में आपकी मदद कर सकती है। परीक्षण, इसके महत्व और डिबगिंग के साथ इसके संबंध के संबंध में विस्तृत ब्लॉग पढ़ें, जो आपको हर पहलू को समझने में मदद करेगा https://blog.quillhash.com/2023/02/16/testing-and-formal-verification/. हमारी वेबसाइट पर अवश्य जाएँ और अपने प्रोजेक्ट का ऑडिट करवाएँ!
8 दृश्य
- एसईओ संचालित सामग्री और पीआर वितरण। आज ही प्रवर्धित हो जाओ।
- प्लेटोब्लॉकचैन। Web3 मेटावर्स इंटेलिजेंस। ज्ञान प्रवर्धित। यहां पहुंचें।
- स्रोत: https://blog.quillhash.com/2023/03/03/4-most-useful-smart-contract-debugging-tools/
- a
- About
- स्वीकृत
- लेखा
- के पार
- गतिविधि
- पता
- बाद
- के खिलाफ
- सब
- की अनुमति देता है
- हमेशा
- राशि
- और
- अन्य
- अनुप्रयोगों
- चारों ओर
- पहलू
- विधानसभा
- आक्रमण
- प्रयास
- आडिट
- शेष
- आधार
- क्योंकि
- BEST
- खंड
- blockchain
- ब्लॉकचेन एप्लिकेशन
- ब्लॉग
- दोष
- कीड़े
- इमारत
- बनाया गया
- में निर्मित
- कॉल
- बुलाया
- कॉल
- रद्द
- नही सकता
- ले जाना
- मामला
- कुछ
- चुनौतीपूर्ण
- संयोग
- हालत
- कोड
- कोडन
- कैसे
- सामान्य
- पूरा
- कंप्यूटर
- शर्त
- अनुबंध
- ठेके
- लागत
- लागत
- महत्वपूर्ण
- कट गया
- चक्र
- सौदा
- तैनात
- तैनाती
- विस्तृत
- डेवलपर
- डेवलपर्स
- विकासशील
- विकास
- विभिन्न
- मुश्किल
- दौरान
- से प्रत्येक
- आसान
- संपादक
- सामना
- वातावरण
- त्रुटि
- त्रुटियाँ
- ethereum
- एथेरियम ब्लॉकचेन
- और भी
- प्रत्येक
- ईवीएम
- उदाहरण
- अपवाद
- को क्रियान्वित
- निष्पादन
- अनुभव
- अनुभवी
- विशेषज्ञ
- का पता लगाने
- एक्सप्लोरर
- का सामना करना पड़
- विफल रहता है
- विफलता
- Feature
- शुल्क
- खोज
- प्रथम
- फिक्स
- आगे
- ढांचा
- से
- निराशा होती
- समारोह
- कार्यक्षमता
- गैस
- मिल
- Go
- चला जाता है
- गाइड
- हैकर्स
- संभालना
- हैंडलिंग
- होना
- हो जाता
- कठिन
- भारी
- mmmmm
- मदद
- सहायक
- मदद करता है
- यहाँ उत्पन्न करें
- अत्यधिक
- HTTPS
- विशाल
- मनुष्य
- पहचान करना
- पहचान
- महत्व
- in
- शामिल
- अप्रभावी
- निवेश
- मुद्दा
- मुद्दों
- IT
- खुद
- यात्रा
- छलांग
- जानना
- ठंड
- भाषा
- नेतृत्व
- जानें
- सीख रहा हूँ
- छोड़ना
- चलें
- संभावित
- सीमाएं
- लंबा
- लंबे समय तक
- मशीन
- बनाना
- बनाता है
- बहुत
- साधन
- याद
- तरीका
- लापता
- गलती
- धन
- अधिक
- अधिकांश
- आवश्यकता
- जरूरत
- अगला
- ऑफ़लाइन
- ऑन-चैन
- ONE
- ऑनलाइन
- खुला स्रोत
- आपरेशन
- संचालन
- अन्य
- प्राचल
- पैरामीटर
- उत्तम
- चरण
- गंतव्य
- प्लेटो
- प्लेटो डेटा इंटेलिजेंस
- प्लेटोडाटा
- बिन्दु
- लोकप्रिय
- संभव
- भविष्यवाणी करना
- वर्तमान
- को रोकने के
- प्राप्ति
- प्रक्रिया
- कार्यक्रम
- परियोजना
- प्रोटोकॉल
- प्रदान करता है
- क्विलश
- पढ़ना
- पुनरावृत्ति
- आवर्ती
- पुनरावर्ती
- के बारे में
- नियमित तौर पर
- सम्बंधित
- संबंध
- दोहराया गया
- का अनुरोध
- की आवश्यकता होती है
- आवश्यकताएँ
- उपयुक्त संसाधन चुनें
- परिणाम
- भूमिका
- रन
- वही
- सहेजें
- स्कैन
- अनुभाग
- सुरक्षित
- सुरक्षा
- भेजना
- स्मार्ट
- स्मार्ट अनुबंध
- स्मार्ट अनुबंध
- So
- सॉफ्टवेयर
- सॉफ्टवेयर विकास
- दृढ़ता
- कुछ
- धुआँरा
- ट्रेनिंग
- शुरू
- फिर भी
- ऐसा
- लेना
- टीम
- परीक्षण
- RSI
- दुनिया
- लेकिन हाल ही
- अपने
- सोचना
- यहाँ
- पहर
- बार
- सेवा मेरे
- भी
- साधन
- उपकरण
- ट्रैक
- ट्रांजेक्शन
- लेनदेन
- स्थानांतरण
- स्थानान्तरण
- परेशान
- विश्वस्त
- प्रकार
- के अंतर्गत
- आधारभूत
- समझना
- समझ
- अप्रत्याशित
- us
- उपयोग
- उपयोगकर्ता
- विभिन्न
- कमजोरियों
- भेद्यता
- Web3
- वेबसाइट
- क्या
- कौन कौन से
- व्यापक रूप से
- मर्जी
- अंदर
- बिना
- विश्व
- दुनिया भर
- होगा
- लिख रहे हैं
- आपका
- स्वयं
- जेफिरनेट