NEU: Helius übernimmt Light Protocol
Was sind Solana-PDAs? Erklärung und Beispiele
Blog/Grundlagen

Was sind Solana-PDAs? Erklärung und Beispiele (2026)

EntwicklerbildungMike MacCana auf XMike MacCana auf LinkedIn
6 Min. Lesezeit

Danke an 0xIchigo für die Durchsicht, an Unboxed Software für das Filmrezensionsprogramm und an Paul Verhoeven für Robocop.

Solana-Programme (Smart Contracts) speichern ihre Daten in separaten Accounts, den sogenannten Program Derived Addresses (PDAs).

Auf PDAs kann unabhängig voneinander zugegriffen werden. Sie lassen sich auch unabhängig aktualisieren. Das reduziert Konflikte und ermöglicht parallele Verarbeitung.

PDAs sind zwar kein schwieriges Konzept, können für neue Entwickler aber schwer verständlich sein.

Dieser Artikel zeigt dir, wie du PDAs als Key/Value-Speicher betrachten kannst, und stellt vier praktische Beispiele für PDAs vor.

Fangen wir an.

PDAs als Key/Value-Datenspeicher

Key/Value-Speicher gab es in der Programmierung schon viele Jahre vor der Blockchain. Mit ihnen lassen sich Daten schnell finden. Wenn du den Wert eines bestimmten Schlüssels im Speicher abrufst, findest du immer dieselben Daten.

Im Programmiermodell von Solana bildet das PDA-System den Key/Value-Speicher deines Programms.

Der Schlüssel für jedes Datenelement ist eine besondere Art von Adresse. Sie wird aus Eingabe-Seeds erzeugt, die der Programmierer festlegt.

Dieselben Seeds erzeugen immer dieselbe Adresse. So kann jeder die Daten für einen bestimmten Satz von Seeds deterministisch finden.

PDA-Adressen können nie mit echten öffentlichen Schlüsseln kollidieren, da ihre Werte „off curve“ liegen. Das heißt, die für PDAs erzeugten Adressen unterscheiden sich mathematisch von den Werten öffentlicher Schlüssel auf der Ed25519-Kurve von Solana.

Der Wert ist eine Struktur (oder ein Objekt) mit den Feldern und Werten, die du als Programmautor dort speichern möchtest.

PDAs lassen sich am besten anhand von Beispielen erklären. Legen wir also los.

1. PDA zum Speichern von Token, die mit einer Wallet verknüpft sind

Beginnen wir mit dem Programm eines anderen – einem, das du bereits verwendet hast. Du weißt schon, dass deine Wallet verschiedene Token enthält und jeder davon einen eigenen Kontostand hat. Willkommen bei deinem ersten PDA-Beispiel!

Jeder deiner Token-Kontostände wird in einem PDA-Account gespeichert. Die Seeds legt das Programm für Associated Token Accounts fest.

Sehen wir uns genau an, wie das funktioniert:

Zusammenfassung des Videos

Programm: das Programm für Associated Token Accounts

Zweck des Accounts: den Kontostand eines bestimmten Tokens in deiner Wallet speichern

Seeds: die Wallet-Adresse und die Mint-Adresse des Tokens

Daten: der Kontostand dieses Tokens in dieser Wallet

Vorteil:

Es gibt einen kanonischen Ort, an dem sich der Bestand eines Benutzers an einem bestimmten Token abrufen lässt. Da die Kontostände der Benutzer in separaten Accounts liegen, können mehr Transaktionen parallel ausgeführt werden. Das macht Solana schnell!

2. PDA zum Speichern der Daten deines Programms

Das klingt gut. Aber wie können wir PDAs als universellen Datenspeicher in unseren Solana-Programmen verwenden? Was müssen wir beim Entwerfen der Seeds und Daten für unsere PDAs beachten?

Zusammenfassung des Videos

Programm: ein Filmrezensionsprogramm, das anhand des Besitzes eines Assets sicherstellt, dass Rezensionen mit höherer Wahrscheinlichkeit authentisch sind

Zweck des Accounts: die Filmrezension jedes Asset-Eigentümers speichern

Seeds: die Wallet-Adresse, der Name des Films und das Erscheinungsjahr

Daten:

  1. eine schriftliche Rezension (string)
  2. eine Bewertung von 0 bis 10, gespeichert als u8

Vorteil:

Es gibt einen kanonischen Ort, an dem sich die Rezension eines Benutzers zu einem bestimmten Film abrufen lässt. Benutzer können ihre Rezensionen parallel aktualisieren, ohne sich gegenseitig zu blockieren. Unser intelligentes PDA-Design stellt sicher, dass jeder Benutzer nur eine Rezension pro Film abgeben kann. Es berücksichtigt auch Sonderfälle wie schlechte Menschen, die Robocop neu verfilmen.

3. PDA zum Festlegen konfigurierbarer Werte für dein Programm

