इन पर काम करता है: Virtual Environments और सार्वजनिक नेटवर्क (mainnets और testnets)। समान plugin दोनों को संभालता है;
hardhat.config.ts में इसे सही नेटवर्क पर इंगित करें।tenderly.verify() कॉल करने के लिए manual verification का उपयोग करें।
सार्वजनिक नेटवर्क्स पर, plugin डिफ़ॉल्ट रूप से सार्वजनिक रूप से सत्यापित करता है। निजी रूप से सत्यापित करने के लिए (केवल आपके प्रोजेक्ट/organization के अंदर दिखाई देने के लिए),
hardhat.config.ts में privateVerification: true सेट करें। Configure authentication and verification visibility देखें।संस्करण और अनुकूलता
Hardhat के साथ आप जिस Ethers संस्करण का उपयोग कर रहे हैं, उसके आधार पर, आपको Tenderly-Hardhat plugin का संबंधित संस्करण download करना होगा।
वर्तमान Virtual Environment RPC URLs (dashboard में दिखने वाले region और
org/project/slug रूपों) के विरुद्ध सत्यापन के लिए plugin संस्करण 2.6.0 या नया आवश्यक है।
सत्यापन विधियाँ
Tenderly-Hardhat plugin contract सत्यापन के लिए तीन तरीकों का समर्थन करता है।-
स्वचालित सत्यापन (अनुशंसित): बस plugin को import करें और सेट अप करें। यह विधि deployment के दौरान सत्यापन के लिए आदर्श है क्योंकि यह प्रक्रिया पूरी तरह से स्वचालित है। स्वचालित सत्यापन plain hardhat deployment सेटअप के साथ-साथ hardhat-ignition का उपयोग करके भी काम करता है।
TENDERLY_AUTOMATIC_VERIFICATIONenvironment variable का उपयोग करके स्वचालित सत्यापन को नियंत्रित करें। - Manual verification (low-code): आपके code के भीतर एक स्पष्ट सत्यापन चरण प्रदान करता है, जो post-deployment verification, conditional verification (जैसे केवल failing test के बाद), या factory contracts के instances को सत्यापित करने जैसे परिदृश्यों के लिए उपयोगी है।
- Verbose manual verification (high-code): सत्यापन प्रक्रिया पर विस्तृत नियंत्रण प्रदान करता है, library addresses, source codes, और compiler configurations को निर्दिष्ट करता है। यह विभिन्न compiler संस्करणों या settings के साथ कई contracts को सत्यापित करने के लिए आवश्यक है।
उदाहरण
स्वचालित सत्यापन प्रक्रिया का पता लगाने का सबसे अच्छा तरीका एक उदाहरण से गुजरना है, जो आप हमारे GitHub repo में कर सकते हैं। सभी उदाहरण sampleGreeter contract का उपयोग करते हैं। उदाहरण projects को सीधे browse करें:
Tenderly-Hardhat plugin सेटअप
Tenderly-Hardhat plugin को install और initialize करने के लिए नीचे दिए गए चरणों का पालन करें। निम्नलिखित अनुभागों में, आप विभिन्न सत्यापन विधियों का उपयोग करके contracts को सत्यापित करना सीखेंगे।स्वचालित सत्यापन
स्वचालित सत्यापन तब निर्बाध रूप से होता है जब आप Ethers.js का उपयोग करके एक contract को deploy करते हैं। स्वचालित सत्यापन दृष्टिकोण compiler settings, deploy किए गए contract के address, और सोर्स कोड को इकट्ठा करने के बाद स्वचालित रूप से सत्यापन करेगा। स्वचालित सत्यापन डिफ़ॉल्ट रूप से सक्षम है। इसे अक्षम करने के लिए, plugin द्वारा पहचाने जाने वालेTENDERLY_AUTOMATIC_VERIFICATION environment variable को false पर सेट करें।
Tenderly-Hardhat plugin contracts को तब सत्यापित करेगा जब वह पता लगाता है कि contract deploy किया गया है, और Ethers को deployment transaction की receipt मिल गई है।
इसे सक्षम करने के लिए, आपको Ethers की helper methods ethers.deployContract() और ethers.getContractFactory() का उपयोग करके contracts deploy करते समय deployment के लिए await करने की आवश्यकता होती है, contract instance पर क्रमशः waitForDeployment() या deployed() को कॉल करके।
Proxy contracts का सत्यापन
hardhat-upgrades के साथ deploy और upgrade किए गए proxy contracts का स्वचालित सत्यापन @tenderly/hardhat-tenderly package के निम्नलिखित संस्करणों के साथ संभव है:
- >= 1.10.0
- >= 2.1.0
1.x.x < 1.10.0 और 2.x.x < 2.1.0 के लिए proxy verification guide का पालन करें।
Manual सत्यापन
tenderly.verify() के माध्यम से low-code सत्यापन आपको एक deployment script या Hardhat test के भीतर सत्यापन के सटीक बिंदु के बारे में स्पष्ट होने की अनुमति देता है।
यह विधि विशेष रूप से इनके लिए फायदेमंद है:
- Custom scripts के माध्यम से पहले deploy किए गए contracts को सत्यापित करना।
- Factory contracts द्वारा बनाए गए instances को सत्यापित करना।
- Test runs को बढ़ाना, failing suite (
after) के अंत में contracts को चुनिंदा रूप से सत्यापित करना, जो execution को तेज़ करता है।
TENDERLY_AUTOMATIC_VERIFICATION को false में बदलकर स्वचालित सत्यापन को अक्षम करें।
verify function
verify() function एक object लेता है जहाँ आपको यह प्रदान करना होगा:
- contract का
name addressजहाँ contract deploy किया गया है- contract द्वारा उपयोग की जाने वाली
libraries(वैकल्पिक)
Contract deploy होने के बाद
verify() को invoke करना आवश्यक है।यदि आप deployment के साथ सत्यापन कर रहे हैं, तो आपको Ethers 6 के मामले में waitForDeployment() के लिए, और
Ethers 5 के मामले में deployed() के लिए await करना होगा।Verbose manual सत्यापन
MethodverifyMultiCompilerAPI() आपको सत्यापन प्रक्रिया पर पूर्ण नियंत्रण देती है, जिससे आप सत्यापन प्रक्रिया के हर विवरण को निर्दिष्ट कर सकते हैं।
यह शायद ही कभी अनुशंसित है, लेकिन यदि आप विभिन्न compiler संस्करणों या configurations के साथ compile किए गए contracts को सत्यापित कर रहे हैं तो उपयोगी हो सकता है।
पूरी तरह से नियंत्रित सत्यापन विधि आपको स्पष्ट रूप से यह करने की अनुमति देती है:
- Contracts के सोर्स कोड को निर्दिष्ट करें (
sources) - Compilation arguments सेट करें (
compiler) - Linked libraries सेट करें (
libraries)
सत्यापन arguments
verifyMultiCompilerAPI() method एक argument लेती है — contract objects की एक array। प्रत्येक contract object में निम्नलिखित शामिल हैं: