क्या Virtual Environments का उपयोग करने के लिए मुझे एक paid plan की आवश्यकता है?
हाँ। Virtual Environments paid plan पर उपलब्ध हैं। इन्हें अपने account के लिए enable करने के लिए, हमारी sales team से संपर्क करें एक call schedule करने और अपने plan को upgrade करने पर चर्चा करने के लिए।
मैं Virtual Environments कैसे बना सकता हूँ?
आप एक Virtual Environment दो तरीकों से बना सकते हैं:
- Dashboard UI से
- Virtual Environment REST API का उपयोग करके।
- एक मौजूदा Virtual Environment को fork करके।
मुझे एक अद्वितीय chain ID क्यों सेट करना चाहिए?
एक custom chain ID सेट करें जो parent network के chain ID से अलग हो।अनुशंसा: मूल network के Chain ID में
7357 (test) prefix जोड़ें। उदाहरण के लिए, यदि
आप Ethereum Mainnet (chain ID: 1) को fork करके एक Virtual Environment बना रहे हैं, तो अपने Virtual
Environment chain ID को 73571 जैसा कुछ सेट करें।यह कई कारणों से अनुशंसित है:- चूँकि Virtual Environment chain Mainnet chain से स्वतंत्र है, इसका एक स्वतंत्र और अद्वितीय chain ID होना चाहिए।
- एक अद्वितीय chain ID का उपयोग एक सुरक्षा उपाय है जो आपके dapp को transaction replay attacks से बचाता है।
- MetaMask जैसे wallets, यह पहचानेंगे कि मूल chain ID पहले से उपयोग में है और संभावित रूप से आपके Virtual Environment को parent network के रूप में गलत समझ सकते हैं जब तक कि यह एक अद्वितीय chain ID का उपयोग न करे।
Virtual Environments timestamps को कैसे हल करते हैं?
जब एक transaction या
eth_call एक contract के भीतर block.timestamp तक पहुँचता है, तो मान इस पर निर्भर करेगा कि transaction latest या pending block को target करता है।pendingblock के लिए मान adjustment offset द्वारा समायोजित वर्तमान समय हैblock.timestamp == time.now() + adjustment_offset।latestblock के लिए मान latest block का timestamp हैblock.timestamp == latest_block.timestamp
adjustment_offset समय-समायोजन विधियों evm_setNextBlockTimestamp और evm_increaseTime से आता है।अधिक जानें →Mining कैसे काम करता है?
हर बार जब आप
eth_sendRawTransaction और eth_sendRawTransaction के माध्यम से एक Virtual Environment को एक transaction भेजते हैं, एक block mined होता है और block number 1 से बढ़ता है। प्रारंभिक block नंबर निर्माण के समय मूल chain के latest block से लिया जाता है।State Sync कैसे काम करता है?
State Sync एक Virtual Environment को मूल network की live state को ट्रैक करने में सक्षम बनाता है
।
- जब तक एक Virtual Environment transaction एक storage slot को संशोधित नहीं करता, Virtual Environment मूल network से वर्तमान मान को ट्रैक करता है।
- एक Virtual Environment transaction द्वारा एक contract
Cमें एक slotXको संशोधित करने के बाद, कोई भी बाद का read उस मान को yield करेगा। अनसंशोधितC.Yमूल network से मान को प्रतिबिंबित करेगा।
मैं State Sync के साथ mainnet transactions क्यों नहीं देख सकता?
State sync state को ट्रैक करता है, लेकिन मूल network को न तो synchronize करता है और न ही प्रदर्शित करता है
- transactions
- event logs
- blocks
क्या State Sync के साथ समस्याएँ हैं?
Mainnet contracts का व्यवहार जो
block.number को cache करते हैं, Virtual Environment
transactions चलाते समय अप्रत्याशित होता है, क्योंकि mainnet और Virtual Environment पर block नंबर विभिन्न
दरों पर बढ़ता है।मैं समय के बीतने की गति को कैसे तेज़ कर सकता हूँ?
उस code का तेज़ परीक्षण सक्षम करने के लिए जो वर्तमान timestamp पर निर्भर करता है (जैसे yield और reward गणना), आप
tenderly_increaseTime का उपयोग कर सकते हैं।क्या Virtual Environments WebSockets का समर्थन करते हैं?
हाँ, Virtual Environments WebSockets का समर्थन करते हैं। बस URL में
https:// के बजाय wss:// का उपयोग करें।मैं एक Virtual Environment को कब fork करूँगा?
आप contracts deploy करने और accounts को funding,
transactions भेजने या Admin RPC का उपयोग करके अपने Virtual Environment state को सेट अप करने के बाद एक मौजूदा Virtual Environment को fork कर सकते हैं।
- अछूता प्रारंभिक बिंदु: विकसित करने या experiment करने के लिए एक forked Virtual Environment का उपयोग करके, आपका प्रारंभिक बिंदु परिवर्तनों से स्वच्छ रहता है।
- प्रति team सदस्य कार्यशील प्रति: smart contracts के staging के बाद, आपके team सदस्य network की अपनी कार्यशील प्रति पर अपना काम कर सकते हैं।
Virtual Environments team सहयोग में कैसे मदद करते हैं?
Smart contracts deploy करने के लिए Virtual Environments का उपयोग करते समय, आपके Tenderly
Organization के सदस्यों को Virtual Environment तक direct एक्सेस होगा।Virtual Environment में deployment के बाद, आप chain और contract configuration वितरित कर सकते हैं ताकि अन्य
components जैसे UI, APIs, और data indexing के builders staged contracts से जुड़ सकें।यहाँ कुछ अनुशंसाएँ हैं:
- एक Virtual Environment में Stage contracts।
- प्रत्येक team (frontend, backend, आदि) के लिए staging Virtual Environment को fork करें ताकि teams के बीच सीमाएँ सुनिश्चित हों और development में test-data noise कम हो।
- सभी प्रासंगिक git repos को Virtual Environment config और contract जानकारी के साथ अपडेट करें:
- Chain config: chain ID और Admin RPC साझा करें (ताकि अन्य builders chain state को नियंत्रित कर सकें)
- Contracts के ABIs
- Contracts के deployment पते
- स्थानीय रूप से (UI, backend) develop करते समय, Virtual Environment पर switch करें।
- विफल transactions को smart contract developers के साथ साझा करें
बाहरी demos और community testing के लिए एक dapp को कैसे stage करें?
बाहरी और demo testing के लिए अपने dapp को stage करते समय, सुनिश्चित करें कि:
- अपने contracts को एक Virtual Environment में stage करें।
- अपने सभी offchain components (backend, data indexing solutions, आदि) को stage करें और उन्हें Virtual Environment से कनेक्ट करें।
- अपने staged dapp को Public RPC (Admin RPC नहीं) के माध्यम से कनेक्ट करें और इसे अन्य offchain components से कनेक्ट करें।
मैं Virtual Environment state को कैसे revert कर सकता हूँ?
State को revert करने के बजाय, एक मौजूदा
Virtual Environment को fork करना और एक disposable कार्यशील
प्रति पर अपना testing करना अनुशंसित है।यदि testing चरण अन्यथा दोहराने योग्य नहीं हैं तो आप Virtual Environment state को Revert
कर सकते हैं।
मुझे अपने Virtual Environment का नाम कैसे रखना चाहिए?
आसान भेद के लिए, अपने Virtual Environments को
virtual के साथ prefix करें (जैसे virtualMainnet)। यह
विशेष रूप से Viem,
HardHat, और
अन्य जैसे integrations के लिए उपयोगी है।वैकल्पिक रूप से, Virtual Environment के नाम में उद्देश्य शामिल करें:internalTestingMainnetdemoMainnetdataInsightsMainnetciMainnetbugBountyBasefrontEndDevOptimismcommunityTestingAvalanche
Virtual Environments में verification visibility क्या है?
Virtual Environment का Public explorer उन contracts के लिए verification visibility का पालन करता है
जिन्हें आप Virtual Environment पर deploy और verify करते हैं:
- Full: public block explorer सभी functions का पूरा source code प्रदर्शित करेगा
- ABI-only: public block explorer केवल function और events के नाम और signatures दिखाता है, argument नामों सहित। इस तरह आपका source code आपके project के बाहर अदृश्य रहता है।
- None: source code, या method नामों को प्रकट किए बिना, केवल transactions के अंतिम परिणाम दिखाएँ ।
मैं Virtual Environments पर Foundry scripts कैसे चलाऊँ?
Foundry scripts चलाते समय transaction batching को रोकने के लिए
--slow flag का उपयोग करें। इसके साथ, एक transaction तभी भेजा जाता है जब इसका पूर्ववर्ती transaction confirm होता है।जब मैं accounts को fund करता हूँ, तो क्या मुझे राशि wei में input करनी चाहिए?
Dashboard में Unlimted Faucet का उपयोग करते समय,
1 का अर्थ है 1 ETH, native और ERC-20
balance दोनों के लिए।
ERC-20 tokens के मामले में, Tenderly ERC-20 decimals की संख्या का उपयोग करके wei में सटीक राशि की स्वचालित रूप से गणना करता है।Admin RPC और Public RPC के बीच क्या अंतर है?
Public RPC मानक JSON-RPC interaction की अनुमति देता है। यह वह RPC है जिसका उपयोग आप
अपने dapp के UI या backend में एकीकृत करने के लिए करेंगे जब आप अपने dapp को बाहरी रूप से demo करने के लिए तैयार हों।Admin RPC अतिरिक्त RPC विधियों का समर्थन करता है जो network state और storage, साथ ही account balances पर उच्च नियंत्रण
की अनुमति देते हैं। यह वह RPC है जिसका उपयोग आप programmatic network नियंत्रण के लिए अपने
deployment scripts में करेंगे।
क्या मैं Virtual Environments पर एक sender का impersonate कर सकता हूँ?
आप Dashboard के माध्यम से किसी भी sender पते का उपयोग करके transactions सफलतापूर्वक भेज सकते हैं। Tenderly signatures की जाँच किए बिना
Virtual Environments पर उन transactions को चलाएगा।
मैं सटीक gas अनुमान कैसे प्राप्त कर सकता हूँ?
Gas उपयोग मूल network से सभी OPCODES के सटीक gas उपयोग को प्रतिबिंबित करता है। आप gas उपयोग प्राप्त कर सकते हैं:
- Dashboard के माध्यम से Transaction Overview में,
- single-transaction अनुमानों के लिए 100% सटीकता के साथ tenderly_estimateGas के माध्यम से
- कई transactions के अनुमान के लिए 100% सटीकता के साथ tenderly_estimateGasBundle के माध्यम से
यदि मैं tenderly_setcode का उपयोग करूँ तो क्या verification काम करेगा?
एक पते पर संशोधित bytecode को deploy करते समय, verification जानकारी अब मेल नहीं खाएगी और target पतों के लिए traces और debugger तक पहुँच संभव नहीं होगी।