Overview
Program Derived Addresses (PDAs) are deterministic addresses derived from seeds and a program ID. Orquestra automatically extracts PDA information from your Anchor IDL and provides endpoints to list and derive PDAs.List PDA Accounts
Get all PDA-enabled accounts from a project’s IDL, including their seed requirements.Endpoint
Response
Project identifier
Program ID (base58)
List of accounts with PDA metadata
Example
Response Example
Derive PDA
Derive a specific PDA address by providing the required seed values.Endpoint
Request Body
Name of the instruction containing the PDA account
Name of the PDA account to derive
Map of seed names to values
- For
argseeds: provide the argument value (type must match IDL) - For
accountseeds: provide the public key (base58) - For
constseeds: no value needed (automatically filled)
Response
Derived PDA address (base58)
Bump seed used (0-255)
Program ID used for derivation
List of seeds used in derivation
Example
Response Example
Error Responses
400 Bad Request
- Missing required fields
- Invalid seed values
- Invalid public key format
- Missing required seed value
404 Not Found
- Project not found or not public
- Instruction not found
- Account not found
- Account has no PDA seeds
PDA Derivation Algorithm
Orquestra uses the standard Solana PDA derivation algorithm:- Concatenate all seed bytes in order
- Append the program ID (32 bytes)
- Append the bump seed (1 byte, starting at 255)
- Compute SHA-256 hash of the concatenated bytes
- If the hash is on the ed25519 curve, decrement bump and retry
- Return the first valid off-curve address (PDA) and its bump
Seed Encoding
- Constant seeds: UTF-8 bytes or raw bytes from IDL
- String args: Raw UTF-8 bytes (no length prefix)
- Integer args: Little-endian bytes matching the type width
- Boolean args: Single byte (0 or 1)
- Public key args/accounts: 32 raw bytes
Cross-Program PDAs
Some accounts (like Associated Token Accounts) are PDAs of a different program. ThecustomProgram field indicates which program to use for derivation.
Use Cases
Wallet Integration
Calculate PDAs before submitting transactions to ensure correct account addresses.
Frontend Development
Derive PDAs client-side without requiring anchor-lang dependencies.
Testing & Debugging
Verify PDA derivation logic matches your program’s behavior.
Account Lookup
Find user-specific accounts by deriving their PDAs from known seeds.
Related Endpoints
- Build Transaction - Use derived PDAs in transaction building
- Get Instruction Details - View PDA metadata for instruction accounts