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 the transaction is simulated as part of. The transaction executes on the state at the start of that block, before any of the block’s own transactions. 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)
Block parameter semantics. Block
N executes the transaction on the post-state of block N-1, as the first transaction of block N. latest therefore excludes the head block’s own transactions and is one block behind eth_call with latest. There is no transaction index parameter, and a transactionIndex field in the block or block-overrides object is ignored. To execute on the post-state of block N, pass N+1. To position the transaction inside a block, use the Simulation API with transaction_index.- Request
- Shell
- JavaScript
- Request
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 passed as the block parameter (the head block forlatest) - 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
- Request
- Shell
- Response
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