---
title: Terminology
description:
  Learn the essential terminology used throughout the Solana blockchain and
  development models.
keywords:
  - terms
  - dictionary
  - definitions
  - define
  - programming models
---

The following terms are used throughout the Solana documentation and development
ecosystem.

## account

A record in the Solana ledger that either holds data or is an executable
program.

Like an account at a traditional bank, a Solana account may hold funds called
[lamports](#lamport). Every account in a [cluster](#cluster) has a unique
[address](#address).

## app

A front-end application that interacts with a Solana cluster.

## address

The location in Solana that can be used to find an account. Each address is
unique in the Solana [cluster](#cluster).

Addresses in Solana may be either an Ed25519 [public key](#public-key-pubkey) or
a [program derived address](#program-derived-address-pda).

## address lookup table (ALT)

A data structure that stores a list of account addresses, allowing
[versioned transactions](#versioned-transaction) to reference accounts using
compact 1-byte indexes instead of full 32-byte public keys. Address lookup
tables enable a single transaction to reference more accounts than the original
transaction format allows.

## Anchor

A framework for building Solana [onchain programs](#onchain-program) in Rust.
Anchor provides macros that reduce boilerplate, a standardized account
validation system, and generates an [IDL](#idl) describing the program's
interface. It is the most widely used framework for Solana program development.

## associated token account (ATA)

A [token account](#token-account) whose address is deterministically derived
from a wallet address and a [token mint](#token-mint). The associated token
account program ensures each wallet has one canonical token account per token
type.

## authority

The address of a user that has some kind of permission over an account.

For example:

- The ability to mint new tokens is given to the account that is the 'mint
  authority' for the token mint.
- The ability to upgrade a program is given to the account that is the 'upgrade
  authority' of a program.

## automated market maker (AMM)

An onchain exchange model where users trade against a pool of token reserves
governed by a pricing formula rather than against a counterparty's resting
order. Prices move as a function of the reserves, so trades incur
[slippage](#slippage) proportional to size.

## bank state

The result of interpreting all programs on the ledger at a given
[tick height](#tick-height). It includes at least the set of all
[accounts](#account) holding nonzero [native tokens](#native-token).

## block

A contiguous set of [entries](#entry) on the ledger covered by a
[vote](#ledger-vote). A [leader](#leader) produces at most one block per
[slot](#slot).

## blockhash

A unique value ([hash](#hash)) that identifies a record (block). Solana computes
a blockhash from the last [entry id](#entry-id) of the block.

## block height

The number of [blocks](#block) beneath the current block. The first block after
the [genesis block](#genesis-block) has height one.

## bootstrap validator

The [validator](#validator) that produces the genesis (first) [block](#block) of
a block chain.

## BPF loader

The Solana program that owns and loads [BPF](/docs/core/programs)
[onchain programs](#onchain-program), allowing the program to interface with the
runtime.

## bump

A single byte (0–255) appended to [seeds](#seed) when deriving a
[program derived address](#program-derived-address-pda) to ensure the resulting
address falls off the ed25519 curve and is therefore a valid PDA. The canonical
bump is the highest value that produces a valid PDA and is typically saved in
the account data to avoid recalculating it.

## central limit order book (CLOB)

An exchange model that maintains a sorted list of resting bids and asks; a trade
occurs when an incoming order crosses an order on the opposite side. Contrast
with [automated market maker](#automated-market-maker-amm).

## client

A computer program that accesses the Solana server network [cluster](#cluster).

## commitment

A measure of the network confirmation for the [block](#block).

## compact array format

A compact array is an array serialized in the following format:

- The array length (encoded as
  [compact-u16](https://github.com/anza-xyz/agave/blob/v2.1.13/short-vec/src/lib.rs))
- The array items listed one after another

![Compact array format](/assets/docs/core/transactions/compact_array_format.png)

Compact array format is used to encode both the
[account addresses](/docs/core/transactions/transaction-structure#account-addresses)
array and the
[instructions](/docs/core/transactions/transaction-structure#instructions) array
in transaction messages.

## cluster

A set of [validators](#validator) maintaining a single [ledger](#ledger).

## compute budget

The maximum number of [compute units](#compute-units) consumed per transaction.

## compute units

The smallest unit of measure for consumption of computational resources of the
blockchain. Compute units are used to measure the computational resources used
to process a transaction.

## confirmation time

The wallclock duration between a [leader](#leader) creating a
[tick entry](#tick) and creating a [confirmed block](#confirmed-block).

## confirmed block

A [block](#block) that has received a [super majority](#supermajority) of
[ledger votes](#ledger-vote).

## control plane

A gossip network connecting all [nodes](#node) of a [cluster](#cluster).

## cooldown period

Some number of [epochs](#epoch) after [stake](#stake) has been deactivated while
it progressively becomes available for withdrawal. During this period, the stake
is considered to be "deactivating". More info about:
[warmup and cooldown](https://docs.anza.xyz/consensus/stake-delegation-and-rewards#stake-warmup-cooldown-withdrawal)

## cost units

Also referred to as `transaction cost`, is a comprehensive estimate of all
resources required to process a transaction, measured in
[compute units](#compute-units). More info
[here](https://www.anza.xyz/blog/why-solana-transaction-costs-and-compute-units-matter-for-developers).

## credit

See [vote credit](#vote-credit).

## cross-program invocation (CPI)

A call from one [onchain program](#onchain-program) to another. For more
information, see [calling between programs](/docs/core/cpi).

## data plane

A multicast network used to efficiently validate [entries](#entry) and gain
consensus.

## drone

An offchain service that acts as a custodian for a user's private key. It
typically serves to validate and sign transactions.

## entry

An entry on the [ledger](#ledger) either a [tick](#tick) or a
[transaction's entry](#transactions-entry).

## entry id

A preimage resistant [hash](#hash) over the final contents of an entry, which
acts as the [entry's](#entry) globally unique identifier. The hash serves as
evidence of:

- The entry being generated after a duration of time
- The specified [transactions](#transaction) are those included in the entry
- The entry's position with respect to other entries in [ledger](#ledger)

See [proof of history](#proof-of-history-poh).

## epoch

The time, i.e. number of [slots](#slot), for which a
[leader schedule](#leader-schedule) is valid.

## escrow

A pattern in which an [onchain program](#onchain-program) holds tokens in a
[vault](#vault) on behalf of two or more parties until conditions defined by the
program are met, then releases them. Used to remove the need for the parties to
trust each other directly.

## fee account

The fee account in the transaction is the account that pays for the cost of
including the transaction in the ledger. This is the first account in the
transaction. This account must be declared as Read-Write (writable) in the
transaction since paying for the transaction reduces the account balance.

## finality

When nodes representing 2/3rd of the [stake](#stake) have a common
[root](#root).

## fork

A [ledger](#ledger) derived from common entries but then diverged.

## genesis block

The first [block](#block) in the chain.

## genesis config

The configuration file that prepares the [ledger](#ledger) for the
[genesis block](#genesis-block).

## hash

A digital fingerprint of a sequence of bytes.

## inflation

An increase in token supply over time used to fund rewards for validation and to
fund continued development of Solana.

## inner instruction

See [cross-program invocation](#cross-program-invocation-cpi).

## instruction

A call to invoke a specific [instruction handler](#instruction-handler) in a
[program](#program). An instruction also specifies which accounts it wants to
read or modify, and additional data that serves as auxiliary input to the
[instruction handler](#instruction-handler). A [client](#client) must include at
least one instruction in a [transaction](#transaction), and all instructions
must complete for the transaction to be considered successful.

## instruction handler

Instruction handlers are [program](#program) functions that process
[instructions](#instruction) from [transactions](#transaction). An instruction
handler may contain one or more
[cross-program invocations](#cross-program-invocation-cpi).

## IDL

Interface Definition Language. A JSON file generated by [Anchor](#anchor) that
describes a program's [instruction handlers](#instruction-handler), accounts,
and types. The IDL allows client libraries to automatically generate typed
interfaces for interacting with an [onchain program](#onchain-program).

## keypair

A [public key](#public-key-pubkey) and corresponding [private key](#private-key)
for accessing an account.

## lamport

A fractional [native token](#native-token) with the value of 0.000000001
[sol](#sol).

> Within the compute budget, a quantity of
> _[micro-lamports](https://github.com/solana-labs/solana/blob/ced8f6a512c61e0dd5308095ae8457add4a39e94/program-runtime/src/prioritization_fee.rs#L1-L2)_
> is used in the calculation of [prioritization fees](#prioritization-fee).

## leader

The role of a [validator](#validator) when it is appending [entries](#entry) to
the [ledger](#ledger).

## leader schedule

A sequence of [validator](#validator) [public keys](#public-key-pubkey) mapped
to [slots](#slot). The cluster uses the leader schedule to determine which
validator is the [leader](#leader) at any moment in time.

## ledger

A list of [entries](#entry) containing [transactions](#transaction) signed by
[clients](#client). Conceptually, this can be traced back to the
[genesis block](#genesis-block), but an actual [validator](#validator)'s ledger
may have only newer [blocks](#block) to reduce storage, as older ones are not
needed for validation of future blocks by design.

## ledger vote

A [hash](#hash) of the [validator's state](#bank-state) at a given
[tick height](#tick-height). It comprises a [validator's](#validator)
affirmation that a [block](#block) it has received has been verified, as well as
a promise not to vote for a conflicting [block](#block) \(i.e. [fork](#fork)\)
for a specific amount of time, the [lockout](#lockout) period.

## light client

A type of [client](#client) that can verify it's pointing to a valid
[cluster](#cluster). It performs more ledger verification than a
[thin client](#thin-client) and less than a [validator](#validator).

## liquidity

The depth of orders or pooled reserves available to trade against at or near the
current price. Deeper liquidity reduces [slippage](#slippage). On a
[CLOB](#central-limit-order-book-clob) liquidity is supplied by
[maker orders](#maker); on an [AMM](#automated-market-maker-amm) it is supplied
by liquidity providers who deposit token pairs into the pool.

## loader

A [program](#program) with the ability to interpret the binary encoding of other
[onchain programs](#onchain-program).

## lockout

The duration of time for which a [validator](#validator) is unable to
[vote](#ledger-vote) on another [fork](#fork).

## maker

A trader whose order adds [liquidity](#liquidity) to a
[CLOB](#central-limit-order-book-clob) by resting on the book rather than
immediately crossing the opposite side. Such an order is called a maker order.
Makers typically pay no fee or receive a rebate from the venue.

## market maker

An entity that supplies [liquidity](#liquidity) by continuously posting both
bids and asks. On Solana, market makers are either programs (such as
[AMMs](#automated-market-maker-amm)) or offchain firms running bots that post
[maker orders](#maker) on [CLOBs](#central-limit-order-book-clob).

## message

The structured contents of a [transaction](#transaction). Generally containing a
header, array of account addresses, recent [blockhash](#blockhash), and an array
of [instructions](#instruction).

Learn more about the
[message formatting inside of transactions](/docs/core/transactions/transaction-structure#header)
here.

## micro-lamport

1,000,000 micro-lamports = 1 [lamport](#lamport)

## Nakamoto coefficient

A measure of decentralization, the Nakamoto Coefficient is the smallest number
of independent entities that can act collectively to shut down a blockchain. The
term was coined by Balaji S. Srinivasan and Leland Lee in
[Quantifying Decentralization](https://news.earn.com/quantifying-decentralization-e39db233c28e).

## native token

The [token](#token) used to track work done by [nodes](#node) in a cluster.

## node

A computer participating in a [cluster](#cluster).

## node count

The number of [validators](#validator) participating in a [cluster](#cluster).

## offchain

Describes data, processes, or services that exist or run outside the Solana
blockchain, such as RPC clients, indexers, frontends, and offchain order book
makers. Complement of [onchain](#onchain). "Offchain" (no hyphen) is the
preferred spelling.

## onchain

Describes data or programs that exist or execute on a blockchain. "Onchain" (no
hyphen) is the preferred spelling.

## onchain program

The executable code on Solana blockchain that interprets the
[instructions](#instruction) sent inside of each [transaction](#transaction) to
read and modify accounts over which it has control. These programs are often
referred to as "[_smart contracts_](/docs/core/programs)" on other blockchains.

## oracle

An [onchain program](#onchain-program) that publishes data from outside the
chain — most often prices of real-world assets — for other programs to read.

## owner

May refer to either the [owning program](#owning-program) or the
[owning wallet](#owning-wallet). For example,
[getTokenAccountsByOwner](https://solana.com/docs/rpc/http/gettokenaccountsbyowner)
gets token accounts owned by a particular wallet, however the owning program for
those token accounts is the [token program](#token-program).

To avoid confusion it is preferable to use either
[owning program](#owning-program) or [owning wallet](#owning-wallet) rather than
the generic term 'owner'.

## owning program

The [address](#address) of the [program](#onchain-program) that owns the
account. Only the owning program is capable of modifying the account.

See also [authority](#authority).

## owning wallet

The wallet that is associated with an account. For example, the token program is
used to store token accounts associated with a particular wallet and mint using
an address made from that [wallet](#wallet) and [mint](#token-mint).

## PoH

See [Proof of History](#proof-of-history-poh).

## point

A weighted [credit](#credit) in a rewards regime. In the [validator](#validator)
[rewards regime](https://docs.anza.xyz/consensus/stake-delegation-and-rewards),
the number of points owed to a [stake](#stake) during redemption is the product
of the [vote credits](#vote-credit) earned and the number of
[lamports](#lamport) staked.

## private key

The private key of a [keypair](#keypair).

## program

See [onchain program](#onchain-program).

## program derived address (PDA)

An account whose address is created based on a
[onchain program](#onchain-program) and one or more [seeds](#seed) created by
the program author. PDA addresses are not public keys, and PDAs do not have do
not have private keys.

The signing authority for a PDA is the [onchain program](#onchain-program) that
is their [owning program](#owning-program).

## program id

The public key of the [account](#account) containing a
[program](#onchain-program).

## proof of history (PoH)

A stack of proofs, each of which proves that some data existed before the proof
was created and that a precise duration of time passed before the previous
proof. Like a [VDF](#verifiable-delay-function-vdf), a Proof of History can be
verified in less time than it took to produce.

## prioritization fee

An additional fee user can specify in the compute budget
[instruction](#instruction) to prioritize their [transactions](#transaction).

The prioritization fee is calculated by multiplying the requested maximum
compute units by the compute-unit price (specified in increments of 0.000001
[lamports](#lamport) per compute unit) rounded up to the nearest
[lamport](#lamport).

Transactions should request the minimum amount of compute units required for
execution to minimize fees.

## public key (pubkey)

The public key of a [keypair](#keypair). A public key is one of the different
types of [address](#address) an account may use on Solana.

## rent

Fee paid by [Accounts](#account) and [Programs](#program) to store data on the
blockchain. When accounts do not have enough balance to pay rent, they may be
Garbage Collected.

See also [rent exempt](#rent-exempt) below. Learn more about rent here:
[What is rent?](/docs/core/accounts/account-structure).

## rent exempt

Accounts that maintain a minimum lamport balance that is proportional to the
amount of data stored on the account. All newly created accounts are stored
onchain permanently until the account is closed. It is not possible to create an
account that falls below the rent exemption threshold.

## root

A [block](#block) or [slot](#slot) that has reached maximum [lockout](#lockout)
on a [validator](#validator). The root is the highest block that is an ancestor
of all active forks on a validator. All ancestor blocks of a root are also
transitively a root. Blocks that are not an ancestor and not a descendant of the
root are excluded from consideration for consensus and can be discarded.

## runtime

The component of a [validator](#validator) responsible for [program](#program)
execution.

## Sealevel

Solana's parallel run-time for [onchain programs](#onchain-program).

## seed

A byte value or array of byte values used as input when deriving a
[program derived address](#program-derived-address-pda). A program can use any
combination of static strings, public keys, or other data as seeds. Seeds are
combined with the program's ID and a [bump](#bump) to produce a unique PDA
address.

## shred

A fraction of a [block](#block); the smallest unit sent between
[validators](#validator).

## signature

A 64-byte ed25519 signature of R (32-bytes) and S (32-bytes). With the
requirement that R is a packed Edwards point not of small order and S is a
scalar in the range of `0 <= S < L`. This requirement ensures no signature
malleability. Each transaction must have at least one signature for
[fee account](#fee-account). Thus, the first signature in transaction can be
treated as [transaction id](#transaction-id)

## signer

An [account](#account) that has authorized an [instruction](#instruction) or
[transaction](#transaction). For a regular [keypair](#keypair) this means a
cryptographic [signature](#signature) over the transaction. For a
[program derived address](#program-derived-address-pda), authorization is
asserted by the [owning program](#owning-program) when it makes a
[cross-program invocation](#cross-program-invocation-cpi), since a PDA has no
private key.

## skip rate

The percentage of [skipped slots](#skipped-slot) out of the total leader slots
in the current epoch. This metric can be misleading as it has high variance
after the epoch boundary when the sample size is small, as well as for
validators with a low number of leader slots, however can also be useful in
identifying node misconfigurations at times.

## skipped slot

A past [slot](#slot) that did not produce a [block](#block), because the leader
was offline or the [fork](#fork) containing the slot was abandoned for a better
alternative by cluster consensus. A skipped slot will not appear as an ancestor
for blocks at subsequent slots, nor increment the [block height](#block-height),
nor expire the oldest `recent_blockhash`.

Whether a slot has been skipped can only be determined when it becomes older
than the latest [rooted](#root) (thus not-skipped) slot.

## slippage

The difference between the price a trader expected and the price at which their
trade actually executed. On [AMMs](#automated-market-maker-amm) it arises from
the pricing curve moving as reserves change; on
[CLOBs](#central-limit-order-book-clob) it arises from a single order consuming
several resting orders at successively worse prices.

## slot

The period of time for which each [leader](#leader) ingests transactions and
produces a [block](#block).

Collectively, slots create a logical clock. Slots are ordered sequentially and
non-overlapping, comprising roughly equal real-world time as per
[PoH](#proof-of-history-poh).

## smart contract

See [onchain program](#onchain-program).

## SOL

The [native token](#native-token) of a Solana [cluster](#cluster).

## Solana Program Library (SPL)

A [library of programs](https://www.solana-program.com/docs/) on Solana such as
spl-token that facilitates tasks such as creating and using tokens.

## stake

Tokens forfeit to the [cluster](#cluster) if malicious [validator](#validator)
behavior can be proven.

## stake-weighted quality of service (SWQoS)

SWQoS allows
[preferential treatment for transactions that come from staked validators](/docs/defi/stake-weighted-qos).

## supermajority

2/3 of a [cluster](#cluster).

## system program

A native Solana program (program ID `11111111111111111111111111111111`)
responsible for creating new [accounts](#account), allocating account data,
assigning accounts to programs, and transferring [SOL](#sol) between accounts.
All new accounts on Solana are owned by the system program until reassigned.

## sysvar

A system [account](#account). [Sysvars](https://docs.anza.xyz/runtime/sysvars)
provide cluster state information such as current tick height, rewards
[points](#point) values, etc. Programs can access Sysvars via a Sysvar account
(pubkey) or by querying via a syscall.

## taker

A trader whose order removes [liquidity](#liquidity) from a
[CLOB](#central-limit-order-book-clob) by crossing the opposite side of the book
and matching against one or more resting orders. Such an order is called a taker
order, and the taker typically pays the venue's trading fee.

## thin client

A type of [client](#client) that trusts it is communicating with a valid
[cluster](#cluster).

## tick

A ledger [entry](#entry) that estimates wallclock duration.

## tick height

The Nth [tick](#tick) in the [ledger](#ledger).

## token

A digitally transferable asset.

## token account

An [account](#account) that holds a balance of a specific [token](#token). Token
accounts are owned by the [Token Program](#token-program) or
[Token Extensions Program](#token-extensions-program) and store the token
balance, the associated [token mint](#token-mint), and the owning wallet
address.

## Token Extensions Program

The [Token Extensions Program](https://www.solana-program.com/docs/token-2022)
has the program ID `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb` and includes
all the same features as the [Token Program](#token-program), but comes with
extensions such as confidential transfers, custom transfer logic, extended
metadata, and much more.

## token mint

An account that can produce (or 'mint') tokens. Different tokens are
distinguished by their unique token mint addresses.

## Token Program

The [Token Program](https://www.solana-program.com/docs/token) has the program
ID `TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA`, and provides the basic
capabilities of transferring, freezing, and minting tokens.

## tps

[Transactions](#transaction) per second.

## tpu

[Transaction processing unit](https://docs.anza.xyz/validator/tpu).

## transaction

One or more [instructions](#instruction) signed by a [client](#client) using one
or more [keypairs](#keypair) and executed atomically with only two possible
outcomes: success or failure.

## transaction id

The first [signature](#signature) in a [transaction](#transaction), which can be
used to uniquely identify the transaction across the complete [ledger](#ledger).

## transaction confirmations

The number of [confirmed blocks](#confirmed-block) since the transaction was
accepted onto the [ledger](#ledger). A transaction is finalized when its block
becomes a [root](#root).

## transactions entry

A set of [transactions](#transaction) that may be executed in parallel.

## tvu

[Transaction validation unit](https://docs.anza.xyz/validator/tvu).

## validator

A full participant in a Solana network [cluster](#cluster) that produces new
[blocks](#block). A validator validates the transactions added to the
[ledger](#ledger)

## vault

A [token account](#token-account) owned by an
[onchain program](#onchain-program) that holds pooled assets on behalf of users
— for example the base and quote reserves of an
[AMM](#automated-market-maker-amm), the locked tokens in an [escrow](#escrow),
or the resting balances and accumulated fees of a
[CLOB](#central-limit-order-book-clob). Only the owning program can move tokens
out of the vault, typically into a user's own [token account](#token-account)
once a trade or release condition is met.

## VDF

See [verifiable delay function](#verifiable-delay-function-vdf).

## verifiable delay function (VDF)

A function that takes a fixed amount of time to execute that produces a proof
that it ran, which can then be verified in less time than it took to produce.

## versioned transaction

A transaction format that supports additional features beyond the original
[transaction](#transaction) format. Version 0 (`v0`) is the first versioned
format and adds support for [address lookup tables](#address-lookup-table-alt),
enabling transactions to reference more accounts than the original format
allows.

## vote

See [ledger vote](#ledger-vote).

## vote credit

A reward tally for [validators](#validator). A vote credit is awarded to a
validator in its vote account when the validator reaches a [root](#root).

## wallet

A collection of [keypairs](#keypair) that allows users to manage their funds.

## warmup period

Some number of [epochs](#epoch) after [stake](#stake) has been delegated while
it progressively becomes effective. During this period, the stake is considered
to be "activating". More info about:
[warmup and cooldown](https://docs.anza.xyz/consensus/stake-delegation-and-rewards#stake-warmup-cooldown-withdrawal)
