Infrastructure

getProgramAccounts (GPA)

An RPC method that scans all accounts owned by a given program and returns those matching optional memcmp (memory compare) and dataSize filters, making it the standard way to discover all state accounts for a protocol (e.g., all open order books, all user positions). GPA is resource-intensive because it performs a full account-store scan on the RPC node; many public endpoints rate-limit or disable it, which is why purpose-built indexers and services like Helius are used in production to serve GPA-equivalent queries at scale.

IDget-program-accountsAliasGPA

Plain meaning

Start with the shortest useful explanation before going deeper.

An RPC method that scans all accounts owned by a given program and returns those matching optional memcmp (memory compare) and dataSize filters, making it the standard way to discover all state accounts for a protocol (e.g., all open order books, all user positions). GPA is resource-intensive because it performs a full account-store scan on the RPC node; many public endpoints rate-limit or disable it, which is why purpose-built indexers and services like Helius are used in production to serve GPA-equivalent queries at scale.

Mental model

Use the quick analogy first so the term is easier to reason about when you meet it in code, docs, or prompts.

Think of it as a building block that connects one definition to the larger Solana system around it.

Technical context

Place the term inside its Solana layer so the definition is easier to reason about.

RPCs, validators, snapshots, indexing, and network plumbing.

Why builders care

Turn the term from vocabulary into something operational for product and engineering work.

This term unlocks adjacent concepts quickly, so it works best when you treat it as a junction instead of an isolated definition.

AI handoff

AI handoff

Use this compact block when you want to give an agent or assistant grounded context without dumping the entire page.

getProgramAccounts (GPA) (get-program-accounts)
Category: Infrastructure
Definition: An RPC method that scans all accounts owned by a given program and returns those matching optional memcmp (memory compare) and dataSize filters, making it the standard way to discover all state accounts for a protocol (e.g., all open order books, all user positions). GPA is resource-intensive because it performs a full account-store scan on the RPC node; many public endpoints rate-limit or disable it, which is why purpose-built indexers and services like Helius are used in production to serve GPA-equivalent queries at scale.
Aliases: GPA
Related: RPC Methods, Program, Account Filter (memcmp / dataSize)
Glossary Copilot

Ask grounded Solana questions without leaving the glossary.

Use glossary context, relationships, mental models, and builder paths to get structured answers instead of generic chat output.

Explain this code

Optional: paste Anchor, Solana, or Rust code so the Copilot can map primitives back to glossary terms.

Ask a glossary-grounded question

Ask a glossary-grounded question

The Copilot will answer using the current term, related concepts, mental models, and the surrounding glossary graph.

Concept graph

See the term as part of a network, not a dead-end definition.

These branches show which concepts this term touches directly and what sits one layer beyond them.

Branch

RPC Methods

The enumerated JSON-RPC endpoints exposed by Solana nodes, covering account queries (getAccountInfo, getMultipleAccounts, getProgramAccounts), block and transaction retrieval (getBlock, getTransaction), cluster metadata (getEpochInfo, getSlot, getVersion), and transaction submission (sendTransaction, simulateTransaction). Methods accept a Commitment parameter (processed, confirmed, finalized) to control the recency-vs-safety tradeoff of returned data.

Branch

Program

