An account is a container that persistently holds data, similar to a file on a computer. They come in various forms:
- User accounts: These accounts have a private key and are typically generated by a wallet software for a user.
- Data accounts: These accounts store state information, such as the number of a specific token a user holds.
- Program accounts: These are larger accounts that contain executable bytecode, somewhat equivalent to a .exe file on Windows or a .app file on Mac.
- Program Account
- Program Executable Data Account
- Buffer Account
- Native program accounts: These are special pre-deployed program accounts that perform various core functionalities of the network. Examples include the Vote Program and the BPF Loader.
- System Program
- Config Program
- Stack Program
- Vote Program
- Address Lookup Table Program
- BPF Loader Program
- Ed25519 Program
- secp256k1 Program
All accounts have the following fields:

1. Data (Byte Array)
- This is where the account’s information is stored.
- If it’s a normal account (like a wallet), it stores simple information such as balance or user details.
- If it’s a smart contract, it stores the actual program code that runs on the Solana network.
- People often call this "account data."
💡 Example:
- For a wallet, it holds your SOL balance and some details.
- For a game or token program, it holds the code that makes the game or token work.
2. Executable (True/False)