Start with the correct cluster and identifier. On a transaction page, read execution success, the program instructions, fees and relevant account changes. On an account page, read what the account represents and who can act on it.

Read execution and finality as separate answers

A transaction's execution result states whether its instructions completed. RPC metadata represents success with a null execution error; an error identifies a failed result. An explorer may express that through labels, icons or a detailed error panel.

Commitment or finality describes the network's accepted history under its current protocol. A transaction can be final and failed. That means the failure is recorded in the accepted result; it does not mean the requested token transfer succeeded.

Current Foundation migration guidance says confirmed and finalized describe the same state on Alpenglow-migrated clusters and recommends finalized for new code. Avoid using an older explorer tutorial's fixed slot countdown as a current finality rule.

Also distinguish block time, slot and the time your browser obtained the record. They describe different aspects of the observation. Current Solana streaming can have multiple candidate banks in a slot, so a slot number alone is insufficient as a universal identity for every candidate observation.

Follow the programs that performed the action

The instruction list shows which programs the transaction asked to run. A simple SOL payment can call the System Program. A token payment calls the relevant token program. An application instruction can make inner calls to other programs during execution.

For a swap, find the application's outer instruction, then inspect the token transfers and any account setup or cleanup around it. A human label such as Swap is a decoded description; the actual program ID, accounts and instruction data define the request.

Logs help locate execution progress and errors. An early message saying that one instruction ran does not establish that the whole transaction completed. A later instruction can fail and roll back application changes.

If an explorer cannot decode an unfamiliar program, retain its address and raw context. You can still inspect execution, account changes and published program documentation. An unlabelled instruction is a decoding limitation, not proof of a failed or malicious transaction.

Finality and execution answer different questions

Finality and execution answer different questions. Successful execution: Instructions complete, Application changes commit, Verify actual receipt. Failed execution: A program or runtime check fails, Ordinary app changes roll back, Fees can still apply.
Inspect both dimensions before treating a transfer attempt as a payment.

Reconcile a payment and a swap

For a teaching SOL payment, Alice sends 0.25 SOL and pays an example fee of 0.000005 SOL. The sender's balance decreases by 0.250005 SOL, while the destination gains 0.25 SOL. If a page shows only the sender's total decrease, it can look larger than the agreed payment.

For a teaching token swap, suppose an account spends 10 USDC and receives 0.05 SOL, with these chosen amounts used only to explain the record. Identify the input and output mints and compare relevant token balances. Then separately inspect native SOL movement.

SOL movement can include a network fee, account funding and the return of lamports when a temporary account closes. A swap involving wrapped SOL may create, use and close a native token account. The final native balance therefore needs the whole instruction context.

When token-account indices refer to the transaction's account list, ensure the reader resolves the complete list, including address lookup data for formats that use it. Matching one token change to a shortened wallet label can hide a different account's movement.

The final test is reconciliation: the changes should explain the intended action and its costs. This is stronger evidence than a single green badge.

Read an account page according to its type

An account page can show lamports, data size, owning program and whether it is executable. The owner field identifies the program responsible for its data rules. It is different from a user authority recorded inside token or application data.

For a token account, look for the mint, quantity and authority. For a mint, look for decimals, supply and applicable controls. For a program, inspect executable and loader information and any relevant upgrade authority.

An account page usually shows current state alongside selected history. The current authority does not establish who held the role before a past transaction. Historical questions need data from the relevant observation or transaction.

Continue with owner versus authority when these fields look contradictory. They describe different layers of permission.

Use three short investigation patterns

A straightforward payment: identify the transfer instruction, check successful execution and compare the destination's change with the agreed amount. Keep the network fee separate.

A composed swap: identify the trading program and mints, follow inner transfers and reconcile token and SOL changes, including account cleanup. Compare actual output with the accepted bound and quote under the same units.

A failed transaction: read the error, locate its instruction and relevant logs, then inspect the recorded fee. Do not add up provisional log messages as though all application changes survived.

For a useful investigation note, save the explorer URL or signature, cluster, asset identities and the fields supporting your conclusion. If a receiving service has another crediting stage, keep that record alongside the network result.

Common questions

Why can a finalised transaction show an error?

Finality describes acceptance of the recorded result. That result can be an execution failure. Read the error separately from finality.

Why does an explorer show an unknown program?

It may lack a decoder or verified label for that program. Use the actual program ID, logs and state changes, then consult the program’s documentation.

Can a current account page prove a past permission?

Not on its own. Current state can differ from the state at the transaction you are investigating.

Sources and documentation

Found an error or an outdated detail? Send a correction.