On a chain like Ethereum, an account is usually an address that holds a balance and possibly some code. On Solana, an account is closer to a file: a chunk of storage with metadata. The address is a public key, but the account also has an owner, a lamport balance, data, and a rent epoch. Understanding this shift is the first step toward writing programs that behave.
Owner and authority
Only the owner program can change an account's data. If an account is owned by the System Program, the System Program can transfer lamports or assign ownership. Once ownership moves to a custom program, only that program can mutate the data. The account's owner is not the same as the wallet that paid to create it. This is why transactions often include the same account multiple times with different signer flags.
Rent
Accounts must pay rent to exist. Rent is proportional to data size and is deducted periodically. If the balance drops below the rent-exempt threshold, the account can be purged. Most developers fund accounts with enough lamports to be rent-exempt from the start, which means the balance is never drained and the account persists indefinitely.
Program Derived Addresses
A Program Derived Address, or PDA, is an account address that sits off the elliptic curve so no external private key can control it. The program can sign for the PDA using seeds and a bump. This lets a program own an account, authorize transfers, or hold state on behalf of users without exposing a secret.
Why this matters
Many beginner bugs come from confusing who owns an account. A client submits a transaction, but the program rejects it because the signer does not match the account owner, or because the account is not rent-exempt, or because a PDA was derived with the wrong seeds. The error message is usually short. The fix is knowing the four fields every account carries: address, owner, balance, data.
Back to the log