हुशार करारांची पडताळणी
पृष्ठ अखेरचे अद्यतन: २२ ऑक्टोबर, २०२५
हुशार करार “विश्वासहीन” (trustless) असण्यासाठी डिझाइन केलेले आहेत, याचा अर्थ वापरकर्त्यांनी कराराशी संवाद साधण्यापूर्वी तृतीय पक्षांवर (उदा. डेव्हलपर्स आणि कंपन्या) विश्वास ठेवण्याची गरज नाही. विश्वासहीनतेसाठी एक आवश्यक अट म्हणून, वापरकर्ते आणि इतर डेव्हलपर्सना हुशार कराराच्या सोर्स कोडची पडताळणी करता आली पाहिजे. सोर्स कोड पडताळणी वापरकर्त्यांना आणि डेव्हलपर्सना आश्वासन देते की प्रकाशित केलेला करार कोड Ethereum ब्लॉकचेनवरील करार पत्त्यावर चालणाऱ्या कोडसारखाच आहे.
"सोर्स कोड पडताळणी" आणि "औपचारिक पडताळणी" यातील फरक ओळखणे महत्त्वाचे आहे. सोर्स कोड पडताळणी, ज्याचे खाली तपशीलवार स्पष्टीकरण दिले जाईल, म्हणजे उच्च-स्तरीय भाषेत (उदा. Solidity) हुशार कराराचा दिलेला सोर्स कोड करार पत्त्यावर कार्यान्वित होण्यासाठी त्याच बाईटकोडमध्ये संकलित होतो की नाही हे तपासणे. तथापि, औपचारिक पडताळणी हुशार कराराच्या अचूकतेची पडताळणी करण्याचे वर्णन करते, याचा अर्थ करार अपेक्षेप्रमाणे वागतो. संदर्भ-अवलंबित असले तरी, करार पडताळणी सामान्यतः सोर्स कोड पडताळणीला संदर्भित करते.
सोर्स कोड पडताळणी म्हणजे काय?
Ethereum व्हर्च्युअल मशीन (EVM) मध्ये हुशार करार तैनात करण्यापूर्वी, डेव्हलपर्स कराराचा सोर्स कोड—Solidity मध्ये लिहिलेल्या सूचना किंवा दुसरी उच्च-स्तरीय प्रोग्रामिंग भाषा—बाईटकोडमध्ये संकलित करतात. EVM उच्च-स्तरीय सूचनांचा अर्थ लावू शकत नसल्यामुळे, EVM मध्ये कराराचे तर्कशास्त्र कार्यान्वित करण्यासाठी सोर्स कोडला बाईटकोडमध्ये (म्हणजे, निम्न-स्तरीय, मशीन सूचना) संकलित करणे आवश्यक आहे.
सोर्स कोड पडताळणी म्हणजे कोणताही फरक शोधण्यासाठी हुशार कराराचा सोर्स कोड आणि करार तयार करताना वापरलेल्या संकलित बाईटकोडची तुलना करणे. हुशार करारांची पडताळणी करणे महत्त्वाचे आहे कारण जाहिरात केलेला करार कोड ब्लॉकचेनवर चालणाऱ्या कोडपेक्षा वेगळा असू शकतो.
हुशार कराराची पडताळणी मशीन कोड वाचल्याशिवाय, करार ज्या उच्च-स्तरीय भाषेत लिहिलेला आहे त्याद्वारे तो काय करतो याचा तपास करण्यास सक्षम करते. संकलित आणि तैनात केलेल्या मूळ सोर्स कोडसह फंक्शन्स, व्हॅल्यूज आणि सामान्यतः व्हेरिएबलची नावे आणि टिप्पण्या समान राहतात. यामुळे कोड वाचणे खूप सोपे होते. सोर्स पडताळणी कोड दस्तऐवजीकरणासाठी देखील तरतूद करते, जेणेकरून अंतिम वापरकर्त्यांना कळेल की हुशार करार काय करण्यासाठी डिझाइन केला आहे.
पूर्ण पडताळणी म्हणजे काय?
सोर्स कोडचे काही भाग असे आहेत जे संकलित बाईटकोडवर परिणाम करत नाहीत जसे की टिप्पण्या किंवा व्हेरिएबलची नावे. याचा अर्थ असा की भिन्न व्हेरिएबल नावे आणि भिन्न टिप्पण्या असलेले दोन सोर्स कोड एकाच कराराची पडताळणी करण्यास सक्षम असतील. त्यामुळे, एक दुर्भावनापूर्ण अभिनेता फसव्या टिप्पण्या जोडू शकतो किंवा सोर्स कोडमध्ये दिशाभूल करणारी व्हेरिएबल नावे देऊ शकतो आणि मूळ सोर्स कोडपेक्षा वेगळ्या सोर्स कोडसह कराराची पडताळणी करून घेऊ शकतो.
सोर्स कोडच्या अचूकतेसाठी क्रिप्टोग्राफिक हमी म्हणून आणि संकलन माहितीचा फिंगरप्रिंट म्हणून काम करण्यासाठी बाईटकोडमध्ये अतिरिक्त डेटा जोडून हे टाळणे शक्य आहे. आवश्यक माहिती Solidity च्या करार मेटाडेटामध्येopens in a new tab आढळते आणि या फाइलचा हॅश कराराच्या बाईटकोडमध्ये जोडला जातो. तुम्ही ते मेटाडेटा प्लेग्राउंडopens in a new tab मध्ये कार्यरत पाहू शकता
मेटाडेटा फाइलमध्ये स्त्रोत फाइल्स आणि त्यांचे हॅशसह कराराच्या संकलनाविषयी माहिती असते. म्हणजेच, जर कोणतीही संकलन सेटिंग्ज किंवा स्त्रोत फाइल्सपैकी एकामधील एक बाइट जरी बदलला, तरी मेटाडेटा फाइल बदलते. परिणामी मेटाडेटा फाइलचा हॅश, जो बाईटकोडमध्ये जोडला जातो, तो देखील बदलतो. याचा अर्थ असा की जर एखाद्या कराराचा बाईटकोड + जोडलेला मेटाडेटा हॅश दिलेला सोर्स कोड आणि संकलन सेटिंग्जशी जुळत असेल, तर आपण खात्री बाळगू शकतो की हा तोच सोर्स कोड आहे जो मूळ संकलनामध्ये वापरला गेला होता, एकही बाइट वेगळा नाही.
मेटाडेटा हॅशचा फायदा घेणार्या या प्रकारच्या पडताळणीला "पूर्ण पडताळणीopens in a new tab" (तसेच "परिपूर्ण पडताळणी") म्हणून संबोधले जाते. जर मेटाडेटा हॅश जुळत नसतील किंवा पडताळणीमध्ये विचारात घेतले जात नसतील तर तो एक "आंशिक जुळणी" असेल, जो सध्या करार पडताळण्याचा अधिक सामान्य मार्ग आहे. पूर्ण पडताळणीशिवाय दुर्भावनापूर्ण कोड घालणेopens in a new tab शक्य आहे जो सत्यापित सोर्स कोडमध्ये दिसणार नाही. बहुतेक डेव्हलपर्सना पूर्ण पडताळणीबद्दल माहिती नसते आणि ते त्यांच्या संकलनाची मेटाडेटा फाइल ठेवत नाहीत, त्यामुळे आतापर्यंत करार पडताळण्यासाठी आंशिक पडताळणी ही वास्तविक पद्धत आहे.
सोर्स कोड पडताळणी का महत्त्वाची आहे?
विश्वासहीनता
विश्वासहीनता हा हुशार करार आणि विकेंद्रित ॲप्लिकेशन्स (dapps) साठी सर्वात मोठा आधार आहे. हुशार करार “अपरिवर्तनीय” आहेत आणि त्यात बदल करता येत नाही; एखादा करार फक्त उपयोजनाच्या वेळी कोडमध्ये परिभाषित केलेला व्यवसाय तर्क कार्यान्वित करेल. याचा अर्थ डेव्हलपर्स आणि उद्योग Ethereum वर तैनात केल्यानंतर कराराच्या कोडमध्ये फेरफार करू शकत नाहीत.
हुशार करार विश्वासहीन होण्यासाठी, कराराचा कोड स्वतंत्र पडताळणीसाठी उपलब्ध असावा. प्रत्येक हुशार करारासाठी संकलित बाईटकोड ब्लॉकचेनवर सार्वजनिकरित्या उपलब्ध असला तरी, निम्न-स्तरीय भाषा समजण्यास अवघड आहे - डेव्हलपर्स आणि वापरकर्ते दोघांसाठीही.
प्रकल्प त्यांच्या करारांचा सोर्स कोड प्रकाशित करून विश्वासाची गृहितके कमी करतात. परंतु यामुळे दुसरी समस्या उद्भवते: प्रकाशित केलेला सोर्स कोड कराराच्या बाईटकोडशी जुळतो की नाही हे तपासणे कठीण आहे. या परिस्थितीत, विश्वासहीनतेचे मूल्य गमावले जाते कारण वापरकर्त्यांना ब्लॉकचेनवर तैनात करण्यापूर्वी कराराचे व्यवसाय तर्क (म्हणजे, बाईटकोड बदलून) न बदलण्यासाठी डेव्हलपर्सवर विश्वास ठेवावा लागतो.
सोर्स कोड पडताळणी साधने हमी देतात की हुशार कराराच्या सोर्स कोड फाइल्स असेंब्ली कोडशी जुळतात. परिणाम एक विश्वासहीन परिसंस्था आहे, जिथे वापरकर्ते तृतीय पक्षांवर आंधळेपणाने विश्वास ठेवत नाहीत आणि त्याऐवजी करारामध्ये निधी जमा करण्यापूर्वी कोडची पडताळणी करतात.
वापरकर्ता सुरक्षा
हुशार करारांसह, सहसा बरेच पैसे पणाला लागलेले असतात. यासाठी उच्च सुरक्षा हमी आणि हुशार कराराच्या तर्काची पडताळणी वापरण्यापूर्वी करणे आवश्यक आहे. समस्या ही आहे की अनैतिक डेव्हलपर्स हुशार करारामध्ये दुर्भावनापूर्ण कोड घालून वापरकर्त्यांची फसवणूक करू शकतात. पडताळणीशिवाय, दुर्भावनापूर्ण हुशार करारांमध्ये बॅकडोअर्सopens in a new tab, वादग्रस्त ऍक्सेस कंट्रोल यंत्रणा, शोषण करण्यायोग्य भेद्यता आणि वापरकर्त्याच्या सुरक्षिततेला धोका निर्माण करणाऱ्या इतर गोष्टी असू शकतात ज्या लक्षात येणार नाहीत.
हुशार कराराच्या सोर्स कोड फाइल्स प्रकाशित केल्याने लेखापरीक्षकांसारख्या स्वारस्य असलेल्यांना संभाव्य हल्ला करणाऱ्या वेक्टर्ससाठी कराराचे मूल्यांकन करणे सोपे होते. अनेक पक्ष स्वतंत्रपणे हुशार कराराची पडताळणी करत असल्याने, वापरकर्त्यांना त्याच्या सुरक्षिततेची अधिक मजबूत हमी मिळते.
Ethereum हुशार करारांसाठी सोर्स कोडची पडताळणी कशी करावी
Ethereum वर हुशार करार तैनात करण्यासाठी डेटा पेलोड (संकलित बाईटकोड) सह एका विशेष पत्त्यावर व्यवहार पाठवणे आवश्यक आहे. डेटा पेलोड सोर्स कोड संकलित करून तयार केला जातो, तसेच व्यवहारातील डेटा पेलोडमध्ये जोडलेल्या करार उदाहरणाच्या कन्स्ट्रक्टर युक्तिवादांसहopens in a new tab. संकलन हे निश्चित आहे, याचा अर्थ जर समान सोर्स फाइल्स, आणि संकलन सेटिंग्ज (उदा. कंपाइलर आवृत्ती, ऑप्टिमायझर) वापरल्या गेल्या तर ते नेहमी समान आउटपुट (म्हणजे, करार बाईटकोड) तयार करते.
हुशार कराराची पडताळणी करण्यामध्ये मुळात खालील पायऱ्या समाविष्ट आहेत:
-
सोर्स फाइल्स आणि संकलन सेटिंग्ज कंपाइलरमध्ये इनपुट करा.
-
कंपाइलर कराराचा बाईटकोड आउटपुट करतो
-
दिलेल्या पत्त्यावर तैनात केलेल्या कराराचा बाईटकोड मिळवा
-
तैनात केलेल्या बाईटकोडची पुन्हा संकलित केलेल्या बाईटकोडशी तुलना करा. जर कोड जुळले, तर दिलेला सोर्स कोड आणि संकलन सेटिंग्जसह कराराची पडताळणी होते.
-
याव्यतिरिक्त, बाईटकोडच्या शेवटी असलेले मेटाडेटा हॅश जुळल्यास, ती पूर्ण जुळणी असेल.
लक्षात घ्या की हे पडताळणीचे एक सोपे वर्णन आहे आणि यात अनेक अपवाद आहेत जे यासह कार्य करणार नाहीत जसे की अपरिवर्तनीय व्हेरिएबल्सopens in a new tab असणे.
सोर्स कोड पडताळणी साधने
करार पडताळणीची पारंपरिक प्रक्रिया गुंतागुंतीची असू शकते. म्हणूनच आमच्याकडे Ethereum वर तैनात केलेल्या हुशार करारांसाठी सोर्स कोड पडताळण्यासाठी साधने आहेत. ही साधने सोर्स कोड पडताळणीचे मोठे भाग स्वयंचलित करतात आणि वापरकर्त्यांच्या फायद्यासाठी सत्यापित करारांची निवड करतात.
Etherscan
जरी मुख्यतः Ethereum ब्लॉकचेन एक्सप्लोरर म्हणून ओळखले जात असले तरी, Etherscan हुशार कराराचे डेव्हलपर्स आणि वापरकर्त्यांसाठी सोर्स कोड पडताळणी सेवाopens in a new tab देखील प्रदान करते.
Etherscan तुम्हाला मूळ डेटा पेलोड (सोर्स कोड, लायब्ररी ॲड्रेस, कंपाइलर सेटिंग्ज, करार ॲड्रेस, इ.) मधून करार बाईटकोड पुन्हा संकलित करण्याची परवानगी देतो. जर पुन्हा संकलित केलेला बाईटकोड ऑनचेन कराराच्या बाईटकोडशी (आणि कन्स्ट्रक्टर पॅरामीटर्स) संबंधित असेल, तर करार सत्यापित केला जातोopens in a new tab.
एकदा सत्यापित झाल्यावर, तुमच्या कराराच्या सोर्स कोडला "सत्यापित" लेबल मिळते आणि इतरांना ऑडिट करण्यासाठी Etherscan वर प्रकाशित केले जाते. हे सत्यापित करारopens in a new tab विभागात देखील जोडले जाते - सत्यापित सोर्स कोडसह हुशार करारांचे एक भांडार.
Etherscan करार पडताळण्यासाठी सर्वाधिक वापरले जाणारे साधन आहे. तथापि, Etherscan च्या करार पडताळणीमध्ये एक कमतरता आहे: ते ऑनचेन बाईटकोड आणि पुन्हा संकलित केलेल्या बाईटकोडच्या मेटाडेटा हॅशची तुलना करण्यात अयशस्वी ठरते. त्यामुळे Etherscan मधील जुळण्या या आंशिक जुळण्या आहेत.
Etherscan वर करार पडताळणीबद्दल अधिकopens in a new tab.
Blockscout
Blockscoutopens in a new tab एक ओपन-सोर्स ब्लॉकचेन एक्सप्लोरर आहे जो हुशार करार डेव्हलपर्स आणि वापरकर्त्यांसाठी करार पडताळणी सेवाopens in a new tab देखील प्रदान करतो. एक ओपन-सोर्स पर्याय म्हणून, Blockscout पडताळणी कशी केली जाते यामध्ये पारदर्शकता प्रदान करते आणि पडताळणी प्रक्रियेत सुधारणा करण्यासाठी समुदाय योगदान सक्षम करते.
इतर पडताळणी सेवांप्रमाणेच, Blockscout तुम्हाला बाईटकोड पुन्हा संकलित करून आणि तैनात केलेल्या कराराशी त्याची तुलना करून तुमच्या कराराच्या सोर्स कोडची पडताळणी करण्याची परवानगी देतो. एकदा सत्यापित झाल्यावर, तुमच्या कराराला पडताळणी स्थिती प्राप्त होते आणि सोर्स कोड ऑडिटिंग आणि परस्परसंवादासाठी सार्वजनिकरित्या उपलब्ध होतो. सत्यापित करार सोप्या ब्राउझिंग आणि शोधासाठी Blockscout च्या सत्यापित करार भांडारातopens in a new tab देखील सूचीबद्ध आहेत.
Sourcify
Sourcifyopens in a new tab हे करार पडताळण्यासाठी आणखी एक साधन आहे जे ओपन-सोर्स आणि विकेंद्रित आहे. हा ब्लॉक एक्सप्लोरर नाही आणि तो फक्त विविध EVM आधारित नेटवर्क्सopens in a new tab वर करारांची पडताळणी करतो. हे इतर साधनांसाठी त्यावर तयार करण्यासाठी सार्वजनिक पायाभूत सुविधा म्हणून काम करते आणि मेटाडेटा फाइलमध्ये आढळलेल्या ABI आणि NatSpecopens in a new tab टिप्पण्या वापरून अधिक मानवी-अनुकूल करार संवाद सक्षम करण्याचे उद्दिष्ट ठेवते.
Etherscan च्या विपरीत, Sourcify मेटाडेटा हॅशसह पूर्ण जुळण्यांना समर्थन देते. सत्यापित करार HTTP आणि IPFSopens in a new tab वर त्याच्या सार्वजनिक भांडारातopens in a new tab दिले जातात, जे एक विकेंद्रित, कंटेंट-ॲड्रेस्डopens in a new tab स्टोरेज आहे. हे IPFS वरून कराराची मेटाडेटा फाइल मिळविण्यास अनुमती देते कारण जोडलेला मेटाडेटा हॅश एक IPFS हॅश आहे.
याव्यतिरिक्त, IPFS वरून सोर्स कोड फाइल्स देखील मिळवू शकतात, कारण या फाइल्सचे IPFS हॅश देखील मेटाडेटामध्ये आढळतात. त्याच्या API किंवा UIopens in a new tab द्वारे मेटाडेटा फाइल आणि सोर्स फाइल्स प्रदान करून किंवा प्लगइन्स वापरून कराराची पडताळणी केली जाऊ शकते. Sourcify मॉनिटरिंग टूल नवीन ब्लॉक्सवर कराराच्या निर्मितीचे देखील ऐकते आणि जर त्यांचे मेटाडेटा आणि सोर्स फाइल्स IPFS वर प्रकाशित केल्या असतील तर करारांची पडताळणी करण्याचा प्रयत्न करते.
Sourcify वर करार पडताळणीबद्दल अधिकopens in a new tab.
Tenderly
Tenderly प्लॅटफॉर्मopens in a new tab Web3 डेव्हलपर्सना हुशार करार तयार करण्यास, चाचणी करण्यास, निरीक्षण करण्यास आणि ऑपरेट करण्यास सक्षम करते. डीबगिंग साधनांना निरीक्षणक्षमता आणि पायाभूत सुविधांच्या बिल्डिंग ब्लॉक्ससह एकत्र करून, Tenderly डेव्हलपर्सना हुशार कराराचा विकास वेगवान करण्यास मदत करते. Tenderly ची वैशिष्ट्ये पूर्णपणे सक्षम करण्यासाठी, डेव्हलपर्सना अनेक पद्धती वापरून सोर्स कोड पडताळणी करणेopens in a new tab आवश्यक आहे.
करार खाजगीरित्या किंवा सार्वजनिकरित्या सत्यापित करणे शक्य आहे. खाजगीरित्या सत्यापित केल्यास, हुशार करार फक्त तुम्हाला (आणि तुमच्या प्रकल्पातील इतर सदस्यांना) दिसेल. करार सार्वजनिकरित्या सत्यापित केल्याने तो Tenderly प्लॅटफॉर्म वापरणाऱ्या प्रत्येकाला दिसतो.
तुम्ही डॅशबोर्डopens in a new tab, Tenderly Hardhat प्लगइनopens in a new tab, किंवा CLIopens in a new tab वापरून तुमच्या करारांची पडताळणी करू शकता.
डॅशबोर्डद्वारे करार पडताळताना, तुम्हाला Solidity कंपाइलरद्वारे तयार केलेली सोर्स फाइल किंवा मेटाडेटा फाइल, ॲड्रेस/नेटवर्क, आणि कंपाइलर सेटिंग्ज आयात करणे आवश्यक आहे.
Tenderly Hardhat प्लगइन वापरल्याने कमी प्रयत्नात पडताळणी प्रक्रियेवर अधिक नियंत्रण मिळते, ज्यामुळे तुम्हाला स्वयंचलित (नो-कोड) आणि मॅन्युअल (कोड-आधारित) पडताळणी यापैकी निवड करता येते.
