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, DevNets, 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
{
"jsonrpc": "2.0",
"method": "evm_increaseTime",
"params": ["0x15180"],
"id": "1234"
}
Example response
{
"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
{
"jsonrpc": "2.0",
"method": "evm_setNextBlockTimestamp",
"params": ["1750074671"],
"id": "1234"
}
Example response
{
"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
{
"jsonrpc": "2.0",
"method": "evm_increaseBlocks",
"params": ["0x20"],
"id": "1234"
}
Example response
{
"jsonrpc": "2.0",
"result": "0x51e0a03f19e0c154b16363086aa6bbf22ad4582b0515b0a3a00519015f06246f",
"id": "1234"
}
eth_sendTransaction
Submits an unsigned transaction.
Parameters
- 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 thegasPrice
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.
{
"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
{
"jsonrpc": "2.0",
"method": "eth_getAccessList",
"params": [
{
"from": "0x7ed8dff35e6fef1a6c1f95423cd8a64e22687aac",
"to": "0x6b175474e89094c44da98b954eedeac495271d0f",
"gas": "0x76c00",
"gasPrice": "0x0",
"value": "0x0",
"data": "0xa9059cbb0000000000000000000000005eddecc908575e1adcf857d8be380b9b7e5f658300000000000000000000000000000000000000000000000228813d891ab86000"
},
"latest"
],
"id": "1234"
}
Example response
{
"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
{
"jsonrpc": "2.0",
"method": "evm_getLatest",
"params": [],
"id": "1234"
}
Example response
{
"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 addressesAMOUNT
- hex-encoded number of an amount in wei
Returns
DATA
- 32-byte block hash of the newly created transaction
Example request
{
"jsonrpc": "2.0",
"method": "tenderly_setBalance",
"params": [["0x0d2026b3EE6eC71FC6746ADb6311F6d3Ba1C000B", "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"], "0xDE0B6B3A7640000"],
"id": "1234"
}
OR
{
"jsonrpc": "2.0",
"method": "tenderly_setBalance",
"params": ["0x0d2026b3EE6eC71FC6746ADb6311F6d3Ba1C000B", "0xDE0B6B3A7640000"],
"id": "1234"
}
Example response
{
"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 addressesAMOUNT
- hex-encoded number of an amount in wei
Returns
DATA
- 32-byte block hash of the newly created transaction
Example request
{
"jsonrpc": "2.0",
"method": "tenderly_addBalance",
"params": [["0x0d2026b3EE6eC71FC6746ADb6311F6d3Ba1C000B"], "0xDE0B6B3A7640000"],
"id": "1234"
}
OR
{
"jsonrpc": "2.0",
"method": "tenderly_addBalance",
"params": ["0x0d2026b3EE6eC71FC6746ADb6311F6d3Ba1C000B", "0xDE0B6B3A7640000"],
"id": "1234"
}
Example response
{
"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 contractWALLET
- address of the wallet that would get the balanceVALUE
- 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
{
"jsonrpc": "2.0",
"method": "tenderly_setErc20Balance",
"params": [
"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"0x40BdB4497614bAe1A67061EE20AAdE3c2067AC9e",
"0xDE0B6B3A7640000"
],
"id": 3640
}
Example response
{
"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 overriddenSLOT
- 32-byte hash representing the storage slot keyVALUE
- 32-byte hash representing the value at the keyslot
Returns
DATA
- 32-byte hash of the newly created transaction (storage override is committed via transaction)
Example request
{
"jsonrpc": "2.0",
"method": "tenderly_setStorageAt",
"params": [
"0x3Df2f692132f55b97cc9DA04A1fFFEA82F5d710b",
"0x8111de210bcfef10861a4ab6df0f4838296bd61d5a8f02dca283ed3b72a47bba",
"0x0000000000000000000000000000000000000000000000000000000000000000"
],
"id": "1"
}
Example response
{
"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
DATA
- UUID of the latest fork transaction
Example request
{
"jsonrpc": "2.0",
"method": "evm_snapshot",
"params": [],
"id": "1234"
}
Example response
{
"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 (use0x1
to revert the fork back to the initial state)
Returns
BOOLEAN
- operation success flag
Example request
{
"jsonrpc": "2.0",
"method": "evm_revert",
"params": ["0x1"],
"id": "1234"
}
Example response
{
"jsonrpc": "2.0",
"result": true,
"id": "1234"
}
tenderly_setCode
Sets the code at a particular location.
Parameters
ADDRESS
- Contract addressDATA
- Bytecode
Returns
BOOLEAN
- operation success flag
Example request
{
"jsonrpc": "2.0",
"method": "tenderly_setCode",
"params": [
"0x1",
"0x1"
],
"id": "1234"
}