Executable code deployed on-chain, equivalent to a smart contract on other blockchains. Programs are stateless—they store no data themselves but read/write data in separate accounts they own. Programs are compiled to SBF bytecode and loaded via the BPF Loader. Every program has a unique Program ID (its account's public key).

Branch

Account Filter (memcmp / dataSize)

Optional filter objects passed to getProgramAccounts that narrow results by comparing raw bytes in account data. A memcmp filter specifies a byte offset and an expected bytes value (base58 or base64 encoded), enabling field-level matching such as filtering all token accounts by a specific mint address; a dataSize filter restricts results to accounts whose data length equals an exact byte count. Combining both filters is the standard pattern for efficiently querying discriminated Anchor accounts or specific SPL token account sets.

Next concepts to explore

Keep the learning chain moving instead of stopping at one definition.

These are the next concepts worth opening if you want this term to make more sense inside a real Solana workflow.

Infrastructure

RPC Methods

The enumerated JSON-RPC endpoints exposed by Solana nodes, covering account queries (getAccountInfo, getMultipleAccounts, getProgramAccounts), block and transaction retrieval (getBlock, getTransaction), cluster metadata (getEpochInfo, getSlot, getVersion), and transaction submission (sendTransaction, simulateTransaction). Methods accept a Commitment parameter (processed, confirmed, finalized) to control the recency-vs-safety tradeoff of returned data.

Programming Model

Program

Executable code deployed on-chain, equivalent to a smart contract on other blockchains. Programs are stateless—they store no data themselves but read/write data in separate accounts they own. Programs are compiled to SBF bytecode and loaded via the BPF Loader. Every program has a unique Program ID (its account's public key).

Infrastructure

Account Filter (memcmp / dataSize)

Optional filter objects passed to getProgramAccounts that narrow results by comparing raw bytes in account data. A memcmp filter specifies a byte offset and an expected bytes value (base58 or base64 encoded), enabling field-level matching such as filtering all token accounts by a specific mint address; a dataSize filter restricts results to accounts whose data length equals an exact byte count. Combining both filters is the standard pattern for efficiently querying discriminated Anchor accounts or specific SPL token account sets.

Infrastructure

getSignaturesForAddress

An RPC method that returns a paginated, reverse-chronological list of transaction signatures that reference a given account address, along with each transaction's slot, block time, memo, and confirmation status. It is the standard way to walk the transaction history of a wallet or program account and accepts before and until signature parameters for cursor-based pagination through up to 1,000 signatures per call.

Commonly confused with

Terms nearby in vocabulary, acronym, or conceptual neighborhood.

These entries are easy to mix up when you are reading quickly, prompting an LLM, or onboarding into a new layer of Solana.

Infrastructureget-multiple-accounts

getMultipleAccounts

A Solana RPC method that fetches the account data for up to 100 public keys in a single request, returning an array of AccountInfo objects in the same order as the input keys. This batched approach is significantly more efficient than calling getAccountInfo repeatedly, reducing round trips and RPC load. It supports the same encoding and commitment parameters as getAccountInfo. Accounts that do not exist return null in the response array.

Infrastructureprogram-automation

Program Automation

The pattern of scheduling and triggering on-chain program instructions based on time intervals, cron expressions, or conditional state changes without manual intervention. On Solana, automation was pioneered by Clockwork (now sunset) using on-chain Thread accounts and has evolved toward off-chain keeper bot architectures where backend services monitor chain state and submit transactions when trigger conditions are met.

Related terms

Follow the concepts that give this term its actual context.

Glossary entries become useful when they are connected. These links are the shortest path to adjacent ideas.

Infrastructurerpc-methods

RPC Methods

The enumerated JSON-RPC endpoints exposed by Solana nodes, covering account queries (getAccountInfo, getMultipleAccounts, getProgramAccounts), block and transaction retrieval (getBlock, getTransaction), cluster metadata (getEpochInfo, getSlot, getVersion), and transaction submission (sendTransaction, simulateTransaction). Methods accept a Commitment parameter (processed, confirmed, finalized) to control the recency-vs-safety tradeoff of returned data.

Programming Modelprogram

Program

Executable code deployed on-chain, equivalent to a smart contract on other blockchains. Programs are stateless—they store no data themselves but read/write data in separate accounts they own. Programs are compiled to SBF bytecode and loaded via the BPF Loader. Every program has a unique Program ID (its account's public key).

Infrastructureaccount-filter

Account Filter (memcmp / dataSize)

Optional filter objects passed to getProgramAccounts that narrow results by comparing raw bytes in account data. A memcmp filter specifies a byte offset and an expected bytes value (base58 or base64 encoded), enabling field-level matching such as filtering all token accounts by a specific mint address; a dataSize filter restricts results to accounts whose data length equals an exact byte count. Combining both filters is the standard pattern for efficiently querying discriminated Anchor accounts or specific SPL token account sets.

More in category

Stay in the same layer and keep building context.

These entries live beside the current term and help the page feel like part of a larger knowledge graph instead of a dead end.

Infrastructure

RPC (Remote Procedure Call)

The JSON-RPC 2.0 protocol interface through which clients communicate with Solana nodes to query chain state, submit transactions, and subscribe to events. Solana exposes a rich set of HTTP and WebSocket endpoints (e.g., getAccountInfo, sendTransaction) that abstract direct peer-to-peer network participation, making RPC the primary integration point for wallets, dApps, and indexers.

Infrastructure

RPC Node

A Solana full node that stores ledger state and serves JSON-RPC and WebSocket requests from clients without participating in consensus or voting. RPC nodes must replay every transaction to maintain an accurate account state database, and high-throughput deployments typically run dedicated RPC nodes with large SSDs, high RAM (256 GB+), and high-bandwidth network connections to handle concurrent client load without impacting validator performance.

Infrastructure

RPC Methods

The enumerated JSON-RPC endpoints exposed by Solana nodes, covering account queries (getAccountInfo, getMultipleAccounts, getProgramAccounts), block and transaction retrieval (getBlock, getTransaction), cluster metadata (getEpochInfo, getSlot, getVersion), and transaction submission (sendTransaction, simulateTransaction). Methods accept a Commitment parameter (processed, confirmed, finalized) to control the recency-vs-safety tradeoff of returned data.

Infrastructure

getAccountInfo

An RPC method that returns the complete on-chain state of a single account identified by its base-58 public key, including its lamport balance, owner program, executable flag, rent epoch, and raw data payload encoded as base64 or base58. It is the most fundamental read primitive in Solana development and is called at the specified commitment level, with the data field being null if the account does not exist.