Program Derived Addresses (PDA's)

Program Derived Addresses (PDA's) zijn 32-byte accountadressen die deterministisch worden afgeleid van een program ID en een set seeds. Ze liggen gegarandeerd niet op de Ed25519-curve, wat betekent dat er geen private key voor bestaat. Alleen het programma waarvan het ID is gebruikt bij de afleiding kan "ondertekenen" voor een PDA, en dit doet het via invoke_signed tijdens cross-program invocations (CPI's).

Program Derived AddressProgram Derived Address

Belangrijkste feiten

  • Deterministisch: Dezelfde seeds en program ID produceren altijd hetzelfde adres.
  • Off-curve: Het afgeleide adres wordt geverifieerd om geen geldige Ed25519 public key te zijn. Als de hash toevallig op de curve terechtkomt, mislukt de afleiding en wordt een andere bump seed geprobeerd.
  • Geen private key: Omdat het adres off-curve is, kan niemand een cryptografische handtekening ervoor produceren. Het programma "ondertekent" via het invoke_signed-mechanisme van de runtime.

Wanneer PDA's gebruiken

  • Deterministisch adresseren: Leid hetzelfde account af van dezelfde seeds elke keer.
  • Programma-ondertekening: Alleen het eigenaar-programma kan ondertekenen via invoke_signed, waardoor programma's kunnen fungeren als autonome autoriteiten.
  • Gebruikersspecifieke state: Leid per-gebruiker accounts af van user pubkey seeds (bijv. ["user", user_pubkey]).
  • Geen keypair-beheer: Geen private key om op te slaan of te verliezen. Het adres wordt puur afgeleid van seeds.

Limieten

LimietWaardeBron
Max seeds16MAX_SEEDS
Max seed-lengte32 bytes maximum per seedMAX_SEED_LEN
Bump-bereik0-255 (1 byte)Toegevoegd als het laatste seed-element
create_program_address kosten1.500 CU'screate_program_address_units
find_program_address worst-case kosten1.500 entry + 1.500 x iteraties1.500 bij entry + 1.500 per mislukte bump
Max PDA-ondertekenaars per CPI16MAX_SIGNERS

Is this page helpful?

Inhoudsopgave

Pagina Bewerken

Beheerd door

© 2026 Solana Foundation.
Alle rechten voorbehouden.
Blijf Verbonden