Article
Temps de lecture estim? : 4 min

Comprendre le PDA de Solana : Comment fonctionnent les adresses dérivées de programme

Découvrez ce qu'est le PDA de Solana (adresse dérivée de programme), comment il fonctionne, comment il est généré, et pourquoi il est essentiel pour la gestion de l'état dans les contrats intelligents Solana.

Comprendre le PDA de Solana : Comment fonctionnent les adresses dérivées de programme
Table des mati?res

Qu'est-ce qu'un PDA Solana ?

Dans le développement Solana, PDA signifie Adresse Dérivée de Programme.

Un PDA est un type spécial d'adresse de compte généré par un Programme Solana en utilisant des règles déterministes. Contrairement aux adresses de portefeuille normales, un PDA n'a pas de clé privée et ne peut pas être contrôlé directement par les utilisateurs.

Le PDA est l'un des mécanismes les plus importants de Solana car il permet aux Programmes de gérer l'état et les actifs sur la chaîne de manière sécurisée.

Pourquoi Solana a-t-il besoin de PDA ?

Sur Solana, les Programmes sont sans état et en lecture seule.

Cela signifie :

  • Les Programmes exécutent la logique
  • Les Comptes stockent les données

Un Programme ne peut pas stocker directement les données utilisateur en interne comme le ferait un traditionnel. service backend.

Des applications telles que :

  • Protocoles DeFi
  • Marchés NFT
  • Systèmes de staking
  • Jeux blockchain

ont toutes besoin de comptes pour stocker :

  • Soldes d'utilisateurs
  • Positions
  • Métadonnées
  • Actifs des coffres

Les comptes de portefeuille réguliers sont contrôlés par des clés privées, ce qui crée des problèmes de sécurité et de propriété pour les protocoles.

Par conséquent, Solana a introduit les comptes PDA :

  • Pas de clé privée
  • Contrôlé uniquement par des programmes
  • Généré de manière déterministe

Comment fonctionne le PDA

Un PDA est dérivé de :

  • Seeds
  • ID de programme
  • Bump Seed

Exemple :

const [pda, bump] = PublicKey.findProgramAddressSync(
  [
    Buffer.from("user"),
    wallet.publicKey.toBuffer(),
  ],
  programId
);

Ici :

  • "user" est une graine
  • wallet.publicKey est l'adresse de l'utilisateur
  • programId identifie le programme

Le résultat est une adresse PDA déterministe.

Tant que :

  • Les graines restent les mêmes
  • L'ID du programme reste le même

le PDA sera toujours identique.

Qu'est-ce qu'une graine de Bump ?

Les adresses Solana sont des clés publiques à courbes elliptiques.

Cependant, les PDA ne doivent pas avoir de clés privées valides.

Par conséquent, Solana essaie continuellement de

bump values:

255 → 254 → 253 ...

jusqu'à ce qu'il trouve une adresse qui :

  • Ne peut pas générer de clé privée
  • Ne peut être contrôlée que par le Programme

Cette valeur est appelée la seed de bump.

Pourquoi les PDA n'ont pas de clés privées

Les adresses de portefeuille normales sont générées comme ceci :

Clé Privée → Clé Publique → Adresse

Mais la génération de PDA fonctionne différemment :

Seeds + ProgrammeID → Hash → PDA

En conséquence :

  • Les PDA n'ont pas de clés privées
  • Les utilisateurs ne peuvent pas les contrôler
  • Les hackers ne peuvent pas récupérer une clé secrète

Seul le Programme associé peut les gérer.

Comment les programmes contrôlent les PDA

Bien que les PDA ne puissent pas signer des transactions directement, l’environnement d'exécution de Solana permet aux programmes de prouver la propriété en utilisant :

  • Des graines
  • Un bump
  • ID du programme

Cela permet aux programmes de "signer" au nom du PDA.

En conséquence, les PDA peuvent :

  • Transférer des jetons
  • Modifier l'état en chaîne
  • Effectuer des appels CPI
  • Frapper des jetons

Cas d'utilisation communs des PDA

Vaults DeFi

De nombreux protocoles DeFi utilisent des comptes PDA comme vaults pour :

  • Des pools de liquidités
  • Des actifs de staking
  • La gestion des trésoreries

Métadonnées NFT

Les protocoles NFT dérivent souvent des comptes de métadonnées en utilisant :

métadonnées + adresse mint

Cela crée des métadonnées PDA prévisibles.

Des projets comme Metaplex s'appuient fortement sur ce design.

Gestion de l'état de l'utilisateur

Les protocoles créent souvent des PDAs dédiées pour les utilisateurs :

PDA utilisateur
PDA de position
PDA de mise

Ces comptes stockent :

  • Positions des utilisateurs
  • Données de mise
  • Progrès dans le jeu
  • Points de récompense

PDA vs Adresses de portefeuille normal

TypeAdresse de portefeuillePDAPossède une clé privéeOuiNonPeut signerOuiNonContrôlé parUtilisateurProgrammePrévisibleNonOuiUtilisation principalePaiementsGestion de l'état

PDA dans Anchor

Dans le cadre d'Anchor, les PDAs sont largement utilisées.

Exemple :

#[compte(
    graines = [b"utilisateur", user.key().as_ref()],
    bump
)]
pub user_account: Compte<'info, UserAccount>,

Anchor automatiquement :

  • Dérive PDA
  • Vérifie le bump
  • Valide les comptes

C'est devenu le modèle de développement standard dans Solana.

0 mentions J'aime
Articles les plus consult?s

Class?s par sessions uniques sur les 30 derniers jours.

Champs de Compte Solana Champs de Compte Solana 7 mai 2026
Adresse de compte Solana expliquée : Comprendre les adresses de portefeuille SOL et leurs usages 6 mai 2026
Types de Comptes Solana : Comprendre le Cœur de l'Architecture de Solana 19 mai 2026