Stage contracts in CI/CD by deploying to a Virtual Environment with Foundry, then share the RPC URL and contract addresses with your team.
Deploy the latest code and to Virtual Environments make it available for your team by sharing the RPC link and contract addresses.
Continuous integration (CI) and continous deployment (CD) with Virtual Environments
Code Sample: Staging Contracts to Virtual Environment
REST API: Create and manage Virtual Environments
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Tenderly","description":"Tenderly developer documentation — Virtual Environments, Node RPC, Simulation API, Debugger, Monitor, Alerts, Web3 Actions, and more.","colors":{"primary":"#7857FF","light":"#9B83FF","dark":"#7857FF"},"logo":{"light":"https://mintcdn.com/tenderly/OpA99rKrR1G10AGk/logo/tenderly-logo-light-background.svg?fit=max\u0026auto=format\u0026n=OpA99rKrR1G10AGk\u0026q=85\u0026s=8655a53ac5f0fdc1af7c82f4e2e270ef","dark":"https://mintcdn.com/tenderly/OpA99rKrR1G10AGk/logo/tenderly-logo-dark-background.svg?fit=max\u0026auto=format\u0026n=OpA99rKrR1G10AGk\u0026q=85\u0026s=17e892ea6a8bbd3f67e2055373d36609","href":"/introduction"},"favicon":"https://mintcdn.com/tenderly/nRyi0uSIGTr6AMxX/favicon.ico?fit=max\u0026auto=format\u0026n=nRyi0uSIGTr6AMxX\u0026q=85\u0026s=6a58780606747ae9bd8a65444d16422d","api":{"playground":{"display":"interactive","proxy":false},"examples":{"defaults":"required","languages":["curl","javascript","python","go"]}},"appearance":{"default":"dark"},"navbar":{"links":[{"href":"https://blog.tenderly.co","label":"Blog"},{"href":"mailto:support@tenderly.co","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://dashboard.tenderly.co"}},"footer":{"socials":{"x":"https://x.com/TenderlyApp","github":"https://github.com/Tenderly","linkedin":"https://www.linkedin.com/company/tenderly-co"}},"search":{"prompt":"Search the Tenderly docs..."},"styling":{"codeblocks":{"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}},"latex":true},"contextual":{"options":["copy","view","assistant","claude","chatgpt","perplexity","cursor","vscode","mcp",{"title":"Add to Claude Code","description":"Connect the Tenderly MCP server to Claude Code","icon":"terminal","href":"https://docs.tenderly.co/ai-tools/quickstart"}],"display":"header"},"navigation":{"languages":[{"language":"en","href":"introduction"},{"language":"ru","href":"ru/introduction"},{"language":"zh","href":"zh/introduction"},{"language":"hi","href":"hi/introduction"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"tenderly","hasAudioNarration":false,"actualSubdomain":"tenderly","customDomains":["docs.tenderly.co"],"gitSource":{"type":"github","owner":"tenderly","repo":"tenderly-mintlify","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ad8a23c182ff03fed6c7814","collectionId":"783aa2e3-7a6e-40cf-8aa6-2bb1545d62fa","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad8a23c182ff03fed6c7814"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"}},"buildId":"6ad8a23c182ff03fed6c7814","clientVersion":"0.0.3926","searchFilterCounts":[{"language":"en","tag":"Documentation","count":171},{"language":"hi","tag":"Documentation","count":163},{"language":"ru","tag":"Documentation","count":163},{"language":"zh","tag":"Documentation","count":163},{"language":"en","tag":"Simulator","count":73},{"language":"hi","tag":"Simulator","count":73},{"language":"ru","tag":"Simulator","count":73},{"language":"zh","tag":"Simulator","count":73},{"language":"default","tag":"API Reference","count":52},{"language":"en","tag":"Virtual Environments","count":41},{"language":"hi","tag":"Virtual Environments","count":41},{"language":"ru","tag":"Virtual Environments","count":41},{"language":"zh","tag":"Virtual Environments","count":41},{"language":"en","tag":"Monitor","count":30},{"language":"hi","tag":"Monitor","count":30},{"language":"ru","tag":"Monitor","count":30},{"language":"zh","tag":"Monitor","count":30},{"language":"en","tag":"Console","count":27},{"language":"en","tag":"How-to guides","count":27},{"language":"hi","tag":"Console","count":27},{"language":"hi","tag":"How-to guides","count":27},{"language":"ru","tag":"Console","count":27},{"language":"ru","tag":"How-to guides","count":27},{"language":"zh","tag":"Console","count":27},{"language":"zh","tag":"How-to guides","count":27},{"language":"en","tag":"Troubleshooting","count":22},{"language":"hi","tag":"Troubleshooting","count":22},{"language":"ru","tag":"Troubleshooting","count":22},{"language":"zh","tag":"Troubleshooting","count":22},{"language":"en","tag":"Web3 Actions","count":21},{"language":"en","tag":"Node RPC","count":21},{"language":"hi","tag":"Web3 Actions","count":21},{"language":"ru","tag":"Web3 Actions","count":21},{"language":"zh","tag":"Web3 Actions","count":21},{"language":"hi","tag":"Node RPC","count":20},{"language":"ru","tag":"Node RPC","count":20},{"language":"zh","tag":"Node RPC","count":20},{"language":"en","tag":"Simulation API","count":15},{"language":"hi","tag":"Simulation API","count":15},{"language":"ru","tag":"Simulation API","count":15},{"language":"zh","tag":"Simulation API","count":15},{"language":"default","tag":"Actions","count":10},{"language":"default","tag":"Simulator","count":9},{"language":"default","tag":"Virtual Environments","count":9},{"language":"default","tag":"Contracts","count":7},{"language":"default","tag":"Alerts","count":6},{"language":"default","tag":"Projects","count":5},{"language":"default","tag":"Wallets","count":3},{"language":"default","tag":"Delivery Channels","count":2},{"language":"default","tag":"Other","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":true,"enableContextualStarterQuestions":true,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"support@tenderly.co","showHelpButton":true}},"hasChatPermissions":true,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"privacy":{"consentBanner":{"enabled":true}},"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"custom.css","content":"html.dark .shiki,html.dark .shiki span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important;text-decoration:var(--shiki-dark-text-decoration)!important}html.dark .card .primary-text,html.dark .card .prose>div>h2,html.dark .card .prose>div>h3{color:#9b83ff}.card .prose>div>h2,.card .prose>div>h3{color:#7857ff}.card:has(.prose>div>h2) [data-component-part=card-content-container]{padding:1rem 1.25rem}html.dark .card:hover{border-color:#9b83ff!important;box-shadow:0 0 0 1px rgba(155,131,255,.25)}html:not(.dark) .card:hover{border-color:#7857ff!important;box-shadow:0 0 0 1px rgba(120,87,255,.18)}"}],"page":{"pagePath":"virtual-environments/ci-cd/stage-contracts","slug":"/virtual-environments/ci-cd/stage-contracts","pageMetadata":{"title":"Staging Contracts","description":"Stage contracts in CI/CD by deploying to a Virtual Environment with Foundry, then share the RPC URL and contract addresses with your team.","href":"/virtual-environments/ci-cd/stage-contracts"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Stage contracts in CI/CD by deploying to a Virtual Environment with Foundry, then share the RPC URL and contract addresses with your team.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Card,CodeBlock,Frame,Heading,OptimizedImage,Steps}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Steps)_missingMdxReference(`Steps`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Deploy the latest code and to Virtual Environments make it available for your team by sharing the RPC link and contract addresses.`}),`\n`,_jsx(Frame,{caption:`Continuous integration (CI) and continous deployment (CD) with Virtual Environments`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/testnets/ci.png?fit=max\u0026auto=format\u0026n=XsEZlaGXYskrtN68\u0026q=85\u0026s=2feac85321ea229193ae44bdbc1c1c38`,alt:`Continuous integration (CI) and continous deployment (CD) with Virtual Environments`,\"data-og-width\":`1920`,width:`1920`,\"data-og-height\":`1080`,height:`1080`,\"data-path\":`images/testnets/ci.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/testnets/ci.png?w=280\u0026fit=max\u0026auto=format\u0026n=XsEZlaGXYskrtN68\u0026q=85\u0026s=32d6c319eb06ccaffafccb56d44a77ef 280w, https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/testnets/ci.png?w=560\u0026fit=max\u0026auto=format\u0026n=XsEZlaGXYskrtN68\u0026q=85\u0026s=32db099d85af0cdcdd8e1499c0cb20be 560w, https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/testnets/ci.png?w=840\u0026fit=max\u0026auto=format\u0026n=XsEZlaGXYskrtN68\u0026q=85\u0026s=3ac330a76fd7c9b01ada12a8520f653f 840w, https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/testnets/ci.png?w=1100\u0026fit=max\u0026auto=format\u0026n=XsEZlaGXYskrtN68\u0026q=85\u0026s=d9fe281c219464238dddf1ff8f952116 1100w, https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/testnets/ci.png?w=1650\u0026fit=max\u0026auto=format\u0026n=XsEZlaGXYskrtN68\u0026q=85\u0026s=5970f9ca00bc639fc26498c1059f02e9 1650w, https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/testnets/ci.png?w=2500\u0026fit=max\u0026auto=format\u0026n=XsEZlaGXYskrtN68\u0026q=85\u0026s=58df0e877ccf94c9ff8c64cd1d39ae77 2500w`})}),`\n`,_jsx(Card,{title:`Code Sample: Staging Contracts to Virtual Environment`,href:``}),`\n`,_jsx(Card,{title:`REST API: Create and manage Virtual Environments`,href:``}),`\n`,_jsxs(Steps,{children:[_jsx(Heading,{level:`3`,id:`create-a-virtual-environment`,children:`Create a Virtual Environment`}),_jsx(_components.p,{children:`Create a new Virtual Environment to stage your contracts, either by:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Using the `,_jsx(_components.a,{href:`/virtual-environments/quickstart#configure-your-virtual-environment`,children:`Virtual Environments dashboard`})]}),`\n`,_jsxs(_components.li,{children:[`Using the `,_jsx(_components.a,{href:`/virtual-environments/develop/create-virtual-environment-via-api`,children:`REST API`})]}),`\n`]}),_jsx(Heading,{level:`3`,id:`set-up-environment-variables`,children:`Set up environment variables`}),_jsx(_components.p,{children:`To create a Virtual Environment and then deploy and verify contracts, set up the following environment variables:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`TENDERLY_ACCOUNT_ID`})}),` with your `,_jsx(_components.a,{href:`/platform/account/projects/slug`,children:`account ID`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`TENDERLY_PROJECT`})}),` with your `,_jsx(_components.a,{href:`/platform/account/projects/slug`,children:`project (slug)`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`TENDERLY_ACCESS_KEY`})}),` with\nthe `,_jsx(_components.a,{href:`/platform/account/projects/api-tokens`,children:`access key you’ve generated`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`ORIGINAL_NETWORK_ID`})}),` with the `,_jsx(_components.a,{href:`/platform/supported-networks`,children:`ID of the network`}),` you\nwant to base the Virtual Environment on`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`FOUNDRY_REPO`})}),` with the path to Foundry repo`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`DEPLOYER_ADDRESS`})}),` with the account you’re deploying from`]}),`\n`,_jsx(_components.li,{children:`Add other environment variables needed for the deployment scripts`}),`\n`]}),_jsx(CodeBlock,{filename:`.env`,numberOfLines:`26`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-latte catppuccin-mocha`,style:{backgroundColor:`#eff1f5`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#4c4f69`,\"--shiki-dark\":`#cdd6f4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`26`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8839EF`,\"--shiki-dark\":`#CBA6F7`},children:`export`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:` TENDERLY_ACCOUNT_ID`}),_jsx(_components.span,{style:{color:`#179299`,\"--shiki-dark\":`#94E2D5`},children:`=\u003c`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:`USERNAME`}),_jsx(_components.span,{style:{color:`#179299`,\"--shiki-dark\":`#94E2D5`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8839EF`,\"--shiki-dark\":`#CBA6F7`},children:`export`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:` TENDERLY_PROJECT`}),_jsx(_components.span,{style:{color:`#179299`,\"--shiki-dark\":`#94E2D5`},children:`=\u003c`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:`PROJECT`}),_jsx(_components.span,{style:{color:`#179299`,\"--shiki-dark\":`#94E2D5`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8839EF`,\"--shiki-dark\":`#CBA6F7`},children:`export`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:` TENDERLY_ACCESS_KEY`}),_jsx(_components.span,{style:{color:`#179299`,\"--shiki-dark\":`#94E2D5`},children:`=\u003c`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:`ACCESS_KEY`}),_jsx(_components.span,{style:{color:`#179299`,\"--shiki-dark\":`#94E2D5`},children:`>`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#7C7F93`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9399B2`,\"--shiki-dark-font-style\":`italic`},children:`## TestNet Configuration`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8839EF`,\"--shiki-dark\":`#CBA6F7`},children:`export`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:` TENDERLY_TESTNET_NAME`}),_jsx(_components.span,{style:{color:`#179299`,\"--shiki-dark\":`#94E2D5`},children:`=`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:`staging`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8839EF`,\"--shiki-dark\":`#CBA6F7`},children:`export`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:` PURPOSE`}),_jsx(_components.span,{style:{color:`#179299`,\"--shiki-dark\":`#94E2D5`},children:`=`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:`development`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8839EF`,\"--shiki-dark\":`#CBA6F7`},children:`export`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:` ORIGINAL_NETWORK_ID`}),_jsx(_components.span,{style:{color:`#179299`,\"--shiki-dark\":`#94E2D5`},children:`=`}),_jsx(_components.span,{style:{color:`#FE640B`,\"--shiki-dark\":`#FAB387`},children:`1`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8839EF`,\"--shiki-dark\":`#CBA6F7`},children:`export`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:` BLOCK_NUMBER`}),_jsx(_components.span,{style:{color:`#179299`,\"--shiki-dark\":`#94E2D5`},children:`=`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:`latest`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#7C7F93`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9399B2`,\"--shiki-dark-font-style\":`italic`},children:`## Custom Chain ID (Prefixed with 7357 - test)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8839EF`,\"--shiki-dark\":`#CBA6F7`},children:`export`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:` CHAIN_ID`}),_jsx(_components.span,{style:{color:`#179299`,\"--shiki-dark\":`#94E2D5`},children:`=`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:`7357$ORIGINAL_NETWORK_ID`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#7C7F93`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9399B2`,\"--shiki-dark-font-style\":`italic`},children:`## Public explorer verification visibility`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#7C7F93`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9399B2`,\"--shiki-dark-font-style\":`italic`},children:`## abi | full | none`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8839EF`,\"--shiki-dark\":`#CBA6F7`},children:`export`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:` VERIFICATION_VISIBILITY`}),_jsx(_components.span,{style:{color:`#179299`,\"--shiki-dark\":`#94E2D5`},children:`=`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:`abi`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#7C7F93`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9399B2`,\"--shiki-dark-font-style\":`italic`},children:`# Foundry Repo (Absolute path only!)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8839EF`,\"--shiki-dark\":`#CBA6F7`},children:`export`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:` FOUNDRY_REPO`}),_jsx(_components.span,{style:{color:`#179299`,\"--shiki-dark\":`#94E2D5`},children:`=\u003c`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:`ABSOLUTE PATH TO FOUNDRY PROJECT`}),_jsx(_components.span,{style:{color:`#179299`,\"--shiki-dark\":`#94E2D5`},children:`>`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#7C7F93`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9399B2`,\"--shiki-dark-font-style\":`italic`},children:`## Deployer address`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8839EF`,\"--shiki-dark\":`#CBA6F7`},children:`export`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:` DEPLOYER_ADDRESS`}),_jsx(_components.span,{style:{color:`#179299`,\"--shiki-dark\":`#94E2D5`},children:`=`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:`...`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#7C7F93`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9399B2`,\"--shiki-dark-font-style\":`italic`},children:`## Custom stuff needed for deployment scripts`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#7C7F93`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9399B2`,\"--shiki-dark-font-style\":`italic`},children:`## Add your custom stuff here`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8839EF`,\"--shiki-dark\":`#CBA6F7`},children:`export`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:` ADMIN_ADDRESS`}),_jsx(_components.span,{style:{color:`#179299`,\"--shiki-dark\":`#94E2D5`},children:`=`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:`...`})]}),`\n`]})})}),_jsx(Heading,{level:`3`,id:`write-your-deployment-commands`,children:`Write your deployment commands`}),_jsxs(_components.p,{children:[`Edit `,_jsx(_components.code,{children:`deploy-command.sh`}),` and add commands to deploy your contracts. Note you’ll have to add verification to your Foundry or Hardhat project; see `,_jsx(_components.a,{href:`/virtual-environments/develop/deploy-contracts`,children:`Deploy and verify contracts`}),`.`]}),_jsx(_components.p,{children:`For example:`}),_jsx(CodeBlock,{filename:`deploy-command.sh`,numberOfLines:`15`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-latte catppuccin-mocha`,style:{backgroundColor:`#eff1f5`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#4c4f69`,\"--shiki-dark\":`#cdd6f4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`15`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#EA76CB`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#F5C2E7`,\"--shiki-dark-font-style\":`italic`},children:`#!/bin/bash`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#D20F39`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#F38BA8`,\"--shiki-dark-font-style\":`italic`},children:`cd`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:` $FOUNDRY_REPO`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#7C7F93`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9399B2`,\"--shiki-dark-font-style\":`italic`},children:`## TODO: Your deployment command here:`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:`MAX_SEGMENT_COUNT`}),_jsx(_components.span,{style:{color:`#179299`,\"--shiki-dark\":`#94E2D5`},children:`=`}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:`3`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:`FOUNDRY_PROFILE`}),_jsx(_components.span,{style:{color:`#179299`,\"--shiki-dark\":`#94E2D5`},children:`=`}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:`optimized`}),_jsx(_components.span,{style:{color:`#1E66F5`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:`forge `}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:`script`}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` script/DeployCore.s.sol`}),_jsx(_components.span,{style:{color:`#EA76CB`,\"--shiki-dark\":`#F5C2E7`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` --broadcast`}),_jsx(_components.span,{style:{color:`#EA76CB`,\"--shiki-dark\":`#F5C2E7`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` --rpc-url`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:` $TENDERLY_VIRTUAL_TESTNET_RPC `}),_jsx(_components.span,{style:{color:`#EA76CB`,\"--shiki-dark\":`#F5C2E7`},children:`\\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` --sig`}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` \"run(address)\"`}),_jsx(_components.span,{style:{color:`#EA76CB`,\"--shiki-dark\":`#F5C2E7`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` --verify`}),_jsx(_components.span,{style:{color:`#EA76CB`,\"--shiki-dark\":`#F5C2E7`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` --verifier-url`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:` $VERIFICATION_URL `}),_jsx(_components.span,{style:{color:`#EA76CB`,\"--shiki-dark\":`#F5C2E7`},children:`\\\\`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:` $ADMIN_ADDRESS`})}),`\n`]})})}),_jsx(Heading,{level:`3`,id:`stage-contracts`,children:`Stage contracts`}),_jsx(_components.p,{children:`Run the following commands that will:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`create a new Virtual Environment`}),`\n`,_jsxs(_components.li,{children:[`fund the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`$DEPLOYER_ADDRESS`})}),` with test ETH using the Infinite faucet`]}),`\n`,_jsxs(_components.li,{children:[`configure Foundry’s `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`foundry.toml`})}),` for verification on your custom chain`]}),`\n`,_jsx(_components.li,{children:`deploy your contracts`}),`\n`,_jsxs(_components.li,{children:[`and finally clean up `,_jsx(_components.code,{children:`foundry.toml`})]}),`\n`]}),_jsx(CodeBlock,{filename:`stage.sh`,numberOfLines:`10`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes catppuccin-latte catppuccin-mocha`,style:{backgroundColor:`#eff1f5`,\"--shiki-dark-bg\":`#1e1e2e`,color:`#4c4f69`,\"--shiki-dark\":`#cdd6f4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`10`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#7C7F93`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9399B2`,\"--shiki-dark-font-style\":`italic`},children:`# create a testnet - or paste the Unlocked TestNet RPC URL`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#D20F39`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#F38BA8`,\"--shiki-dark-font-style\":`italic`},children:`source`}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` src/contracts-staging/.env`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#D20F39`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#F38BA8`,\"--shiki-dark-font-style\":`italic`},children:`cd`}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` src/contracts-staging`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#7C7F93`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9399B2`,\"--shiki-dark-font-style\":`italic`},children:`## Create a fresh testnet`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8839EF`,\"--shiki-dark\":`#CBA6F7`},children:`export`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:` VIRTUAL_NETWORK_RPC_URL`}),_jsx(_components.span,{style:{color:`#179299`,\"--shiki-dark\":`#94E2D5`},children:`=`}),_jsx(_components.span,{style:{color:`#7C7F93`,\"--shiki-dark\":`#9399B2`},children:`$(`}),_jsx(_components.span,{style:{color:`#1E66F5`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:`./create-testnet.sh`}),_jsx(_components.span,{style:{color:`#7C7F93`,\"--shiki-dark\":`#9399B2`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#D20F39`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#F38BA8`,\"--shiki-dark-font-style\":`italic`},children:`echo`}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` \"Created a Virtual Environment at `}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:\"${VIRTUAL_NETWORK_RPC_URL}\"}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:`\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#7C7F93`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9399B2`,\"--shiki-dark-font-style\":`italic`},children:`### run the deployment`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1E66F5`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:`./deploy-to-testnet.sh`})}),`\n`]})})}),_jsx(_components.p,{children:`The RPC Link is shown in the output, and your contracts are deployed and verified on the Virtual Environment.`}),_jsx(Heading,{level:`3`,id:`share-the-addresses`,children:`Share the addresses`}),_jsx(_components.p,{children:`Collect the ABIs and addresses of deployed contracts and distribute them to your team, together with the Virtual Environment RPC.`})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":{"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}},"config":{},"pageMetadata":{"title":"Staging Contracts","description":"Stage contracts in CI/CD by deploying to a Virtual Environment with Foundry, then share the RPC URL and contract addresses with your team.","href":"/virtual-environments/ci-cd/stage-contracts"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Create a Virtual Environment","slug":"create-a-virtual-environment","depth":3,"children":[]},{"title":"Set up environment variables","slug":"set-up-environment-variables","depth":3,"children":[]},{"title":"Write your deployment commands","slug":"write-your-deployment-commands","depth":3,"children":[]},{"title":"Stage contracts","slug":"stage-contracts","depth":3,"children":[]},{"title":"Share the addresses","slug":"share-the-addresses","depth":3,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/tenderly/bdc6ff9b2874c3ef/node-rpc/rpc-explorer.js","/_mintlify/custom/tenderly/184f3e34ea3ab109/platform/supported-networks.js","/_mintlify/custom/tenderly/896485a8a0369426/seo-schema.js","/_mintlify/custom/tenderly/072d16806bddf995/matomo.js"],"subdomain":"tenderly","siteName":"Tenderly","title":"Staging Contracts - Tenderly","contextualStarterQuestions":[{"_id":"6a6a043db86208ad1a84c8e2","deploymentId":"6a01e29b70901983f3805261","questionText":"How do I share RPC URLs with my team?","status":"active","generatedBy":"contextual","path":"virtual-environments/ci-cd/stage-contracts","createdAt":"2026-07-29T13:46:37.341Z","updatedAt":"2026-07-29T13:46:37.341Z","__v":0},{"_id":"6a6a043db86208ad1a84c8e1","deploymentId":"6a01e29b70901983f3805261","questionText":"How do I create a Virtual Environment?","status":"active","generatedBy":"contextual","path":"virtual-environments/ci-cd/stage-contracts","createdAt":"2026-07-29T13:46:37.341Z","updatedAt":"2026-07-29T13:46:37.341Z","__v":0},{"_id":"6a6a043db86208ad1a84c8e3","deploymentId":"6a01e29b70901983f3805261","questionText":"How do I deploy contracts in CI/CD?","status":"active","generatedBy":"contextual","path":"virtual-environments/ci-cd/stage-contracts","createdAt":"2026-07-29T13:46:37.341Z","updatedAt":"2026-07-29T13:46:37.341Z","__v":0}],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/virtual-environments/ci-cd/stage-contracts","matchLevel":0},"ru":{"href":"/ru/virtual-environments/ci-cd/stage-contracts","matchLevel":1},"zh":{"href":"/zh/virtual-environments/ci-cd/stage-contracts","matchLevel":1},"hi":{"href":"/hi/virtual-environments/ci-cd/stage-contracts","matchLevel":1}}},"lastModified":"2026-06-19T15:33:00.417Z","originalFileLocation":"virtual-environments/ci-cd/stage-contracts.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Stage contracts in CI/CD by deploying to a Virtual Environment with Foundry, then share the RPC URL and contract addresses with your team.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Tenderly\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/tenderly/eQa6_1msdloETVQa/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/tenderly/eQa6_1msdloETVQa/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/tenderly/eQa6_1msdloETVQa/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/tenderly/eQa6_1msdloETVQa/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/tenderly/eQa6_1msdloETVQa/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/tenderly/eQa6_1msdloETVQa/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/tenderly/eQa6_1msdloETVQa/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/tenderly/eQa6_1msdloETVQa/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/tenderly/eQa6_1msdloETVQa/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Staging Contracts - Tenderly\">\u003cmeta data-mint-head property=\"og:description\" content=\"Stage contracts in CI/CD by deploying to a Virtual Environment with Foundry, then share the RPC URL and contract addresses with your team.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Tenderly\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.tenderly.co/virtual-environments/ci-cd/stage-contracts\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://tenderly.mintlify.app/_mintlify/api/og/v2?division=CI%2FCD+%26+staging\u0026amp;title=Staging+Contracts\u0026amp;description=Stage+contracts+in+CI%2FCD+by+deploying+to+a+Virtual+Environment+with+Foundry%2C+then+share+the+RPC+URL+and+contract+addresses+with+your+team.\u0026amp;theme=9310d4144b9d3c109a12dda2\u0026amp;signature=3e07cee8a92691be7d656434427d8392d70e6d4390e58c5090923687d60ddcf7\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Staging Contracts - Tenderly\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Stage contracts in CI/CD by deploying to a Virtual Environment with Foundry, then share the RPC URL and contract addresses with your team.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://tenderly.mintlify.app/_mintlify/api/og/v2?division=CI%2FCD+%26+staging\u0026amp;title=Staging+Contracts\u0026amp;description=Stage+contracts+in+CI%2FCD+by+deploying+to+a+Virtual+Environment+with+Foundry%2C+then+share+the+RPC+URL+and+contract+addresses+with+your+team.\u0026amp;theme=9310d4144b9d3c109a12dda2\u0026amp;signature=3e07cee8a92691be7d656434427d8392d70e6d4390e58c5090923687d60ddcf7\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/tenderly/eQa6_1msdloETVQa/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Tenderly\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#7857FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.tenderly.co/virtual-environments/ci-cd/stage-contracts\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/virtual-environments/ci-cd/stage-contracts.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.tenderly.co/virtual-environments/ci-cd/stage-contracts\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ru\" href=\"https://docs.tenderly.co/ru/virtual-environments/ci-cd/stage-contracts\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh\" href=\"https://docs.tenderly.co/zh/virtual-environments/ci-cd/stage-contracts\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"hi\" href=\"https://docs.tenderly.co/hi/virtual-environments/ci-cd/stage-contracts\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.tenderly.co/virtual-environments/ci-cd/stage-contracts\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.tenderly.co/#organization\",\"name\":\"Tenderly\",\"url\":\"https://docs.tenderly.co\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/tenderly/OpA99rKrR1G10AGk/logo/tenderly-logo-light-background.svg?fit=max\u0026auto=format\u0026n=OpA99rKrR1G10AGk\u0026q=85\u0026s=8655a53ac5f0fdc1af7c82f4e2e270ef\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.tenderly.co#website\",\"name\":\"Tenderly\",\"url\":\"https://docs.tenderly.co\",\"publisher\":{\"@id\":\"https://docs.tenderly.co/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.tenderly.co/virtual-environments/ci-cd/stage-contracts#webpage\",\"url\":\"https://docs.tenderly.co/virtual-environments/ci-cd/stage-contracts\",\"name\":\"Staging Contracts\",\"description\":\"Stage contracts in CI/CD by deploying to a Virtual Environment with Foundry, then share the RPC URL and contract addresses with your team.\",\"dateModified\":\"2026-06-19T15:33:00.417Z\",\"isPartOf\":{\"@id\":\"https://docs.tenderly.co#website\"},\"breadcrumb\":{\"@id\":\"https://docs.tenderly.co/virtual-environments/ci-cd/stage-contracts#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.tenderly.co/virtual-environments/ci-cd/stage-contracts#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Simulator\",\"item\":\"https://docs.tenderly.co/virtual-environments/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Virtual Environments\",\"item\":\"https://docs.tenderly.co/virtual-environments/overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How-to guides\",\"item\":\"https://docs.tenderly.co/virtual-environments/interact/add-to-wallet\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"CI/CD \u0026 staging\",\"item\":\"https://docs.tenderly.co/virtual-environments/ci-cd/github-actions-hardhat\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Staging Contracts\",\"item\":\"https://docs.tenderly.co/virtual-environments/ci-cd/stage-contracts\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.tenderly.co/virtual-environments/ci-cd/stage-contracts#article\",\"headline\":\"Staging Contracts\",\"name\":\"Staging Contracts\",\"description\":\"Stage contracts in CI/CD by deploying to a Virtual Environment with Foundry, then share the RPC URL and contract addresses with your team.\",\"url\":\"https://docs.tenderly.co/virtual-environments/ci-cd/stage-contracts\",\"mainEntityOfPage\":{\"@id\":\"https://docs.tenderly.co/virtual-environments/ci-cd/stage-contracts#webpage\"},\"dateModified\":\"2026-06-19T15:33:00.417Z\",\"publisher\":{\"@id\":\"https://docs.tenderly.co/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.tenderly.co#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Tenderly\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Tenderly","nav":{"global":null,"languages":[{"language":"en","tabs":[{"tab":"Documentation","groups":[{"group":"Getting Started","public":true,"pages":[{"title":"Tenderly Docs: Simulate, Debug, and Monitor Onchain","sidebarTitle":"What is Tenderly?","href":"/introduction"},{"title":"What you get","href":"/what-you-get"}]},{"group":"Simulator","public":true,"pages":[{"group":"Virtual Environments","public":true,"pages":[{"title":"Virtual Environments","href":"/virtual-environments/overview"},{"group":"Get started","public":true,"pages":[{"title":"Virtual Environment quickstart","href":"/virtual-environments/quickstart"},{"title":"Multichain quickstart","href":"/virtual-environments/multichain/quickstart"}]},{"group":"How-to guides","public":true,"pages":[{"group":"Setup \u0026 connections","public":true,"pages":[{"title":"Adding Virtual Environments to Wallets","href":"/virtual-environments/interact/add-to-wallet"},{"title":"Connect to a WebSocket on Virtual Environments","href":"/virtual-environments/interact/websockets"},{"title":"Virtual Environment Integration Guides","href":"/virtual-environments/integrations"},{"group":"Libraries","public":true,"pages":[{"title":"Ethers.js","href":"/virtual-environments/libraries/ethers"},{"title":"Viem","href":"/virtual-environments/libraries/viem"}]},{"group":"Wallet UIs","public":true,"pages":[{"title":"Wagmi","href":"/virtual-environments/dapp-ui/wagmi"},{"title":"Reown AppKit","href":"/virtual-environments/dapp-ui/reown"},{"title":"ConnectKit","href":"/virtual-environments/dapp-ui/connectkit"},{"title":"Dynamic","href":"/virtual-environments/dapp-ui/dynamic"},{"title":"RainbowKit","href":"/virtual-environments/dapp-ui/rainbowkit"}]}]},{"group":"Network \u0026 state","public":true,"pages":[{"title":"Fork a Virtual Environment","href":"/virtual-environments/develop/fork-testnet"},{"title":"Revert Virtual Environment state","href":"/virtual-environments/develop/revert-state"},{"title":"Working with timestamps on Virtual Environments","href":"/virtual-environments/develop/timestamps"},{"title":"Backtest a token position by replaying historical blocks","href":"/virtual-environments/network-mirror-backtest"}]},{"group":"Transactions \u0026 debugging","public":true,"pages":[{"title":"Sending Transactions to Virtual Environments","href":"/virtual-environments/interact/send-transactions"},{"title":"Simulate Transactions in Virtual Environments","href":"/virtual-environments/interact/simulate-transactions"},{"title":"Debugging Transactions","href":"/virtual-environments/develop/debug-transactions"}]},{"group":"Smart contracts","public":true,"pages":[{"title":"Deploy and verify contracts","href":"/virtual-environments/develop/deploy-contracts"},{"title":"Verify proxy contracts with Foundry","href":"/virtual-environments/develop/verify-proxy-contracts"},{"title":"Bytecode deployment cheatcode","href":"/virtual-environments/develop/bytecode-deployment"},{"title":"Foundry Cheatcode Tutorial","href":"/virtual-environments/develop/solidity-cheatcodes"},{"title":"Index a Virtual Environment with The Graph","href":"/virtual-environments/develop/thegraph"}]},{"group":"CI/CD \u0026 staging","public":true,"pages":[{"title":"Hardhat and Github Actions","href":"/virtual-environments/ci-cd/github-actions-hardhat"},{"title":"Foundry and Github Actions","description":"Set up a CI/CD pipeline on Virtual Environments with the Tenderly GitHub Action to test and stage Solidity smart contracts using Foundry.","href":"/virtual-environments/ci-cd/github-actions-foundry"},{"title":"Staging Contracts","href":"/virtual-environments/ci-cd/stage-contracts"},{"title":"Connect Dapp UI to Virtual Environment","description":"Connect a wallet to a staged dapp on a Virtual Environment with RainbowKit, and send transactions for manual and end-to-end testing.","href":"/virtual-environments/ci-cd/stage-dapps"},{"title":"Create Virtual Environments via API","href":"/virtual-environments/develop/create-virtual-environment-via-api"}]}]},{"group":"Concepts","public":true,"pages":[{"title":"Virtual Environment Explorer","href":"/virtual-environments/explorer"},{"title":"Unlimited Faucet","href":"/virtual-environments/unlimited-faucet"},{"title":"State Sync","href":"/virtual-environments/state-sync"},{"title":"Network Mirror Mode","href":"/virtual-environments/network-mirror-mode"},{"title":"Named RPC URLs","href":"/virtual-environments/named-rpc-urls"},{"group":"Multichain","public":true,"pages":[{"title":"Multichain Virtual Environments","href":"/virtual-environments/multichain/overview"},{"title":"Bridges","href":"/virtual-environments/multichain/bridges"}]}]},{"group":"Reference","public":true,"pages":[{"title":"Virtual Environment dashboard reference","sidebarTitle":"Dashboard reference","href":"/virtual-environments/dashboard"},{"title":"Custom RPC Methods","href":"/virtual-environments/admin-rpc"},{"title":"Solidity Cheatcodes","href":"/virtual-environments/precompiles"},{"title":"REST API","href":"/virtual-environments/rest-api"}]}]},{"group":"Simulator UI Builder","public":true,"pages":[{"group":"Simulator UI","public":true,"pages":[{"title":"Simulator UI","sidebarTitle":"Overview","href":"/simulator-ui/overview"},{"title":"Simulation with State Overrides","href":"/simulator-ui/state-overrides"},{"title":"Share a Simulator draft link","href":"/simulator-ui/draft-links"},{"title":"Share a simulation with a public link","sidebarTitle":"Share a simulation","href":"/simulator-ui/share-simulation"}]},{"group":"Simulation Bundles","public":true,"pages":[{"title":"Simulation Bundles","sidebarTitle":"Overview","href":"/simulator-ui/simulation-bundles"},{"title":"Simulate a Token Mint, Approve, and TransferFrom Bundle","href":"/simulations/guides/mint-approve-transfer-bundle"}]},{"title":"Simulation Parameters","href":"/simulator-ui/parameters"},{"title":"Editing Contract Source","href":"/simulator-ui/editing-contract-source"}]},{"group":"Simulation API","public":true,"pages":[{"title":"Simulations Overview","href":"/simulations/overview"},{"title":"Simulations Quickstart","href":"/simulations/quickstart"},{"group":"Features","public":true,"pages":[{"title":"Single Simulations","href":"/simulations/single-simulations"},{"title":"Bundled Simulations","href":"/simulations/bundled-simulations"}]},{"group":"Use Cases","public":true,"pages":[{"title":"Transaction Preview","href":"/simulations/transaction-preview"},{"title":"Asset and Balance Changes","href":"/simulations/asset-balance-changes"},{"title":"Simulation API With State Overrides","href":"/simulations/state-overrides"},{"title":"Gas Estimation","href":"/simulations/gas-estimation"}]},{"title":"Simulation Modes","href":"/simulations/simulation-modes"},{"title":"Tenderly TX Preview Snap","href":"/platform/tx-preview-snap"},{"group":"Guides","public":true,"pages":[{"title":"Dry-Run User Transactions","href":"/simulations/guides/dry-run-user-transactions"},{"title":"MetaMask Snap Transaction Preview","href":"/simulations/guides/metamask-snap"},{"title":"Rabby Wallet Transaction Preview","href":"/simulations/guides/rabby-wallet"},{"title":"Simulate Safe{Wallet} transactions in your Tenderly project","sidebarTitle":"Safe{Wallet} simulations","href":"/simulations/guides/safe-wallet"},{"title":"Using Simulation RPC in Dapp UI","href":"/simulations/guides/simulation-rpc-dapp-ui"}]}]},{"group":"Simulation Mode","public":true,"pages":[{"title":"Simulation Mode","href":"/simulator-ui/simulation-mode"}]},{"group":"Tenderly SDK","public":true,"pages":[{"title":"Intro to Tenderly SDK","href":"/platform/sdk/introduction"},{"title":"Basic Concepts \u0026 FAQs","href":"/platform/sdk/concepts"},{"title":"Simulating Transactions","href":"/platform/sdk/simulating-transactions"},{"title":"Managing Contracts","href":"/platform/sdk/managing-contracts"},{"title":"Managing Wallets","href":"/platform/sdk/managing-wallets"},{"title":"Practical Examples","href":"/platform/sdk/examples"},{"group":"Tutorials","public":true,"pages":[{"title":"Simulate Transactions via SDK","href":"/platform/sdk/tutorials/simulate-transactions"},{"title":"Simulation Bundles with SDK","href":"/platform/sdk/tutorials/simulation-bundles"}]}]}]},{"group":"Console","public":true,"pages":[{"group":"Explorer","public":true,"pages":[{"title":"Developer Explorer","href":"/developer-explorer/overview"},{"title":"Project Home dashboard","sidebarTitle":"Project Home","href":"/developer-explorer/project-home"},{"title":"Transaction Listing","href":"/developer-explorer/transaction-listing"},{"group":"Inspect Transaction","public":true,"pages":[{"title":"Inspect transaction call traces and state changes","sidebarTitle":"Transactions","href":"/developer-explorer/inspect-transaction/overview"},{"title":"Fund Flow","href":"/developer-explorer/inspect-transaction/fund-flow"}]},{"title":"Smart Contracts","href":"/developer-explorer/contracts"},{"title":"Add and track wallets in a Tenderly project","sidebarTitle":"Wallets","href":"/developer-explorer/wallets"},{"title":"Simulation Mode in the Explorer","href":"/developer-explorer/simulation-mode"}]},{"group":"DeFi Modules","public":true,"pages":[{"title":"DeFi Modules: protocol-native UI surfaces","sidebarTitle":"DeFi Modules","href":"/defi-modules/overview"},{"title":"Aave V3","href":"/defi-modules/aave"},{"title":"Uniswap V3","href":"/defi-modules/uniswap"},{"title":"Morpho","href":"/defi-modules/morpho"},{"title":"Chainlink and Chronicle price feeds","sidebarTitle":"Oracle price feeds","href":"/defi-modules/oracle-price-feeds"}]},{"group":"Debugger","public":true,"pages":[{"title":"How to Use Tenderly Debugger","href":"/debugger/overview"},{"title":"Execution Overview","href":"/debugger/execution-overview"},{"title":"Commenting \u0026 Prioritizing Traces","href":"/debugger/commenting"},{"title":"Gas Profiler","href":"/debugger/gas-profiler"},{"title":"Evaluate Expressions with Advanced Debugger","href":"/debugger/evaluate-expression"},{"title":"War Room Aid Kit","href":"/debugger/war-room-aid-kit"},{"title":"Dev Toolkit Browser Extension","href":"/debugger/dev-toolkit"},{"group":"Guides","public":true,"pages":[{"title":"Investigating a Failed Transaction","href":"/debugger/guides/failed-transaction"},{"title":"Investigating a Hack (Cover Protocol)","href":"/debugger/guides/hack-investigation"}]}]},{"group":"Contract Verification","public":true,"pages":[{"title":"Smart Contract Verification","href":"/contract-verification/overview"},{"title":"Verify Contracts via Dashboard","href":"/contract-verification/dashboard"},{"title":"Smart Contract Verification Using Foundry","href":"/contract-verification/foundry"},{"title":"Smart Contract Verification Using Hardhat","href":"/contract-verification/hardhat"},{"title":"Verifying Proxy Contracts","href":"/contract-verification/hardhat-proxy"}]}]},{"group":"Monitor","public":true,"pages":[{"group":"Alerts","public":true,"pages":[{"title":"Intro to Alerts","href":"/monitoring/alerts/introduction"},{"title":"Alert Types, Targets, and Parameters","href":"/monitoring/alerts/types"},{"title":"Using Alerts API","href":"/monitoring/alerts/api"},{"group":"Destinations","public":true,"pages":[{"title":"Alert Destinations","href":"/monitoring/alerts/destinations/overview"},{"title":"Project-Scoped","href":"/monitoring/alerts/destinations/project-scoped"},{"title":"Account-Scoped","href":"/monitoring/alerts/destinations/account-scoped"},{"title":"Setting Up Alerts as Triggers for Web3Actions","href":"/monitoring/alerts/destinations/web3-action"}]},{"group":"Tutorials","public":true,"pages":[{"title":"Alerting Quickstart Guide","href":"/monitoring/alerts/tutorials/quickstart"},{"title":"How to Use Webhooks for Alerting","href":"/monitoring/alerts/tutorials/webhooks"}]}]},{"group":"Web3 Actions","public":true,"pages":[{"title":"Intro to Web3 Actions","href":"/monitoring/web3-actions/introduction"},{"title":"Usage Rate Limits","href":"/monitoring/web3-actions/usage-rate-limits"},{"group":"Tutorials","public":true,"pages":[{"title":"Deploy Web3 Actions via Dashboard","href":"/monitoring/web3-actions/tutorials/deploy-via-dashboard"},{"title":"Deploy Web3 Action via CLI","href":"/monitoring/web3-actions/tutorials/deploy-via-cli"},{"title":"How to Handle On-Chain Events","href":"/monitoring/web3-actions/tutorials/on-chain-events"},{"title":"How to Access Node RPC from Web3 Actions","href":"/monitoring/web3-actions/tutorials/node-rpc-access"},{"title":"How to Build a Custom Oracle","href":"/monitoring/web3-actions/tutorials/custom-oracle"},{"title":"Discord Alerts for New Uniswap Pools","href":"/monitoring/web3-actions/tutorials/discord-uniswap-pools"},{"title":"Monitor UniswapV3 Pool Creation","href":"/monitoring/web3-actions/tutorials/monitor-uniswap-v3-pools"},{"title":"Lido Validator Exit Notifications","href":"/monitoring/web3-actions/tutorials/validators-exits"},{"title":"Modular Monitoring with Web3Actions","href":"/monitoring/web3-actions/tutorials/modular-actions"}]},{"group":"References","public":true,"pages":[{"title":"Node RPC Access","href":"/monitoring/web3-actions/references/node-rpc-access"},{"title":"Action Functions, Events, and Triggers","href":"/monitoring/web3-actions/references/functions-events-triggers"},{"title":"Context: Gateway, Storage, Secrets","href":"/monitoring/web3-actions/references/context"},{"title":"Action Execution","href":"/monitoring/web3-actions/references/execution"},{"title":"Project Structure","href":"/monitoring/web3-actions/references/project-structure"},{"title":"CLI Cheatsheet","href":"/monitoring/web3-actions/references/cli-cheatsheet"},{"title":"Local Development and Testing","href":"/monitoring/web3-actions/references/local-development"},{"title":"Web3 Action failure notifications","sidebarTitle":"Notifications","href":"/monitoring/web3-actions/references/notifications"},{"title":"Manage Web3 Actions Lifecycle","href":"/monitoring/web3-actions/references/lifecycle"},{"title":"Error Reporting","href":"/monitoring/web3-actions/references/error-reporting"}]}]}]},{"group":"Node RPC","public":true,"pages":[{"title":"Node RPC","href":"/node-rpc/overview"},{"title":"Monitor Node RPC Usage, Errors, and Rate Limits","href":"/node-rpc/usage-and-errors"},{"group":"Simulations \u0026 Gas Estimation","public":true,"pages":[{"title":"Simulate Transactions with JSON-RPC Methods","href":"/node-rpc/guides/simulate-json-rpc"},{"title":"Simulate Bundles","href":"/node-rpc/guides/simulate-bundle-json-rpc"},{"title":"Simulate Blocks with eth_simulateV1","href":"/node-rpc/guides/eth-simulatev1"},{"title":"Trace Transactions","href":"/node-rpc/guides/trace-json-rpc"}]},{"group":"Integrations","public":true,"pages":[{"title":"Integration Guides","href":"/node-rpc/integrations"},{"group":"Libraries","public":true,"pages":[{"title":"Connect Ethers.js v6 and v5 to Tenderly Node RPC","href":"/node-rpc/libraries/ethers"},{"title":"Connect viem clients to Tenderly Node RPC endpoints","href":"/node-rpc/libraries/viem"},{"title":"Connect Go apps to Tenderly Node RPC with go-ethereum","href":"/node-rpc/libraries/go"},{"title":"Connect Web3.py Python apps to Tenderly Node RPC","href":"/node-rpc/libraries/web3-py"}]},{"group":"Frameworks","public":true,"pages":[{"title":"Deploy smart contracts with Foundry via Tenderly Node RPC","href":"/node-rpc/frameworks/foundry"},{"title":"Deploy and test Hardhat projects with Tenderly Node RPC","href":"/node-rpc/frameworks/hardhat"}]},{"group":"Wallet UIs","public":true,"pages":[{"title":"Configure wagmi transports with Tenderly Node RPC","href":"/node-rpc/dapp-ui/wagmi"},{"title":"Set up Reown AppKit with Tenderly Node RPC transports","href":"/node-rpc/dapp-ui/reown"},{"title":"Connect ConnectKit wallet components to Tenderly Node RPC","href":"/node-rpc/dapp-ui/connectkit"},{"title":"Use Tenderly Node RPC with Dynamic Web3 authentication","href":"/node-rpc/dapp-ui/dynamic"},{"title":"Configure RainbowKit with Tenderly Node RPC transports","href":"/node-rpc/dapp-ui/rainbowkit"}]},{"group":"Indexers","public":true,"pages":[{"title":"Run Graph Node on Tenderly Node RPC","href":"/node-rpc/indexers/graph-node"}]}]},{"group":"Reference","public":true,"pages":[{"title":"JSON-RPC Reference","href":"/node-rpc/rpc-reference"}]},{"title":"Node RPC Pricing","href":"/node-rpc/pricing"}]},{"group":"AI Tools","public":true,"pages":[{"title":"Tenderly MCP Server for Claude and AI assistants","href":"/ai-tools/overview"},{"title":"Tenderly MCP Server quickstart for Claude clients","href":"/ai-tools/quickstart"},{"title":"Tenderly MCP Server tools reference","href":"/ai-tools/tools"},{"title":"Tenderly MCP Server examples with Claude","href":"/ai-tools/examples"}]},{"group":"Account \u0026 Settings","public":true,"pages":[{"group":"Account Management","public":true,"pages":[{"title":"Account Management","href":"/platform/account/overview"},{"title":"Manage Security Email Notifications","sidebarTitle":"Email Notifications","href":"/platform/account/email-notifications"},{"group":"Projects","public":true,"pages":[{"title":"Create a Tenderly Project","href":"/platform/account/projects/overview"},{"title":"Restrict Project Access to Invited Members","href":"/platform/account/projects/restricted-projects"},{"title":"Project Settings","href":"/platform/account/projects/settings"},{"title":"Project Slug and Account Slug","href":"/platform/account/projects/slug"},{"title":"Generate and Manage API Access Tokens","href":"/platform/account/projects/api-tokens"}]},{"group":"Organizations","public":true,"pages":[{"title":"Organizations and Team Members","href":"/platform/account/organizations/overview"},{"title":"Add Member","href":"/platform/account/organizations/members"},{"title":"Activity Logs","href":"/platform/account/organizations/activity-logs"}]}]},{"group":"Billing \u0026 Usage","public":true,"pages":[{"title":"Manage Your Plan, Seats, and Billing","href":"/platform/account/billing/overview"},{"title":"Track Usage and Tenderly Units (TUs)","href":"/platform/account/billing/usage"},{"title":"Usage Limits, Rate Limits, and Write Limits: Which One Did I Hit?","href":"/platform/account/billing/limits"},{"title":"Plan Features, Limits, and Restricted Access","href":"/platform/account/billing/plan-restrictions"}]}]}]},{"tab":"Supported Networks","pages":[{"title":"Supported Networks","href":"/platform/supported-networks"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/projects/list-projects"}]},{"tab":"Troubleshooting","pages":[{"title":"Troubleshooting","href":"/troubleshooting/overview"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/overview"}]}]},{"language":"ru","pages":[{"title":"ru","href":"/ru/virtual-environments/ci-cd/stage-contracts"}]},{"language":"zh","pages":[{"title":"zh","href":"/zh/virtual-environments/ci-cd/stage-contracts"}]},{"language":"hi","pages":[{"title":"hi","href":"/hi/virtual-environments/ci-cd/stage-contracts"}]}]},"title":"Staging Contracts - Tenderly","buildId":"dpl_9DauxEjb9gzCtcuhPQFbquJvx7FJ","deploymentId":"dpl_9DauxEjb9gzCtcuhPQFbquJvx7FJ","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-DpBmNN95.js","DynamicMarkdown-BY_qDhTn.js","zoom-image-lightbox-D4WcYaf4.js","PlusIcon-CwhPVjTe.js","lightbox-handle-r17bVUz3.js"]}