Solana’s Program Derived Addresses (PDAs) are a unique feature that allows programs to create secure, deterministic addresses without a private key. This process is crucial for program-owned data accounts on the Solana blockchain. For a detailed understanding, refer to the official Solana documentation.
Key Takeaways
- PDAs are derived using SHA-256 hashing of seeds, a program ID, and a bump value.
- The canonical bump is the first value that results in an off-curve address.
- PDAs do not have a private key, enhancing security.
How PDAs Are Derived
Program Derived Addresses (PDAs) on Solana are created by hashing a combination of user-defined seeds, a program ID, and a bump value using the SHA-256 algorithm. This process continues until the resulting address falls off the Ed25519 curve, ensuring that no private key can be generated for it. The absence of a private key means that only the program that derived the PDA can authorize operations on it, enhancing security.
The derivation process involves checking if the hashed result is a valid point on the Ed25519 curve. If it is, the process returns an error, as this would violate the security properties of a PDA. If the result is off the curve, it is accepted as a valid PDA.
Role of Seeds and Bump Values
Seeds are optional byte strings that help create unique PDAs. They must adhere to constraints of a maximum of 16 seeds per derivation and 32 bytes per seed. The bump value is a single byte appended to the seeds during derivation. The process searches from 255 down to 1 to find the first bump that results in an off-curve address, known as the canonical bump. Using a non-canonical bump can lead to vulnerabilities, as it might create a second valid address for the same seeds.
For more insights into Solana’s features and mechanisms, explore our Solana guides.




