Skip to main content

Simulate transaction

POST 

/transactions/simulate

The output of the transaction will have the exact transaction outputs and events that running an actual signed transaction would have. However, it will not have the associated state hashes, as they are not updated in storage. This can be used to estimate the maximum gas units for a submitted transaction.

To use this, you must:

  • Create a SignedTransaction with a zero-padded signature.
  • Submit a SubmitTransactionRequest containing a UserTransactionRequest containing that signature.

To use this endpoint with BCS, you must submit a SignedTransaction encoded as BCS. See SignedTransaction in types/src/transaction/mod.rs.

Request

Query Parameters

    estimate_max_gas_amount boolean

    If set to true, the max gas value in the transaction will be ignored and the maximum possible gas will be used

    estimate_gas_unit_price boolean

    If set to true, the gas unit price in the transaction will be ignored and the estimated value will be used

    estimate_prioritized_gas_unit_price boolean

    If set to true, the transaction will use a higher price than the original estimate.

Body

required

    senderhexrequired

    A hex encoded 32 byte Aptos account address.

    This is represented in a string as a 64 character hex string, sometimes shortened by stripping leading 0s, and adding a 0x.

    For example, address 0x0000000000000000000000000000000000000000000000000000000000000001 is represented as 0x1.

    Example: 0x88fbd33f54e1126269769780feb24480428179f552e2313fbe571b72e62a1ca1
    sequence_numberuint64required

    A string containing a 64-bit unsigned integer.

    We represent u64 values as a string to ensure compatibility with languages such as JavaScript that do not parse u64s in JSON natively.

    Example: 32425224034
    max_gas_amountuint64required

    A string containing a 64-bit unsigned integer.

    We represent u64 values as a string to ensure compatibility with languages such as JavaScript that do not parse u64s in JSON natively.

    Example: 32425224034
    gas_unit_priceuint64required

    A string containing a 64-bit unsigned integer.

    We represent u64 values as a string to ensure compatibility with languages such as JavaScript that do not parse u64s in JSON natively.

    Example: 32425224034
    expiration_timestamp_secsuint64required

    A string containing a 64-bit unsigned integer.

    We represent u64 values as a string to ensure compatibility with languages such as JavaScript that do not parse u64s in JSON natively.

    Example: 32425224034

    payload

    object

    required

    An enum of the possible transaction payloads

    oneOf

    typestringrequired

    Possible values: [entry_function_payload]

    Example: entry_function_payload
    functionEntryFunctionId (string)required

    Entry function id is string representation of a entry function defined on-chain.

    Format: {address}::{module name}::{function name}

    Both module name and function name are case-sensitive.

    Example: 0x1::aptos_coin::transfer
    type_argumentsMoveType (string)[]required

    Type arguments of the function

    Possible values: Value must match regular expression ^(bool|u8|u64|u128|address|signer|vector<.+>|0x[0-9a-zA-Z:_<, >]+)$

    argumentsarrayrequired

    Arguments of the function

    signature

    object

    required

    An enum representing the different transaction signatures available

    oneOf

    typestringrequired

    Possible values: [ed25519_signature]

    Example: ed25519_signature
    public_keyhexrequired

    All bytes (Vec) data is represented as hex-encoded string prefixed with 0x and fulfilled with two hex digits per byte.

    Unlike the Address type, HexEncodedBytes will not trim any zeros.

    Example: 0x88fbd33f54e1126269769780feb24480428179f552e2313fbe571b72e62a1ca1
    signaturehexrequired

    All bytes (Vec) data is represented as hex-encoded string prefixed with 0x and fulfilled with two hex digits per byte.

    Unlike the Address type, HexEncodedBytes will not trim any zeros.

    Example: 0x88fbd33f54e1126269769780feb24480428179f552e2313fbe571b72e62a1ca1

Responses

Response Headers

  • X-APTOS-CHAIN-ID

    integer

    Chain ID of the current chain

  • X-APTOS-LEDGER-VERSION

    integer

    Current ledger version of the chain

  • X-APTOS-LEDGER-OLDEST-VERSION

    integer

    Oldest non-pruned ledger version of the chain

  • X-APTOS-LEDGER-TIMESTAMPUSEC

    integer

    Current timestamp of the chain

  • X-APTOS-EPOCH

    integer

    Current epoch of the chain

  • X-APTOS-BLOCK-HEIGHT

    integer

    Current block height of the chain

  • X-APTOS-OLDEST-BLOCK-HEIGHT

    integer

    Oldest non-pruned block height of the chain

  • X-APTOS-GAS-USED

    integer

    The cost of the call in terms of gas

  • X-APTOS-CURSOR

    string

    Cursor to be used for endpoints that support cursor-based pagination. Pass this to the start field of the endpoint on the next call to get the next page of results.

