Token-2022

Confidential transfer

Amount privacy on Solana via ElGamal encryption and ZK proofs. Sender and receiver stay public; the amount is hidden. Configure an account, deposit and withdraw confidential balances, apply pending credits, and close when done. Your ElGamal and AES keys are derived in your browser from a wallet signature and never leave it.

Confidential transfer
Configure, deposit, view, and apply on a Token-2022 confidential account
Awaiting wallet

Connect a wallet to inspect or operate a confidential account.

How it works

Connect your wallet and paste a Token-2022 mint with the confidential-transfer extension. SolKnife reads the mint and your associated token account, classifies the state, and unlocks the operation buttons that apply. The proof worker runs in your browser: it holds the secret keys for the session, builds the ZK proofs (equality, range, validity, zero-ciphertext), and posts only the proof bytes + ciphertexts to the server. The server assembles unsigned transactions, the client re-verifies their structure against a strict allowlist before your wallet signs, and the server self-submits.

Amount privacy
Only the amount of a transfer is encrypted. The sender, receiver, and the fact a transfer happened are public on Solana, exactly as for any other token transfer.
Not a mixer
Confidential transfer is a Token-2022 protocol feature, audited by the Solana ecosystem. It does not obscure addresses, does not pool funds across users, and does not break compliance.
Auditor key
An optional ElGamal pubkey set on the mint. Whoever holds the matching secret can decrypt every transfer amount on the mint. A mint with no auditor is private to the parties of each transfer.
Pending vs available
Incoming credits land in a pending balance and must be folded into the available balance with ApplyPendingBalance before they can be spent or seen as part of the regular balance.
Withdraw
Moves funds from the confidential available balance back to the public token balance. The amount becomes public at this step (that is what makes it a withdraw), but the prior confidential balance is not revealed. Requires two ZK proofs (equality + 64-bit range) and runs as a 5-transaction saga signed in one wallet approval.
Orphan proof accounts
If a Withdraw saga is interrupted (tab crash, expired blockhash), the two ephemeral context-state accounts the saga created keep holding rent until closed. The tool scans the chain for any context-state accounts your wallet authorizes and reclaims the rent in one approval.