Skip to main content
Foundry या Hardhat का उपयोग करके Virtual Environment पर Solidity contracts deploy करें। Virtual Environment पर deploy किए गए contracts को virtual contracts कहा जाता है और वे Virtual Contracts tab के तहत Contracts section में दिखाई देते हैं। deploy करते समय contracts को verify करें। Verified contracts explorer में Debugger, Gas Profiler, Simulator, और समृद्ध transaction views को अनलॉक करते हैं।

शुरू करने से पहले

Virtual Environment पर Verification को अलग access key की आवश्यकता नहीं है: RPC URL स्वयं authenticate करता है, और verifier endpoint उसी URL के साथ /verify जोड़ा हुआ है।
डिफ़ॉल्ट रूप से, Virtual Environment पर verify किए गए contracts निजी होते हैं। public explorer की visibility setting के आधार पर, code बाहरी रूप से दिखाई दे सकता है। कुछ भी verify करने से पहले public explorer toggle और verification visibility जाँच लें जिसे आप निजी रखना चाहते हैं।

Deploy और verify

foundry.toml कॉन्फ़िगर करें

Tenderly का verifier उस metadata hash को match करता है जिसे Solidity compiler deployed bytecode में जोड़ता है, आपके द्वारा submit किए गए source के विरुद्ध। compiled output में metadata को रखने के लिए cbor_metadata और bytecode_hash को स्पष्ट रूप से सेट करें:
foundry.toml
cbor_metadata = true और bytecode_hash = "ipfs" Foundry के डिफ़ॉल्ट हैं, लेकिन कुछ templates उन्हें strip कर देते हैं; bytecode_hash = "none" verification को तोड़ देता है। solc_version और optimizer settings को pin करें ताकि re-verification वही bytecode compile करे।यदि आपका project OpenZeppelin जैसी libraries का उपयोग करता है, तो remappings.txt में remappings को स्पष्ट रूप से घोषित करें:
remappings.txt
Auto-detected remappings के साथ, verification payload में build द्वारा उपयोग की गई अलग remapping strings हो सकती हैं, जिससे bytecode-mismatch failures होते हैं।

Environment variables सेट करें

showLineNumbers
Deploy करने से पहले connection की जाँच करें। cast chain-id को Virtual Environment के chain ID को print करना चाहिए, और deployer balance गैर-शून्य होना चाहिए:

forge create के साथ deploy करें

verify flags के साथ forge create चलाएं। Constructor arguments raw values के रूप में पास किए जाते हैं; Foundry उन्हें ABI-encode करता है और encoded रूप को verifier को submit करता है:
showLineNumbers
--constructor-args को अंत में रखें। यह command line के बाकी हिस्से को greedily consume कर लेता है, इसलिए इसके बाद रखा गया कोई भी flag एक और constructor argument माना जाता है।

Foundry script के साथ deploy करें

एक ही run में कई contracts deploy करने के लिए forge script का उपयोग करें। script में प्रत्येक new Foo(...) को verification के लिए स्वचालित रूप से submit किया जाता है, broadcast log से लिए गए सही constructor arguments के साथ। Imports को transparently handle किया जाता है: verifier को एक standard-JSON payload मिलता है जिसमें compiler द्वारा छूने वाली प्रत्येक source file होती है, इसलिए local imports और library imports (जैसे OpenZeppelin) बिना अतिरिक्त steps के verify होते हैं।--slow का उपयोग करें ताकि transactions एक-एक करके भेजी जाएं। इसके बिना, broadcast batching पिछले transaction के confirm होने से पहले एक transaction submit कर सकती है, जो एक hosted RPC के विरुद्ध flaky है और verification step को race कर सकती है।
showLineNumbers

मौजूदा contract को verify करें

पहले से deployed contracts को forge verify-contract के साथ verify किया जा सकता है। forge create के विपरीत, यह command पहले से ही ABI-encoded constructor arguments की अपेक्षा करता है; उन्हें बनाने के लिए cast abi-encode का उपयोग करें:
showLineNumbers
--watch verifier को तब तक poll करता है जब तक verification समाप्त न हो जाए और परिणाम print करता है। Multi-contract deployments के लिए, प्रत्येक deployed address के लिए forge verify-contract एक बार चलाएं।

Dashboard जाँचें

Tenderly Dashboard में, Contracts खोलें और Virtual Contracts tab चुनें। आपके नए deployed contracts वहाँ दिखाई देते हैं, प्रत्येक contract के लिए verification status दिखाई देता है।

Troubleshooting

अगले कदम