> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tenderly.co/llms.txt
> Use this file to discover all available pages before exploring further.

# FAQ: Virtual Environments

> Virtual Environments बनाने, forking, और प्रबंधित करने के बारे में सामान्य प्रश्नों के उत्तर, जिनमें chain IDs, timestamps, State Sync, और team workflows शामिल हैं।

<div className="flex flex-col gap-4 mt-8">
  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="do-i-need-a-paid-plan-to-use-virtual-environments" className="text-xl font-semibold">क्या Virtual Environments का उपयोग करने के लिए मुझे एक paid plan की आवश्यकता है?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        हाँ। Virtual Environments paid plan पर उपलब्ध हैं। इन्हें अपने account के लिए enable करने के लिए, [हमारी sales team से संपर्क करें](https://tenderly.co/contact-us) एक call schedule करने और अपने plan को upgrade करने पर चर्चा करने के लिए।
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-can-i-create-virtual-environments" className="text-xl font-semibold">मैं Virtual Environments कैसे बना सकता हूँ?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        आप एक Virtual Environment दो तरीकों से बना सकते हैं:

        * [Dashboard UI](/virtual-environments/overview#quickstart) से
        * [Virtual Environment REST API](/api-reference#/operations/createVnet) का उपयोग करके।
        * एक [मौजूदा Virtual Environment को fork करके](/virtual-environments/develop/fork-testnet)।
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="why-should-i-set-a-unique-chain-id" className="text-xl font-semibold">मुझे एक अद्वितीय chain ID क्यों सेट करना चाहिए?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        एक 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**](https://quantstamp.com/blog/preventing-replay-attacks-post-ethereum-merge) से बचाता है।
        * MetaMask जैसे wallets, यह पहचानेंगे कि **मूल chain ID पहले से उपयोग में है** और
          संभावित रूप से आपके Virtual Environment को parent network के रूप में गलत समझ सकते हैं जब तक कि यह एक अद्वितीय chain ID का उपयोग न करे।
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-virtual-environments-resolve-timestamps" className="text-xl font-semibold">Virtual Environments timestamps को कैसे हल करते हैं?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        जब एक transaction या `eth_call` एक contract के भीतर **`block.timestamp`** तक पहुँचता है, तो मान इस पर निर्भर करेगा कि transaction `latest` या `pending` block को target करता है।

        * `pending` block के लिए मान adjustment offset द्वारा समायोजित वर्तमान समय है `block.timestamp == time.now() + adjustment_offset`।
        * `latest` block के लिए मान latest block का timestamp है `block.timestamp == latest_block.timestamp`

        `adjustment_offset` समय-समायोजन विधियों [`evm_setNextBlockTimestamp`](/virtual-environments/admin-rpc/#evm_setnextblocktimestamp) और [`evm_increaseTime`](/virtual-environments/admin-rpc/#evm_increasetime) से आता है।

        [अधिक जानें →](/virtual-environments/develop/timestamps)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-mining-works" className="text-xl font-semibold">Mining कैसे काम करता है?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        हर बार जब आप `eth_sendRawTransaction` और `eth_sendRawTransaction` के माध्यम से एक Virtual Environment को एक transaction भेजते हैं, एक block mined होता है और block number 1 से बढ़ता है। **प्रारंभिक block नंबर** निर्माण के समय मूल chain के latest block से लिया जाता है।
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-does-state-sync-work" className="text-xl font-semibold">State Sync कैसे काम करता है?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        [State Sync](/virtual-environments/state-sync) एक Virtual Environment को मूल network की live state को ट्रैक करने में सक्षम बनाता है
        ।

        * जब तक एक Virtual Environment transaction एक storage slot को संशोधित नहीं करता, Virtual Environment मूल
          network से वर्तमान मान को ट्रैक करता है।
        * एक Virtual Environment transaction द्वारा एक contract `C` में एक slot `X` को संशोधित करने के बाद, कोई भी बाद का read उस
          मान को yield करेगा। अनसंशोधित `C.Y` मूल network से मान को प्रतिबिंबित करेगा।
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="why-can-t-i-see-mainnet-transactions-with-state-sy" className="text-xl font-semibold">मैं State Sync के साथ mainnet transactions क्यों नहीं देख सकता?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        State sync state को ट्रैक करता है, लेकिन मूल network को न तो synchronize करता है और न ही प्रदर्शित करता है

        * transactions
        * event logs
        * blocks
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="are-there-issues-with-state-sync" className="text-xl font-semibold">क्या State Sync के साथ समस्याएँ हैं?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        Mainnet contracts का व्यवहार जो `block.number` को cache करते हैं, Virtual Environment
        transactions चलाते समय अप्रत्याशित होता है, क्योंकि mainnet और Virtual Environment पर [block नंबर विभिन्न
        दरों पर बढ़ता है](/virtual-environments/state-sync#how-state-sync-works)।
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-can-i-speed-up-passage-of-time" className="text-xl font-semibold">मैं समय के बीतने की गति को कैसे तेज़ कर सकता हूँ?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        उस code का तेज़ परीक्षण सक्षम करने के लिए जो वर्तमान timestamp पर निर्भर करता है (जैसे yield और reward गणना), आप [`tenderly_increaseTime`](/virtual-environments/admin-rpc#evm_increasetime) का उपयोग कर सकते हैं।
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="do-testnets-support-websockets" className="text-xl font-semibold">क्या Virtual Environments WebSockets का समर्थन करते हैं?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        हाँ, Virtual Environments WebSockets का समर्थन करते हैं। बस URL में `https://` के बजाय `wss://` का उपयोग करें।
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="when-would-i-fork-a-testnet" className="text-xl font-semibold">मैं एक Virtual Environment को कब fork करूँगा?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        आप contracts deploy करने और [accounts को funding](/virtual-environments/unlimited-faucet),
        [transactions भेजने](/virtual-environments/interact/send-transactions) या [Admin RPC](/virtual-environments/admin-rpc) का उपयोग करके अपने Virtual Environment state को सेट अप करने के बाद एक [मौजूदा Virtual Environment को fork](/virtual-environments/develop/fork-testnet) कर सकते हैं।

        * **अछूता प्रारंभिक बिंदु**: विकसित करने या experiment करने के लिए एक forked Virtual Environment का उपयोग करके, आपका प्रारंभिक बिंदु
          परिवर्तनों से स्वच्छ रहता है।
        * **प्रति team सदस्य कार्यशील प्रति**: [smart contracts के staging](/virtual-environments/ci-cd/stage-contracts) के बाद,
          आपके team सदस्य network की अपनी कार्यशील प्रति पर अपना काम कर सकते हैं।
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-testnets-help-team-collaboration" className="text-xl font-semibold">Virtual Environments team सहयोग में कैसे मदद करते हैं?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        Smart contracts deploy करने के लिए Virtual Environments का उपयोग करते समय, आपके [**Tenderly
        Organization**](/platform/account/organizations/overview) के सदस्यों को Virtual Environment तक direct एक्सेस होगा।

        Virtual Environment में deployment के बाद, आप chain और contract configuration वितरित कर सकते हैं ताकि अन्य
        components जैसे UI, APIs, और data indexing के builders staged contracts से जुड़ सकें।

        यहाँ कुछ अनुशंसाएँ हैं:

        <ol className="list-decimal ml-6">
          <li> एक Virtual Environment में [Stage contracts](/virtual-environments/ci-cd/stage-contracts)।</li>
          <li> प्रत्येक team (frontend,
          backend, आदि) के लिए [staging Virtual Environment को fork](/virtual-environments/develop/fork-testnet) करें ताकि teams के बीच सीमाएँ सुनिश्चित हों और
          development में test-data noise कम हो।</li>
          <li> सभी प्रासंगिक git repos को Virtual Environment config और contract जानकारी के साथ अपडेट करें:</li>

          <ul className="list-disc ml-3">
            <li> Chain config: chain ID और Admin RPC साझा करें (ताकि अन्य builders chain state को नियंत्रित कर सकें)</li>
            <li> Contracts के ABIs</li>
            <li> Contracts के deployment पते</li>
          </ul>

          <li>स्थानीय रूप से (UI, backend) develop करते समय, Virtual Environment पर switch करें।</li>
          <li>विफल transactions को smart contract developers के साथ साझा करें</li>
        </ol>
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-to-stage-a-dapp-for-external-demos-and-communi" className="text-xl font-semibold">बाहरी demos और community testing के लिए एक dapp को कैसे stage करें?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        बाहरी और demo testing के लिए अपने dapp को stage करते समय, सुनिश्चित करें कि:

        * अपने contracts को एक Virtual Environment में stage करें।
        * अपने सभी offchain components (backend, data indexing solutions, आदि) को stage करें और उन्हें Virtual Environment से कनेक्ट करें।
        * अपने staged dapp को [**Public RPC**](/virtual-environments/overview#admin-rpc) (Admin RPC नहीं) के माध्यम से कनेक्ट करें और इसे अन्य offchain components से कनेक्ट करें।
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-can-i-revert-testnet-state" className="text-xl font-semibold">मैं Virtual Environment state को कैसे revert कर सकता हूँ?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        State को revert करने के बजाय, [एक मौजूदा
        Virtual Environment को fork](/virtual-environments/develop/fork-testnet) करना और एक disposable कार्यशील
        प्रति पर अपना testing करना अनुशंसित है।

        यदि testing चरण अन्यथा दोहराने योग्य नहीं हैं तो आप [Virtual Environment state को Revert](/virtual-environments/develop/revert-state)
        कर सकते हैं।
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-should-i-name-my-testnet" className="text-xl font-semibold">मुझे अपने Virtual Environment का नाम कैसे रखना चाहिए?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        आसान भेद के लिए, अपने Virtual Environments को **`virtual`** के साथ prefix करें (जैसे `virtualMainnet`)। यह
        विशेष रूप से [Viem](/virtual-environments/libraries/viem),
        [HardHat](/virtual-environments/develop/deploy-contracts), और
        [अन्य](/virtual-environments/integrations) जैसे integrations के लिए उपयोगी है।

        वैकल्पिक रूप से, Virtual Environment के नाम में **उद्देश्य** शामिल करें:

        * **`internalTestingMainnet`**
        * **`demoMainnet`**
        * **`dataInsightsMainnet`**
        * **`ciMainnet`**
        * **`bugBountyBase`**
        * **`frontEndDevOptimism`**
        * **`communityTestingAvalanche`**
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="what-s-verification-visibility-in-testnets" className="text-xl font-semibold">Virtual Environments में verification visibility क्या है?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        Virtual Environment का [Public explorer](/virtual-environments/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 के अंतिम परिणाम दिखाएँ
          ।
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-do-i-run-foundry-scripts-on-virtual-environments" className="text-xl font-semibold">मैं Virtual Environments पर Foundry scripts कैसे चलाऊँ?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        Foundry scripts चलाते समय transaction batching को रोकने के लिए `--slow` flag का उपयोग करें। इसके साथ, एक transaction तभी भेजा जाता है जब इसका पूर्ववर्ती transaction confirm होता है।

        ```bash lines={2} theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
        forge script script/Counter.s.sol:CounterScript \
        --slow
        --verify \
        --verifier-url $TENDERLY_VERIFIER_URL \
        --rpc-url $TENDERLY_VIRTUAL_TESTNET_RPC_URL \
        --private-key $PRIVATE_KEY  \
        --etherscan-api-key $TENDERLY_ACCESS_TOKEN \
        --broadcast \
        ```
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="when-i-fund-accounts-should-i-input-the-amount-in" className="text-xl font-semibold">जब मैं accounts को fund करता हूँ, तो क्या मुझे राशि wei में input करनी चाहिए?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        Dashboard में Unlimted Faucet का उपयोग करते समय, `1` का अर्थ है `1 ETH`, **native और ERC-20
        balance** दोनों के लिए।
        ERC-20 tokens के मामले में, Tenderly ERC-20 decimals की संख्या का उपयोग करके wei में सटीक राशि की स्वचालित रूप से गणना करता है।
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="what-s-the-difference-between-the-admin-rpc-and-pu" className="text-xl font-semibold">Admin RPC और Public RPC के बीच क्या अंतर है?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        **Public RPC** मानक JSON-RPC interaction की अनुमति देता है। यह वह RPC है जिसका उपयोग आप
        अपने dapp के UI या backend में एकीकृत करने के लिए करेंगे जब आप अपने dapp को बाहरी रूप से demo करने के लिए तैयार हों।

        **Admin RPC** [अतिरिक्त RPC विधियों](/virtual-environments/admin-rpc) का समर्थन करता है जो network state और storage, साथ ही account balances पर उच्च नियंत्रण
        की अनुमति देते हैं। यह वह RPC है जिसका उपयोग आप programmatic network नियंत्रण के लिए अपने
        deployment scripts में करेंगे।
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="can-i-impersonate-a-sender-on-testnets" className="text-xl font-semibold">क्या मैं Virtual Environments पर एक sender का impersonate कर सकता हूँ?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        आप [Dashboard के माध्यम से](/virtual-environments/interact/send-transactions#sendnig-from-the-dashboard) **किसी भी sender पते** का उपयोग करके transactions सफलतापूर्वक भेज सकते हैं। Tenderly signatures की जाँच किए बिना
        Virtual Environments पर उन transactions को चलाएगा।
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-can-i-get-accurate-gas-estimations" className="text-xl font-semibold">मैं सटीक gas अनुमान कैसे प्राप्त कर सकता हूँ?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        Gas उपयोग मूल network से सभी OPCODES के सटीक gas उपयोग को प्रतिबिंबित करता है। आप gas उपयोग प्राप्त कर सकते हैं:

        * Dashboard के माध्यम से Transaction Overview में,
        * single-transaction अनुमानों के लिए 100% सटीकता के साथ [**tenderly\_estimateGas**](/node-rpc/rpc-reference?network=ethereum-mainnet\&method=tenderly_estimateGas) के माध्यम से
        * कई transactions के अनुमान के लिए 100% सटीकता के साथ [**tenderly\_estimateGasBundle**](/node-rpc/rpc-reference?network=ethereum-mainnet\&method=tenderly_estimateGasBundle) के माध्यम से
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="will-verification-work-if-i-use-tenderly-setcode" className="text-xl font-semibold">यदि मैं `tenderly_setcode` का उपयोग करूँ तो क्या verification काम करेगा?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        एक पते पर संशोधित bytecode को deploy करते समय, verification जानकारी अब मेल नहीं खाएगी और target पतों के लिए traces और debugger तक पहुँच संभव नहीं होगी।
      </div>
    </div>
  </Card>
</div>