Wenn du eigene Apps entwickelst, möchtest du wahrscheinlich einige Werte über den gesamten Lebenszyklus des Programms hinweg konfigurieren können: 

  • Konstante Werte (z. B. Gebühren für deine Plattform)
  • Listen mit Mint-Adressen der Token, die dein Programm verwendet
  • Feature-Flags, die du jederzeit aktivieren und deaktivieren kannst
  • Ob dein Programm aktiv oder pausiert ist (wenn ein Admin-Account ein Programm pausieren kann, ist das beispielsweise eine typische Notfallfunktion vieler Blockchain-Programme)

Wir wollen unser Programm nicht nur deshalb aktualisieren, um diese Werte zu ändern. Speichern wir unsere Konfiguration also in einem PDA-Account! Anschließend können wir Instruction-Handler erstellen, um diese Werte zu aktualisieren. Außerdem prüfen wir, ob ein festgelegter „Admin“-Account die eingehenden Instructions signiert hat. 

In diesem Fall enthält unsere Konfiguration eine Liste zulässiger öffentlicher Schlüssel. So können wir einschränken, wer mit unserem Programm interagieren darf. Wir könnten aber beliebige weitere Konfigurationseinstellungen hinzufügen.

Dieses Beispiel ist interessant, da nicht unbedingt offensichtlich ist, dass sich PDAs auch zum Speichern einer solchen globalen Konfiguration eignen!

Zusammenfassung des Videos

Programm: ein beliebiges Programm, das du erstellt hast

Zweck des Accounts: eine dynamisch aktualisierbare Konfiguration speichern

Seeds: "config"

Daten: unsere Konfiguration, in diesem Fall eine Zulassungsliste und ein Admin-Account

  • allow_list: ein Vektor öffentlicher Schlüssel für Benutzer, die diese App verwenden dürfen
  • authority: der öffentliche Schlüssel eines Accounts, der diese Einstellungen ändern darf (Solana-Apps verwenden üblicherweise das Wort authority, um eine bestimmte Berechtigung auszudrücken). Wir stellen sicher, dass dieser Account privilegierte Aktionen signiert!

Vorteil:

Statt eine bestimmte Konfiguration fest im Quellcode zu hinterlegen, können wir sie spontan über eine Instruction-Funktion in unserem Programm aktualisieren.

Änderungen an nicht zugehörigen Daten blockieren unsere Konfigurationsaktualisierungen ebenfalls nicht. Wenn du dein Programm zum ersten Mal bereitstellst, solltest du außerdem intialize_config() ausführen und deine Authority festlegen!

4. PDA zum Besitzen und Übertragen von Token

PDAs dienen nicht nur zum Speichern von Daten. Sie können auch eigene Token-Accounts besitzen. Unser Programm signiert dann als PDA Transaktionen, um Token aus diesen Token-Accounts an andere Orte zu verschieben. So können unsere Programme Werte speichern und übertragen:

Zusammenfassung des Videos

Programm: Swap-Programm

Zweck des Accounts: 

  1. Die Details eines Swap-Angebots speichern, insbesondere welche Token und welche Token-Menge der Ersteller des Angebots im Gegenzug für die bereitgestellten Token erhalten möchte. 
  2. Diese PDA besitzt einen Token-Account, in dem die bereitgestellten Token gespeichert sind. Die PDA kann Transaktionen signieren und Token aus diesem Account an Empfänger übertragen. 

Seeds: "offer", eine Angebots-ID (eine beliebige Kennung, solange sie noch nicht vergeben ist) und die Adresse des Erstellers

Daten:

  • maker_wanted_token: der im Gegenzug gewünschte Token, angegeben als öffentlicher Schlüssel der Mint-Adresse des Tokens
  • maker_wanted_amount: die gewünschte Menge des Tokens (u64)

Vorteil:

Diese PDA ermöglicht es Benutzern, Daten zu speichern und zugleich als Eigentümer eines Token-Accounts zu agieren, um Token zu halten und an andere Accounts zu übertragen.

Zusammenfassung

Das waren vier praktische Beispiele für Solana-PDAs.

Erstens verwendet das Programm für Associated Token Accounts PDAs, um den Kontostand jedes Tokens in deiner Wallet zu speichern.

Zweitens kann ein von dir geschriebenes Programm Daten speichern, die bestimmten Benutzern über deren öffentlichen Schlüssel oder bestimmten Datenelementen zugeordnet sind. Dafür verwendet es die IDs, die du für sie festgelegt hast.

Drittens können Programme ihre eigene Konfiguration in einer PDA speichern. Instruction-Handler, die nur Admins verwenden dürfen, schränken ein, wer diese Einstellungen ändern kann.

Viertens können deine PDAs eigene Token-Accounts besitzen. Dadurch kann dein Programm Guthaben halten. Dein Programm kann Transaktionen mit diesen Token „signieren“, indem es einfach die Seeds der PDA angibt, der sie gehören.

PDAs machen Solana nicht nur schnell. Sie stellen auch einen vollständigen Key/Value-Speicher bereit, mit dem deine Programme Daten anhand der von dir angegebenen Seeds schnell finden können. 

Viel Spaß mit PDAs und sieh dir weitere Filme von Paul Verhoeven an!

Helius abonnieren

Bleib bei der Solana-Entwicklung auf dem Laufenden und erhalte Updates, wenn wir neue Beiträge veröffentlichen