Confidential Balances

What are Confidential Balances?

Confidential Balances is a Token-2022 extension that lets you transfer tokens between token accounts without revealing the transfer amount. This is useful for privacy-preserving transactions. Only transfer amounts and token balances are private. Token account addresses remain public.

How does it work?

The Confidential Balances extension adds instructions to the Token Extension program that allows you to transfer tokens between accounts without revealing the transfer amount.

Confidential Balances Basic Overview

The basic flow of confidential token transfers is as follows:

  1. Create a mint account with Confidential Balances enabled.
  2. Create token accounts with Confidential Balances enabled for the sender and recipient.
  3. Mint tokens to the sender account.
  4. Deposit sender's public balance to confidential pending balance.
  5. Apply sender's pending balance to confidential available balance.
  6. Confidentially transfer tokens from sender token account to recipient token account.
  7. Apply recipient's pending balance to confidential available balance.
  8. Withdraw recipient's confidential available balance to public balance.

Auditor keys

A Confidential Balances mint can store an optional global auditor ElGamal public key. When one is configured, every confidential transfer includes the amount encrypted for the sender, recipient, and auditor. The transfer proof verifies that all three ciphertexts contain the same amount. The public still cannot read the amount, but the holder of the auditor secret key can decrypt transfer amounts for that mint.

The Confidential Balances authority sets the auditor key when initializing the extension or changes it later with UpdateMint. The authority can rotate or clear the key. A rotation applies only to future transfers, so retain prior secret keys when historical audit access is required. Auditor keys provide read access; they do not authorize token transfers or reveal an account's full confidential balance.

For setup and rotation examples, see Configure an auditor. Wallets, explorers, exchanges, and compliance providers should also review the auditor integration guidance.

For more details on the steps in the confidential transfer flow, see the corresponding pages:

The diagram below shows a detailed sequence of the basic flow for confidential token transfers:

Confidential Balances Detailed Overview

Confidential Balances Instructions

The full list of Confidential Balances extension instructions is as follows:

InstructionDescription
InitializeMintEnables Confidential Balances on a mint account. This instruction must be included in the same transaction as TokenInstruction::InitializeMint instruction.
UpdateMintUpdates the mint's account approval policy and optional global auditor ElGamal public key.
ConfigureAccountEnables Confidential Balances on a token account.
ApproveAccountApproves a token account for Confidential Balances if the mint requires approval for new token accounts.
EmptyAccountEmpties the pending and available confidential balances to allow closing a token account.
DepositConverts public token balance into pending confidential balance.
WithdrawConverts available confidential balance back to public balance.
TransferTransfers tokens between token accounts confidentially.
ApplyPendingBalanceConverts pending balance into available balance after deposits or transfers.
EnableConfidentialCreditsAllows a token account to receive confidential token transfers.
DisableConfidentialCreditsBlocks incoming confidential transfers while still allowing public transfers.
EnableNonConfidentialCreditsAllows a token account to receive public token transfers.
DisableNonConfidentialCreditsBlocks regular transfers to make account receive only confidential transfers.
TransferWithFeeTransfers tokens between token accounts confidentially with a fee.
ConfigureAccountWithRegistryAlternative way to configure token accounts for Confidential Balances using an ElGamalRegistry account instead of VerifyPubkeyValidity proof.

Is this page helpful?

Table of Contents

Edit Page
© 2026 Solana Foundation. All rights reserved.