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

# Custom RPC Methods

> Network customization RPC methods (cheatcodes) for Virtual Environments to manipulate state, balances, nonces, and block history.

You can fully control your Virtual Environment by using special RPC methods. These methods are made available through the **Admin RPC**, which you can copy from the Dashboard.

They allow you to manipulate the network state such as account balances, block numbers, and storage to accommodate your development needs.

Calls to these RPC methods are represented by a call to virtual `TenderlyCheatcodes` contract.

<img src="https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/testnets/tenderly-cheatcodes-tx.png?fit=max&auto=format&n=XsEZlaGXYskrtN68&q=85&s=2291489d20ca410e70d1f20fc804b867" alt="" width="2728" height="630" data-path="images/testnets/tenderly-cheatcodes-tx.png" />

The list of special RPC methods listed here will only work if they are called through the Admin RPC.

**Network customization**

* [evm\_increaseTime](#evm_increasetime)
* [evm\_setNextBlockTimestamp](#evm_setnextblocktimestamp)
* [tenderly\_setNextBlockTimestamp](#tenderly_setNextBlockTimestamp)
* [evm\_increaseBlocks](#evm_increaseblocks)
* [evm\_mine](#evm-mine)

**Send transaction**

* [eth\_sendTransaction](#eth_sendtransaction)
* [eth\_createAccessList](#eth_createaccesslist)
* [evm\_getLatest](#evm_getlatest)

**Unlimited faucet**

* [tenderly\_setBalance](#tenderly_setbalance)
* [tenderly\_addBalance](#tenderly_addbalance)
* [tenderly\_setErc20Balance](#tenderly_seterc20balance)
* [tenderly\_addErc20Balance](#tenderly_adderc20balance)
* [tenderly\_setMaxErc20Balance](#tenderly_setmaxerc20balance)

**Storage manipulation**

* [tenderly\_setStorageAt](#tenderly_setstorageat)

**State revert**

* [evm\_snapshot](#evm_snapshot)
* [evm\_revert](#evm_revert)

**Network Mirror Mode sync control**

* [tenderly\_startSync](#tenderly_startsync)
* [tenderly\_stopSync](#tenderly_stopsync)
* [tenderly\_syncNext](#tenderly_syncnext)
* [tenderly\_revertSync](#tenderly_revertsync)
* [tenderly\_getSyncStatus](#tenderly_getsyncstatus)

### `evm_increaseTime`

Advances the blockchain time by a specified amount and creates an empty block with the new timestamp.

Subsequent calls to `eth_call` and `eth_sendRawTransaction` will get different `block.timestamp` values based on the `blockNumber` they target:

* For `pending` block: Returns `current_time + time_increase`
  This represents the expected timestamp of the next block to be mined.
* For `latest` block: Returns `time_of_evm_increaseTimestamp_call + time_increase`. This is the timestamp of the empty block created when `evm_increaseTimestamp` was called.

**Parameters**

* `QUANTITY` - hex-encoded `time_increase` of seconds to jump forward by

**Returns**

* `DATA` - 32-byte block hash of the newly generated block

**Example request**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "method": "evm_increaseTime",
  "params": ["0x15180"],
  "id": "1234"
}
```

**Example response**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "result": "0x51e0a03f19e0c154b16363086aa6bbf22ad4582b0515b0a3a00519015f06246f",
  "id": "1234"
}
```

### `evm_setNextBlockTimestamp`

Offsets current time to the specified timestamp, and creates an empty block with given timestamp.

Subsequent calls to `eth_call` and `eth_sendRawTransaction` will return different `block.timestamp` values based on the `blockNumber` they target:

* For `pending` block: Returns `specified_timestamp + time_since_evmSetNextBlockTimestamp_call`.  This represents the set timestamp plus any time elapsed since the method was called.
* For `latest` block: Returns `specified_timestamp`. This is the timestamp of the empty block created when `evm_setNextBlockTimestamp` was called.

**Parameters**

* `QUANTITY` - hex-encoded `specified_timestamp` that represents epoch timestamp (in seconds)

**Returns**

* `QUANTITY` - integer (epoch timestamp) that is set for the next block

**Example request**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "method": "evm_setNextBlockTimestamp",
  "params": ["1750074671"],
  "id": "1234"
}
```

**Example response**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "result": 1750074671,
  "id": "1234"
}
```

### `tenderly_setNextBlockTimestamp`

Offsets current time to given timestamp without creating an empty block.

Subsequent calls to `eth_call` and `eth_sendRawTransaction` will return different `block.timestamp` values based on the `blockNumber` they target:

* For `pending` block: Returns `specified_timestamp + time_since_tenderly_setNextBlockTimestamp`.  This represents the set timestamp plus any time elapsed since the method was called.
* For `latest` block: Returns the timestamp of the latest created block.

**Parameters**

* `QUANTITY` - hex-encoded `specified_timestamp` that represents epoch timestamp (in seconds)

**Returns**

* `QUANTITY` - integer (epoch timestamp) that is set for the next block

**Example request**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "method": "evm_setNextBlockTimestamp",
  "params": ["1750074671"],
  "id": "1234"
}
```

**Example response**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "result": 1750074671,
  "id": "1234"
}
```

### `evm_increaseBlocks`

Skips a number of blocks and generates a new block with the new block number.

**Parameters**

* `QUANTITY` - hex-encoded number of blocks to skip

**Returns**

* `DATA` - 32-byte block hash of the newly generated block

**Example request**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "method": "evm_increaseBlocks",
  "params": ["0x20"],
  "id": "1234"
}
```

**Example response**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "result": "0x51e0a03f19e0c154b16363086aa6bbf22ad4582b0515b0a3a00519015f06246f",
  "id": "1234"
}
```

### `eth_sendTransaction`

Submits an unsigned transaction.

**Parameters**

1. **Transaction** - The transaction object

* `from`: `DATA`, 20 Bytes - The address the transaction is sent from.
* `to`: `DATA`, 20 Bytes - (optional, omitted when creating new contract) The address the transaction is directed to.
* `gas`: `QUANTITY` - (optional) Integer of the gas provided for the transaction execution. It will return unused gas.
* `gasPrice`: `QUANTITY` - (optional) Integer of the `gasPrice` used for each paid gas.
* `value`: `QUANTITY` - (optional) Integer of the value sent with this transaction.
* `data`: `DATA` - (optional) The compiled code of a contract OR the hash of the invoked method signature and encoded parameters.

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "id": 0,
  "jsonrpc": "2.0",
  "method": "eth_sendTransaction",
  "params": [
    {
      "from": "0xDC6bDc37B2714eE601734cf55A05625C9e512461",
      "to": "0xff39a3e734fe363e631441f6d24c7539240c2628",
      "value": "0x0",
      "data": "0x2e7700f0"
    }
  ]
}
```

**RESULT**: Transaction hash `STRING` 32 byte hex value

### `eth_createAccessList`

Returns the access tuples that would be touched by the transaction.

**Parameters**

* `SendTransactionObject` - transaction object (same as the one provided to eth\_sendTransaction)
* `BlockNumber` - block number parameter

**Returns**

* `AccessList` - an array of access tuples touched by the transaction

**Example request**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "method": "eth_getAccessList",
  "params": [
    {
      "from": "0x7ed8dff35e6fef1a6c1f95423cd8a64e22687aac",
      "to": "0x6b175474e89094c44da98b954eedeac495271d0f",
      "gas": "0x76c00",
      "gasPrice": "0x0",
      "value": "0x0",
      "data": "0xa9059cbb0000000000000000000000005eddecc908575e1adcf857d8be380b9b7e5f658300000000000000000000000000000000000000000000000228813d891ab86000"
    },
    "latest"
  ],
  "id": "1234"
}
```

**Example response**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "result": [
    {
      "address": "0x7ed8dff35e6fef1a6c1f95423cd8a64e22687aac"
    },
    {
      "address": "0x6b175474e89094c44da98b954eedeac495271d0f",
      "storage_keys": [
        "0x5051a693fd89be4fee1466db5a0684c1868dc09405da86e3d13004a803e302ec"
      ]
    },
    {
      "address": "0xc8f595e2084db484f8a80109101d58625223b7c9"
    }
  ],
  "id": 1234
}
```

### `evm_getLatest`

Fetches the latest transaction ID on a network Virtual Environment.

**Parameters**

**Returns**

* `DATA` - UUID of the latest Virtual Environment transaction

**Example request**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "method": "evm_getLatest",
  "params": [],
  "id": "1234"
}
```

**Example response**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "result": "4a05d7ed-f66c-471a-899d-d6d843b8e790",
  "id": "1234"
}
```

### `tenderly_setBalance`

Modifies the balance of an account or accounts.

**Parameters**

* `ADDRESS/ADDRESSES` - a string or an array of account addresses
* `AMOUNT` - hex-encoded number of an amount in wei

**Returns**

* `DATA` - 32-byte block hash of the newly created transaction

**Example request**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "method": "tenderly_setBalance",
  "params": [["0x0d2026b3EE6eC71FC6746ADb6311F6d3Ba1C000B", "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"], "0xDE0B6B3A7640000"],
  "id": "1234"
}
```

OR

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "method": "tenderly_setBalance",
  "params": ["0x0d2026b3EE6eC71FC6746ADb6311F6d3Ba1C000B", "0xDE0B6B3A7640000"],
  "id": "1234"
}
```

**Example response**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "result": "0xc5b2c658f5fa236c598a6e7fbf7f21413dc42e2a41dd982eb772b30707cba2eb",
  "id": "1234"
}
```

### `tenderly_addBalance`

Adds the balance to the provided account or accounts.

**Parameters**

* `ADDRESS/ADDRESSES` - a string or an array of account addresses
* `AMOUNT` - hex-encoded number of an amount in wei

**Returns**

* `DATA` - 32-byte block hash of the newly created transaction

**Example request**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "method": "tenderly_addBalance",
  "params": [["0x0d2026b3EE6eC71FC6746ADb6311F6d3Ba1C000B"], "0xDE0B6B3A7640000"],
  "id": "1234"
}
```

OR

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "method": "tenderly_addBalance",
  "params": ["0x0d2026b3EE6eC71FC6746ADb6311F6d3Ba1C000B", "0xDE0B6B3A7640000"],
  "id": "1234"
}
```

**Example response**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "result": "0xc5b2c658f5fa236c598a6e7fbf7f21413dc42e2a41dd982eb772b30707cba2eb",
  "id": "1234"
}
```

### `tenderly_setErc20Balance`

Sets the token balance for the wallet on the provided erc20 contract.

<Note>
  `tenderly_setErc20Balance` writes the new balance directly to the token contract's storage and **does not emit an ERC-20 `Transfer` event**. If your downstream tooling (indexers, subgraphs, accounting) relies on `Transfer` events to track balances, use [`tenderly_addErc20Balance`](#tenderly_adderc20balance) instead, it emits a synthetic `Transfer` log for each funded account.
</Note>

**Parameters**

* `TOKEN_ADDRESS` - address of the ERC20 contract
* `WALLET` - address of the wallet that will get topped up
* `VALUE` - 32-byte hash representing the **wei** value of the tokens

**Returns**

`DATA` - 32-byte hash of the newly created transaction (storage override is committed via transaction)

**Example request**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "method": "tenderly_setErc20Balance",
  "params": [
    "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
    "0x40BdB4497614bAe1A67061EE20AAdE3c2067AC9e",
    "0xDE0B6B3A7640000"
  ],
  "id": 3640
}
```

**Example response**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "id": 3640,
  "jsonrpc": "2.0",
  "result": "0x8a84686634729c57532b9ffa4e632e241b2de5c880c771c5c214d5e7ec465b1c"
}
```

### `tenderly_addErc20Balance`

Adds the specified amount of tokens to one or more wallets on the provided ERC-20 contract. Unlike [`tenderly_setErc20Balance`](#tenderly_seterc20balance), this method **emits a synthetic `Transfer` event** for every funded account, so indexers, subgraphs, and any tooling that reconciles balances from logs stay in sync with the resulting state.

The emitted log has the standard ERC-20 `Transfer(address,address,uint256)` topic, uses the transaction sender as the `from` address and the funded wallet as the `to` address, and carries the added `amount` in the data field.

**Parameters**

* `TOKEN_ADDRESS` - address of the ERC-20 contract
* `WALLETS` - array of wallet addresses that will receive the tokens
* `VALUE` - 32-byte hash representing the **wei** amount of tokens to add to each wallet

**Returns**

`DATA` - 32-byte hash of the newly created transaction (storage override is committed via transaction)

**Example request**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "method": "tenderly_addErc20Balance",
  "params": [
    "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
    [
      "0x40BdB4497614bAe1A67061EE20AAdE3c2067AC9e",
      "0xBd8DaA414Fda8a8A129F7035e7496759C5aF8570"
    ],
    "0xDE0B6B3A7640000"
  ],
  "id": 3641
}
```

**Example response**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "id": 3641,
  "jsonrpc": "2.0",
  "result": "0x8a84686634729c57532b9ffa4e632e241b2de5c880c771c5c214d5e7ec465b1d"
}
```

### `tenderly_setMaxErc20Balance`

Tops up the wallet address with maximum possible token balance (primarily intended for tokens that don't have a simple balance mapping) on the provided erc20 contract.

<Note>
  Like `tenderly_setErc20Balance`, this method writes directly to storage and **does not emit an ERC-20 `Transfer` event**. Use [`tenderly_addErc20Balance`](#tenderly_adderc20balance) when you need indexers or log-based tooling to pick up the balance change.
</Note>

**Parameters**

* `YIELD_TOKEN_ADDRESS` - address of the ERC20 contract
* `WALLET` - address of the wallet that would get topped up

**Returns**

`DATA` - 32-byte hash of the newly created transaction (storage override is committed via transaction)

**Example request**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "id": 0,
  "jsonrpc": "2.0",
  "method": "tenderly_setMaxErc20Balance",
  "params": [
    "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84",
    "0xb5f45E52649123117C175B2016Ed3fCd26f9bE06"
  ]
}
```

**Example response**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "id": 0,
  "jsonrpc": "2.0",
  "result": "0x8fb202d4612be9f6e96b955b4e5bd002cde4d79bec8a6d1b7d35976f124636a4"
}
```

### `tenderly_setStorageAt`

Sets the storage of the provided address at the provided slot.

**Parameters**

* `ADDRESS` - the address where the storage will be overridden
* `SLOT` - 32-byte hash representing the storage slot key
* `VALUE` - 32-byte hash representing the value at the key `slot`

**Returns**

* `DATA` - 32-byte hash of the newly created transaction (storage override is committed via transaction)

**Example request**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "method": "tenderly_setStorageAt",
  "params": [
    "0x3Df2f692132f55b97cc9DA04A1fFFEA82F5d710b",
    "0x8111de210bcfef10861a4ab6df0f4838296bd61d5a8f02dca283ed3b72a47bba",
    "0x0000000000000000000000000000000000000000000000000000000000000000"
  ],
  "id": "1"
}
```

**Example response**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "result": "0xc5b2c658f5fa236c598a6e7fbf7f21413dc42e2a41dd982eb772b30707cba2eb",
  "id": "1234"
}
```

### `evm_snapshot`

Returns a snapshot ID that allows you to revert a Virtual Environment to a previous point (same as block `hash` from `evm_getLatest`).

**Parameters**

**Returns**

1. `DATA` - hash of the latest block produced by the Virtual Environment (Snapshot ID)

**Example request**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "method": "evm_snapshot",
  "params": [],
  "id": "1234"
}
```

**Example response**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "result": "0xfdb5a15fe652e0f47e4312df749f8cc1769d5e70f0bf3f26a4e231bb6a550f8d",
  "id": "1234"
}
```

### `evm_revert`

Reverts the state of the Virtual Environment to a previous snapshot.

A single `evm_revert` can roll back at most 2000 blocks. If the snapshot is further back than that, the call fails with a `revert operation is limited to maximum 2000 blocks` error. To return to a point more than 2000 blocks in the past, [clone the Virtual Environment at the target historical block](/virtual-environments/develop/revert-state#clone-at-a-historical-block) instead.

**Parameters**

* `DATA` - ID of the snapshot

**Returns**

* `BOOLEAN` - operation success flag

**Example request**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "method": "evm_revert",
  "params": ["0xfdb5a15fe652e0f47e4312df749f8cc1769d5e70f0bf3f26a4e231bb6a550f8d"],
  "id": "1234"
}
```

**Example response**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "result": true,
  "id": "1234"
}
```

## Network Mirror Mode sync control

The following methods control [Network Mirror Mode](/virtual-environments/network-mirror-mode), they start, stop, step, rewind, and inspect the continuous sync between a Virtual Environment and its parent network.

<Note>
  While Network Mirror Mode sync is **active**, other Admin RPC cheatcodes (for example `tenderly_setBalance`, `tenderly_setStorageAt`, `tenderly_sendBlock`) are disabled. Pause sync with [`tenderly_stopSync`](#tenderly_stopsync) first if you need them to take effect immediately.
</Note>

### `tenderly_startSync`

Starts continuous sync between the Virtual Environment and its parent network. New parent-network blocks are absorbed as they're produced, and any transactions in the Virtual Environment's mempool are prepended (in FIFO order) to the next synced block.

**Parameters**

None.

**Returns**

* `BOOLEAN` - `true` if sync was started

**Example request**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "method": "tenderly_startSync",
  "params": [],
  "id": "1234"
}
```

**Example response**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "result": true,
  "id": "1234"
}
```

### `tenderly_stopSync`

Stops any in-progress sync. The Virtual Environment stays at its current block; you can resume with `tenderly_startSync` or advance manually with `tenderly_syncNext`. Use this before calling other Admin RPC cheatcodes when Mirror Mode is active.

**Parameters**

None.

**Returns**

* `BOOLEAN` - `true` if sync was stopped (or already stopped)

**Example request**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "method": "tenderly_stopSync",
  "params": [],
  "id": "1234"
}
```

**Example response**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "result": true,
  "id": "1234"
}
```

### `tenderly_syncNext`

Syncs the next single parent-network block onto the Virtual Environment. Any pending Virtual Environment transactions are prepended to that block in FIFO order. Useful for stepping through sync one block at a time.

**Parameters**

None.

**Returns**

* `DATA` - 32-byte block hash of the newly synced block

**Example request**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "method": "tenderly_syncNext",
  "params": [],
  "id": "1234"
}
```

**Example response**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "result": "0x51e0a03f19e0c154b16363086aa6bbf22ad4582b0515b0a3a00519015f06246f",
  "id": "1234"
}
```

### `tenderly_revertSync`

Rewinds the Virtual Environment by N synced blocks, undoing their effect on Virtual Environment state. The default is 10 blocks. Use this to step the Mirror-Mode Virtual Environment back to an earlier point in the parent network's history.

**Parameters**

* `QUANTITY` *(optional)* - hex-encoded number of blocks to rewind. Defaults to `0xa` (10).

**Returns**

* `DATA` - 32-byte block hash of the block the Virtual Environment is now positioned at

**Example request**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "method": "tenderly_revertSync",
  "params": ["0xa"],
  "id": "1234"
}
```

**Example response**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "result": "0xfdb5a15fe652e0f47e4312df749f8cc1769d5e70f0bf3f26a4e231bb6a550f8d",
  "id": "1234"
}
```

### `tenderly_getSyncStatus`

Returns the current sync state of the Virtual Environment, including whether sync is active, how far behind the parent network it is, and the latest synced block.

**Parameters**

None.

**Returns**

* `OBJECT` - sync status with the following fields:
  * `active` - `BOOLEAN`, `true` if sync is currently running
  * `lag` - `QUANTITY`, number of blocks the Virtual Environment is behind the parent network
  * `latestSyncedBlock` - `QUANTITY`, block number of the latest block synced onto the Virtual Environment
  * `parentLatestBlock` - `QUANTITY`, block number of the latest block on the parent network

**Example request**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "method": "tenderly_getSyncStatus",
  "params": [],
  "id": "1234"
}
```

**Example response**

```json title="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "jsonrpc": "2.0",
  "result": {
    "active": true,
    "lag": 0,
    "latestSyncedBlock": 22845130,
    "parentLatestBlock": 22845130
  },
  "id": "1234"
}
```
