स्मार्ट अनुबंधों की पुष्टि करना
पेज का अंतिम अपडेट: 22 अक्टूबर 2025
स्मार्ट अनुबंध को "भरोसेमंद" होने के लिए डिज़ाइन किया गया है, जिसका अर्थ है कि यूज़र्स को अनुबंध के साथ बातचीत करने से पहले तीसरे पक्ष (जैसे, डेवलपर्स और कंपनियों) पर भरोसा नहीं करना चाहिए। विश्वसनीयता के लिए एक आवश्यकता के रूप में, उपयोगकर्ताओं और अन्य डेवलपर्स को स्मार्ट अनुबंध के स्रोत कोड को सत्यापित करने में सक्षम होना चाहिए। स्रोत कोड सत्यापन उपयोगकर्ताओं और डेवलपर्स को आश्वस्त करता है कि प्रकाशित अनुबंध कोड वही कोड है जो एथेरियम ब्लॉकचेन पर अनुबंध पते पर चल रहा है।
"सोर्स कोड सत्यापन" और "औपचारिक सत्यापन" के बीच अंतर करना महत्वपूर्ण है। सोर्स कोड सत्यापन, जिसे नीचे विस्तार से समझाया जाएगा, यह सत्यापित करने को संदर्भित करता है कि एक उच्च-स्तरीय भाषा (जैसे, सॉलिडिटी) में स्मार्ट अनुबंध का दिया गया सोर्स कोड अनुबंध पते पर निष्पादित होने वाले उसी बाइटकोड में कंपाइल होता है। हालांकि, औपचारिक सत्यापन एक स्मार्ट अनुबंध की शुद्धता की पुष्टि करने का वर्णन करता है, जिसका अर्थ है कि अनुबंध अपेक्षित व्यवहार करता है। हालांकि संदर्भ-निर्भर, अनुबंध सत्यापन आमतौर पर स्रोत कोड सत्यापन को संदर्भित करता है।
स्रोत कोड सत्यापन क्या है?
एथेरियम वर्चुअल मशीन (EVM) में किसी स्मार्ट अनुबंध को डिप्लॉय करने से पहले, डेवलपर्स अनुबंध के सोर्स कोड—निर्देशों जो सॉलिडिटी में लिखे या किसी अन्य उच्च-स्तरीय प्रोग्रामिंग भाषा में लिखे होते हैं—को बाइटकोड में कंपाइल करते हैं। चूंकि EVM उच्च-स्तरीय निर्देशों को संकलित नहीं कर सकती, इसलिए EVM में अनुबंध संबंधी तर्क निष्पादित करने के लिए स्रोत कोड को बाइटकोड (यानी निम्न-स्तरीय, मशीन निर्देश) में शामिल करना आवश्यक है।
स्रोत कोड सत्यापन एक स्मार्ट अनुबंध के स्रोत कोड और किसी भी अंतर का पता लगाने के लिए अनुबंध निर्माण के दौरान उपयोग किए जाने वाले संकलित बाइटकोड की तुलना कर रहा है। स्मार्ट अनुबंधों की पुष्टि करना मायने रखता है, क्योंकि विज्ञापित अनुबंध कोड ब्लॉकचेन पर चलने वाले से अलग हो सकता है।
स्मार्ट अनुबंध सत्यापन यह जांचने में सक्षम बनाता है कि मशीन कोड को पढ़े बिना, उच्च-स्तरीय भाषा के माध्यम से एक अनुबंध क्या करता है। फ़ंक्शंस, मान और आमतौर पर चर नाम और टिप्पणियाँ मूल स्रोत कोड के साथ समान रहती हैं जिसे इकट्ठा और डिप्लॉय किया जाता है। इससे कोड पढ़ना बहुत आसान हो जाता है। स्रोत सत्यापन कोड प्रलेखन के लिए भी प्रावधान करता है, ताकि अंतिम उपयोगकर्ताओं को पता चले कि स्मार्ट अनुबंध क्या करने के लिए डिज़ाइन किया गया है।
पूर्ण सत्यापन क्या है? पूर्ण सत्यापन
स्रोत कोड के कुछ भाग हैं जो संकलित बाइटकोड को प्रभावित नहीं करते हैं जैसे टिप्पणियां या चर नाम। इसका मतलब है कि अलग-अलग चर नामों और अलग-अलग टिप्पणियों वाले दो स्रोत कोड दोनों एक ही अनुबंध को सत्यापित करने में सक्षम होंगे। इसके साथ, एक दुर्भावनापूर्ण गतिविधि के ज़रिए धोखा देने वाली टिप्पणियां जोड़ी जा सकती हैं या स्रोत कोड के अंदर भ्रामक चर नाम दे सकता है और अनुबंध को मूल स्रोत कोड से अलग स्रोत कोड के साथ सत्यापित कर सकता है।
सोर्स कोड की सटीकता के लिए क्रिप्टोग्राफ़िक गारंटी के रूप में और कंपाइलेशन जानकारी के फ़िंगरप्रिंट के रूप में काम करने के लिए बाइटकोड में अतिरिक्त डेटा जोड़कर इससे बचना संभव है। आवश्यक जानकारी सॉलिडिटी के अनुबंध मेटाडेटा (opens in a new tab) में पाई जाती है, और इस फ़ाइल का हैश एक अनुबंध के बाइटकोड में जोड़ा जाता है। आप इसे मेटाडेटा प्लेग्राउंड (opens in a new tab) में क्रियान्वित होते देख सकते हैं।
मेटाडेटा फ़ाइल में स्रोत फ़ाइलों और उनके हैश सहित अनुबंध के संकलन के बारे में जानकारी होती है। मतलब, अगर कोई भी संकलन सेटिंग्स या स्रोत फ़ाइलों में से एक बाइट भी बदलती है, तो मेटाडेटा फ़ाइल बदल जाती है। इस वजह से मेटाडेटा फ़ाइल का हैश, जो बाइटकोड में जोड़ा जाता है, वह भी बदल जाता है। इसका मतलब है कि अगर किसी अनुबंध का बाइटकोड + शामिल मेटाडेटा हैश दिए गए स्रोत कोड और संकलन सेटिंग्स के साथ मेल खाता है, तो हम यह सुनिश्चित कर सकते हैं कि यह मूल संकलन में उपयोग किया जाने वाला बिल्कुल वही स्रोत कोड है, यहां तक कि एक बाइट भी अलग नहीं है।
इस प्रकार के सत्यापन जो मेटाडेटा हैश का लाभ उठाता है, को "पूर्ण सत्यापन (opens in a new tab)" (इसे "परफेक्ट सत्यापन" भी कहते हैं) कहा जाता है। अगर मेटाडेटा हैश मेल नहीं खाते हैं या सत्यापन में नहीं माने जाते हैं, तो यह एक "आंशिक मिलान" होगा, जो वर्तमान में अनुबंधों को सत्यापित करने का अधिक सामान्य तरीका है। पूर्ण सत्यापन के बिना दुर्भावनापूर्ण कोड डालना (opens in a new tab) संभव है जो सत्यापित सोर्स कोड में दिखाई नहीं देगा। ज़्यादातर डेवलपर्स को पूर्ण सत्यापन के बारे में पता नहीं है और वे अपने संकलन की मेटाडेटा फ़ाइल नहीं रखते हैं, इसलिए आंशिक सत्यापन अब तक अनुबंधों को सत्यापित करने का असल तरीका रहा है।
स्रोत कोड सत्यापन क्यों महत्वपूर्ण है? सोर्स कोड सत्यापन का महत्व
अविश्वासहीनता
अविश्वासहीनता यकीनन स्मार्ट अनुबंधों और विकेंद्रीकृत अनुप्रयोगों (डैप्स) के लिए सबसे बड़ा आधार है। स्मार्ट अनुबंध "अपरिवर्तनीय" हैं और इन्हें बदला नहीं जा सकता है; एक अनुबंध केवल लागू करते समय कोड में निर्धारित व्यावसायिक तर्क को निष्पादित करेगा। इसका मतलब है कि डेवलपर्स और उद्यम एथेरियम पर लागू होने के बाद अनुबंध के कोड के साथ छेड़छाड़ नहीं कर सकते हैं।
एक स्मार्ट अनुबंध भरोसेमंद होने के लिए, अनुबंध कोड स्वतंत्र सत्यापन के लिए उपलब्ध होना चाहिए। जबकि प्रत्येक स्मार्ट अनुबंध के लिए संकलित बाइटकोड ब्लॉकचेन पर सार्वजनिक रूप से उपलब्ध है, निम्न-स्तरीय भाषा को समझना मुश्किल है - डेवलपर्स और उपयोगकर्ताओं दोनों के लिए।
प्रोजेक्ट्स अपने अनुबंधों के स्रोत कोड को प्रकाशित करके विश्वास मान्यताओं को कम करती हैं। लेकिन यह एक और समस्या की ओर जाता है: यह सत्यापित करना मुश्किल है कि प्रकाशित स्रोत कोड अनुबंध बाइटकोड से मेल खाता है। इस परिदृश्य में, अविश्वसनीयता का मान खो जाता है क्योंकि उपयोगकर्ताओं को किसी अनुबंध को ब्लॉकचेन पर लागू करने से पहले इसके व्यावसायिक तर्क (यानी, बाइटकोड बदलकर) को नहीं बदलने के लिए डेवलपर्स पर भरोसा करना पड़ता है।
स्रोत कोड सत्यापन टूल गारंटी प्रदान करते हैं कि एक स्मार्ट अनुबंध की स्रोत कोड फाइलें असेंबली कोड से मेल खाती हैं। परिणाम एक भरोसेमंद पारिस्थितिकी तंत्र है, जहां उपयोगकर्ता तीसरे पक्ष पर आँख बंद करके भरोसा नहीं करते हैं और इसके बजाय अनुबंध में धन जमा करने से पहले कोड सत्यापित करते हैं।
यूज़र सुरक्षा
स्मार्ट अनुबंधों के साथ, आमतौर पर स्टेक पर बहुत सारा पैसा लगाया जाता है। यह उच्च सुरक्षा गारंटी और इसका उपयोग करने से पहले एक स्मार्ट अनुबंध के तर्क के सत्यापन की मांग करता है। समस्या यह है कि बेईमान डेवलपर्स स्मार्ट अनुबंध में दुर्भावनापूर्ण कोड डालकर उपयोगकर्ताओं को धोखा दे सकते हैं। सत्यापन के बिना, दुर्भावनापूर्ण स्मार्ट अनुबंधों में बैकडोर (opens in a new tab), विवादास्पद एक्सेस कंट्रोल मैकेनिज्म, शोषण योग्य कमजोरियां, और अन्य चीजें हो सकती हैं जो यूज़र सुरक्षा को खतरे में डालती हैं और जिनका पता नहीं चल पाएगा।
एक स्मार्ट अनुबंध के स्रोत कोड फ़ाइलों को प्रकाशित करना संभावित हमले वैक्टर के लिए अनुबंध का आकलन करने के लिए रुचि रखने वाले व्यक्तियों जैसे लेखा परीक्षकों के लिए आसान बनाता है। कई पार्टियों के स्वतंत्र रूप से एक स्मार्ट अनुबंध की पुष्टि करने के साथ, उपयोगकर्ताओं के पास इसकी सुरक्षा की मजबूत गारंटी है।
एथेरियम स्मार्ट अनुबंधों के लिए सोर्स कोड को कैसे सत्यापित करें
एथेरियम पर एक स्मार्ट अनुबंध को डिप्लॉय करने के लिए एक विशेष पते पर डेटा पेलोड (संकलित बाइटकोड) के साथ एक ट्रांज़ैक्शन भेजने की आवश्यकता होती है। डेटा पेलोड सोर्स कोड को कंपाइल करके उत्पन्न होता है, साथ ही अनुबंध इंस्टैंस के कंस्ट्रक्टर आर्ग्यूमेंट्स (opens in a new tab) को ट्रांज़ैक्शन में डेटा पेलोड में जोड़ा जाता है। कंपाइलेशन नियतात्मक (deterministic) है, जिसका अर्थ है कि यह हमेशा एक ही आउटपुट (यानी, अनुबंध बाइटकोड) उत्पन्न करता है यदि समान सोर्स फ़ाइलें, और कंपाइलेशन सेटिंग्स (जैसे, कंपाइलर संस्करण, ऑप्टिमाइज़र) का उपयोग किया जाता है।
एक स्मार्ट अनुबंध की पुष्टि करने में मूल रूप से निम्नलिखित चरण शामिल हैं:
-
स्रोत फ़ाइलों और संकलन सेटिंग्स को एक कंपाइलर में इनपुट करें।
-
कंपाइलर अनुबंध के बाइटकोड को आउटपुट करता है
-
किसी दिए गए पते पर लागू अनुबंध का बाइटकोड प्राप्त करें
-
पुन: संकलित बाइटकोड के साथ लागू बाइटकोड की तुलना करें। यदि कोड मेल खाते हैं, तो अनुबंध दिए गए स्रोत कोड और संकलन सेटिंग्स के साथ सत्यापित हो जाता है।
-
इसके अतिरिक्त, यदि मेटाडेटा बाइटकोड मैच के अंत में हैश होता है, तो यह एक पूर्ण मिलान होगा।
ध्यान दें कि यह सत्यापन का एक सरलीकृत विवरण है और कई अपवाद हैं जो इसके साथ काम नहीं करेंगे, जैसे कि अपरिवर्तनीय वेरिएबल्स (opens in a new tab) होना।
सोर्स कोड सत्यापन टूल्स
अनुबंधों को सत्यापित करने की पारंपरिक प्रक्रिया जटिल हो सकती है। यही कारण है कि हमारे पास एथेरियम पर लागू स्मार्ट अनुबंधों के लिए स्रोत कोड की पुष्टि करने के लिए टूल हैं। ये टूल स्रोत कोड सत्यापन के बड़े हिस्से को स्वचालित करते हैं और उपयोगकर्ताओं के लाभों के लिए सत्यापित अनुबंधों को भी क्यूरेट करते हैं।
ईथरस्कैन
हालांकि ज़्यादातर एक एथेरियम ब्लॉकचेन एक्सप्लोरर के रूप में जाना जाता है, ईथरस्कैन स्मार्ट अनुबंध डेवलपर्स और यूज़र्स के लिए एक सोर्स कोड सत्यापन सेवा (opens in a new tab) भी प्रदान करता है।
ईथरस्कैन आपको मूल डेटा पेलोड (स्रोत कोड, लाइब्रेरी पता, कंपाइलर सेटिंग्स, अनुबंध पता, आदि) से अनुबंध बाइटकोड को फिर से संकलित करने की अनुमति देता है यदि रीकंपाइल किया गया बाइटकोड ऑन-चेन अनुबंध के बाइटकोड (और कंस्ट्रक्टर पैरामीटर) से जुड़ा है, तो अनुबंध सत्यापित हो जाता है (opens in a new tab)।
एक बार सत्यापित होने के बाद, आपके अनुबंध का स्रोत कोड एक "सत्यापित" लेबल प्राप्त करता है और दूसरों के ऑडिट के लिए ईथरस्कैन पर प्रकाशित होता है। इसे सत्यापित अनुबंध (opens in a new tab) अनुभाग में भी जोड़ा जाता है - यह सत्यापित सोर्स कोड वाले स्मार्ट अनुबंधों का एक रिपॉजिटरी है।
अनुबंधों को सत्यापित करने के लिए ईथरस्कैन सबसे अधिक उपयोग किया जाने वाला टूल है। हालांकि, ईथरस्कैन के अनुबंध सत्यापन में एक कमी है: यह ऑन-चेन बाइटकोड और रीकंपाइल किए गए बाइटकोड के मेटाडेटा हैश की तुलना करने में विफल रहता है। इसलिए ईथरस्कैन में मैच आंशिक मैच हैं।
ईथरस्कैन पर अनुबंधों को सत्यापित करने के बारे में और जानें (opens in a new tab)।
ब्लॉकस्काउट
ब्लॉकस्काउट (opens in a new tab) एक ओपन-सोर्स ब्लॉकचेन एक्सप्लोरर है जो स्मार्ट अनुबंध डेवलपर्स और यूज़र्स के लिए अनुबंध सत्यापन सेवा (opens in a new tab) भी प्रदान करता है। एक ओपन-सोर्स विकल्प के रूप में, ब्लॉकस्काउट इस बारे में पारदर्शिता प्रदान करता है कि सत्यापन कैसे किया जाता है और सत्यापन प्रक्रिया को बेहतर बनाने के लिए सामुदायिक योगदान को सक्षम बनाता है।
अन्य सत्यापन सेवाओं के समान, ब्लॉकस्काउट आपको बाइटकोड को रीकंपाइल करके और इसकी तुलना डिप्लॉयड अनुबंध से करके अपने अनुबंध के सोर्स कोड को सत्यापित करने की अनुमति देता है। एक बार सत्यापित हो जाने पर, आपके अनुबंध को सत्यापन स्थिति प्राप्त होती है और सोर्स कोड ऑडिटिंग और इंटरैक्शन के लिए सार्वजनिक रूप से उपलब्ध हो जाता है। आसान ब्राउज़िंग और खोज के लिए सत्यापित अनुबंधों को ब्लॉकस्काउट के सत्यापित अनुबंध रिपॉजिटरी (opens in a new tab) में भी सूचीबद्ध किया गया है।
सोर्सिफाई
सोर्सिफाई (opens in a new tab) अनुबंधों को सत्यापित करने के लिए एक और टूल है जो ओपन-सोर्स और विकेंद्रीकृत है। यह एक ब्लॉक एक्सप्लोरर नहीं है और केवल विभिन्न EVM आधारित नेटवर्कों (opens in a new tab) पर अनुबंधों को सत्यापित करता है। यह अन्य टूल्स के लिए इसके ऊपर निर्माण करने के लिए एक सार्वजनिक बुनियादी ढांचे के रूप में कार्य करता है, और इसका उद्देश्य मेटाडेटा फ़ाइल में पाए जाने वाले ABI और नैटस्पेक (opens in a new tab) कमेंट्स का उपयोग करके अधिक मानव-अनुकूल अनुबंध इंटरैक्शन को सक्षम करना है।
ईथरस्कैन के विपरीत, सोर्सिफाई मेटाडेटा हैश के साथ पूर्ण मिलान का समर्थन करता है। सत्यापित अनुबंधों को इसके सार्वजनिक रिपॉजिटरी (opens in a new tab) में HTTP और आईपीएफएस (opens in a new tab) पर सर्व किया जाता है, जो एक विकेन्द्रीकृत, कंटेंट-एड्रेस्ड (opens in a new tab) स्टोरेज है। यह आईपीएफएस पर अनुबंध की मेटाडेटा फ़ाइल लाने की अनुमति देता है क्योंकि संलग्न मेटाडेटा हैश एक आईपीएफएस हैश है।
इसके अतिरिक्त, कोई भी आईपीएफएस पर स्रोत कोड फ़ाइलों को पुनः प्राप्त कर सकता है, क्योंकि इन फ़ाइलों के आईपीएफएस हैश मेटाडेटा में भी पाए जाते हैं। एक अनुबंध को मेटाडेटा फ़ाइल और सोर्स फ़ाइलों को इसके API या UI (opens in a new tab) पर प्रदान करके, या प्लगइन्स का उपयोग करके सत्यापित किया जा सकता है। सोर्सिफाई मॉनिटरिंग टूल नए ब्लॉकों पर अनुबंध निर्माण को भी सुनता है और अनुबंधों को सत्यापित करने का प्रयास करता है यदि उनके मेटाडेटा और स्रोत फ़ाइलें आईपीएफएस पर प्रकाशित होती हैं।
सोर्सिफाई पर अनुबंधों को सत्यापित करने के बारे में और जानें (opens in a new tab)।
टेंडरली
टेंडरली प्लेटफॉर्म (opens in a new tab) वेब3 डेवलपर्स को स्मार्ट अनुबंध बनाने, परीक्षण करने, मॉनिटर करने और संचालित करने में सक्षम बनाता है। अवलोकन और बुनियादी ढांचे के निर्माण ब्लॉकों के साथ डिबगिंग टूल का संयोजन, टेंडरली डेवलपर्स को स्मार्ट अनुबंध विकास में तेजी लाने में मदद करता है। टेंडरली सुविधाओं को पूरी तरह से सक्षम करने के लिए, डेवलपर्स को कई तरीकों का उपयोग करके सोर्स कोड सत्यापन करने (opens in a new tab) की आवश्यकता है।
किसी अनुबंध को निजी या सार्वजनिक रूप से सत्यापित करना संभव है। यदि निजी रूप से सत्यापित किया जाता है, तो स्मार्ट अनुबंध केवल आपको (और आपके प्रोजेक्ट के अन्य सदस्यों) को दिखाई देता है। किसी अनुबंध को सार्वजनिक रूप से सत्यापित करने से यह टेंडरली प्लेटफॉर्म का उपयोग करने वाले सभी लोगों के लिए दृश्यमान हो जाता है।
आप डैशबोर्ड (opens in a new tab), टेंडरली हार्डहैट प्लगइन (opens in a new tab), या CLI (opens in a new tab) का उपयोग करके अपने अनुबंधों को सत्यापित कर सकते हैं।
डैशबोर्ड के माध्यम से अनुबंधों की पुष्टि करते समय, आपको स्रोत फ़ाइल या सॉलिडिटी कंपाइलर, पता/नेटवर्क और कंपाइलर सेटिंग्स द्वारा उत्पन्न मेटाडेटा फ़ाइल आयात करने की आवश्यकता होती है।
टेंडरली हार्डहैट प्लगइन का उपयोग करने से कम प्रयास के साथ सत्यापन प्रक्रिया पर अधिक नियंत्रण की अनुमति मिलती है, जिससे आप स्वचालित (नो-कोड) और मैन्युअल (कोड-आधारित) सत्यापन के बीच चयन कर सकते हैं।
