स्मार्ट कॉन्ट्रॅक्ट्सची चाचणी
इथेरियमसारख्या सार्वजनिक ब्लॉकचेन अपरिवर्तनीय असतात, ज्यामुळे प्रस्थापनेनंतर स्मार्ट कॉन्ट्रॅक्टचा कोड बदलणे कठीण होते. "आभासी अपग्रेड" करण्यासाठी कॉन्ट्रॅक्ट अपग्रेड पॅटर्न अस्तित्वात आहेत, परंतु ते लागू करणे कठीण आहे आणि त्यासाठी सामाजिक एकमत आवश्यक आहे. शिवाय, अपग्रेड केवळ त्रुटी शोधल्यानंतरच ती दुरुस्त करू शकते—जर एखाद्या हल्लेखोराने प्रथम असुरक्षितता शोधली, तर तुमच्या स्मार्ट कॉन्ट्रॅक्टला शोषणाचा धोका असतो.
या कारणांमुळे, मुख्यनेटवर प्रस्थापित करण्यापूर्वी स्मार्ट कॉन्ट्रॅक्ट्सची चाचणी करणे ही सुरक्षेसाठी किमान आवश्यकता आहे. कॉन्ट्रॅक्ट्सची चाचणी करण्यासाठी आणि कोडच्या अचूकतेचे मूल्यांकन करण्यासाठी अनेक तंत्रे आहेत; तुम्ही काय निवडता हे तुमच्या गरजांवर अवलंबून असते. तरीही, कॉन्ट्रॅक्ट कोडमधील किरकोळ आणि मोठ्या दोन्ही सुरक्षा त्रुटी पकडण्यासाठी विविध साधने आणि दृष्टिकोनांनी बनलेला टेस्ट सूट आदर्श आहे.
पूर्व शर्ती
हे पृष्ठ इथेरियम नेटवर्कवर प्रस्थापित करण्यापूर्वी स्मार्ट कॉन्ट्रॅक्ट्सची चाचणी कशी करावी हे स्पष्ट करते. हे गृहीत धरते की तुम्हाला स्मार्ट कॉन्ट्रॅक्ट्स परिचित आहेत.
स्मार्ट कॉन्ट्रॅक्ट चाचणी म्हणजे काय?
स्मार्ट कॉन्ट्रॅक्ट चाचणी ही स्मार्ट कॉन्ट्रॅक्टचा कोड अपेक्षेप्रमाणे काम करतो की नाही हे पडताळून पाहण्याची प्रक्रिया आहे. एखादे विशिष्ट स्मार्ट कॉन्ट्रॅक्ट विश्वासार्हता, उपयोगिता आणि सुरक्षेच्या आवश्यकता पूर्ण करते की नाही हे तपासण्यासाठी चाचणी उपयुक्त आहे.
जरी दृष्टिकोन भिन्न असले तरी, बहुतेक चाचणी पद्धतींमध्ये स्मार्ट कॉन्ट्रॅक्टला हाताळण्यासाठी अपेक्षित असलेल्या डेटाच्या लहान नमुन्यासह कार्यान्वित करणे आवश्यक असते. जर कॉन्ट्रॅक्ट नमुना डेटासाठी योग्य परिणाम देत असेल, तर ते योग्यरित्या कार्य करत आहे असे गृहीत धरले जाते. बहुतेक चाचणी साधने कॉन्ट्रॅक्टची अंमलबजावणी अपेक्षित परिणामांशी जुळते की नाही हे तपासण्यासाठी टेस्ट केसेस (नवीन टॅबमध्ये उघडते) लिहिण्यासाठी आणि कार्यान्वित करण्यासाठी संसाधने प्रदान करतात.
स्मार्ट कॉन्ट्रॅक्ट्सची चाचणी करणे का महत्त्वाचे आहे?
स्मार्ट कॉन्ट्रॅक्ट्स अनेकदा उच्च-मूल्याच्या आर्थिक मालमत्तेचे व्यवस्थापन करत असल्याने, किरकोळ प्रोग्रामिंग त्रुटींमुळे वापरकर्त्यांचे मोठे नुकसान (नवीन टॅबमध्ये उघडते) होऊ शकते आणि अनेकदा होते. तथापि, कठोर चाचणी तुम्हाला स्मार्ट कॉन्ट्रॅक्टच्या कोडमधील दोष आणि समस्या लवकर शोधण्यात आणि मुख्यनेटवर लॉन्च करण्यापूर्वी त्यांचे निराकरण करण्यात मदत करू शकते.
बग आढळल्यास कॉन्ट्रॅक्ट अपग्रेड करणे शक्य असले तरी, अपग्रेड गुंतागुंतीचे असतात आणि अयोग्यरित्या हाताळल्यास त्रुटी येऊ शकतात (नवीन टॅबमध्ये उघडते). कॉन्ट्रॅक्ट अपग्रेड केल्याने अपरिवर्तनीयतेच्या तत्त्वाला आणखी बाधा येते आणि वापरकर्त्यांवर अतिरिक्त विश्वास गृहीतकांचा भार पडतो. याउलट, तुमच्या कॉन्ट्रॅक्टच्या चाचणीसाठी एक व्यापक योजना स्मार्ट कॉन्ट्रॅक्ट सुरक्षा धोके कमी करते आणि प्रस्थापित केल्यानंतर जटिल लॉजिक अपग्रेड करण्याची आवश्यकता कमी करते.
स्मार्ट कॉन्ट्रॅक्ट्सची चाचणी करण्याच्या पद्धती
इथेरियम स्मार्ट कॉन्ट्रॅक्ट्सची चाचणी करण्याच्या पद्धती दोन विस्तृत श्रेणींमध्ये येतात: स्वयंचलित चाचणी (automated testing) आणि मॅन्युअल चाचणी (manual testing). स्वयंचलित चाचणी आणि मॅन्युअल चाचणी अद्वितीय फायदे आणि तडजोडी देतात, परंतु तुम्ही तुमच्या कॉन्ट्रॅक्ट्सचे विश्लेषण करण्यासाठी एक मजबूत योजना तयार करण्यासाठी दोन्ही एकत्र करू शकता.
स्वयंचलित चाचणी
स्वयंचलित चाचणी अशा साधनांचा वापर करते जे अंमलबजावणीतील त्रुटींसाठी स्मार्ट कॉन्ट्रॅक्ट्सचा कोड स्वयंचलितपणे तपासतात. स्वयंचलित चाचणीचा फायदा कॉन्ट्रॅक्टच्या कार्यक्षमतेच्या मूल्यांकनासाठी स्क्रिप्ट्स (नवीन टॅबमध्ये उघडते) वापरण्यातून मिळतो. स्क्रिप्ट केलेल्या चाचण्या कमीतकमी मानवी हस्तक्षेपासह वारंवार चालवल्या जाऊ शकतात, ज्यामुळे स्वयंचलित चाचणी मॅन्युअल चाचणी पद्धतींपेक्षा अधिक कार्यक्षम बनते.
स्वयंचलित चाचणी विशेषतः तेव्हा उपयुक्त असते जेव्हा चाचण्या पुनरावृत्ती आणि वेळखाऊ असतात; मॅन्युअली करणे कठीण असते; मानवी त्रुटीस प्रवण असतात; किंवा महत्त्वपूर्ण कॉन्ट्रॅक्ट कार्यांचे मूल्यांकन समाविष्ट असते. परंतु स्वयंचलित चाचणी साधनांमध्ये काही त्रुटी असू शकतात—ते काही बग्स चुकवू शकतात आणि अनेक फॉल्स पॉझिटिव्ह (नवीन टॅबमध्ये उघडते) निर्माण करू शकतात. म्हणून, स्मार्ट कॉन्ट्रॅक्ट्ससाठी मॅन्युअल चाचणीसह स्वयंचलित चाचणी जोडणे आदर्श आहे.
मॅन्युअल चाचणी
मॅन्युअल चाचणी मानवी-सहाय्यित असते आणि स्मार्ट कॉन्ट्रॅक्टच्या अचूकतेचे विश्लेषण करताना तुमच्या टेस्ट सूटमधील प्रत्येक टेस्ट केस एकामागून एक कार्यान्वित करणे समाविष्ट असते. हे स्वयंचलित चाचणीच्या विपरीत आहे जिथे तुम्ही एकाच वेळी कॉन्ट्रॅक्टवर अनेक वेगळ्या चाचण्या चालवू शकता आणि सर्व अयशस्वी आणि उत्तीर्ण चाचण्या दर्शविणारा अहवाल मिळवू शकता.
मॅन्युअल चाचणी एकाच व्यक्तीद्वारे लेखी चाचणी योजनेचे अनुसरण करून केली जाऊ शकते ज्यामध्ये भिन्न चाचणी परिस्थिती समाविष्ट असतात. मॅन्युअल चाचणीचा भाग म्हणून तुम्ही एकाधिक व्यक्ती किंवा गटांना ठराविक कालावधीत स्मार्ट कॉन्ट्रॅक्टशी संवाद साधण्यास सांगू शकता. परीक्षक कॉन्ट्रॅक्टच्या वास्तविक वर्तनाची अपेक्षित वर्तनाशी तुलना करतील आणि कोणताही फरक बग म्हणून ध्वजांकित करतील.
प्रभावी मॅन्युअल चाचणीसाठी लक्षणीय संसाधने (कौशल्य, वेळ, पैसा आणि प्रयत्न) आवश्यक असतात आणि चाचण्या कार्यान्वित करताना मानवी त्रुटीमुळे काही त्रुटी चुकणे शक्य आहे. परंतु मॅन्युअल चाचणी देखील फायदेशीर ठरू शकते—उदाहरणार्थ, मानवी परीक्षक (उदा. ऑडिटर) स्वयंचलित चाचणी साधन चुकवू शकतील अशा एज केसेस शोधण्यासाठी अंतर्ज्ञानाचा वापर करू शकतो.
स्मार्ट कॉन्ट्रॅक्ट्ससाठी स्वयंचलित चाचणी
युनिट चाचणी
युनिट चाचणी कॉन्ट्रॅक्टच्या कार्यांचे स्वतंत्रपणे मूल्यांकन करते आणि प्रत्येक घटक योग्यरित्या कार्य करत असल्याचे तपासते. चांगल्या युनिट चाचण्या सोप्या, चालवण्यास जलद असाव्यात आणि चाचण्या अयशस्वी झाल्यास काय चूक झाली याची स्पष्ट कल्पना द्यावी.
कार्ये अपेक्षित मूल्ये परत करतात आणि कार्य अंमलबजावणीनंतर कॉन्ट्रॅक्ट स्टोरेज योग्यरित्या अद्यतनित केले जाते हे तपासण्यासाठी युनिट चाचण्या उपयुक्त आहेत. शिवाय, कॉन्ट्रॅक्टच्या कोडबेसमध्ये बदल केल्यानंतर युनिट चाचण्या चालवल्याने नवीन लॉजिक जोडल्याने त्रुटी येत नाहीत याची खात्री होते. प्रभावी युनिट चाचण्या चालवण्यासाठी खाली काही मार्गदर्शक तत्त्वे दिली आहेत:
स्मार्ट कॉन्ट्रॅक्ट्सच्या युनिट चाचणीसाठी मार्गदर्शक तत्त्वे
1. तुमच्या कॉन्ट्रॅक्टचे बिझनेस लॉजिक आणि वर्कफ्लो समजून घ्या
युनिट चाचण्या लिहिण्यापूर्वी, स्मार्ट कॉन्ट्रॅक्ट कोणती कार्यक्षमता देते आणि वापरकर्ते त्या कार्यांमध्ये कसा प्रवेश करतील आणि वापरतील हे जाणून घेणे उपयुक्त ठरते. हे विशेषतः हॅपी पाथ चाचण्या (नवीन टॅबमध्ये उघडते) चालवण्यासाठी उपयुक्त आहे जे कॉन्ट्रॅक्टमधील कार्ये वैध वापरकर्ता इनपुटसाठी योग्य आउटपुट देतात की नाही हे निर्धारित करतात. आम्ही ही संकल्पना लिलाव कॉन्ट्रॅक्टच्या (नवीन टॅबमध्ये उघडते) या (संक्षिप्त) उदाहरणाचा वापर करून स्पष्ट करू
constructor(
uint biddingTime,
address payable beneficiaryAddress
) {
beneficiary = beneficiaryAddress;
auctionEndTime = block.timestamp + biddingTime;
}
function bid() external payable {
if (block.timestamp > auctionEndTime)
revert AuctionAlreadyEnded();
if (msg.value <= highestBid)
revert BidNotHighEnough(highestBid);
if (highestBid != 0) {
pendingReturns[highestBidder] += highestBid;
}
highestBidder = msg.sender;
highestBid = msg.value;
emit HighestBidIncreased(msg.sender, msg.value);
}
function withdraw() external returns (bool) {
uint amount = pendingReturns[msg.sender];
if (amount > 0) {
pendingReturns[msg.sender] = 0;
if (!payable(msg.sender).send(amount)) {
pendingReturns[msg.sender] = amount;
return false;
}
}
return true;
}
function auctionEnd() external {
if (block.timestamp < auctionEndTime)
revert AuctionNotYetEnded();
if (ended)
revert AuctionEndAlreadyCalled();
ended = true;
emit AuctionEnded(highestBidder, highestBid);
beneficiary.transfer(highestBid);
}
}
हे एक साधे लिलाव कॉन्ट्रॅक्ट आहे जे बोली लावण्याच्या कालावधीत बोली प्राप्त करण्यासाठी डिझाइन केलेले आहे. जर highestBid वाढली, तर मागील सर्वोच्च बोली लावणाऱ्याला त्यांचे पैसे मिळतात; एकदा बोली लावण्याचा कालावधी संपला की, beneficiary त्यांचे पैसे मिळवण्यासाठी कॉन्ट्रॅक्टला कॉल करतो.
यासारख्या कॉन्ट्रॅक्टसाठी युनिट चाचण्यांमध्ये वापरकर्ता कॉन्ट्रॅक्टशी संवाद साधताना कॉल करू शकणाऱ्या विविध कार्यांचा समावेश असेल. याचे उदाहरण म्हणजे एक युनिट चाचणी जी लिलाव चालू असताना वापरकर्ता बोली लावू शकतो की नाही हे तपासते (म्हणजेच, bid() चे कॉल्स यशस्वी होतात) किंवा वापरकर्ता सध्याच्या highestBid पेक्षा जास्त बोली लावू शकतो की नाही हे तपासणारी चाचणी.
कॉन्ट्रॅक्टचा ऑपरेशनल वर्कफ्लो समजून घेतल्याने अंमलबजावणी आवश्यकता पूर्ण करते की नाही हे तपासणाऱ्या युनिट चाचण्या लिहिण्यास देखील मदत होते. उदाहरणार्थ, लिलाव कॉन्ट्रॅक्ट निर्दिष्ट करते की लिलाव संपल्यावर वापरकर्ते बोली लावू शकत नाहीत (म्हणजेच, जेव्हा auctionEndTime हे block.timestamp पेक्षा कमी असते). अशा प्रकारे, लिलाव संपल्यावर (म्हणजेच, जेव्हा auctionEndTime > block.timestamp) bid() फंक्शनचे कॉल्स यशस्वी होतात की अयशस्वी हे तपासण्यासाठी डेव्हलपर युनिट चाचणी चालवू शकतो.
2. कॉन्ट्रॅक्ट अंमलबजावणीशी संबंधित सर्व गृहीतकांचे मूल्यांकन करा
कॉन्ट्रॅक्टच्या अंमलबजावणीबद्दल कोणत्याही गृहीतकांचे दस्तऐवजीकरण करणे आणि त्या गृहीतकांची वैधता पडताळण्यासाठी युनिट चाचण्या लिहिणे महत्त्वाचे आहे. अनपेक्षित अंमलबजावणीपासून संरक्षण देण्याव्यतिरिक्त, दृढकथनांची (assertions) चाचणी केल्याने तुम्हाला स्मार्ट कॉन्ट्रॅक्ट्सचे सुरक्षा मॉडेल खंडित करू शकणाऱ्या ऑपरेशन्सबद्दल विचार करण्यास भाग पाडले जाते. एक उपयुक्त टिप म्हणजे "हॅपी युजर टेस्ट्स" च्या पलीकडे जाणे आणि चुकीच्या इनपुटसाठी फंक्शन अयशस्वी होते की नाही हे तपासणाऱ्या नकारात्मक चाचण्या लिहिणे.
अनेक युनिट चाचणी फ्रेमवर्क्स तुम्हाला दृढकथने (assertions) तयार करण्याची परवानगी देतात—साधी विधाने जी कॉन्ट्रॅक्ट काय करू शकते आणि काय करू शकत नाही हे सांगतात—आणि अंमलबजावणी अंतर्गत ती दृढकथने टिकून राहतात की नाही हे पाहण्यासाठी चाचण्या चालवतात. आधी वर्णन केलेल्या लिलाव कॉन्ट्रॅक्टवर काम करणारा डेव्हलपर नकारात्मक चाचण्या चालवण्यापूर्वी त्याच्या वर्तनाबद्दल खालील दृढकथने करू शकतो:
-
लिलाव संपल्यावर किंवा सुरू न झाल्यावर वापरकर्ते बोली लावू शकत नाहीत.
-
जर बोली स्वीकारार्ह मर्यादेच्या खाली असेल तर लिलाव कॉन्ट्रॅक्ट रिव्हर्ट होते.
-
जे वापरकर्ते बोली जिंकण्यात अयशस्वी ठरतात त्यांच्या खात्यात त्यांचा निधी जमा केला जातो
टीप: गृहीतकांची चाचणी करण्याचा दुसरा मार्ग म्हणजे कॉन्ट्रॅक्टमधील फंक्शन मॉडिफायर्स (नवीन टॅबमध्ये उघडते) ट्रिगर करणाऱ्या चाचण्या लिहिणे, विशेषतः require, assert, आणि if…else विधाने.
3. कोड कव्हरेज मोजा
कोड कव्हरेज (नवीन टॅबमध्ये उघडते) हे एक चाचणी मेट्रिक आहे जे चाचण्यांदरम्यान कार्यान्वित केलेल्या तुमच्या कोडमधील शाखा, ओळी आणि विधानांच्या संख्येचा मागोवा घेते. तपासल्या न गेलेल्या असुरक्षिततेचा धोका कमी करण्यासाठी चाचण्यांमध्ये चांगले कोड कव्हरेज असावे. पुरेशा कव्हरेजशिवाय, तुम्ही चुकीने असे गृहीत धरू शकता की तुमचे कॉन्ट्रॅक्ट सुरक्षित आहे कारण सर्व चाचण्या उत्तीर्ण होतात, तर तपासल्या न गेलेल्या कोड मार्गांमध्ये असुरक्षितता अद्याप अस्तित्वात असू शकते. तथापि, उच्च कोड कव्हरेज रेकॉर्ड केल्याने स्मार्ट कॉन्ट्रॅक्टमधील सर्व विधाने/कार्ये अचूकतेसाठी पुरेशी तपासली गेली आहेत याची खात्री मिळते.
4. चांगल्या प्रकारे विकसित चाचणी फ्रेमवर्क्स वापरा
तुमच्या स्मार्ट कॉन्ट्रॅक्ट्ससाठी युनिट चाचण्या चालवण्यासाठी वापरल्या जाणाऱ्या साधनांची गुणवत्ता महत्त्वपूर्ण आहे. एक आदर्श चाचणी फ्रेमवर्क ते आहे जे नियमितपणे राखले जाते; उपयुक्त वैशिष्ट्ये प्रदान करते (उदा. लॉगिंग आणि रिपोर्टिंग क्षमता); आणि इतर डेव्हलपर्सद्वारे मोठ्या प्रमाणावर वापरले आणि तपासले गेले असावे.
Solidity स्मार्ट कॉन्ट्रॅक्ट्ससाठी युनिट चाचणी फ्रेमवर्क्स वेगवेगळ्या भाषांमध्ये येतात (बहुतेक JavaScript, Python आणि Rust). वेगवेगळ्या चाचणी फ्रेमवर्क्ससह युनिट चाचण्या कशा सुरू कराव्यात या माहितीसाठी खालील काही मार्गदर्शक पहा:
- Brownie सह युनिट चाचण्या चालवणे (नवीन टॅबमध्ये उघडते)
- Foundry सह युनिट चाचण्या चालवणे (नवीन टॅबमध्ये उघडते)
- Waffle सह युनिट चाचण्या चालवणे (नवीन टॅबमध्ये उघडते)
- Remix सह युनिट चाचण्या चालवणे (नवीन टॅबमध्ये उघडते)
- Ape सह युनिट चाचण्या चालवणे (नवीन टॅबमध्ये उघडते)
- Hardhat सह युनिट चाचण्या चालवणे (नवीन टॅबमध्ये उघडते)
- Wake सह युनिट चाचण्या चालवणे (नवीन टॅबमध्ये उघडते)
- Moccasin सह युनिट चाचण्या चालवणे (नवीन टॅबमध्ये उघडते)
एकत्रीकरण चाचणी
युनिट चाचणी कॉन्ट्रॅक्टच्या कार्यांना एकाकीपणे डीबग करत असताना, एकत्रीकरण चाचण्या (integration tests) स्मार्ट कॉन्ट्रॅक्टच्या घटकांचे संपूर्णपणे मूल्यांकन करतात. एकत्रीकरण चाचणी क्रॉस-कॉन्ट्रॅक्ट कॉल्स किंवा एकाच स्मार्ट कॉन्ट्रॅक्टमधील भिन्न कार्यांमधील परस्परसंवादामुळे उद्भवणाऱ्या समस्या शोधू शकते. उदाहरणार्थ, इनहेरिटन्स (नवीन टॅबमध्ये उघडते) आणि डिपेंडन्सी इंजेक्शन यांसारख्या गोष्टी योग्यरित्या कार्य करतात की नाही हे तपासण्यासाठी एकत्रीकरण चाचण्या मदत करू शकतात.
जर तुमचे कॉन्ट्रॅक्ट मॉड्यूलर आर्किटेक्चर स्वीकारत असेल किंवा अंमलबजावणीदरम्यान इतर ऑनचेन कॉन्ट्रॅक्ट्सशी इंटरफेस करत असेल तर एकत्रीकरण चाचणी उपयुक्त आहे. एकत्रीकरण चाचण्या चालवण्याचा एक मार्ग म्हणजे विशिष्ट उंचीवर (Forge (नवीन टॅबमध्ये उघडते) किंवा Hardhat (नवीन टॅबमध्ये उघडते) सारख्या साधनाचा वापर करून) आणि तुमचे कॉन्ट्रॅक्ट आणि प्रस्थापित कॉन्ट्रॅक्ट्समधील परस्परसंवादाचे अनुकरण करणे.
फोर्क केलेली ब्लॉकचेन मुख्यनेट प्रमाणेच वागेल आणि त्यात संबंधित स्थिती आणि शिल्लक असलेली खाती असतील. परंतु ते केवळ सँडबॉक्स्ड स्थानिक विकास वातावरण म्हणून कार्य करते, याचा अर्थ तुम्हाला व्यवहारांसाठी वास्तविक ETH ची आवश्यकता नसेल, उदाहरणार्थ, किंवा तुमच्या बदलांचा वास्तविक इथेरियम प्रोटोकॉलवर परिणाम होणार नाही.
प्रॉपर्टी-आधारित चाचणी
प्रॉपर्टी-आधारित चाचणी ही स्मार्ट कॉन्ट्रॅक्ट काही परिभाषित प्रॉपर्टी पूर्ण करते की नाही हे तपासण्याची प्रक्रिया आहे. प्रॉपर्टीज कॉन्ट्रॅक्टच्या वर्तनाबद्दल तथ्ये दृढकथन करतात जी वेगवेगळ्या परिस्थितींमध्ये सत्य राहणे अपेक्षित असते—स्मार्ट कॉन्ट्रॅक्ट प्रॉपर्टीचे उदाहरण असू शकते "कॉन्ट्रॅक्टमधील अंकगणितीय ऑपरेशन्स कधीही ओव्हरफ्लो किंवा अंडरफ्लो होत नाहीत."
स्टॅटिक विश्लेषण आणि डायनॅमिक विश्लेषण ही प्रॉपर्टी-आधारित चाचणी कार्यान्वित करण्यासाठी दोन सामान्य तंत्रे आहेत आणि दोन्ही हे सत्यापित करू शकतात की प्रोग्रामचा कोड (या प्रकरणात स्मार्ट कॉन्ट्रॅक्ट) काही पूर्वनिर्धारित प्रॉपर्टी पूर्ण करतो. काही प्रॉपर्टी-आधारित चाचणी साधने अपेक्षित कॉन्ट्रॅक्ट प्रॉपर्टीज बद्दल पूर्वनिर्धारित नियमांसह येतात आणि त्या नियमांविरुद्ध कोड तपासतात, तर इतर तुम्हाला स्मार्ट कॉन्ट्रॅक्टसाठी सानुकूल प्रॉपर्टीज तयार करण्याची परवानगी देतात.
स्टॅटिक विश्लेषण
स्टॅटिक विश्लेषक स्मार्ट कॉन्ट्रॅक्टचा सोर्स कोड इनपुट म्हणून घेतो आणि कॉन्ट्रॅक्ट प्रॉपर्टी पूर्ण करते की नाही हे घोषित करणारे परिणाम आउटपुट करतो. डायनॅमिक विश्लेषणाच्या विपरीत, स्टॅटिक विश्लेषणात अचूकतेसाठी विश्लेषण करण्यासाठी कॉन्ट्रॅक्ट कार्यान्वित करणे समाविष्ट नसते. त्याऐवजी स्टॅटिक विश्लेषण स्मार्ट कॉन्ट्रॅक्ट अंमलबजावणीदरम्यान घेऊ शकणाऱ्या सर्व संभाव्य मार्गांबद्दल तर्क करते (म्हणजेच, रनटाइमच्या वेळी कॉन्ट्रॅक्टच्या ऑपरेशनसाठी याचा अर्थ काय असेल हे निर्धारित करण्यासाठी सोर्स कोडच्या संरचनेचे परीक्षण करून).
कॉन्ट्रॅक्ट्सवर स्टॅटिक विश्लेषण चालवण्यासाठी लिंटिंग (नवीन टॅबमध्ये उघडते) आणि स्टॅटिक चाचणी (नवीन टॅबमध्ये उघडते) या सामान्य पद्धती आहेत. दोन्हींसाठी कंपायलरद्वारे आउटपुट केलेल्या अॅबस्ट्रॅक्ट सिंटॅक्स ट्रीज (नवीन टॅबमध्ये उघडते) आणि कंट्रोल फ्लो ग्राफ्स (नवीन टॅबमध्ये उघडते) सारख्या कॉन्ट्रॅक्टच्या अंमलबजावणीच्या निम्न-स्तरीय सादरीकरणांचे विश्लेषण करणे आवश्यक आहे.
बहुतेक प्रकरणांमध्ये, स्टॅटिक विश्लेषण असुरक्षित रचनांचा वापर, सिंटॅक्स त्रुटी किंवा कॉन्ट्रॅक्टच्या कोडमधील कोडिंग मानकांचे उल्लंघन यासारख्या सुरक्षा समस्या शोधण्यासाठी उपयुक्त आहे. तथापि, स्टॅटिक विश्लेषक सखोल असुरक्षितता शोधण्यात सामान्यतः अयोग्य असल्याचे ज्ञात आहे आणि ते जास्त फॉल्स पॉझिटिव्ह निर्माण करू शकतात.
डायनॅमिक विश्लेषण
डायनॅमिक विश्लेषण स्मार्ट कॉन्ट्रॅक्टच्या कार्यांसाठी प्रतीकात्मक इनपुट (उदा. प्रतीकात्मक अंमलबजावणीमध्ये (नवीन टॅबमध्ये उघडते)) किंवा ठोस इनपुट (उदा. फझिंगमध्ये (नवीन टॅबमध्ये उघडते)) व्युत्पन्न करते हे पाहण्यासाठी की कोणताही अंमलबजावणी ट्रेस विशिष्ट प्रॉपर्टीजचे उल्लंघन करतो का. प्रॉपर्टी-आधारित चाचणीचा हा प्रकार युनिट चाचण्यांपेक्षा वेगळा आहे कारण टेस्ट केसेस अनेक परिस्थिती कव्हर करतात आणि प्रोग्राम टेस्ट केसेसची निर्मिती हाताळतो.
स्मार्ट कॉन्ट्रॅक्ट्समधील अनियंत्रित प्रॉपर्टीज सत्यापित करण्यासाठी फझिंग (नवीन टॅबमध्ये उघडते) हे डायनॅमिक विश्लेषण तंत्राचे उदाहरण आहे. फझर परिभाषित इनपुट मूल्याच्या यादृच्छिक किंवा विकृत फरकांसह लक्ष्य कॉन्ट्रॅक्टमधील कार्ये लागू करतो. जर स्मार्ट कॉन्ट्रॅक्ट त्रुटी स्थितीत प्रवेश करत असेल (उदा. जिथे दृढकथन अयशस्वी होते), तर समस्या ध्वजांकित केली जाते आणि असुरक्षित मार्गाकडे अंमलबजावणी चालवणारे इनपुट अहवालात तयार केले जातात.
स्मार्ट कॉन्ट्रॅक्टच्या इनपुट प्रमाणीकरण यंत्रणेचे मूल्यांकन करण्यासाठी फझिंग उपयुक्त आहे कारण अनपेक्षित इनपुट अयोग्यरित्या हाताळल्यास अनपेक्षित अंमलबजावणी होऊ शकते आणि धोकादायक परिणाम होऊ शकतात. प्रॉपर्टी-आधारित चाचणीचा हा प्रकार अनेक कारणांसाठी आदर्श असू शकतो:
-
अनेक परिस्थिती कव्हर करण्यासाठी टेस्ट केसेस लिहिणे कठीण आहे. प्रॉपर्टी चाचणीसाठी फक्त तुम्हाला वर्तन आणि वर्तन तपासण्यासाठी डेटाची श्रेणी परिभाषित करणे आवश्यक आहे—प्रोग्राम परिभाषित प्रॉपर्टीवर आधारित स्वयंचलितपणे टेस्ट केसेस व्युत्पन्न करतो.
-
तुमचा टेस्ट सूट प्रोग्राममधील सर्व संभाव्य मार्गांना पुरेशा प्रमाणात कव्हर करू शकत नाही. 100% कव्हरेजसह देखील, एज केसेस चुकणे शक्य आहे.
-
युनिट चाचण्या सिद्ध करतात की कॉन्ट्रॅक्ट नमुना डेटासाठी योग्यरित्या कार्यान्वित होते, परंतु नमुन्याबाहेरील इनपुटसाठी कॉन्ट्रॅक्ट योग्यरित्या कार्यान्वित होते की नाही हे अज्ञात राहते. प्रॉपर्टी चाचण्या दृढकथन अपयशास कारणीभूत ठरणारे अंमलबजावणी ट्रेस शोधण्यासाठी दिलेल्या इनपुट मूल्याच्या अनेक फरकांसह लक्ष्य कॉन्ट्रॅक्ट कार्यान्वित करतात. अशा प्रकारे, प्रॉपर्टी चाचणी अधिक हमी देते की कॉन्ट्रॅक्ट इनपुट डेटाच्या विस्तृत वर्गासाठी योग्यरित्या कार्यान्वित होते.
स्मार्ट कॉन्ट्रॅक्ट्ससाठी प्रॉपर्टी-आधारित चाचणी चालवण्यासाठी मार्गदर्शक तत्त्वे
प्रॉपर्टी-आधारित चाचणी चालवणे सामान्यतः प्रॉपर्टी (उदा. पूर्णांक ओव्हरफ्लोची (नवीन टॅबमध्ये उघडते) अनुपस्थिती) किंवा तुम्हाला स्मार्ट कॉन्ट्रॅक्टमध्ये सत्यापित करायच्या असलेल्या प्रॉपर्टीजचा संग्रह परिभाषित करण्यापासून सुरू होते. प्रॉपर्टी चाचण्या लिहिताना तुम्हाला मूल्यांची श्रेणी देखील परिभाषित करण्याची आवश्यकता असू शकते ज्यामध्ये प्रोग्राम व्यवहार इनपुटसाठी डेटा व्युत्पन्न करू शकतो.
एकदा योग्यरित्या कॉन्फिगर केल्यावर, प्रॉपर्टी चाचणी साधन यादृच्छिकपणे व्युत्पन्न केलेल्या इनपुटसह तुमच्या स्मार्ट कॉन्ट्रॅक्टची कार्ये कार्यान्वित करेल. जर कोणतेही दृढकथन उल्लंघन असेल, तर तुम्हाला मूल्यांकनाखालील प्रॉपर्टीचे उल्लंघन करणाऱ्या ठोस इनपुट डेटासह अहवाल मिळायला हवा. वेगवेगळ्या साधनांसह प्रॉपर्टी-आधारित चाचणी चालवण्यास सुरुवात करण्यासाठी खालील काही मार्गदर्शक पहा:
- स्लिदरसह स्मार्ट कॉन्ट्रॅक्ट्सचे स्टॅटिक विश्लेषण (नवीन टॅबमध्ये उघडते)
- Wake सह स्मार्ट कॉन्ट्रॅक्ट्सचे स्टॅटिक विश्लेषण (नवीन टॅबमध्ये उघडते)
- Brownie सह प्रॉपर्टी-आधारित चाचणी (नवीन टॅबमध्ये उघडते)
- Foundry सह कॉन्ट्रॅक्ट्सचे फझिंग (नवीन टॅबमध्ये उघडते)
- एकिडनासह कॉन्ट्रॅक्ट्सचे फझिंग (नवीन टॅबमध्ये उघडते)
- Wake सह कॉन्ट्रॅक्ट्सचे फझिंग (नवीन टॅबमध्ये उघडते)
- मॅन्टिकोरसह स्मार्ट कॉन्ट्रॅक्ट्सची प्रतीकात्मक अंमलबजावणी (नवीन टॅबमध्ये उघडते)
- Mythril सह स्मार्ट कॉन्ट्रॅक्ट्सची प्रतीकात्मक अंमलबजावणी (नवीन टॅबमध्ये उघडते)
स्मार्ट कॉन्ट्रॅक्ट्ससाठी मॅन्युअल चाचणी
स्मार्ट कॉन्ट्रॅक्ट्सची मॅन्युअल चाचणी अनेकदा स्वयंचलित चाचण्या चालवल्यानंतर विकास चक्रात नंतर येते. चाचणीचा हा प्रकार स्मार्ट कॉन्ट्रॅक्टचे एक पूर्णपणे एकत्रित उत्पादन म्हणून मूल्यांकन करतो हे पाहण्यासाठी की ते तांत्रिक आवश्यकतांमध्ये निर्दिष्ट केल्याप्रमाणे कार्य करते की नाही.
स्थानिक ब्लॉकचेनवर कॉन्ट्रॅक्ट्सची चाचणी करणे
स्थानिक विकास वातावरणात केलेली स्वयंचलित चाचणी उपयुक्त डीबगिंग माहिती देऊ शकते, तरीही तुम्हाला तुमचे स्मार्ट कॉन्ट्रॅक्ट उत्पादन वातावरणात कसे वागते हे जाणून घ्यायचे असेल. तथापि, मुख्य इथेरियम चेनवर प्रस्थापित करण्यासाठी गॅस शुल्क लागते—तुमच्या स्मार्ट कॉन्ट्रॅक्टमध्ये अद्याप बग असल्यास तुम्ही किंवा तुमचे वापरकर्ते वास्तविक पैसे गमावू शकता हे वेगळे सांगण्याची गरज नाही.
स्थानिक ब्लॉकचेनवर (ज्याला विकास नेटवर्क म्हणूनही ओळखले जाते) तुमच्या कॉन्ट्रॅक्टची चाचणी करणे हा मुख्यनेटवर चाचणी करण्यासाठी शिफारस केलेला पर्याय आहे. स्थानिक ब्लॉकचेन ही तुमच्या संगणकावर स्थानिक पातळीवर चालणाऱ्या इथेरियम ब्लॉकचेनची एक प्रत आहे जी इथेरियमच्या अंमलबजावणी स्तराच्या वर्तनाचे अनुकरण करते. अशा प्रकारे, तुम्ही लक्षणीय ओव्हरहेड न घेता कॉन्ट्रॅक्टशी संवाद साधण्यासाठी व्यवहारांचे प्रोग्राम करू शकता.
स्थानिक ब्लॉकचेनवर कॉन्ट्रॅक्ट्स चालवणे मॅन्युअल एकत्रीकरण चाचणीचा एक प्रकार म्हणून उपयुक्त ठरू शकते. स्मार्ट कॉन्ट्रॅक्ट्स अत्यंत संयोज्य असतात, ज्यामुळे तुम्हाला विद्यमान प्रोटोकॉलसह एकत्रित करण्याची अनुमती मिळते—परंतु तरीही तुम्हाला हे सुनिश्चित करावे लागेल की अशा जटिल ऑनचेन परस्परसंवादांमुळे योग्य परिणाम मिळतात.
टेस्टनेट्सवर कॉन्ट्रॅक्ट्सची चाचणी करणे
टेस्ट नेटवर्क किंवा टेस्टनेट अगदी इथरियम मेननेट प्रमाणेच कार्य करते, फक्त ते इथर (ETH) वापरते ज्याचे कोणतेही वास्तविक-जगातील मूल्य नसते. तुमचे कॉन्ट्रॅक्ट टेस्टनेटवर प्रस्थापित करणे म्हणजे कोणीही निधी धोक्यात न घालता त्याच्याशी संवाद साधू शकतो (उदा. dapp च्या फ्रंटएंडद्वारे).
मॅन्युअल चाचणीचा हा प्रकार वापरकर्त्याच्या दृष्टिकोनातून तुमच्या ॲप्लिकेशनच्या एंड-टू-एंड प्रवाहाचे मूल्यांकन करण्यासाठी उपयुक्त आहे. येथे, बीटा परीक्षक चाचणी रन देखील करू शकतात आणि कॉन्ट्रॅक्टच्या बिझनेस लॉजिक आणि एकूण कार्यक्षमतेसह कोणत्याही समस्यांची तक्रार करू शकतात.
स्थानिक ब्लॉकचेनवर चाचणी केल्यानंतर टेस्टनेटवर प्रस्थापित करणे आदर्श आहे कारण ते इथरियम व्हर्च्युअल मशीनच्या वर्तनाच्या जवळ आहे. म्हणून, वास्तविक-जगातील परिस्थितींमध्ये स्मार्ट कॉन्ट्रॅक्टच्या ऑपरेशनचे मूल्यांकन करण्यासाठी अनेक इथेरियम-नेटिव्ह प्रकल्पांसाठी टेस्टनेटवर dapps प्रस्थापित करणे सामान्य आहे.
चाचणी वि. औपचारिक पडताळणी
चाचणी काही डेटा इनपुटसाठी कॉन्ट्रॅक्ट अपेक्षित परिणाम देते याची पुष्टी करण्यास मदत करत असली तरी, चाचण्यांदरम्यान न वापरलेल्या इनपुटसाठी ती निर्णायकपणे तेच सिद्ध करू शकत नाही. म्हणून, स्मार्ट कॉन्ट्रॅक्टची चाचणी "कार्यात्मक अचूकतेची" हमी देऊ शकत नाही (म्हणजेच, ती हे दर्शवू शकत नाही की प्रोग्राम इनपुट मूल्यांच्या सर्व संचांसाठी आवश्यकतेनुसार वागतो).
औपचारिक पडताळणी हा प्रोग्रामचे औपचारिक मॉडेल औपचारिक तपशीलाशी जुळते की नाही हे तपासून सॉफ्टवेअरच्या अचूकतेचे मूल्यांकन करण्याचा एक दृष्टिकोन आहे. औपचारिक मॉडेल हे प्रोग्रामचे अमूर्त गणितीय सादरीकरण आहे, तर औपचारिक तपशील प्रोग्रामच्या प्रॉपर्टीज परिभाषित करतो (म्हणजेच, प्रोग्रामच्या अंमलबजावणीबद्दल तार्किक दृढकथने).
कारण प्रॉपर्टीज गणितीय परिभाषेत लिहिल्या जातात, अनुमानाच्या तार्किक नियमांचा वापर करून सिस्टमचे औपचारिक (गणितीय) मॉडेल तपशील पूर्ण करते हे सत्यापित करणे शक्य होते. अशा प्रकारे, औपचारिक पडताळणी साधने सिस्टमच्या अचूकतेचा 'गणितीय पुरावा' तयार करतात असे म्हटले जाते.
चाचणीच्या विपरीत, औपचारिक पडताळणीचा वापर नमुना डेटासह कार्यान्वित न करता सर्व अंमलबजावणीसाठी (म्हणजेच, त्यात कोणतेही बग नाहीत) स्मार्ट कॉन्ट्रॅक्टची अंमलबजावणी औपचारिक तपशील पूर्ण करते हे सत्यापित करण्यासाठी केला जाऊ शकतो. यामुळे डझनभर युनिट चाचण्या चालवण्यात घालवलेला वेळ तर कमी होतोच, पण लपलेल्या असुरक्षितता पकडण्यातही ते अधिक प्रभावी आहे. असे म्हटले जाते की, औपचारिक पडताळणी तंत्रे त्यांच्या अंमलबजावणीच्या अडचणी आणि उपयुक्ततेनुसार स्पेक्ट्रमवर असतात.
स्मार्ट कॉन्ट्रॅक्ट्ससाठी औपचारिक पडताळणीबद्दल अधिक.
चाचणी वि ऑडिट्स आणि बग बाउन्टीज
नमूद केल्याप्रमाणे, कठोर चाचणी क्वचितच कॉन्ट्रॅक्टमध्ये बग्स नसल्याची हमी देऊ शकते; औपचारिक पडताळणी दृष्टिकोन अचूकतेचे मजबूत आश्वासन देऊ शकतात परंतु सध्या ते वापरणे कठीण आहे आणि त्यासाठी लक्षणीय खर्च येतो.
तरीही, तुम्ही स्वतंत्र कोड पुनरावलोकन मिळवून कॉन्ट्रॅक्टमधील असुरक्षितता पकडण्याची शक्यता आणखी वाढवू शकता. स्मार्ट कॉन्ट्रॅक्ट ऑडिट्स (नवीन टॅबमध्ये उघडते) आणि बग बाउन्टीज (नवीन टॅबमध्ये उघडते) हे इतरांकडून तुमच्या कॉन्ट्रॅक्ट्सचे विश्लेषण करून घेण्याचे दोन मार्ग आहेत.
ऑडिट्स अशा ऑडिटर्सद्वारे केले जातात ज्यांना स्मार्ट कॉन्ट्रॅक्ट्समधील सुरक्षा त्रुटी आणि खराब विकास पद्धती शोधण्याचा अनुभव असतो. ऑडिटमध्ये सहसा चाचणी (आणि शक्यतो औपचारिक पडताळणी) तसेच संपूर्ण कोडबेसचे मॅन्युअल पुनरावलोकन समाविष्ट असेल.
याउलट, बग बाउन्टी प्रोग्राममध्ये सहसा अशा व्यक्तीला (ज्याला सामान्यतः व्हाईटहॅट हॅकर्स (नवीन टॅबमध्ये उघडते) म्हणून वर्णन केले जाते) आर्थिक बक्षीस देणे समाविष्ट असते जो स्मार्ट कॉन्ट्रॅक्टमध्ये असुरक्षितता शोधतो आणि डेव्हलपर्सना उघड करतो. बग बाउन्टीज ऑडिट्ससारख्याच असतात कारण त्यात इतरांना स्मार्ट कॉन्ट्रॅक्ट्समधील दोष शोधण्यात मदत करण्यास सांगणे समाविष्ट असते.
मुख्य फरक हा आहे की बग बाउन्टी प्रोग्राम्स व्यापक डेव्हलपर/हॅकर समुदायासाठी खुले असतात आणि अद्वितीय कौशल्ये आणि अनुभव असलेल्या एथिकल हॅकर्स आणि स्वतंत्र सुरक्षा व्यावसायिकांच्या विस्तृत वर्गाला आकर्षित करतात. हा स्मार्ट कॉन्ट्रॅक्ट ऑडिट्सपेक्षा एक फायदा असू शकतो जे प्रामुख्याने अशा टीम्सवर अवलंबून असतात ज्यांच्याकडे मर्यादित किंवा संकुचित कौशल्य असू शकते.
चाचणी साधने आणि लायब्ररी
युनिट चाचणी साधने
-
solidity-coverage (नवीन टॅबमध्ये उघडते) - Solidity मध्ये लिहिलेल्या स्मार्ट कॉन्ट्रॅक्ट्ससाठी कोड कव्हरेज टूल.
-
Waffle (नवीन टॅबमध्ये उघडते) - प्रगत स्मार्ट कॉन्ट्रॅक्ट विकास आणि चाचणीसाठी फ्रेमवर्क (ethers.js वर आधारित).
-
Remix Tests (नवीन टॅबमध्ये उघडते) - Solidity स्मार्ट कॉन्ट्रॅक्ट्सची चाचणी करण्यासाठी टूल. Remix IDE "Solidity Unit Testing" प्लगइन अंतर्गत कार्य करते जे कॉन्ट्रॅक्टसाठी टेस्ट केसेस लिहिण्यासाठी आणि चालवण्यासाठी वापरले जाते.
-
OpenZeppelin Test Helpers (नवीन टॅबमध्ये उघडते) - इथेरियम स्मार्ट कॉन्ट्रॅक्ट चाचणीसाठी दृढकथन लायब्ररी. तुमचे कॉन्ट्रॅक्ट्स अपेक्षेप्रमाणे वागतात याची खात्री करा!
-
Brownie युनिट चाचणी फ्रेमवर्क (नवीन टॅबमध्ये उघडते) - Brownie Pytest चा वापर करते, एक वैशिष्ट्यपूर्ण चाचणी फ्रेमवर्क जे तुम्हाला कमीतकमी कोडसह लहान चाचण्या लिहू देते, मोठ्या प्रकल्पांसाठी चांगले स्केल करते आणि अत्यंत विस्तारण्यायोग्य आहे.
-
Foundry Tests (नवीन टॅबमध्ये उघडते) - Foundry Forge ऑफर करते, एक जलद आणि लवचिक इथेरियम चाचणी फ्रेमवर्क जे साध्या युनिट चाचण्या, गॅस अनुकूलन तपासणी आणि कॉन्ट्रॅक्ट फझिंग कार्यान्वित करण्यास सक्षम आहे.
-
Hardhat Tests (नवीन टॅबमध्ये उघडते) - ethers.js, Mocha आणि Chai वर आधारित स्मार्ट कॉन्ट्रॅक्ट्सची चाचणी करण्यासाठी फ्रेमवर्क.
-
ApeWorx (नवीन टॅबमध्ये उघडते) - इथरियम व्हर्च्युअल मशीनला लक्ष्य करणाऱ्या स्मार्ट कॉन्ट्रॅक्ट्ससाठी Python-आधारित विकास आणि चाचणी फ्रेमवर्क.
-
Wake (नवीन टॅबमध्ये उघडते) - सर्वोत्तम वापरकर्ता अनुभव आणि कार्यप्रदर्शनासाठी pytest आणि Anvil चा वापर करून, मजबूत डीबगिंग क्षमता आणि क्रॉस-चेन चाचणी समर्थनासह युनिट चाचणी आणि फझिंगसाठी Python-आधारित फ्रेमवर्क.
प्रॉपर्टी-आधारित चाचणी साधने
स्टॅटिक विश्लेषण साधने
-
स्लिदर (नवीन टॅबमध्ये उघडते) - असुरक्षितता शोधण्यासाठी, कोड आकलन वाढवण्यासाठी आणि स्मार्ट कॉन्ट्रॅक्ट्ससाठी सानुकूल विश्लेषणे लिहिण्यासाठी Python-आधारित Solidity स्टॅटिक विश्लेषण फ्रेमवर्क.
-
Ethlint (नवीन टॅबमध्ये उघडते) - Solidity स्मार्ट कॉन्ट्रॅक्ट प्रोग्रामिंग भाषेसाठी शैली आणि सुरक्षा सर्वोत्तम पद्धती लागू करण्यासाठी लिंटर.
-
Cyfrin Aderyn (नवीन टॅबमध्ये उघडते) - विशेषतः Web3 स्मार्ट कॉन्ट्रॅक्ट सुरक्षा आणि विकासासाठी डिझाइन केलेले Rust-आधारित स्टॅटिक विश्लेषक.
-
Wake (नवीन टॅबमध्ये उघडते) - असुरक्षितता आणि कोड गुणवत्ता शोधक, कोडमधून उपयुक्त माहिती काढण्यासाठी प्रिंटर आणि सानुकूल सबमॉड्यूल्स लिहिण्यासाठी समर्थनासह Python-आधारित स्टॅटिक विश्लेषण फ्रेमवर्क.
-
Slippy (नवीन टॅबमध्ये उघडते) - Solidity साठी एक साधा आणि शक्तिशाली लिंटर.
डायनॅमिक विश्लेषण साधने
-
एकिडना (नवीन टॅबमध्ये उघडते) - प्रॉपर्टी-आधारित चाचणीद्वारे स्मार्ट कॉन्ट्रॅक्ट्समधील असुरक्षितता शोधण्यासाठी जलद कॉन्ट्रॅक्ट फझर.
-
Diligence Fuzzing (नवीन टॅबमध्ये उघडते) - स्मार्ट कॉन्ट्रॅक्ट कोडमधील प्रॉपर्टी उल्लंघने शोधण्यासाठी उपयुक्त स्वयंचलित फझिंग टूल.
-
मॅन्टिकोर (नवीन टॅबमध्ये उघडते) - EVM बाइटकोडचे विश्लेषण करण्यासाठी डायनॅमिक प्रतीकात्मक अंमलबजावणी फ्रेमवर्क.
-
Mythril (नवीन टॅबमध्ये उघडते) - टेन्ट विश्लेषण, कॉन्कोलिक विश्लेषण आणि कंट्रोल फ्लो चेकिंग वापरून कॉन्ट्रॅक्ट असुरक्षितता शोधण्यासाठी EVM बाइटकोड मूल्यांकन टूल.
-
Diligence Scribble (नवीन टॅबमध्ये उघडते) - Scribble ही एक स्पेसिफिकेशन भाषा आणि रनटाइम पडताळणी टूल आहे जे तुम्हाला स्मार्ट कॉन्ट्रॅक्ट्सना प्रॉपर्टीजसह भाष्य करण्याची अनुमती देते जे तुम्हाला Diligence Fuzzing किंवा MythX सारख्या साधनांसह कॉन्ट्रॅक्ट्सची स्वयंचलितपणे चाचणी करण्यास अनुमती देते.
संबंधित ट्यूटोरियल
- विविध चाचणी उत्पादनांचे विहंगावलोकन आणि तुलना _
- स्मार्ट कॉन्ट्रॅक्ट्सची चाचणी करण्यासाठी एकिडनाचा वापर कसा करावा
- स्मार्ट कॉन्ट्रॅक्ट बग्स शोधण्यासाठी मॅन्टिकोरचा वापर कसा करावा
- स्मार्ट कॉन्ट्रॅक्ट बग्स शोधण्यासाठी स्लिदरचा वापर कसा करावा
- चाचणीसाठी Solidity कॉन्ट्रॅक्ट्स मॉक कसे करावे
- Foundry वापरून Solidity मध्ये युनिट चाचण्या कशा चालवाव्यात (नवीन टॅबमध्ये उघडते)
पुढील वाचन
- इथेरियम स्मार्ट कॉन्ट्रॅक्ट्सची चाचणी करण्यासाठी सखोल मार्गदर्शक (नवीन टॅबमध्ये उघडते)
- इथेरियम स्मार्ट कॉन्ट्रॅक्ट्सची चाचणी कशी करावी (नवीन टॅबमध्ये उघडते)
- डेव्हलपर्ससाठी MolochDAO चे युनिट चाचणी मार्गदर्शक (नवीन टॅबमध्ये उघडते)
- रॉकस्टारसारखी स्मार्ट कॉन्ट्रॅक्ट्सची चाचणी कशी करावी (नवीन टॅबमध्ये उघडते)
ट्यूटोरियल: इथेरियमवर स्मार्ट कॉन्ट्रॅक्ट चाचणी
- स्थानिक, मल्टी-क्लायंट टेस्टनेटवर dApp कसे विकसित आणि तपासावे – स्थानिक टेस्टनेटवर स्मार्ट कॉन्ट्रॅक्ट प्रस्थापित करणे आणि चाचण्या करण्याचे वॉकथ्रू.
- चाचणीसाठी Solidity स्मार्ट कॉन्ट्रॅक्ट्स मॉक कसे करावे – मॉक डेटा कसा वापरावा आणि युनिट चाचणी कशी लागू करावी यावरील मध्यवर्ती ट्यूटोरियल.
- स्मार्ट कॉन्ट्रॅक्ट्सची चाचणी करण्यासाठी एकिडनाचा वापर कसा करावा – फझिंग आणि स्मार्ट कॉन्ट्रॅक्ट चाचणीसाठी प्रगत दृष्टिकोन.