NOUVEAU : Helius acquiert Light Protocol
Que sont les PDA Solana ? Explications et exemples
Blog/Fondamentaux

Que sont les PDA Solana ? Explications et exemples (2026)

Formation des développeursMike MacCana sur XMike MacCana sur LinkedIn
6 min de lecture

Merci à 0xIchigo pour sa relecture, à Unboxed Software pour le programme de critiques de films et à Paul Verhoeven pour Robocop.

Les programmes Solana (contrats intelligents) stockent leurs données dans des comptes distincts appelés Program Derived Addresses (PDA).

Les PDA peuvent être consultés et mis à jour indépendamment, ce qui réduit les conflits d’accès et permet un traitement en parallèle.

Bien que les PDA ne soient pas un concept difficile, ils peuvent être complexes à appréhender pour les nouveaux développeurs.

Cet article vous aidera à considérer les PDA comme des magasins clé/valeur et vous présentera quatre exemples pratiques de PDA.

Commençons.

Les PDA comme magasins de données clé/valeur

Les magasins clé/valeur existaient en programmation bien avant la blockchain. Ils permettent de trouver rapidement des données. Rechercher la valeur d’une clé donnée dans le magasin renvoie toujours les mêmes données.

Dans le modèle de programmation de Solana, le système de PDA constitue le magasin clé/valeur de votre programme.

La clé de chaque donnée est un type particulier d’adresse créé à partir de seeds d’entrée définis par le programmeur.

Les mêmes seeds génèrent toujours la même adresse. N’importe qui peut donc retrouver les données de manière déterministe pour un ensemble de seeds donné.

Les adresses des PDA ne peuvent jamais entrer en conflit avec de véritables clés publiques, car leurs valeurs sont « hors courbe ». Autrement dit, les adresses créées pour les PDA sont mathématiquement distinctes des valeurs de clés publiques présentes sur la courbe Ed25519 de Solana.

La valeur est une structure (ou un objet) contenant les champs et les valeurs que vous, l’auteur du programme, souhaitez y stocker.

Les PDA s’expliquent mieux avec des exemples. Passons donc à la pratique.

1. Un PDA pour stocker les tokens associés à un portefeuille

Commençons par le programme de quelqu’un d’autre, que vous avez déjà utilisé. Vous savez déjà que votre portefeuille contient différents tokens, chacun avec son propre solde. Bienvenue dans votre premier exemple de PDA !

Chacun de vos soldes de tokens est stocké dans un compte PDA, dont les seeds sont définis par le programme Associated Token Account.

Voyons précisément comment cela fonctionne :

Récapitulatif de la vidéo

Programme : le programme Associated Token Account

Rôle du compte : stocker le solde d’un token unique dans votre portefeuille

Seeds : l’adresse du portefeuille et l’adresse de mint du token

Données : le solde de ce token pour ce portefeuille

Avantage :

Il existe un emplacement canonique où consulter les avoirs d’un utilisateur pour un token donné. Comme les soldes des utilisateurs se trouvent dans des comptes distincts, davantage de transactions peuvent être exécutées en parallèle, ce qui rend Solana rapide !

2. Un PDA pour stocker les données de votre programme

Très bien, mais comment utiliser les PDA comme magasin de données polyvalent dans nos programmes Solana ? Que devons-nous prendre en compte pour concevoir les seeds et les données de nos PDA ?

Récapitulatif de la vidéo

Programme : un programme de critiques de films qui s’appuie sur la propriété d’actifs pour renforcer l’authenticité des critiques

Rôle du compte : stocker la critique d’un film rédigée par chaque propriétaire d’actif

Seeds : l’adresse du portefeuille, le nom du film et l’année de sortie

Données :

  1. une critique écrite (string)
  2. une note de 0 à 10 stockée sous forme de u8

Avantage :

Il existe un emplacement canonique où consulter la critique d’un utilisateur pour un film donné. Les utilisateurs peuvent mettre à jour leurs critiques en parallèle sans se bloquer mutuellement. Grâce à la conception judicieuse de notre PDA, chaque utilisateur ne peut publier qu’une seule critique par film, et les cas limites sont pris en charge, comme lorsque des personnes mal intentionnées refont Robocop.

3. Un PDA pour définir les valeurs configurables de votre programme

Lorsque vous créez vos propres applications, vous aurez probablement besoin de définir certaines valeurs configurables tout au long du cycle de vie du programme : 

  • Des valeurs constantes (par exemple, les frais de votre plateforme)
  • Des listes d’adresses de mint pour les tokens utilisés par votre programme
  • Des indicateurs de fonctionnalités que vous pouvez activer et désactiver à volonté
  • L’état actif ou suspendu de votre programme (par exemple, permettre à un compte administrateur de suspendre un programme est un mécanisme d’urgence courant dans de nombreux programmes blockchain)

