The custom RPC methods appear in the
tenderly_ namespace.tenderly_simulateBundlereturns the full decoded execution result for every transaction: logs, call trace, asset changes, and balance changes.tenderly_estimateGasBundleexecutes the bundle the same way but returns only gas figures per transaction. Use it when you need exact gas values without the full simulation payload.
tenderly_simulateBundle
Simulates a bundle of transactions as it would execute on the given block and returns results for each transaction.
Params
- Transactions Transactions
ARRAY: list of transactions in a bundle- 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 bundle is simulated as part of. The bundle 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 bundle on the post-state of block N-1, as the first transactions 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 bundle inside a block, use the Simulation API bundle endpoint with transaction_index.- Request
- Shell
- JavaScript
- Request
example.json
ARRAY: list of simulation results in a bundle
- 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_estimateGasBundle
Calculates exact gas estimates for the given list of transactions, with optional simulation-style state and block overrides. Like tenderly_estimateGas, each estimate is based on a fully executed transaction, so the returned values are accurate where eth_estimateGas might revert and yield an underestimation. Transactions execute in order, each on the state left by the previous one.
Differences from tenderly_simulateBundle:
- Both methods execute the bundle the same way against the given block, and both accept the same state and block overrides.
tenderly_simulateBundlereturns the full decoded execution result for every transaction: logs, call trace, asset changes, and balance changes.tenderly_estimateGasBundlereturns only two gas figures per transaction: the recommended gas limit and the gas actually consumed. Use it when you only need gas values; usetenderly_simulateBundlewhen you need to preview the bundle’s effects.
- Transactions Transactions
ARRAY: list of transactions in a bundle, same shape as intenderly_simulateBundle - Simulation Block Number (optional) The block number against which the bundle 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_simulateBundle - Block Overrides (optional)
OBJECT: the set of header fields to override in a block, same shape as intenderly_simulateBundle
- Request
- Shell
- Response
example.json
ARRAY: list of gas estimates, one per transaction in the bundle
- 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