Schema

  • Array [

  • versionuint64required

    A string containing a 64-bit unsigned integer.

    We represent u64 values as a string to ensure compatibility with languages such as JavaScript that do not parse u64s in JSON natively.

    Example: 32425224034
    hashHashValue (string)required
    state_change_hashHashValue (string)required
    event_root_hashHashValue (string)required
    state_checkpoint_hashHashValue (string)
    gas_useduint64required

    A string containing a 64-bit unsigned integer.

    We represent u64 values as a string to ensure compatibility with languages such as JavaScript that do not parse u64s in JSON natively.

    Example: 32425224034
    successbooleanrequired

    Whether the transaction was successful

    vm_statusstringrequired

    The VM status of the transaction, can tell useful information in a failure

    accumulator_root_hashHashValue (string)required

    changes

    object[]

    required

    Final state of resources changed by the transaction

  • Array [

  • oneOf

    typestringrequired

    Possible values: [delete_module]

    Example: delete_module
    addresshexrequired

    A hex encoded 32 byte Aptos account address.

    This is represented in a string as a 64 character hex string, sometimes shortened by stripping leading 0s, and adding a 0x.

    For example, address 0x0000000000000000000000000000000000000000000000000000000000000001 is represented as 0x1.

    Example: 0x88fbd33f54e1126269769780feb24480428179f552e2313fbe571b72e62a1ca1
    state_key_hashstringrequired

    State key hash

    moduleMoveModuleId (string)required

    Move module id is a string representation of Move module.

    Format: {address}::{module name}

    address should be hex-encoded 32 byte account address that is prefixed with 0x.

    Module name is case-sensitive.

    Example: 0x1::aptos_coin
  • ]

  • senderhexrequired

    A hex encoded 32 byte Aptos account address.

    This is represented in a string as a 64 character hex string, sometimes shortened by stripping leading 0s, and adding a 0x.

    For example, address 0x0000000000000000000000000000000000000000000000000000000000000001 is represented as 0x1.

    Example: 0x88fbd33f54e1126269769780feb24480428179f552e2313fbe571b72e62a1ca1
    sequence_numberuint64required

    A string containing a 64-bit unsigned integer.

    We represent u64 values as a string to ensure compatibility with languages such as JavaScript that do not parse u64s in JSON natively.

    Example: 32425224034
    max_gas_amountuint64required

    A string containing a 64-bit unsigned integer.

    We represent u64 values as a string to ensure compatibility with languages such as JavaScript that do not parse u64s in JSON natively.

    Example: 32425224034
    gas_unit_priceuint64required

    A string containing a 64-bit unsigned integer.

    We represent u64 values as a string to ensure compatibility with languages such as JavaScript that do not parse u64s in JSON natively.

    Example: 32425224034
    expiration_timestamp_secsuint64required

    A string containing a 64-bit unsigned integer.

    We represent u64 values as a string to ensure compatibility with languages such as JavaScript that do not parse u64s in JSON natively.

    Example: 32425224034

    payload

    object

    required

    An enum of the possible transaction payloads

    oneOf

    typestringrequired

    Possible values: [entry_function_payload]

    Example: entry_function_payload
    functionEntryFunctionId (string)required

    Entry function id is string representation of a entry function defined on-chain.

    Format: {address}::{module name}::{function name}

    Both module name and function name are case-sensitive.

    Example: 0x1::aptos_coin::transfer
    type_argumentsMoveType (string)[]required

    Type arguments of the function

    Possible values: Value must match regular expression ^(bool|u8|u64|u128|address|signer|vector<.+>|0x[0-9a-zA-Z:_<, >]+)$

    argumentsarrayrequired

    Arguments of the function

    signature

    object

    An enum representing the different transaction signatures available

    oneOf

    typestringrequired

    Possible values: [ed25519_signature]

    Example: ed25519_signature
    public_keyhexrequired

    All bytes (Vec) data is represented as hex-encoded string prefixed with 0x and fulfilled with two hex digits per byte.

    Unlike the Address type, HexEncodedBytes will not trim any zeros.

    Example: 0x88fbd33f54e1126269769780feb24480428179f552e2313fbe571b72e62a1ca1
    signaturehexrequired

    All bytes (Vec) data is represented as hex-encoded string prefixed with 0x and fulfilled with two hex digits per byte.

    Unlike the Address type, HexEncodedBytes will not trim any zeros.

    Example: 0x88fbd33f54e1126269769780feb24480428179f552e2313fbe571b72e62a1ca1

    events

    object[]

    required

    Events generated by the transaction

  • Array [

  • guid

    object

    required

    creation_numberuint64required

    A string containing a 64-bit unsigned integer.

    We represent u64 values as a string to ensure compatibility with languages such as JavaScript that do not parse u64s in JSON natively.

    Example: 32425224034
    account_addresshexrequired

    A hex encoded 32 byte Aptos account address.

    This is represented in a string as a 64 character hex string, sometimes shortened by stripping leading 0s, and adding a 0x.

    For example, address 0x0000000000000000000000000000000000000000000000000000000000000001 is represented as 0x1.

    Example: 0x88fbd33f54e1126269769780feb24480428179f552e2313fbe571b72e62a1ca1
    sequence_numberuint64required

    A string containing a 64-bit unsigned integer.

    We represent u64 values as a string to ensure compatibility with languages such as JavaScript that do not parse u64s in JSON natively.

    Example: 32425224034
    typeMoveType (string)required

    String representation of an on-chain Move type tag that is exposed in transaction payload. Values: - bool - u8 - u16 - u32 - u64 - u128 - u256 - address - signer - vector: vector<{non-reference MoveTypeId}> - struct: {address}::{module_name}::{struct_name}::<{generic types}>

    Vector type value examples: - `vector<u8>` - `vector<vector<u64>>` - `vector<0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>>` Struct type value examples: - `0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin> - `0x1::account::Account` Note: 1. Empty chars should be ignored when comparing 2 struct tag ids. 2. When used in an URL path, should be encoded by url-encoding (AKA percent-encoding).

    Possible values: Value must match regular expression ^(bool|u8|u64|u128|address|signer|vector<.+>|0x[0-9a-zA-Z:_<, >]+)$

    datarequired

    The JSON representation of the event

  • ]

  • timestampuint64required

    A string containing a 64-bit unsigned integer.

    We represent u64 values as a string to ensure compatibility with languages such as JavaScript that do not parse u64s in JSON natively.

    Example: 32425224034
  • ]