> ## 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

> Simuler un bundle JITO sans l'exécuter sur la blockchain.

## Paramètres de la requête

<ParamField body="params[0]" type="object" required>
  Premier objet de configuration. Contient les transactions encodées pour la simulation.
</ParamField>

<ParamField body="params[0].encodedTransactions" type="array">
  Tableau de transactions encodées et sérialisées pour la simulation. L'encodage est déterminé par le champ `transactionEncoding` (base-64 par défaut).
</ParamField>

<ParamField body="params[1]" type="object">
  Deuxième objet de configuration. Optionnel.
</ParamField>

<ParamField body="params[1].preExecutionAccountsConfigs" type="array" required>
  Spécifie quels comptes capturer pendant la simulation.

  Cela capture les états des comptes *avant* l'exécution de la transaction.

  Un élément du tableau à un index configure la transaction à l'index identique dans le bundle.

  Pour chaque transaction dans le bundle :

  * Passez `null` si vous ne souhaitez pas que l'état d'un compte soit retourné.
  * Ou, fournissez un objet décrivant quels comptes retourner.

  La longueur du tableau doit être égale au nombre de transactions dans le bundle.
</ParamField>

<ParamField body="params[1].postExecutionAccountsConfigs" type="array" required>
  Spécifie quels comptes capturer pendant la simulation.

  Cela capture les états des comptes *après* l'exécution de la transaction.

  Un élément du tableau à un index configure la transaction à l'index identique dans le bundle.

  Pour chaque transaction dans le bundle :

  * Passez `null` si vous ne souhaitez pas que l'état d'un compte soit retourné.
  * Ou, fournissez un objet décrivant quels comptes retourner.

  La longueur du tableau doit être égale au nombre de transactions dans le bundle.
</ParamField>

<ParamField body="params[1].transactionEncoding" type="string" default="base64">
  L'encodage de la transaction utilisé dans `encodedTransactions`.

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

<ParamField body="params[1].simulationBank" type="any">
  Spécifie quelle banque utiliser pour la simulation. Peut être le tip, un slot ou un niveau de commitment.
</ParamField>

<ParamField body="params[1].skipSigVerify" type="boolean" default="false">
  Indique s'il faut ignorer la vérification de la signature avant la simulation.
</ParamField>

<ParamField body="params[1].replaceRecentBlockhash" type="boolean" default="false">
  Indique s'il faut remplacer le recent blockhash de la transaction simulée par le dernier blockhash.
</ParamField>


## OpenAPI

````yaml fr/openapi/rpc-http/simulateBundle.yaml POST /
openapi: 3.1.0
info:
  title: Solana RPC API
  version: 1.0.0
  description: >-
    JITO Bundle Simulation API pour tester et valider l'exécution des bundles
    avant soumission au réseau Solana via les validateurs JITO.
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://mainnet.helius-rpc.com
    description: Point de terminaison RPC Mainnet
  - url: https://devnet.helius-rpc.com
    description: Point de terminaison RPC Devnet
