Join our Newsletter — 33% off our NHI Course

Solana Program Derived Address

Solana Program Derived Address is a deterministic account address generated from a program and seed values without a private key controlling it. On Solana, programmes use these addresses to hold state or sign for programme-controlled accounts, while the derived address remains off-curve so no standard key pair can directly own it.

What the address does in Solana

A Solana Program Derived Address, or PDA, is a deterministic address tied to a program and seed values. Because it is generated off-curve, no standard private key can directly control it, which lets programs create accounts that are anchored to code rather than to a human-held keypair.

That property matters because the address is predictable but not signable in the normal wallet sense. The program can derive the same address every time from the same inputs, which makes PDAs useful for stable state storage, escrow-style program accounts, and other program-owned objects that must be addressed consistently without exposing a reusable private key.

Why PDAs are used for program-owned state

PDAs solve a common blockchain design problem, a contract or program often needs an address it can always find again, yet no outside actor should be able to forge a signature for it. By separating address derivation from private-key ownership, Solana makes it possible for a program to “own” state in a way that is repeatable and auditable.

This is especially useful when a program must keep persistent records, store authority markers, or act on behalf of an account it created. The address itself is not the secret, the derivation inputs are what make the address reproducible. In practice, that means the security model depends on correct seed selection and on the program logic that decides who may invoke PDA-related actions.

How a PDA differs from a normal wallet address

A regular Solana account address usually maps to a keypair, so possession of the private key equals signing authority. A PDA is different, because it is intentionally derived so that no private key exists for that address. That makes the account unsuitable for direct human signing, but ideal for controlled program interactions.

Programs typically interact with PDAs through program logic and signer checks rather than by expecting a private key. This distinction helps reduce accidental key exposure, but it also means developers must be precise about which instructions can write to, move from, or initialize the PDA, because the address cannot be secured through ordinary wallet custody.

Where PDA design mistakes become security problems

The main security concern is not that a PDA can be signed like a wallet, but that the surrounding program may treat the derived address as trustworthy without validating the seeds, the authority path, or the account relationship. If derivation rules are weak or inconsistent, an attacker may be able to influence which account is addressed or confuse program logic about who controls it.

Another common failure mode is assuming that “program-derived” automatically means “safe.” A PDA can still hold sensitive program state, token authority, or operational control, so the program must still enforce explicit authorization and careful account validation. A predictable address is useful only when the program’s rules around that address are strict.

Risk and Threat Considerations

PDAs reduce private-key exposure, but they can still create security risk if developers misuse seed data, fail to validate account relationships, or allow an attacker to steer program behavior toward the wrong derived account. In token, vault, or authority flows, that can turn a predictable address into a control-plane weakness rather than a safeguard.

Failure mechanism: The program accepts an expected-looking PDA without fully verifying the derivation inputs, ownership context, or instruction constraints, so attacker-controlled data steers logic toward an unintended account or authority path.

Impact: The program may write to the wrong state, misroute assets, or grant unauthorized access to program-controlled operations, even though the PDA itself has no conventional private key.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

OWASP API Security Top 10 addresses the attack and risk surface, while NIST SP 800-53 Rev 5 and CIS Controls v8 set the governance and control requirements practitioners need to meet.

Framework Control / Reference Relevance
OWASP API Security Top 10 API5 — Broken Function Level Authorization PDA-controlled instructions depend on program-side authorization for who can invoke privileged actions.
Recommendation — Enforce function-level authorization before allowing any PDA-backed state or authority operation.
NIST SP 800-53 Rev 5 IA-2 — Identification and Authentication (Organizational Users) PDA workflows depend on authenticating the actors who may trigger privileged program actions.
AC-6 — Least Privilege PDA authority should be constrained so program logic only exposes the minimum needed control.
Recommendation — Authenticate actors before permitting instructions that operate on program-owned addresses. Limit PDA-related privileges to the smallest set of instructions and accounts necessary.
CIS Controls v8 CIS-6 — Access Control Management PDA usage requires disciplined control over which identities can act on program-owned resources.
Recommendation — Restrict access paths that can modify or invoke PDA-controlled resources.

Practitioner Guidance

What to watch for: Treat every PDA as a deterministic identifier, not as proof of trust. Validate the exact seeds, program ownership, and account constraints wherever the address is used, especially in initialization, authority handoff, and asset-moving instructions.

Practitioner takeaway: A PDA is safest when the derivation is narrow, the program logic is explicit, and no security decision depends on the address alone.