Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →
Anatomie des transactions
Une transaction Solana comporte trois composants principaux :- Message : la liste ordonnée des instructions, les comptes qu’elles référencent, et le récent blockhash.
- Signatures : une par signataire, attestant que la transaction a été autorisée.
- Blockhash récent : prouve que la transaction est récente ; les transactions avec des blockhash obsolètes (>150 slots anciens) sont rejetées.
Instructions
Une instruction spécifie :program_id— le programme à invoquer.accounts— les comptes (et leurs flags writable/signer) que le programme peut toucher.data— octets opaques que le programme interprète.
ComputeBudget::SetComputeUnitLimit— augmenter la limite CU par défaut.ComputeBudget::SetComputeUnitPrice— définir une priorité de frais.CreateAssociatedTokenAccountoptionnel — créer l’ATA de sortie si l’utilisateur n’en a pas.Raydium::SwapBaseInput— exécuter le swap.CloseAccountoptionnel — fermer un ATA wrapped-SOL.
raydium.trade.swap().
Comptes dans les transactions
Chaque compte touché par une instruction dans la transaction doit être listé dans les clés de compte de la transaction. Chaque compte est marqué :- Signataire / non-signataire : le propriétaire du compte doit-il signer la transaction ?
- Writable / read-only : la transaction peut-elle modifier le compte ?
solana-fundamentals/account-model). Les swaps CLMM avec plusieurs traversées de ticks peuvent en avoir 20+.
Limite de taille des transactions
Solana limite les transactions à 1232 octets incluant les signatures, le message et les en-têtes. C’est l’obstacle le plus courant pour les transactions complexes — le CLMM de Raydium avec routage multi-hop repousse régulièrement cette limite. Répartition d’un swap Raydium typique d’~1000 octets :Address Lookup Tables (ALTs)
Les ALTs permettent à une transaction de référencer les comptes par un index d’1 octet dans une table publiée plutôt qu’une clé publique complète de 32 octets. Cela compresse drastiquement une transaction :- Une transaction référençant 20 comptes directement : ~640 B de clés publiques.
- Même transaction utilisant des ALTs : ~20 B d’indices + références ALT.
Budget de calcul
Chaque transaction a un budget d’unités de calcul (CU). Le dépasser termine l’exécution et échoue la transaction.- Par défaut : 200 000 CU par transaction.
- Maximum : 1 400 000 CU par transaction (augmenté via
ComputeBudget::SetComputeUnitLimit). - Plafond par bloc : 48M CU par bloc (niveau protocole).
integration-guides/priority-fee-tuning pour la table complète) :
Définissez toujours une limite de CU explicite via
ComputeBudget ; sinon vous obtenez le défaut de 200k, qui est trop bas pour la plupart des instructions Raydium.
Frais de priorité
Au-delà des frais de transaction de base (5000 lamports par signature), les validateurs augmentent la priorité des transactions payant des frais de priorité : une pourboire par CU en microlamports.integration-guides/priority-fee-tuning pour savoir comment dimensionner cela dynamiquement.
Limites du nombre d’instructions et de comptes
Au-delà de la limite totale de 1232 octets :- Max comptes par transaction : 128.
- Max comptes par instruction (CPI) : 64.
- Max instructions par transaction : pas de limite stricte, limitée seulement par la limite de taille.
- Max profondeur CPI : 4 (un programme peut appeler un autre, qui peut appeler un autre, 4 niveaux de profondeur).
Catégories de frais dans un swap Raydium
Une transaction de swap utilisateur paie des frais en deux catégories :Frais réseau Solana
Payés aux validateurs en SOL.- Frais de signature de base : 5000 lamports par signature. Presque toujours 1 signature = 0,000005 SOL.
- Frais de priorité : CU-price × CU-limit en microlamports. Varie avec la congestion ; voir
integration-guides/priority-fee-tuning.
Frais du protocole Raydium
Déduits du montant du swap.- Frais de swap : pourcentage de l’entrée (CPMM 0,25 % typique, CLMM 0,01 %–1 % par tier). Partagé entre les LPs et les destinations du protocole. Voir
ray/protocol-fees.
Exemple : 1000 $ USDC → SOL via CPMM 0,25 % tier
Le slippage (impact de prix + mouvement du marché) n’est pas un frais mais affecte le même bilan final.
Transactions versionnées
Solana a deux formats de transaction :- Legacy : le format original, pas de support ALT.
- v0 (Versioned) : supporte les ALTs, extensible aux versions futures.
Fraîcheur du blockhash
Une transaction doit inclure un blockhash des ~150 derniers slots (~60 secondes). Au-delà de cette fenêtre, les validateurs la rejettent. Pour les boucles de retry, récupérez un blockhash frais à chaque retry :integration-guides/priority-fee-tuning pour le pattern complet de retry avec frais de priorité croissants.
Exécution parallèle
Solana exécute les transactions non-conflictuelles en parallèle sur les validateurs multi-cœurs. Deux transactions sont en conflit si elles écrivent toutes les deux le même compte. Implications pour Raydium :- Deux swaps sur le même pool ne peuvent pas s’exécuter en parallèle — tous les deux écrivent l’état du pool.
- Un swap sur le Pool A et un swap sur le Pool B s’exécutent en parallèle si les listes de comptes ne se chevauchent pas.
- Une transaction read-only ne bloque jamais un writer sur le même compte (read-only est concurrent avec lui-même mais pas avec les écritures).
Niveaux de confirmation des transactions
Quand vous soumettez une transaction, vous choisissez un niveau de confirmation :
Pour l’UX de swap,
confirmed est standard. Pour les opérations gérant une grande valeur (création de pool, remplissage de récompenses), finalized est plus sûr.
Simulation
Solana supporte la simulation d’une transaction avant soumission :getBestSwapInfo pour vérifier que le chemin choisi réussit réellement. La simulation n’est pas gratuite — elle consomme de la capacité RPC — mais elle détecte les erreurs avant de les payer.
Pointeurs
solana-fundamentals/account-model— comptes dans les transactions.solana-fundamentals/pdas-and-cpis— comment les programmes s’invoquent mutuellement.integration-guides/priority-fee-tuning— dimensionner les limites de CU et les frais de priorité.ray/protocol-fees— structure des frais du protocole Raydium.

