> ## Documentation Index
> Fetch the complete documentation index at: https://www.helius.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# simulateBundle

> Simula un paquete de JITO sin ejecutarlo en la blockchain.

## Parámetros de la solicitud

<ParamField body="params[0]" type="object" required>
  Primer objeto de configuración. Contiene las transacciones codificadas para la simulación.
</ParamField>

<ParamField body="params[0].encodedTransactions" type="array">
  Arreglo de transacciones codificadas y serializadas para la simulación. La codificación está determinada por el campo `transactionEncoding` (base-64 de forma predeterminada).
</ParamField>

<ParamField body="params[1]" type="object">
  Segundo objeto de configuración. Opcional.
</ParamField>

<ParamField body="params[1].preExecutionAccountsConfigs" type="array" required>
  Especifica qué cuentas se capturarán durante la simulación.

  Esto captura los estados de las cuentas *antes* de que se ejecute la transacción.

  Cada elemento del arreglo en un índice configura la transacción que se encuentra en el mismo índice del paquete.

  Para cada transacción del paquete:

  * Pasa `null` si no quieres que se devuelva ningún estado de cuenta.
  * O bien, proporciona un objeto que describa qué cuentas se deben devolver.

  La longitud del arreglo debe ser igual al número de transacciones del paquete.
</ParamField>

<ParamField body="params[1].postExecutionAccountsConfigs" type="array" required>
  Especifica qué cuentas se capturarán durante la simulación.

  Esto captura los estados de las cuentas *después* de que se ejecute la transacción.

  Cada elemento del arreglo en un índice configura la transacción que se encuentra en el mismo índice del paquete.

  Para cada transacción del paquete:

  * Pasa `null` si no quieres que se devuelva ningún estado de cuenta.
  * O bien, proporciona un objeto que describa qué cuentas se deben devolver.

  La longitud del arreglo debe ser igual al número de transacciones del paquete.
</ParamField>

<ParamField body="params[1].transactionEncoding" type="string" default="base64">
  La codificación de transacciones utilizada en `encodedTransactions`.

  * `base64`
  * `base58`
</ParamField>

<ParamField body="params[1].simulationBank" type="any">
  Especifica el banco con el que se ejecutará la simulación. Puede ser el más reciente, un slot o un nivel de compromiso.
</ParamField>

<ParamField body="params[1].skipSigVerify" type="boolean" default="false">
  Indica si se debe omitir la verificación de la firma antes de la simulación.
</ParamField>

<ParamField body="params[1].replaceRecentBlockhash" type="boolean" default="false">
  Indica si se debe reemplazar el blockhash reciente de la transacción simulada por el blockhash más reciente.
</ParamField>


## OpenAPI

````yaml es/openapi/rpc-http/simulateBundle.yaml POST /
openapi: 3.1.0
info:
  title: Solana RPC API
  version: 1.0.0
  description: >-
    API de simulación de paquetes de JITO para probar y validar la ejecución de
    paquetes antes de enviarlos a la red de Solana mediante validadores de JITO.
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://mainnet.helius-rpc.com
    description: Punto de conexión RPC de Mainnet
  - url: https://devnet.helius-rpc.com
    description: Punto de conexión RPC de Devnet
