Skip to main content
Simulates one or more transaction bundles against the state of a given block, without broadcasting anything. This method supports state overrides, block overrides, multi-block simulation and optional transfer tracing. This method will use 40 Compute Units.

Parameters:

params - array containing:
  1. simulationPayload - object - required
Configuration object for the simulation.

simulationPayload fields:

  • blockStateCalls - array - required
    Array of block simulation objects. Each represents a simulated block.
  • traceTransfers - boolean - optional
    If true, value transfers are included as logs. Defaults to false.
  • validation - boolean - optional
    If true, applies validation checks such as nonce and balance. Defaults to false.

blockStateCalls object fields:

  • calls - array
    List of transaction call objects to simulate
  • stateOverrides - object - optional
    Override account state (balance, nonce, code, storage)
  • blockOverrides - object - optional
    Override block-level fields (e.g. number, timestamp, baseFeePerGas)

call object fields:

  • from - string - optional
    Sender address
  • to - string
    Recipient address
  • maxFeePerGas - string - optional
    Max fee per gas (hex)
  • value - string - optional
    Value sent (hex)
  • data - string - optional
    Hex-encoded calldata
  1. blockParameter - string - required
Block number, hash, or tag such as "latest". Arc has no pending block, so use "latest".

Returns:

array of objects - simulated block results. Each object is a full block header for the simulated block plus a calls array.

Call result fields:

  • status - string
    ”0x1” = success, “0x0” = failure
  • gasUsed - string
    Gas used (hex)
  • returnData - string
    Return data (hex)
  • logs - array
    Emitted logs (includes transfers if enabled)
  • error - string
    Error or revert reason (if failed)

Example Request