Article
Estimated Reading Time : 4 mins

Solana Account Fields

A detailed explanation of Solana account fields, including lamports, owner, executable, data storage, and rent mechanics. Learn how Solana accounts work internally and why the account model enables high-performance blockchain execution.

Solana Account Fields
Table of Contents

In Solana, nearly all on-chain state is represented through accounts. Unlike traditional blockchain architectures that tightly couple code and storage together, Solana separates executable programs from state storage. This design makes the Solana account model one of the most important concepts for developers building on the network.

Understanding account fields is essential when working with wallets, SPL tokens, NFTs, PDAs, or DeFi protocols.

The Core Structure of a Solana Account

A Solana account is typically represented internally as:

pub struct Account {
    pub lamports: u64,
    pub data: Vec<u8>,
    pub owner: Pubkey,
    pub executable: bool,
    pub rent_epoch: Epoch,
}

Each field serves a different purpose within the Solana runtime.

Lamports

The lamports field stores the SOL balance associated with the account.

pub lamports: u64

Lamports are the smallest unit of SOL.

1 SOL = 1,000,000,000 lamports

This is conceptually similar to:

  • Wei in Ethereum
  • Satoshi in Bitcoin

Lamports are used for:

  • Transaction fees
  • Rent exemption
  • Holding SOL balances
  • Funding new accounts

For example:

5 SOL = 5,000,000,000 lamports

Every account on Solana must maintain a certain balance to remain active on-chain.

Data

The data field stores arbitrary binary data.

pub data: Vec<u8>

This is where application state is stored.

In Solana, programs are stateless executables, while data accounts hold mutable state separately. Because of this architecture, nearly every decentralized application relies heavily on account data layouts.

Examples of stored data include:

SPL Token Accounts

A token account typically stores:

  • Mint address
  • Owner address
  • Token amount
  • Delegation information
  • Account state

NFT Metadata

NFT metadata accounts may contain:

  • Name
  • Symbol
  • Metadata URI
  • Royalty configuration
  • Creator addresses

DeFi Protocols

Liquidity pools and AMMs often store:

  • Pool reserves
  • Fee structures
  • LP supply
  • Administrative settings

Most Solana programs serialize account data using formats such as:

  • Borsh
  • Anchor serialization
  • Raw byte layouts

Owner

The owner field specifies which program controls the account.

pub owner: Pubkey

This is one of the most important security mechanisms in Solana.

Only the owner program is allowed to modify the account’s data field.

For example:

System Program

11111111111111111111111111111111

The System Program owns standard SOL wallet accounts.

SPL Token Program

The SPL Token Program owns:

  • Token accounts
  • Mint accounts

Custom Programs

If a developer creates a PDA account for a custom protocol, the owner field is usually set to the project’s program ID.

This ownership model creates strict execution boundaries between programs and prevents unauthorized state modifications.

Executable

The executable field determines whether the account contains executable program code.

pub executable: bool

If the value is:

true

the account is treated as a program account.

Program accounts store compiled BPF bytecode that can be executed by the Solana runtime.

Typical examples include:

Account TypeexecutableWallet AccountfalseToken AccountfalsePDA AccountfalseProgram Accounttrue

Most accounts on Solana are non-executable data accounts.

Rent Epoch

The rent_epoch field is related to Solana’s rent system.

pub rent_epoch: Epoch

Because on-chain storage consumes validator resources, Solana originally introduced rent to prevent unlimited storage growth.

Accounts with insufficient balances could eventually be reclaimed by the network.

Today, most applications avoid rent collection entirely by making accounts rent-exempt.

Developers usually calculate the minimum balance required using:

getMinimumBalanceForRentExemption(space)

Once an account holds enough lamports to satisfy rent exemption requirements, it can remain permanently active.

Account Addresses and Pubkeys

When using RPC APIs, developers commonly see an additional field:

{
  "pubkey": "...",
  "account": {
    "lamports": 123,
    "owner": "...",
    "data": "...",
    "executable": false,
    "rentEpoch": 123
  }
}

The pubkey is the account address.

Interestingly, the public key is not stored inside the account structure itself. Instead, Solana internally maps addresses to account data structures.

Conceptually, this resembles:

HashMap<Pubkey, Account>

Why Solana Uses This Architecture

The account model is one of the reasons Solana achieves extremely high throughput.

Before executing a transaction, Solana requires the transaction to declare which accounts will be read or written.

This allows the runtime to determine:

  • Which transactions conflict
  • Which transactions can run in parallel
  • Which state accesses are isolated

As a result, Solana can process many independent transactions simultaneously rather than executing everything sequentially.

This parallel execution model is fundamentally different from many traditional blockchains.

0 likes
Most Visited Articles

Ranked by unique sessions over the last 30 days.

Understanding Solana PDA: How Program Derived Addresses Work Understanding Solana PDA: How Program Derived Addresses Work May 6, 2026
Solana Account Address Explained: Understanding SOL Wallet Addresses and Uses May 6, 2026
Solana Account Types: Understanding the Core of Solana’s Architecture May 19, 2026