Program Derived Addresses (PDAs)

Les Program Derived Addresses (PDAs) sont des adresses de compte de 32 octets dérivées de manière déterministe à partir d'un ID de programme et d'un ensemble de seeds. Elles sont garanties de ne pas se trouver sur la courbe Ed25519, ce qui signifie qu'aucune clé privée n'existe pour elles. Seul le programme dont l'ID a été utilisé dans la dérivation peut « signer » pour une PDA, et il le fait via invoke_signed lors d'invocations inter-programmes (CPIs).

Program Derived AddressProgram Derived Address

Points clés

  • Déterministe : les mêmes seeds et ID de programme produisent toujours la même adresse.
  • Hors courbe : l'adresse dérivée est vérifiée pour ne pas être une clé publique Ed25519 valide. Si le hash se trouve sur la courbe, la dérivation échoue et un bump seed différent est essayé.
  • Aucune clé privée : comme l'adresse est hors courbe, personne ne peut produire une signature cryptographique pour elle. Le programme « signe » via le mécanisme invoke_signed du runtime à la place.

Quand utiliser les PDAs

  • Adressage déterministe : dérivez le même compte à partir des mêmes seeds à chaque fois.
  • Signature par programme : seul le programme propriétaire peut signer via invoke_signed, permettant aux programmes d'agir comme autorités autonomes.
  • État par utilisateur : dérivez des comptes par utilisateur à partir de seeds de pubkey utilisateur (par ex., ["user", user_pubkey]).
  • Aucune gestion de keypair : aucune clé privée à stocker ou perdre. L'adresse est dérivée uniquement à partir des seeds.

Limites

LimiteValeurSource
Nombre maximum de seeds16MAX_SEEDS
Longueur maximale de seed32 octets maximum par seedMAX_SEED_LEN
Plage de bump0-255 (1 octet)Ajouté comme élément de seed final
Coût create_program_address1 500 CUcreate_program_address_units
Coût find_program_address dans le pire cas1 500 à l'entrée + 1 500 x itérations1 500 à l'entrée + 1 500 par bump échoué
Nombre maximum de signataires PDA par CPI16MAX_SIGNERS

Is this page helpful?

Table des matières

Modifier la page

Géré par

© 2026 Fondation Solana.
Tous droits réservés.
Restez connecté