Nous ne voulons pas mettre à niveau notre programme uniquement pour modifier ces valeurs. Plaçons donc notre configuration dans un compte PDA ! Nous pouvons ensuite créer des gestionnaires d’instructions pour mettre à jour ces valeurs et vérifier que les instructions entrantes sont signées par un compte « administrateur » désigné. 

Dans ce cas, notre configuration contiendra une liste de clés publiques autorisées afin de limiter les personnes pouvant interagir avec notre programme, mais nous pourrions y ajouter tout autre paramètre de configuration souhaité.

Cet exemple est intéressant, car il n’est pas forcément évident que les PDA puissent servir à stocker une configuration globale de cette manière !

Récapitulatif de la vidéo

Programme : n’importe quel programme que vous avez créé

Rôle du compte : stocker une configuration pouvant être mise à jour dynamiquement

Seeds : « config »

Données : notre configuration, ici une liste d’autorisation et un compte administrateur

  • allow_list : un vecteur de clés publiques correspondant aux utilisateurs autorisés à utiliser cette application
  • authority : la clé publique d’un compte pouvant modifier ces paramètres (les applications Solana utilisent généralement le mot authority pour désigner une forme d’autorisation). Nous veillerons à ce que ce compte signe les actions privilégiées !

Avantage :

Au lieu d’inscrire une configuration donnée en dur dans votre code source, nous pouvons la mettre à jour à la volée à l’aide d’une fonction d’instruction de notre programme.

Les mises à jour de notre configuration ne sont pas non plus bloquées par les modifications apportées à des données sans rapport. Lors du premier déploiement de votre programme, vous devrez également exécuter intialize_config() et définir votre autorité !

4. Un PDA pour détenir et transférer des tokens

Les PDA ne servent pas uniquement à stocker des données. Ils peuvent également posséder leurs propres comptes de tokens. Notre programme signe alors les transactions en tant que PDA afin de transférer les tokens de ces comptes vers d’autres destinations. Nos programmes peuvent ainsi stocker et transférer de la valeur :

Récapitulatif de la vidéo

Programme : programme d’échange

Rôle du compte : 

  1. Stocker les détails d’une offre d’échange, notamment les tokens et la quantité de tokens que l’auteur de l’offre souhaite recevoir en contrepartie de ceux qu’il a fournis. 
  2. Ce PDA possède un compte de tokens qui stocke les tokens fournis. Le PDA peut signer des transactions et transférer des tokens depuis ce compte vers des destinataires. 

Seeds : « offer », un ID d’offre (n’importe quel identifiant convient tant qu’il n’est pas déjà utilisé) et l’adresse de l’auteur de l’offre

Données :

  • maker_wanted_token : le token souhaité en retour, sous la forme de la clé publique de l’adresse de mint du token
  • maker_wanted_amount : la quantité souhaitée du token (u64)

Avantage :

Ce PDA permet aux utilisateurs de stocker des données et d’agir également comme propriétaire d’un compte de tokens afin de détenir des tokens et de les transférer vers d’autres comptes.

Résumé

Voilà quatre exemples pratiques de PDA Solana.

Premièrement, le programme Associated Token Account utilise des PDA pour stocker le solde de chaque token détenu par votre portefeuille.

Deuxièmement, un programme que vous écrivez peut stocker des données associées à des utilisateurs particuliers à l’aide de leur clé publique, ou à des éléments de données particuliers à l’aide des ID que vous leur avez attribués.

Troisièmement, les programmes peuvent stocker leur propre configuration dans un PDA, avec des gestionnaires d’instructions réservés aux administrateurs pour limiter les personnes autorisées à modifier ces paramètres.

Quatrièmement, vos PDA peuvent posséder leurs propres comptes de tokens, ce qui permet à votre programme de détenir des fonds. Votre programme peut « signer » les transactions qui utilisent ces tokens simplement en indiquant les seeds du PDA qui les possède.

Les PDA rendent non seulement Solana rapide, mais fournissent aussi un magasin clé/valeur complet qui permet à vos programmes de trouver rapidement des données à partir des seeds que vous définissez. 

Amusez-vous avec les PDA et regardez davantage de films de Paul Verhoeven !

Abonnez-vous à Helius

Suivez les dernières actualités du développement sur Solana et recevez une notification à chaque publication