Undo the latest block of a Tenderly Virtual Environment from the dashboard, or roll back to a snapshot with evm_snapshot and evm_revert over Admin RPC.
Reverting state discards transactions and their state changes on a Virtual Environment. The dashboard reverts the latest block, one block at a time. Over the Admin RPC, evm_snapshot and evm_revert roll back to a checkpoint you created earlier.
In your Virtual Environment, open Activity and click the transaction with the highest block number.
2
Click Revert
The transaction page header has Fork, Revert, Re-Simulate, and Debug. Revert is shown only on the transaction in the latest block.
Transaction page header. Revert appears only on the transaction in the latest block.
3
Confirm the revert
The dialog asks you to confirm reverting that block number. Click Revert block. A reverted block can’t be restored.
Confirmation dialog for reverting the latest block.
After the revert, the latest block of the Virtual Environment is the block before the reverted one. Transactions from the reverted block no longer have receipts, and their state changes (balances, storage, nonces) are discarded. The transaction that is now in the latest block shows Revert, so repeat the steps to go back one block at a time.
After the revert, the dashboard opens Activity with the EVM reverts option checked. With EVM reverts checked, the list also shows transactions removed by a revert, and a revertLatestBlock entry sent to TenderlyCheatcodes for each revert from the dashboard. Uncheck EVM reverts to list only the transactions on the current chain.
Activity with EVM reverts checked: the reverted transaction at block 25265710 is still listed, next to the revertLatestBlock entry.
A single evm_revert can roll back at most 2000 blocks. If the snapshot is more than 2000 blocks behind the current block, the call fails with:
revert operation is limited to maximum 2000 blocks
This affects Virtual Environments that produce blocks continuously (for example, a scheduled job minting blocks), where the target snapshot can quickly fall outside the 2000-block window. To return to a point further back, fork the Virtual Environment at the target historical block instead of reverting.
To get a Virtual Environment whose state matches a specific past transaction, fork it from that transaction. The fork is a new, independent Virtual Environment, and the source is left untouched. There is no distance limit, so this is the way to reach a block more than 2000 blocks in the past.
1
Open the transaction
In Activity, click the transaction you want the new Virtual Environment to end with.
2
Click Fork
Click Fork in the transaction page header. The Fork a Virtual Environment from dialog opens with the shortened transaction hash in its title.
3
Choose the project and name
Select the Destination project, optionally enter a Name, and click Fork.
Fork dialog opened from a transaction page.
The new Virtual Environment contains the source’s transactions up to and including the selected one. Transactions after it are not copied.Forking from a transaction is also the way to “fork at a specific block number.” The Fork button in the Virtual Environment header always copies the current state.
{"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/develop/revert-state","slug":"/virtual-environments/develop/revert-state","pageMetadata":{"title":"Revert Virtual Environment state","description":"Undo the latest block of a Tenderly Virtual Environment from the dashboard, or roll back to a snapshot with evm_snapshot and evm_revert over Admin RPC.","href":"/virtual-environments/develop/revert-state"},"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: \"Undo the latest block of a Tenderly Virtual Environment from the dashboard, or roll back to a snapshot with evm_snapshot and evm_revert over Admin RPC.\"\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`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,..._provideComponents(),...props.components},{CodeBlock,Frame,Heading,Note,OptimizedImage,Step,Steps}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Reverting state discards transactions and their state changes on a `,_jsx(_components.a,{href:`/virtual-environments/overview`,children:`Virtual Environment`}),`. The dashboard reverts the latest block, one block at a time. Over the `,_jsx(_components.a,{href:`/virtual-environments/admin-rpc`,children:`Admin RPC`}),`, `,_jsx(_components.a,{href:`/virtual-environments/admin-rpc#evm_snapshot`,children:_jsx(_components.code,{children:`evm_snapshot`})}),` and `,_jsx(_components.a,{href:`/virtual-environments/admin-rpc#evm_revert`,children:_jsx(_components.code,{children:`evm_revert`})}),` roll back to a checkpoint you created earlier.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Instead of reverting state, consider `,_jsx(_components.a,{href:`/virtual-environments/develop/fork-testnet`,children:`forking an existing Virtual Environment`}),` and doing your testing on a disposable working copy.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`revert-the-latest-block-from-the-dashboard`,children:`Revert the latest block from the dashboard`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open the transaction in the latest block`,children:_jsxs(_components.p,{children:[`In your Virtual Environment, open `,_jsx(_components.strong,{children:`Activity`}),` and click the transaction with the highest block number.`]})}),_jsxs(Step,{title:`Click Revert`,children:[_jsxs(_components.p,{children:[`The transaction page header has `,_jsx(_components.strong,{children:`Fork`}),`, `,_jsx(_components.strong,{children:`Revert`}),`, `,_jsx(_components.strong,{children:`Re-Simulate`}),`, and `,_jsx(_components.strong,{children:`Debug`}),`. `,_jsx(_components.strong,{children:`Revert`}),` is shown only on the transaction in the latest block.`]}),_jsx(Frame,{caption:`Transaction page header. Revert appears only on the transaction in the latest block.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-transaction-actions.webp?fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=378bc8e18f3e680693e7450aa4a640d5`,alt:`Virtual Environment transaction page with the Dev mode toggle and the Fork, Revert, Re-Simulate, and Debug buttons in the header, above the transaction details for block 25265709`,\"data-og-width\":`1400`,width:`1400`,\"data-og-height\":`340`,height:`340`,\"data-path\":`images/testnets/vnet-transaction-actions.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-transaction-actions.webp?w=280\u0026fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=2eac7eab339706e9837e830a53df7eec 280w, https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-transaction-actions.webp?w=560\u0026fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=03baff4ab8aec919c8883dcd145793b5 560w, https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-transaction-actions.webp?w=840\u0026fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=d831cafb9b27ff19f44a78f15188984e 840w, https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-transaction-actions.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=74d13da0a81e58c2b893ac13a179e282 1100w, https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-transaction-actions.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=5e28002db95236c95a4e4ca83b2af4b3 1650w, https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-transaction-actions.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=20a11d198fa040dd405dadd71c6834bb 2500w`})})]}),_jsxs(Step,{title:`Confirm the revert`,children:[_jsxs(_components.p,{children:[`The dialog asks you to confirm reverting that block number. Click `,_jsx(_components.strong,{children:`Revert block`}),`. A reverted block can’t be restored.`]}),_jsx(Frame,{caption:`Confirmation dialog for reverting the latest block.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-revert-block-dialog.webp?fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=e0a0a4a1e524183a1e8f73ef3ab55f58`,alt:`Dialog titled Are you sure you want to revert block 25265710? with the message Once reverted you can not undo this action, and Cancel and Revert block buttons`,\"data-og-width\":`600`,width:`600`,\"data-og-height\":`211`,height:`211`,\"data-path\":`images/testnets/vnet-revert-block-dialog.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-revert-block-dialog.webp?w=280\u0026fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=27c2db77dc689461ad7546d9d2fe43ba 280w, https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-revert-block-dialog.webp?w=560\u0026fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=f0e52fd5fc6405c235f16f603d72e89a 560w, https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-revert-block-dialog.webp?w=840\u0026fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=7633d14b8449e61c1c1189f03e1d20c6 840w, https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-revert-block-dialog.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=892a17114c920ce5f98466527caf64c2 1100w, https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-revert-block-dialog.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=d538b43afa7d618cb4f83ed9e96d8e92 1650w, https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-revert-block-dialog.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=05567aea603dfadbf862babc9f2276c4 2500w`})})]})]}),`\n`,_jsxs(_components.p,{children:[`After the revert, the latest block of the Virtual Environment is the block before the reverted one. Transactions from the reverted block no longer have receipts, and their state changes (balances, storage, nonces) are discarded. The transaction that is now in the latest block shows `,_jsx(_components.strong,{children:`Revert`}),`, so repeat the steps to go back one block at a time.`]}),`\n`,_jsx(Heading,{level:`3`,id:`reverted-transactions-in-activity`,children:`Reverted transactions in Activity`}),`\n`,_jsxs(_components.p,{children:[`After the revert, the dashboard opens `,_jsx(_components.strong,{children:`Activity`}),` with the `,_jsx(_components.strong,{children:`EVM reverts`}),` option checked. With `,_jsx(_components.strong,{children:`EVM reverts`}),` checked, the list also shows transactions removed by a revert, and a `,_jsx(_components.code,{children:`revertLatestBlock`}),` entry sent to `,_jsx(_components.code,{children:`TenderlyCheatcodes`}),` for each revert from the dashboard. Uncheck `,_jsx(_components.strong,{children:`EVM reverts`}),` to list only the transactions on the current chain.`]}),`\n`,_jsx(Frame,{caption:`Activity with EVM reverts checked: the reverted transaction at block 25265710 is still listed, next to the revertLatestBlock entry.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-activity-evm-reverts.webp?fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=c5ce933c76e2ef79b9d02b5d01789027`,alt:`Virtual Environment Activity list with the EVM reverts checkbox checked, showing a revertLatestBlock entry and the reverted transaction, both at block 25265710, above the remaining transactions`,\"data-og-width\":`1400`,width:`1400`,\"data-og-height\":`610`,height:`610`,\"data-path\":`images/testnets/vnet-activity-evm-reverts.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-activity-evm-reverts.webp?w=280\u0026fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=1516b5dbd5657b080bd0adb14fe39fc8 280w, https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-activity-evm-reverts.webp?w=560\u0026fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=08e2e5ba341d70311ea5071bcadd5348 560w, https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-activity-evm-reverts.webp?w=840\u0026fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=fae5af6850e6b3de5a81ab5078fd741e 840w, https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-activity-evm-reverts.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=2bbd8e0875e1a258782f209979e6f73d 1100w, https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-activity-evm-reverts.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=364f56631ef6afd55ddbade3be7063fe 1650w, https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-activity-evm-reverts.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=43ec7edbb2a9059c29daeaae83352081 2500w`})}),`\n`,_jsx(Heading,{level:`2`,id:`revert-to-a-snapshot-over-rpc`,children:`Revert to a snapshot over RPC`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/testnets/revert-state.png?fit=max\u0026auto=format\u0026n=XsEZlaGXYskrtN68\u0026q=85\u0026s=2b20e08cfbcc34550e8deb540a3a37b4`,alt:``,\"data-og-width\":`1920`,width:`1920`,\"data-og-height\":`850`,height:`850`,\"data-path\":`images/testnets/revert-state.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/testnets/revert-state.png?w=280\u0026fit=max\u0026auto=format\u0026n=XsEZlaGXYskrtN68\u0026q=85\u0026s=8c52591783c446ce02cb6883209cc239 280w, https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/testnets/revert-state.png?w=560\u0026fit=max\u0026auto=format\u0026n=XsEZlaGXYskrtN68\u0026q=85\u0026s=b09c304c78c0f983f245e611eea1c2b8 560w, https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/testnets/revert-state.png?w=840\u0026fit=max\u0026auto=format\u0026n=XsEZlaGXYskrtN68\u0026q=85\u0026s=34581d636183b5893dd65f697803c551 840w, https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/testnets/revert-state.png?w=1100\u0026fit=max\u0026auto=format\u0026n=XsEZlaGXYskrtN68\u0026q=85\u0026s=81cf4c6349f25f76a2c2c5632c70e1ea 1100w, https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/testnets/revert-state.png?w=1650\u0026fit=max\u0026auto=format\u0026n=XsEZlaGXYskrtN68\u0026q=85\u0026s=7ca9a858f832fac8d295a309223452bf 1650w, https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/testnets/revert-state.png?w=2500\u0026fit=max\u0026auto=format\u0026n=XsEZlaGXYskrtN68\u0026q=85\u0026s=c5261a9a85370550446802f4f74438cb 2500w`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Create snapshot`,children:[_jsxs(_components.p,{children:[`Use `,_jsx(_components.a,{href:`/virtual-environments/admin-rpc#evm_snapshot`,children:_jsx(_components.code,{children:`evm_snapshot`})}),` to create a snapshot on the current block.\nThe method returns the snapshot ID you can use to revert.`]}),_jsx(CodeBlock,{filename:`snapshot.sh`,numberOfLines:`11`,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:`11`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:`TENDERLY_VIRTUAL_TESTNET_RPC`}),_jsx(_components.span,{style:{color:`#179299`,\"--shiki-dark\":`#94E2D5`},children:`=`}),_jsx(_components.span,{style:{color:`#7C7F93`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#9399B2`,\"--shiki-dark-font-style\":`italic`},children:` #...`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:`SNAPSHOT_ID`}),_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:`curl`}),_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:` -X`}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` POST`}),_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:` -H`}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` \"Content-Type: application/json\"`}),_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:` -d`}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` '{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` \"jsonrpc\": \"2.0\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` \"method\": \"evm_snapshot\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` \"id\": \"1234\"`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` }'`}),_jsx(_components.span,{style:{color:`#EA76CB`,\"--shiki-dark\":`#F5C2E7`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#179299`,\"--shiki-dark\":`#94E2D5`},children:` |`}),_jsx(_components.span,{style:{color:`#1E66F5`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#89B4FA`,\"--shiki-dark-font-style\":`italic`},children:` jq`}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` -r`}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` '.result'`}),_jsx(_components.span,{style:{color:`#7C7F93`,\"--shiki-dark\":`#9399B2`},children:`)`})]}),`\n`]})})})]}),_jsxs(Step,{title:`Revert`,children:[_jsxs(_components.p,{children:[`Use `,_jsx(_components.a,{href:`/virtual-environments/admin-rpc#evm_revert`,children:_jsx(_components.code,{children:`evm_revert`})}),` to revert to the previously created snapshot (`,_jsx(_components.code,{children:`SNAPSHOT_ID`}),`).\nAll changes made after the snapshot are discarded.`]}),_jsx(CodeBlock,{filename:`revert.sh`,numberOfLines:`12`,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:`12`,children:[_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:`read`}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` -r`}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` -d`}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` ''`}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` REVERT_REQUEST`}),_jsx(_components.span,{style:{color:`#179299`,\"--shiki-dark\":`#94E2D5`},children:` \u003c\u003c`}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:`EOF`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:`{`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` \"jsonrpc\": \"2.0\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` \"method\": \"evm_revert\",`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` \"params\": [\"`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:`$SNAPSHOT_ID`}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:`\"],`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` \"id\": \"1234\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:`EOF`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_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:`curl`}),_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:` -H`}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` \"Content-Type: application/json\"`}),_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:` -d`}),_jsx(_components.span,{style:{color:`#4C4F69`,\"--shiki-dark\":`#CDD6F4`},children:` $REVERT_REQUEST`})]}),`\n`]})})})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`revert-distance-limit`,children:`Revert distance limit`}),`\n`,_jsxs(_components.p,{children:[`A single `,_jsx(_components.a,{href:`/virtual-environments/admin-rpc#evm_revert`,children:_jsx(_components.code,{children:`evm_revert`})}),` can roll back at most 2000 blocks. If the snapshot is more than 2000 blocks behind the current block, the call fails with:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,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:`1`,children:[_jsxs(_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:`revert`}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` operation`}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` is`}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` limited`}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` to`}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` maximum`}),_jsx(_components.span,{style:{color:`#FE640B`,\"--shiki-dark\":`#FAB387`},children:` 2000`}),_jsx(_components.span,{style:{color:`#40A02B`,\"--shiki-dark\":`#A6E3A1`},children:` blocks`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`This affects Virtual Environments that produce blocks continuously (for example, a scheduled job minting blocks), where the target snapshot can quickly fall outside the 2000-block window. To return to a point further back, fork the Virtual Environment at the target historical block instead of reverting.`}),`\n`,_jsx(Heading,{level:`2`,id:`fork-at-a-historical-block`,children:`Fork at a historical block`}),`\n`,_jsx(_components.p,{children:`To get a Virtual Environment whose state matches a specific past transaction, fork it from that transaction. The fork is a new, independent Virtual Environment, and the source is left untouched. There is no distance limit, so this is the way to reach a block more than 2000 blocks in the past.`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open the transaction`,children:_jsxs(_components.p,{children:[`In `,_jsx(_components.strong,{children:`Activity`}),`, click the transaction you want the new Virtual Environment to end with.`]})}),_jsx(Step,{title:`Click Fork`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Fork`}),` in the transaction page header. The `,_jsx(_components.strong,{children:`Fork a Virtual Environment from`}),` dialog opens with the shortened transaction hash in its title.`]})}),_jsxs(Step,{title:`Choose the project and name`,children:[_jsxs(_components.p,{children:[`Select the `,_jsx(_components.strong,{children:`Destination project`}),`, optionally enter a `,_jsx(_components.strong,{children:`Name`}),`, and click `,_jsx(_components.strong,{children:`Fork`}),`.`]}),_jsx(Frame,{caption:`Fork dialog opened from a transaction page.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-fork-from-transaction.webp?fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=c96b2adf1cd314a063ce5972b4b2673b`,alt:`Dialog titled Fork a Virtual Environment from 0x01...f8f0 with a Destination project dropdown set to Demo, an optional Name field, and a Fork button`,\"data-og-width\":`600`,width:`600`,\"data-og-height\":`292`,height:`292`,\"data-path\":`images/testnets/vnet-fork-from-transaction.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-fork-from-transaction.webp?w=280\u0026fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=61cfe177e022ca5f8a286f12ee7a4c50 280w, https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-fork-from-transaction.webp?w=560\u0026fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=81eb595f7ea3f6b6ae3b01744aea3858 560w, https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-fork-from-transaction.webp?w=840\u0026fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=f42cf14f3e6b979cd4aff1d897a728bc 840w, https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-fork-from-transaction.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=b40149e6392b6c0676de4c6ed6c3b5c5 1100w, https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-fork-from-transaction.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=534a54cc7aae32acf7e40092d9ee20db 1650w, https://mintcdn.com/tenderly/iggz4DL_YrwX_kgm/images/testnets/vnet-fork-from-transaction.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=iggz4DL_YrwX_kgm\u0026q=85\u0026s=39f30d3f7dc13f9e1e4513f2f6d320e2 2500w`})})]})]}),`\n`,_jsx(_components.p,{children:`The new Virtual Environment contains the source’s transactions up to and including the selected one. Transactions after it are not copied.`}),`\n`,_jsxs(_components.p,{children:[`Forking from a transaction is also the way to “fork at a specific block number.” The `,_jsx(_components.strong,{children:`Fork`}),` button in the Virtual Environment header always `,_jsx(_components.a,{href:`/virtual-environments/develop/fork-testnet`,children:`copies the current state`}),`.`]})]})}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":"Revert Virtual Environment state","description":"Undo the latest block of a Tenderly Virtual Environment from the dashboard, or roll back to a snapshot with evm_snapshot and evm_revert over Admin RPC.","href":"/virtual-environments/develop/revert-state"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Revert the latest block from the dashboard","slug":"revert-the-latest-block-from-the-dashboard","depth":2,"children":[{"title":"Reverted transactions in Activity","slug":"reverted-transactions-in-activity","depth":3,"children":[]}]},{"title":"Revert to a snapshot over RPC","slug":"revert-to-a-snapshot-over-rpc","depth":2,"children":[]},{"title":"Revert distance limit","slug":"revert-distance-limit","depth":2,"children":[]},{"title":"Fork at a historical block","slug":"fork-at-a-historical-block","depth":2,"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":"Revert Virtual Environment state - Tenderly","contextualStarterQuestions":[{"_id":"6ad09382ee956c5898cccb8e","deploymentId":"6a01e29b70901983f3805261","questionText":"How do I revert the latest block?","status":"active","generatedBy":"contextual","path":"virtual-environments/develop/revert-state","createdAt":"2026-10-15T08:49:06.916Z","updatedAt":"2026-10-15T08:49:06.916Z","__v":0},{"_id":"6ad09382ee956c5898cccb90","deploymentId":"6a01e29b70901983f3805261","questionText":"Can I roll back to a snapshot?","status":"active","generatedBy":"contextual","path":"virtual-environments/develop/revert-state","createdAt":"2026-10-15T08:49:06.916Z","updatedAt":"2026-10-15T08:49:06.916Z","__v":0},{"_id":"6ad09382ee956c5898cccb8f","deploymentId":"6a01e29b70901983f3805261","questionText":"What is evm_snapshot used for?","status":"active","generatedBy":"contextual","path":"virtual-environments/develop/revert-state","createdAt":"2026-10-15T08:49:06.916Z","updatedAt":"2026-10-15T08:49:06.916Z","__v":0}],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/virtual-environments/develop/revert-state","matchLevel":0},"ru":{"href":"/ru/virtual-environments/develop/revert-state","matchLevel":1},"zh":{"href":"/zh/virtual-environments/develop/revert-state","matchLevel":1},"hi":{"href":"/hi/virtual-environments/develop/revert-state","matchLevel":1}}},"lastModified":"2026-10-15T08:48:58.197Z","originalFileLocation":"virtual-environments/develop/revert-state.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=\"Undo the latest block of a Tenderly Virtual Environment from the dashboard, or roll back to a snapshot with evm_snapshot and evm_revert over Admin RPC.\">\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=\"Revert Virtual Environment state - Tenderly\">\u003cmeta data-mint-head property=\"og:description\" content=\"Undo the latest block of a Tenderly Virtual Environment from the dashboard, or roll back to a snapshot with evm_snapshot and evm_revert over Admin RPC.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Tenderly\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.tenderly.co/virtual-environments/develop/revert-state\">\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=Network+%26+state\u0026amp;title=Revert+Virtual+Environment+state\u0026amp;description=Undo+the+latest+block+of+a+Tenderly+Virtual+Environment+from+the+dashboard%2C+or+roll+back+to+a+snapshot+with+evm_snapshot+and+evm_revert+over+Admin+RPC.\u0026amp;theme=9310d4144b9d3c109a12dda2\u0026amp;signature=1ebc7308b9bbc88cda6b93d205f0eaf7eda41a74b1f9e68b46bf01fc1abc086d\">\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=\"Revert Virtual Environment state - Tenderly\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Undo the latest block of a Tenderly Virtual Environment from the dashboard, or roll back to a snapshot with evm_snapshot and evm_revert over Admin RPC.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://tenderly.mintlify.app/_mintlify/api/og/v2?division=Network+%26+state\u0026amp;title=Revert+Virtual+Environment+state\u0026amp;description=Undo+the+latest+block+of+a+Tenderly+Virtual+Environment+from+the+dashboard%2C+or+roll+back+to+a+snapshot+with+evm_snapshot+and+evm_revert+over+Admin+RPC.\u0026amp;theme=9310d4144b9d3c109a12dda2\u0026amp;signature=1ebc7308b9bbc88cda6b93d205f0eaf7eda41a74b1f9e68b46bf01fc1abc086d\">\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/develop/revert-state\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/virtual-environments/develop/revert-state.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.tenderly.co/virtual-environments/develop/revert-state\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ru\" href=\"https://docs.tenderly.co/ru/virtual-environments/develop/revert-state\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh\" href=\"https://docs.tenderly.co/zh/virtual-environments/develop/revert-state\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"hi\" href=\"https://docs.tenderly.co/hi/virtual-environments/develop/revert-state\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.tenderly.co/virtual-environments/develop/revert-state\">\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/develop/revert-state#webpage\",\"url\":\"https://docs.tenderly.co/virtual-environments/develop/revert-state\",\"name\":\"Revert Virtual Environment state\",\"description\":\"Undo the latest block of a Tenderly Virtual Environment from the dashboard, or roll back to a snapshot with evm_snapshot and evm_revert over Admin RPC.\",\"dateModified\":\"2026-10-15T08:48:58.197Z\",\"isPartOf\":{\"@id\":\"https://docs.tenderly.co#website\"},\"breadcrumb\":{\"@id\":\"https://docs.tenderly.co/virtual-environments/develop/revert-state#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.tenderly.co/virtual-environments/develop/revert-state#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\":\"Network \u0026 state\",\"item\":\"https://docs.tenderly.co/virtual-environments/develop/fork-testnet\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Revert Virtual Environment state\",\"item\":\"https://docs.tenderly.co/virtual-environments/develop/revert-state\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.tenderly.co/virtual-environments/develop/revert-state#article\",\"headline\":\"Revert Virtual Environment state\",\"name\":\"Revert Virtual Environment state\",\"description\":\"Undo the latest block of a Tenderly Virtual Environment from the dashboard, or roll back to a snapshot with evm_snapshot and evm_revert over Admin RPC.\",\"url\":\"https://docs.tenderly.co/virtual-environments/develop/revert-state\",\"mainEntityOfPage\":{\"@id\":\"https://docs.tenderly.co/virtual-environments/develop/revert-state#webpage\"},\"dateModified\":\"2026-10-15T08:48:58.197Z\",\"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","description":"Fork a Virtual Environment to create a disposable working copy that inherits all contracts, balances, and state from the source at a point in time.","href":"/virtual-environments/develop/fork-testnet"},{"title":"Revert Virtual Environment state","href":"/virtual-environments/develop/revert-state"},{"title":"Working with timestamps on Virtual Environments","description":"Read the correct block.timestamp and advance time on Tenderly Virtual Environments using evm_increaseTime and evm_setNextBlockTimestamp cheatcodes.","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","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","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/develop/revert-state"}]},{"language":"zh","pages":[{"title":"zh","href":"/zh/virtual-environments/develop/revert-state"}]},{"language":"hi","pages":[{"title":"hi","href":"/hi/virtual-environments/develop/revert-state"}]}]},"title":"Revert Virtual Environment state - 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"]}