The custom RPC methods appear in the
tenderly_ namespace.tenderly_simulateTransactionreturns the full decoded execution: logs, call trace, asset changes, and balance changes.tenderly_estimateGasexecutes the transaction the same way but returns only gas figures. Use it when you need an exact gas value without the full simulation payload.
tenderly_simulateTransaction
Simulates transaction as it would execute on the given block.
Params
- Transaction Transaction
OBJECT- from (optional)
STRING: hex encoded address - to
STRING: hex encoded address - gas (optional)
NUMBER - maxFeePerGas (optional)
NUMBERmax fee: The maximum total fee per gas the sender is willing to pay (includes the network / base fee and miner / priority fee) in wei - maxPriorityFeePerGas (optional)
NUMBERmax priority fee: Maximum fee per gas the sender is willing to pay to miners in wei - gasPrice (optional)
NUMBER: The gas price willing to be paid by the sender in wei - value (optional)
NUMBER - data (optional)
STRING: hex encoded bytes - accessList (optional)
ARRAYof Access list entryOBJECT- address
STRINGhex encoded address - storageKeys
ARRAYofSTRINGrepresentation of 32 byte hex encoded storage key
- address
- from (optional)
- Simulation Block Number (optional) The block number against which transaction should be simulated. Either:
STRINGBlock numberENUMof Block tagearliest|finalized|safe|latest|pending
- State Overrides (optional)
MAP: mapping from an account (address) to override specification- key
STRING: the account this override applies to - value
OBJECT: the override specification- nonce (optional)
STRING: hex encoded 8 byte nonce override for the account - code (optional)
STRING: data of the code override for the account - balance (optional)
STRING: hex encoded 32 byte balance override for the account in wei - stateDiff (optional)
MAP: mapping of storage key to storage value override- key
STRING: the storage key - value
STRING: the value override for the given storage key
- key
- nonce (optional)
- key
- Block Overrides (optional)
OBJECT: The set of header fields to override in a block.- number (optional)
STRING: hex, overrides the block number - difficulty (optional)
STRING: hex, overrides the block difficulty - time (optional)
STRING: hex, overrides block timestamp - gasLimit (optional)
STRING: hex, overrides gas limit - coinbase (optional)
STRING: hex, overrides block miner - random (optional)
STRING: hex, overrides the blocks extra data which feeds into the RANDOM opcode - baseFee (optional)
STRING: hex, overrides block base fee
- number (optional)
- example.json
- example
- example.js
- example.json
example.json
OBJECT
- status
NUMBER:either1(success) or0(failure) - gasUsed
NUMBER: The amount of gas used by this specific transaction alone - cumulativeGasUsed
NUMBER: the total amount of gas used when this transaction was executed in the block - blockNumber
NUMBER: the block number in which this transaction was simulated - type
NUMBER: transaction type,0x00for legacy transactions,0x01for access list types,0x02for dynamic fees - logsBloom
STRING: bloom filter for light clients to quickly retrieve related logs - logs: an array of emitted events
ARRAYofOBJECT- name
STRING: event name - anonymous
BOOLEAN: indicates if event is anonymous - inputs: array of decoded log arguments
ARRAYof decoded logsOBJECT- name
STRING: event argument name - type
STRING: event argument type from Solidity type system - value (optional)
STRINGstring representation value of the argument; interpret according to thetypefield
- name
- raw
OBJECT: raw logs- address
STRINGhex encoded address: address of the contract emitting the log - topics
ARRAYofSTRING32 hex encoded bytes - data
STRINGhex encoded string representing event data
- address
- name
- trace: Trace
ARRAYofOBJECT- type
STRINGtype: trace item type - eitherCALL|CALLCODE|STATICCALL|DELEGATECALL|CREATE|CREATE2|SELFDESTRUCT - from
STRING: hex encoded address - to
STRING: hex encoded address - gas
STRING: hex encoded unsigned 64 byte integer representing event gas - gasUsed
STRING: hex encoded unsigned 64 byte integer representing event gasUsed - value
STRING: hex encoded unsigned 64 byte integer representing event value in wei - error
STRING: low-level error from virtual machine - errorReason
STRING: extracted error reason in case of revert - input
STRING: hex encoded string representation of raw input bytes for the trace point - method
STRING: invoked contract method - decodedInput : decoded input for the invoked method -
ARRAYof decoded in argumentOBJECT- value
STRING: string representation value of the argument; interpret according to thetypefield. - type
STRING: the Solidity type of this argument - name
STRING: the name of this argument
- value
- output
STRING: raw trace output - decodedOutput : decoded output of the invoked method -
ARRAYof decoded out argumentOBJECT- value
STRING: string representation value of the argument; interpret according to thetypefield. - type
STRING: the Solidity type of this argument - name
STRING: the name of this argument
- value
- subtraces
NUMBER: number of child traces - traceAddress : trace position
ARRAYofNUMBER
- type
assetChangesARRAY:typeSTRINGtype of asset change, can be transfer, mint, burnfromSTRING: address of the sender (empty for mint transfers)toSTRING: address of the receiver (empty for burn transfers)amountSTRING: the amount of the token that was transferredrawAmountSTRING: raw amount transfer for the tokendollarValueSTRING: dollar value of the transferred tokenassetInfoOBJECT: asset informationstandardSTRING: supported token standards: ERC20, ERC721, NativeCurrencytypeSTRING: the token type: Native, Fungible, Non-FungiblecontractAddressSTRING: address of the contractsymbolSTRING: token symbolnameSTRING: token namelogoSTRING: URL for the token icondecimalsNUMBER: number of decimals in the tokendollarValueSTRING: dollar value of a single token
balanceChangesARRAY: an array of balance changes - cumulated asset changesaddressSTRINGaddressdollarValueSTRING: dollar value of cumulated asset changestransfersARRAY: array of asset changes indexes
tenderly_estimateGas
Calculates an exact gas estimate for the given transaction, with optional simulation-style state and block overrides. The estimate is based on a fully executed transaction, even when the specified gas is insufficient, so the returned value is accurate. In contrast, eth_estimateGas might revert and yield an underestimation.
Differences from tenderly_simulateTransaction:
- Both methods execute the transaction the same way against the given block, and both accept the same state and block overrides.
tenderly_simulateTransactionreturns the full decoded execution result: logs, call trace, asset changes, and balance changes.tenderly_estimateGasreturns only two gas figures: the recommended gas limit and the gas actually consumed. Use it when you only need gas values; usetenderly_simulateTransactionwhen you need to preview the transaction’s effects.
- Transaction Transaction
OBJECT: same shape as intenderly_simulateTransaction(from,to,gas,gasPrice,value,data,accessList) - Simulation Block Number (optional) The block number against which the transaction should be executed. Either:
STRINGBlock numberENUMof Block tagearliest|finalized|safe|latest|pending
- State Overrides (optional)
MAP: mapping from an account (address) to override specification, same shape as intenderly_simulateTransaction - Block Overrides (optional)
OBJECT: the set of header fields to override in a block, same shape as intenderly_simulateTransaction
- example.json
- example
- response.json
example.json
OBJECT
- gas
STRING: hex-encoded recommended gas limit to set on the transaction (includes a safety margin over the gas actually consumed) - gasUsed
STRING: hex-encoded amount of gas actually consumed by the executed transaction