security: []
paths:
  /:
    post:
      tags:
        - RPC
      summary: simulateBundle
      description: >-
        Simulez un bundle JITO sans l'exécuter sur la blockchain. Cette méthode
        permet aux développeurs de tester l'exécution de bundles, de vérifier le
        comportement des transactions au sein des bundles, d'estimer la
        consommation d'unités de calcul, de détecter des erreurs et de
        prévisualiser les changements d'état des comptes avant et après
        l'exécution du bundle. Disponible exclusivement pour les validateurs
        JITO-Solana et essentiel pour le développement de stratégies MEV et
        l'optimisation des bundles.
      operationId: simulateBundle
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                jsonrpc:
                  type: string
                  enum:
                    - '2.0'
                  description: La version du protocole JSON-RPC.
                  example: '2.0'
                  default: '2.0'
                id:
                  type: string
                  description: Un identifiant unique pour la requête.
                  example: '1'
                  default: '1'
                method:
                  type: string
                  enum:
                    - simulateBundle
                  description: Le nom de la méthode RPC à invoquer.
                  example: simulateBundle
                  default: simulateBundle
                params:
                  type: array
                  description: Paramètres pour simuler un bundle JITO.
                  default:
                    - encodedTransactions:
                        - >-
                          AUpZwml/cvAaQoRINPCXI/+Zp1bEG31TsbQ7YkESdUqtoGHrGSlZWLGh7qsa54Pon3RCx46Z6l+IlAgV8GNmbgcBAAED48eIT6fA5gQUuhts6qDwJ8rp6qemton7jK+tSNA6uiM3FVSCTsdmSMNKqTIUrKARpzIIQabdGWwDk74PLnrd/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgbUMGWXPNjQAwed9kPYG5gXZsBq9jrSuVNeTuC4o0IBAgIAAQwCAAAA6AMAAAAAAAA=
                    - preExecutionAccountsConfigs:
                        - null
                      postExecutionAccountsConfigs:
                        - null
                      skipSigVerify: true
                      transactionEncoding: base64
                      replaceRecentBlockhash: true
                  items:
                    type: object
                    description: Objet de configuration de simulation de bundle.
                    required:
                      - params[0]
                    properties:
                      params[0]:
                        type: object
                        description: >-
                          Premier objet de configuration. Contient les
                          transactions encodées pour la simulation.
                        properties:
                          encodedTransactions:
                            type: array
                            description: >-
                              Tableau de transactions encodées et sérialisées
                              pour la simulation. L'encodage est déterminé par
                              le champ `transactionEncoding` (base-64 par
                              défaut).
                            items:
                              type: string
                              description: Transaction sérialisée encodée.
                              example: >-
                                5rqF8aHfs9JyEtKTvND6z8RgBtYxQwZLndS1kzHxV7D3kWm9VoYRzFtsP3qra5bM8rGhCv82LYo8fZpQoyQmtN1D9vxG2uEsMhV7jB4KdADRgxMXn5kRJzLZPt2LrPSmcUhfEmeQa7XrKeR9FHdKcXxZ1Hdq68oBr2AaPpTMuL85KDCt
                      params[1]:
                        type: object
                        description: Deuxième objet de configuration. Optionnel.
                        required:
                          - preExecutionAccountsConfigs
                          - postExecutionAccountsConfigs
                        properties:
                          preExecutionAccountsConfigs:
                            type: array
                            description: >
                              Spécifie quels comptes capturer pendant la
                              simulation.


                              Cela capture les états des comptes *avant*
                              l'exécution de la transaction.


                              Un élément du tableau à un index configure la
                              transaction qui est au même index dans le bundle.


                              Pour chaque transaction dans le bundle :
                                - Passez `null` si vous ne souhaitez pas que l'état de compte soit renvoyé.
                                - Ou, fournissez un objet décrivant quels comptes renvoyer.

                              La longueur du tableau doit être égale au nombre
                              de transactions dans le bundle.
                            items:
                              type:
                                - object
                                - 'null'
                              required:
                                - addresses
                              properties:
                                addresses:
                                  type: array
                                  description: >-
                                    Liste des adresses de comptes encodées en
                                    base-58 dont l'état sera capturé.
                                  items:
                                    type: string
                                    description: Adresse de compte encodée en base-58.
                                    example: >-
                                      TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
                                encoding:
                                  type: string
                                  description: >-
                                    L'encodage dans lequel les données de compte
                                    capturées seront renvoyées.
                                  default: base64
                                  enum:
                                    - binary
                                    - base58
                                    - base64
                                    - jsonParsed
                                    - base64+zstd
                                  example: base64
                          postExecutionAccountsConfigs:
                            type: array
                            description: >
                              Spécifie quels comptes capturer pendant la
                              simulation.


                              Cela capture les états des comptes *après*
                              l'exécution de la transaction.


                              Un élément du tableau à un index configure la
                              transaction qui est au même index dans le bundle.


                              Pour chaque transaction dans le bundle :
                                - Passez `null` si vous ne souhaitez pas que l'état de compte soit renvoyé.
                                - Ou, fournissez un objet décrivant quels comptes renvoyer.

                              La longueur du tableau doit être égale au nombre
                              de transactions dans le bundle.
                            items:
                              type:
                                - object
                                - 'null'
                              required:
                                - addresses
                              properties:
                                addresses:
                                  type: array
                                  description: >-
                                    Liste des adresses de comptes encodées en
                                    base-58 dont l'état sera capturé.
                                  items:
                                    type: string
                                    description: Adresse de compte encodée en base-58.
                                    example: >-
                                      TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
                                encoding:
                                  type: string
                                  description: >-
                                    L'encodage dans lequel les données de compte
                                    capturées seront renvoyées.
                                  default: base64
                                  enum:
                                    - binary
                                    - base58
                                    - base64
                                    - jsonParsed
                                    - base64+zstd
                                  example: base64
                          transactionEncoding:
                            type: string
                            description: >-
                              L'encodage des transactions utilisées dans
                              `encodedTransactions`.
                            enum:
                              - base64
                              - base58
                            default: base64
                          simulationBank:
                            description: >-
                              Spécifie quelle banque utiliser pour la
                              simulation. Peut être la pointe, un slot, ou un
                              niveau d'engagement.
                            oneOf:
                              - type: string
                                description: >-
                                  Utilisez la banque du slot le plus élevé du
                                  RPC, c'est-à-dire la banque de travail.
                                example: tip
                              - type: object
                                description: >-
                                  Simulez sur la banque du slot fourni (peut ne
                                  pas être disponible).
                                properties:
                                  slot:
                                    type: integer
                                    example: 373976835
                                required:
                                  - slot
                              - type: object
                                description: Définir un niveau d'engagement pour simuler.
                                properties:
                                  commitment:
                                    type: object
                                    properties:
                                      commitment:
                                        type: string
                                        enum:
                                          - processed
                                          - confirmed
                                          - finalized
                                        description: Niveau d'engagement pour simuler.
                                        example: processed
                                    required:
                                      - commitment
                                required:
                                  - commitment
                          skipSigVerify:
                            type: boolean
                            description: >-
                              Indique s'il faut ignorer la vérification de
                              signature avant la simulation.
                            default: false
                          replaceRecentBlockhash:
                            type: boolean
                            description: >-
                              Indique s'il faut remplacer le récent blockhash de
                              la transaction simulée par le dernier blockhash.
                            default: false
      responses:
        '200':
          description: Bundle simulé avec succès.
          content:
            application/json:
              schema:
                type: object
                properties:
                  jsonrpc:
                    type: string
                    description: La version du protocole JSON-RPC.
                    enum:
                      - '2.0'
                    example: '2.0'
                  id:
                    type: string
                    description: Identifiant correspondant à la requête.
                    example: '1'
                  result:
                    type: object
                    description: Résultat du bundle simulé.
                    properties:
                      context:
                        type: object
                        description: Contexte de la réponse de simulation.
                        properties:
                          apiVersion:
                            type: string
                            description: La version de l'API.
                            example: 2.30.10
                          slot:
                            type: integer
                            description: Slot dans lequel les données ont été traitées.
                            example: 373999891
                      value:
                        type: object
                        description: Détails du résultat du bundle simulé.
                        properties:
                          summary:
                            description: >
                              Résumé du résultat de la simulation du bundle.


                              Si la simulation a réussi, cela est défini sur
                              `"succeeded"`.


                              Si la simulation a échoué, cela est défini sur un
                              objet avec un seul champ `failed` qui contient des
                              détails sur cet échec.
                            oneOf:
                              - type: string
                                example: succeeded
                              - type: object
                                required:
                                  - failed
                                properties:
                                  failed:
                                    type: object
                                    required:
                                      - error
                                    properties:
                                      error:
                                        description: >-
                                          Valeur contenant des détails sur
                                          l'erreur. La structure peut varier.
                                      tx_signature:
                                        type: string
                                        description: >-
                                          Signature de la transaction échouée en
                                          base-58. Peut être `null` si non
                                          applicable.
                          transactionResults:
                            type: array
                            description: >-
                              Tableau des résultats pour chaque transaction dans
                              le bundle. Peut être vide s'il y a eu une erreur.
                            items:
                              type: object
                              properties:
                                err:
                                  type:
                                    - object
                                    - 'null'
                                  description: >-
                                    Erreur si la transaction a échoué, `null` si
                                    elle a réussi.
                                logs:
                                  type:
                                    - array
                                    - 'null'
                                  description: >-
                                    Tableau des messages de log de l'exécution
                                    des transactions.
                                  items:
                                    type: string
                                    example: >-
                                      Program
                                      4Nd1mFvxhG1DQMLUKhMzrZ7yG1UrjC9xXH6kvvZtcg9R
                                      invoke [1]
                                preExecutionAccounts:
                                  type:
                                    - array
                                    - 'null'
                                  description: >-
                                    États des comptes avant l'exécution de la
                                    transaction.
                                  items:
                                    type: object
                                    properties:
                                      data:
                                        type: string
                                        description: Données associées au compte.
                                      executable:
                                        type: boolean
                                        description: >-
                                          Indique si le compte contient un
                                          programme.
                                        example: false
                                      lamports:
                                        type: integer
                                        description: Nombre de lamports assignés à ce compte.
                                        example: 1500000000
                                      owner:
                                        type: string
                                        description: >-
                                          Adresse du programme qui possède ce
                                          compte.
                                        example: >-
                                          4Nd1mFvxhG1DQMLUKhMzrZ7yG1UrjC9xXH6kvvZtcg9R
                                      rentEpoch:
                                        type: integer
                                        description: >-
                                          Époque à laquelle ce compte devra de
                                          nouveau payer le loyer.
                                        example: 324
                                      space:
                                        type: integer
                                        description: La taille des données du compte.
                                        example: 1024
                                postExecutionAccounts:
                                  type:
                                    - array
                                    - 'null'
                                  description: >-
                                    États des comptes après l'exécution de la
                                    transaction.
                                  items:
                                    type: object
                                    properties:
                                      data:
                                        type: string
                                        description: Données associées au compte.
                                      executable:
                                        type: boolean
                                        description: >-
                                          Indique si le compte contient un
                                          programme.
                                        example: false
                                      lamports:
                                        type: integer
                                        description: Nombre de lamports assignés à ce compte.
                                        example: 1500000000
                                      owner:
                                        type: string
                                        description: >-
                                          Adresse du programme qui possède ce
                                          compte.
                                        example: >-
                                          4Nd1mFvxhG1DQMLUKhMzrZ7yG1UrjC9xXH6kvvZtcg9R
                                      rentEpoch:
                                        type: integer
                                        description: >-
                                          Époque à laquelle ce compte devra de
                                          nouveau payer le loyer.
                                        example: 324
                                      space:
                                        type: integer
                                        description: La taille des données du compte.
                                        example: 1024
                                unitsConsumed:
                                  type: integer
                                  description: >-
                                    Nombre d'unités de budget de calcul
                                    consommées pendant le traitement.
                                  example: 200000
                                returnData:
                                  type:
                                    - object
                                    - 'null'
                                  description: >-
                                    Données de retour les plus récentes générées
                                    par une instruction.
                                  properties:
                                    programId:
                                      type: string
                                      description: >-
                                        Programme qui a généré les données de
                                        retour.
                                      example: >-
                                        Fx9Hp1gLzYj6Ryc4GaVoq2v6t4NxWg3GT1kP7quzZbVQ
                                    data:
                                      type: string
                                      description: >-
                                        Données de retour en tant que données
                                        binaires encodées 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: >-
            Requête incorrecte - Paramètres de requête invalides ou requête
            malformée.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32602
                  message: Invalid params
                id: '1'
        '401':
          description: Non autorisé - Clé API invalide ou manquante.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32001
                  message: Unauthorized
                id: '1'
        '429':
          description: Trop de requêtes - Limite de débit dépassée.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32005
                  message: Too many requests
                id: '1'
        '500':
          description: >-
            Erreur interne du serveur - Une erreur s'est produite sur le
            serveur.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32603
                  message: Internal error
                id: '1'
        '503':
          description: Service indisponible - Le service est temporairement indisponible.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32002
                  message: Service unavailable
                id: '1'
        '504':
          description: Délai d'attente de la passerelle - La requête a expiré.
          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 version du protocole JSON-RPC.
          enum:
            - '2.0'
          example: '2.0'
        error:
          type: object
          properties:
            code:
              type: integer
              description: Le code d'erreur.
              example: -32602
            message:
              type: string
              description: Le message d'erreur.
            data:
              type: object
              description: Données supplémentaires sur l'erreur.
        id:
          type: string
          description: Identifiant correspondant à la requête.
          example: '1'
  securitySchemes:
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api-key
      description: >-
        Votre clé API Helius. Vous pouvez en obtenir une gratuitement dans le
        [tableau de bord](https://dashboard.helius.dev/api-keys).

````