Seven concepts form the foundation of Solana development. Read Accounts, Programs, Instructions, Transactions, and Fees in that order, as each builds on the previous. Read Accounts and Programs before PDAs. Read Programs, Instructions, and PDAs before CPIs.
Accounts
Solana stores all state in accounts, a key-value store keyed by 32-byte addresses. Each account has five fields: lamports, data, owner, executable, and rent_epoch.
Programs
Solana's smart contracts, compiled to sBPF. Programs are stateless and all mutable state lives in separate data accounts passed via instructions.
Instructions
A request to execute one program, containing a program ID, accounts list, and opaque data bytes. Multiple instructions compose into a single transaction.
Transactions
The atomic unit of execution on Solana. Contains signatures and a message (account addresses, recent blockhash, and compiled instructions). Max 1232 bytes.
Fees
Base fee of 5,000 lamports per signature, plus an optional priority fee based on compute units requested. Max 1.4M compute units per transaction.
Program Derived Addresses (PDAs)
Deterministic addresses derived from a program ID and seeds. Only the owning program can sign on behalf of a PDA via invoke_signed.
Cross-Program Invocations (CPIs)
One program calling another via invoke or invoke_signed. Signer and writable privileges extend to the callee. Max instruction stack depth of 5 (top-level plus CPIs).
Additional Topics
Tokens
Fungible and non-fungible digital assets on Solana (SPL Token, Token-2022).
Clusters and Endpoints
Mainnet, Devnet, and Testnet: validator groups serving JSON-RPC requests.
| Cluster | Public RPC Endpoint | Use |
|---|---|---|
| Mainnet | https://api.mainnet.solana.com | Production |
| Devnet | https://api.devnet.solana.com | Developer experimentation |
| Testnet | https://api.testnet.solana.com | Validator testing |
Is this page helpful?