security: []
paths:
  /:
    post:
      tags:
        - RPC
      summary: simulateBundle
      description: >
        Simula un paquete de JITO sin ejecutarlo en la blockchain. Este método
        permite a los desarrolladores

        probar la ejecución de paquetes, verificar el comportamiento de las
        transacciones dentro de ellos, estimar el consumo

        de unidades de cómputo, detectar errores y previsualizar los cambios de
        estado de las cuentas antes y después de ejecutar el paquete.

        Está disponible exclusivamente para validadores de JITO-Solana y es
        esencial para desarrollar estrategias MEV

        y optimizar paquetes.
      operationId: simulateBundle
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                jsonrpc:
                  type: string
                  enum:
                    - '2.0'
                  description: La versión del protocolo JSON-RPC.
                  example: '2.0'
                  default: '2.0'
                id:
                  type: string
                  description: Un identificador único para la solicitud.
                  example: '1'
                  default: '1'
                method:
                  type: string
                  enum:
                    - simulateBundle
                  description: El nombre del método RPC que se invocará.
                  example: simulateBundle
                  default: simulateBundle
                params:
                  type: array
                  description: Parámetros para simular un paquete de JITO.
                  default:
                    - encodedTransactions:
                        - >-
                          AUpZwml/cvAaQoRINPCXI/+Zp1bEG31TsbQ7YkESdUqtoGHrGSlZWLGh7qsa54Pon3RCx46Z6l+IlAgV8GNmbgcBAAED48eIT6fA5gQUuhts6qDwJ8rp6qemton7jK+tSNA6uiM3FVSCTsdmSMNKqTIUrKARpzIIQabdGWwDk74PLnrd/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgbUMGWXPNjQAwed9kPYG5gXZsBq9jrSuVNeTuC4o0IBAgIAAQwCAAAA6AMAAAAAAAA=
                    - preExecutionAccountsConfigs:
                        - null
                      postExecutionAccountsConfigs:
                        - null
                      skipSigVerify: true
                      transactionEncoding: base64
                      replaceRecentBlockhash: true
                  items:
                    type: object
                    description: Objeto de configuración de la simulación del paquete.
                    required:
                      - params[0]
                    properties:
                      params[0]:
                        type: object
                        description: >-
                          Primer objeto de configuración. Contiene las
                          transacciones codificadas para la simulación.
                        properties:
                          encodedTransactions:
                            type: array
                            description: >-
                              Arreglo de transacciones codificadas y
                              serializadas para la simulación. La codificación
                              se determina mediante el campo
                              `transactionEncoding` (base-64 de forma
                              predeterminada).
                            items:
                              type: string
                              description: Transacción serializada codificada.
                              example: >-
                                5rqF8aHfs9JyEtKTvND6z8RgBtYxQwZLndS1kzHxV7D3kWm9VoYRzFtsP3qra5bM8rGhCv82LYo8fZpQoyQmtN1D9vxG2uEsMhV7jB4KdADRgxMXn5kRJzLZPt2LrPSmcUhfEmeQa7XrKeR9FHdKcXxZ1Hdq68oBr2AaPpTMuL85KDCt
                      params[1]:
                        type: object
                        description: Segundo objeto de configuración. Opcional.
                        required:
                          - preExecutionAccountsConfigs
                          - postExecutionAccountsConfigs
                        properties:
                          preExecutionAccountsConfigs:
                            type: array
                            description: >
                              Especifica qué cuentas se capturarán durante la
                              simulación.


                              Esto captura los estados de las cuentas *antes* de
                              que se ejecute la transacción.


                              Cada elemento del arreglo en un índice configura
                              la transacción que está en el mismo índice del
                              paquete.


                              Para cada transacción del paquete:
                                - Pasa `null` si no quieres que se devuelva ningún estado de cuenta.
                                - O proporciona un objeto que describa qué cuentas se devolverán.

                              La longitud del arreglo debe ser igual al número
                              de transacciones del paquete.
                            items:
                              type:
                                - object
                                - 'null'
                              required:
                                - addresses
                              properties:
                                addresses:
                                  type: array
                                  description: >-
                                    Lista de direcciones de cuentas codificadas
                                    en base-58 cuyo estado se capturará.
                                  items:
                                    type: string
                                    description: Dirección de cuenta codificada en base-58.
                                    example: >-
                                      TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
                                encoding:
                                  type: string
                                  description: >
                                    La codificación con la que se devolverán los
                                    datos de la cuenta capturada.
                                  default: base64
                                  enum:
                                    - binary
                                    - base58
                                    - base64
                                    - jsonParsed
                                    - base64+zstd
                                  example: base64
                          postExecutionAccountsConfigs:
                            type: array
                            description: >
                              Especifica qué cuentas se capturarán durante la
                              simulación.


                              Esto captura los estados de las cuentas *después*
                              de que se ejecute la transacción.


                              Cada elemento del arreglo en un índice configura
                              la transacción que está en el mismo índice del
                              paquete.


                              Para cada transacción del paquete:
                                - Pasa `null` si no quieres que se devuelva ningún estado de cuenta.
                                - O proporciona un objeto que describa qué cuentas se devolverán.

                              La longitud del arreglo debe ser igual al número
                              de transacciones del paquete.
                            items:
                              type:
                                - object
                                - 'null'
                              required:
                                - addresses
                              properties:
                                addresses:
                                  type: array
                                  description: >-
                                    Lista de direcciones de cuentas codificadas
                                    en base-58 cuyo estado se capturará.
                                  items:
                                    type: string
                                    description: Dirección de cuenta codificada en base-58.
                                    example: >-
                                      TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
                                encoding:
                                  type: string
                                  description: >
                                    La codificación con la que se devolverán los
                                    datos de la cuenta capturada.
                                  default: base64
                                  enum:
                                    - binary
                                    - base58
                                    - base64
                                    - jsonParsed
                                    - base64+zstd
                                  example: base64
                          transactionEncoding:
                            type: string
                            description: >-
                              La codificación de transacción utilizada en
                              `encodedTransactions`.
                            enum:
                              - base64
                              - base58
                            default: base64
                          simulationBank:
                            description: >
                              Especifica con qué banco se ejecutará la
                              simulación. Puede ser la punta, un slot o un nivel
                              de compromiso.
                            oneOf:
                              - type: string
                                description: >-
                                  Usa el banco del slot más alto del RPC, es
                                  decir, el banco de trabajo.
                                example: tip
                              - type: object
                                description: >-
                                  Simula en el banco del slot proporcionado
                                  (puede no estar disponible).
                                properties:
                                  slot:
                                    type: integer
                                    example: 373976835
                                required:
                                  - slot
                              - type: object
                                description: >-
                                  Define el nivel de compromiso con el que se
                                  realizará la simulación.
                                properties:
                                  commitment:
                                    type: object
                                    properties:
                                      commitment:
                                        type: string
                                        enum:
                                          - processed
                                          - confirmed
                                          - finalized
                                        description: >-
                                          Nivel de compromiso con el que se
                                          realizará la simulación.
                                        example: processed
                                    required:
                                      - commitment
                                required:
                                  - commitment
                          skipSigVerify:
                            type: boolean
                            description: >-
                              Indica si se debe omitir la verificación de la
                              firma antes de la simulación.
                            default: false
                          replaceRecentBlockhash:
                            type: boolean
                            description: >-
                              Indica si se debe reemplazar el hash de bloque
                              reciente de la transacción simulada por el hash de
                              bloque más reciente.
                            default: false
      responses:
        '200':
          description: El paquete se simuló correctamente.
          content:
            application/json:
              schema:
                type: object
                properties:
                  jsonrpc:
                    type: string
                    description: La versión del protocolo JSON-RPC.
                    enum:
                      - '2.0'
                    example: '2.0'
                  id:
                    type: string
                    description: Identificador que coincide con la solicitud.
                    example: '1'
                  result:
                    type: object
                    description: Resultado del paquete simulado.
                    properties:
                      context:
                        type: object
                        description: Contexto de la respuesta de la simulación.
                        properties:
                          apiVersion:
                            type: string
                            description: La versión de la API.
                            example: 2.30.10
                          slot:
                            type: integer
                            description: Slot en el que se procesaron los datos.
                            example: 373999891
                      value:
                        type: object
                        description: Detalles del resultado del paquete simulado.
                        properties:
                          summary:
                            description: >
                              Resumen del resultado de la simulación del
                              paquete.


                              Si la simulación se realizó correctamente, se
                              establece en `"succeeded"`.


                              Si la simulación falló, se establece en un objeto
                              con un único campo `failed` que contiene los
                              detalles del fallo.
                            oneOf:
                              - type: string
                                example: succeeded
                              - type: object
                                required:
                                  - failed
                                properties:
                                  failed:
                                    type: object
                                    required:
                                      - error
                                    properties:
                                      error:
                                        description: >-
                                          Valor que contiene detalles del error.
                                          La estructura puede variar.
                                      tx_signature:
                                        type: string
                                        description: >-
                                          Firma de la transacción fallida en
                                          base58. Puede ser `null` si no
                                          corresponde.
                          transactionResults:
                            type: array
                            description: >-
                              Arreglo de resultados para cada transacción del
                              paquete. Puede estar vacío si se produjo un error.
                            items:
                              type: object
                              properties:
                                err:
                                  type:
                                    - object
                                    - 'null'
                                  description: >-
                                    Error si la transacción falló; `null` si se
                                    realizó correctamente.
                                logs:
                                  type:
                                    - array
                                    - 'null'
                                  description: >-
                                    Arreglo de mensajes de registro de la
                                    ejecución de la transacción.
                                  items:
                                    type: string
                                    example: >-
                                      Program
                                      4Nd1mFvxhG1DQMLUKhMzrZ7yG1UrjC9xXH6kvvZtcg9R
                                      invoke [1]
                                preExecutionAccounts:
                                  type:
                                    - array
                                    - 'null'
                                  description: >-
                                    Estados de las cuentas antes de ejecutar la
                                    transacción.
                                  items:
                                    type: object
                                    properties:
                                      data:
                                        type: string
                                        description: Datos asociados con la cuenta.
                                      executable:
                                        type: boolean
                                        description: >-
                                          Indica si la cuenta contiene un
                                          programa.
                                        example: false
                                      lamports:
                                        type: integer
                                        description: >-
                                          Número de lamports asignados a esta
                                          cuenta.
                                        example: 1500000000
                                      owner:
                                        type: string
                                        description: >-
                                          Dirección del programa propietario de
                                          esta cuenta.
                                        example: >-
                                          4Nd1mFvxhG1DQMLUKhMzrZ7yG1UrjC9xXH6kvvZtcg9R
                                      rentEpoch:
                                        type: integer
                                        description: >-
                                          Época en la que esta cuenta deberá pagar
                                          el próximo alquiler.
                                        example: 324
                                      space:
                                        type: integer
                                        description: El tamaño de los datos de la cuenta.
                                        example: 1024
                                postExecutionAccounts:
                                  type:
                                    - array
                                    - 'null'
                                  description: >-
                                    Estados de las cuentas después de ejecutar
                                    la transacción.
                                  items:
                                    type: object
                                    properties:
                                      data:
                                        type: string
                                        description: Datos asociados con la cuenta.
                                      executable:
                                        type: boolean
                                        description: >-
                                          Indica si la cuenta contiene un
                                          programa.
                                        example: false
                                      lamports:
                                        type: integer
                                        description: >-
                                          Número de lamports asignados a esta
                                          cuenta.
                                        example: 1500000000
                                      owner:
                                        type: string
                                        description: >-
                                          Dirección del programa propietario de
                                          esta cuenta.
                                        example: >-
                                          4Nd1mFvxhG1DQMLUKhMzrZ7yG1UrjC9xXH6kvvZtcg9R
                                      rentEpoch:
                                        type: integer
                                        description: >-
                                          Época en la que esta cuenta deberá pagar
                                          el próximo alquiler.
                                        example: 324
                                      space:
                                        type: integer
                                        description: El tamaño de los datos de la cuenta.
                                        example: 1024
                                unitsConsumed:
                                  type: integer
                                  description: >-
                                    Número de unidades del presupuesto de
                                    cómputo consumidas durante el procesamiento.
                                  example: 200000
                                returnData:
                                  type:
                                    - object
                                    - 'null'
                                  description: >-
                                    Datos de retorno más recientes generados por
                                    una instrucción.
                                  properties:
                                    programId:
                                      type: string
                                      description: >-
                                        Programa que generó los datos de
                                        retorno.
                                      example: >-
                                        Fx9Hp1gLzYj6Ryc4GaVoq2v6t4NxWg3GT1kP7quzZbVQ
                                    data:
                                      type: string
                                      description: >-
                                        Datos de retorno como datos binarios
                                        codificados en base-64.
                                      example: >-
                                        AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASjD8=
              example:
                jsonrpc: '2.0'
                id: '1'
                result:
                  context:
                    apiVersion: 2.30.10
                    slot: 373999891
                  value:
                    summary: succeeded
                    transactionResults:
                      - err: null
                        logs:
                          - >-
                            Program ComputeBudget111111111111111111111111111111
                            invoke [1]
                          - >-
                            Program ComputeBudget111111111111111111111111111111
                            success
                          - >-
                            Program ComputeBudget111111111111111111111111111111
                            invoke [1]
                          - >-
                            Program ComputeBudget111111111111111111111111111111
                            success
                          - Program 11111111111111111111111111111111 invoke [1]
                          - Program 11111111111111111111111111111111 success
                        preExecutionAccounts:
                          - data:
                              - ''
                              - base64
                            executable: true
                            lamports: 5299606121
                            owner: BPFLoader2111111111111111111111111111111111
                            rentEpoch: 324
                            space: 134080
                        postExecutionAccounts:
                          - data:
                              - ''
                              - base64
                            executable: true
                            lamports: 5299606121
                            owner: BPFLoader2111111111111111111111111111111111
                            rentEpoch: 324
                            space: 134080
                        returnData:
                          programId: Fx9Hp1gLzYj6Ryc4GaVoq2v6t4NxWg3GT1kP7quzZbVQ
                          data: AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASjD8=
                        unitsConsumed: 450
                      - err: null
                        logs:
                          - >-
                            Program ComputeBudget111111111111111111111111111111
                            invoke [1]
                          - >-
                            Program ComputeBudget111111111111111111111111111111
                            success
                          - >-
                            Program ComputeBudget111111111111111111111111111111
                            invoke [1]
                          - >-
                            Program ComputeBudget111111111111111111111111111111
                            success
                          - Program 11111111111111111111111111111111 invoke [1]
                          - Program 11111111111111111111111111111111 success
                        postExecutionAccounts: null
                        preExecutionAccounts: null
                        returnData: null
                        unitsConsumed: 450
        '400':
          description: >-
            Solicitud incorrecta: parámetros de solicitud no válidos o solicitud
            con formato incorrecto.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32602
                  message: Invalid params
                id: '1'
        '401':
          description: 'No autorizado: la clave de API no es válida o falta.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32001
                  message: Unauthorized
                id: '1'
        '429':
          description: 'Demasiadas solicitudes: se superó el límite de solicitudes.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32005
                  message: Too many requests
                id: '1'
        '500':
          description: 'Error interno del servidor: se produjo un error en el servidor.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32603
                  message: Internal error
                id: '1'
        '503':
          description: >-
            Servicio no disponible: el servicio no está disponible
            temporalmente.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32002
                  message: Service unavailable
                id: '1'
        '504':
          description: >-
            Tiempo de espera de la puerta de enlace agotado: se agotó el tiempo
            de espera de la solicitud.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32003
                  message: Gateway timeout
                id: '1'
      security:
        - ApiKeyQuery: []
components:
  schemas:
    ErrorResponse:
      type: object
      properties:
        jsonrpc:
          type: string
          description: La versión del protocolo JSON-RPC.
          enum:
            - '2.0'
          example: '2.0'
        error:
          type: object
          properties:
            code:
              type: integer
              description: El código de error.
              example: -32602
            message:
              type: string
              description: El mensaje de error.
            data:
              type: object
              description: Datos adicionales sobre el error.
        id:
          type: string
          description: Identificador que coincide con la solicitud.
          example: '1'
  securitySchemes:
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api-key
      description: >-
        Tu clave de API de Helius. Puedes obtener una gratis en el
        [panel](https://dashboard.helius.dev/api-keys).

````