Forks will be deprecated on March 31, 2025. Please migrate to Tenderly Virtual TestNets or contact our support for assistance with automatic migration.

Network Customization RPC

Tenderly allows you to easily manipulate the state of the networks to fit your project’s specific needs. Below is a list of custom RPC methods that you can use within TestNets, Forks, to manipulate the state of the networks.

List of custom RPC Methods:

Customization of blockchain parameters:

Transaction-related:

Infinite faucet:

Storage Manipulation:

Reverting the state:

evm_increaseTime

Jumps forward in time and generates a block with that timestamp.

Parameters

  • QUANTITY - hex-encoded number of seconds to jump forward by

Returns

  • DATA - 32-byte block hash of the newly generated block

Example request

example.json
{
  "jsonrpc": "2.0",
  "method": "evm_increaseTime",
  "params": ["0x15180"],
  "id": "1234"
}

Example response

example.json
{
  "jsonrpc": "2.0",
  "result": "0x51e0a03f19e0c154b16363086aa6bbf22ad4582b0515b0a3a00519015f06246f",
  "id": "1234"
}

evm_setNextBlockTimestamp

This method works like evm_increaseTime but instead of increasing time for specific amount of seconds, it sets the timestamp in the future.

Parameters

  • QUANTITY - hex-encoded number that represents epoch timestamp (in seconds)

Returns

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

Example request

example.json
{
  "jsonrpc": "2.0",
  "method": "evm_setNextBlockTimestamp",
  "params": ["1750074671"],
  "id": "1234"
}

Example response

example.json
{
  "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

example.json
{
  "jsonrpc": "2.0",
  "method": "evm_increaseBlocks",
  "params": ["0x20"],
  "id": "1234"
}

Example response

example.json
{
  "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.
example.json
{
  "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

example.json
{
  "jsonrpc": "2.0",
  "method": "eth_getAccessList",
  "params": [
    {
      "from": "0x7ed8dff35e6fef1a6c1f95423cd8a64e22687aac",
      "to": "0x6b175474e89094c44da98b954eedeac495271d0f",
      "gas": "0x76c00",
      "gasPrice": "0x0",
      "value": "0x0",
      "data": "0xa9059cbb0000000000000000000000005eddecc908575e1adcf857d8be380b9b7e5f658300000000000000000000000000000000000000000000000228813d891ab86000"
    },
    "latest"
  ],
  "id": "1234"
}

Example response

example.json
{
  "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 fork.

Parameters

Returns

  • DATA - UUID of the latest fork transaction

Example request

example.json
{
  "jsonrpc": "2.0",
  "method": "evm_getLatest",
  "params": [],
  "id": "1234"
}

Example response

example.json
{
  "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

example.json
{
  "jsonrpc": "2.0",
  "method": "tenderly_setBalance",
  "params": [["0x0d2026b3EE6eC71FC6746ADb6311F6d3Ba1C000B", "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"], "0xDE0B6B3A7640000"],
  "id": "1234"
}

OR

example.json
{
  "jsonrpc": "2.0",
  "method": "tenderly_setBalance",
  "params": ["0x0d2026b3EE6eC71FC6746ADb6311F6d3Ba1C000B", "0xDE0B6B3A7640000"],
  "id": "1234"
}

Example response

example.json
{
  "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

example.json
{
  "jsonrpc": "2.0",
  "method": "tenderly_addBalance",
  "params": [["0x0d2026b3EE6eC71FC6746ADb6311F6d3Ba1C000B"], "0xDE0B6B3A7640000"],
  "id": "1234"
}

OR

example.json
{
  "jsonrpc": "2.0",
  "method": "tenderly_addBalance",
  "params": ["0x0d2026b3EE6eC71FC6746ADb6311F6d3Ba1C000B", "0xDE0B6B3A7640000"],
  "id": "1234"
}

Example response

example.json
{
  "jsonrpc": "2.0",
  "result": "0xc5b2c658f5fa236c598a6e7fbf7f21413dc42e2a41dd982eb772b30707cba2eb",
  "id": "1234"
}

tenderly_setErc20Balance

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

Parameters

  • TOKEN_ADDRESS - address of the ERC20 contract
  • WALLET - address of the wallet that would get the balance
  • 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

example.json
{
  "jsonrpc": "2.0",
  "method": "tenderly_setErc20Balance",
  "params": [
    "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
    "0x40BdB4497614bAe1A67061EE20AAdE3c2067AC9e",
    "0xDE0B6B3A7640000"
  ],
  "id": 3640
}

Example response

example.json
{
  "id": 3640,
  "jsonrpc": "2.0",
  "result": "0x8a84686634729c57532b9ffa4e632e241b2de5c880c771c5c214d5e7ec465b1c"
}

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

example.json
{
  "jsonrpc": "2.0",
  "method": "tenderly_setStorageAt",
  "params": [
    "0x3Df2f692132f55b97cc9DA04A1fFFEA82F5d710b",
    "0x8111de210bcfef10861a4ab6df0f4838296bd61d5a8f02dca283ed3b72a47bba",
    "0x0000000000000000000000000000000000000000000000000000000000000000"
  ],
  "id": "1"
}

Example response

example.json
{
  "jsonrpc": "2.0",
  "result": "0xc5b2c658f5fa236c598a6e7fbf7f21413dc42e2a41dd982eb772b30707cba2eb",
  "id": "1234"
}

evm_snapshot

Returns a snapshot ID that allows you to revert a fork to a previous point (same as ID from getLatest or the header returned in every RPC request)

Parameters

Returns

  1. DATA - UUID of the latest fork transaction

Example request

example.json
{
  "jsonrpc": "2.0",
  "method": "evm_snapshot",
  "params": [],
  "id": "1234"
}

Example response

example.json
{
  "jsonrpc": "2.0",
  "result": "4a05d7ed-f66c-471a-899d-d6d843b8e790",
  "id": "1234"
}

evm_revert

Reverts the state of the fork to a previous snapshot.

Parameters

  • DATA - UUID of a snapshot (use 0x1 to revert the fork back to the initial state)

Returns

  • BOOLEAN - operation success flag

Example request

example.json
{
  "jsonrpc": "2.0",
  "method": "evm_revert",
  "params": ["0x1"],
  "id": "1234"
}

Example response

example.json
{
  "jsonrpc": "2.0",
  "result": true,
  "id": "1234"
}

tenderly_setCode

Sets the code at a particular location.

Parameters

  • ADDRESS - Contract address
  • DATA - Bytecode

Returns

  • BOOLEAN - operation success flag

Example request

example.json
{
  "jsonrpc": "2.0",
  "method": "tenderly_setCode",
  "params": [
    "0x1",
    "0x1"
  ],
  "id": "1234"
}